Merge branch 'master' into calendar_repeat

This commit is contained in:
Georg Ehrke 2012-06-06 10:12:11 +02:00
commit 2fa19ce9a0
630 changed files with 29440 additions and 8775 deletions

4
.htaccess Normal file → Executable file
View File

@ -1,8 +1,8 @@
ErrorDocument 403 /core/templates/403.php
ErrorDocument 404 /core/templates/404.php
<IfModule mod_php5.c>
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value upload_max_filesize 513M
php_value post_max_size 513M
php_value memory_limit 512M
<IfModule env_module>
SetEnv htaccessWorking true

229
3rdparty/mediawiki/CSSMin.php vendored Normal file
View File

@ -0,0 +1,229 @@
<?php
/**
* Minification of CSS stylesheets.
*
* Copyright 2010 Wikimedia Foundation
*
* Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License 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.
*
* @file
* @version 0.1.1 -- 2010-09-11
* @author Trevor Parscal <tparscal@wikimedia.org>
* @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<file>[^\?\)\'"]*)(?P<query>\??[^\)\'"]*)[\'"]?\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<embed>\s*\/\*\s*\@embed\s*\*\/)(?P<pre>[^\;\}]*))?' .
self::URL_REGEX . '(?P<post>[^;]*)[\;]?/';
$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
var_dump($match['embed'], $file, filesize($file));
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 )
)
);
}
}

View File

@ -0,0 +1,606 @@
<?php
/**
* JavaScript Minifier
*
* @file
* @author Paul Copperman <paul.copperman@gmail.com>
* @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 ) === '<!--' )
|| ( $ch === '-' && $newlineFound && substr( $s, $pos, 3 ) === '-->' )
) {
$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;
}
}

View File

@ -10,18 +10,22 @@ ob_start();
OCP\JSON::checkLoggedIn();
OCP\App::checkAppEnabled('calendar');
session_write_close();
$nl="\r\n";
$comps = array('VEVENT'=>true, 'VTODO'=>true, 'VJOURNAL'=>true);
$progressfile = 'import_tmp/' . md5(session_id()) . '.txt';
global $progresskey;
$progresskey = 'calendar.import-' . $_GET['progresskey'];
if (isset($_GET['progress']) && $_GET['progress']) {
echo OC_Cache::get($progresskey);
die;
}
function writeProgress($pct) {
if(is_writable('import_tmp/')){
$progressfopen = fopen($progressfile, 'w');
fwrite($progressfopen, $pct);
fclose($progressfopen);
}
global $progresskey;
OC_Cache::set($progresskey, $pct, 300);
}
writeProgress('10');
$file = OC_Filesystem::file_get_contents($_POST['path'] . '/' . $_POST['file']);
@ -114,7 +118,5 @@ foreach($uids as $uid) {
// finished import
writeProgress('100');
sleep(3);
if(is_writable('import_tmp/')){
unlink($progressfile);
}
OC_Cache::remove($progresskey);
OCP\JSON::success();

View File

@ -1,2 +0,0 @@
This folder contains static files with the percentage of the import.
Requires write permission

View File

@ -43,8 +43,8 @@ Calendar_Import={
}
$('#newcalendar').attr('readonly', 'readonly');
$('#calendar').attr('disabled', 'disabled');
var progressfile = $('#progressfile').val();
$.post(OC.filePath('calendar', 'ajax/import', 'import.php'), {method: String (method), calname: String (calname), path: String (path), file: String (filename), id: String (calid)}, function(data){
var progresskey = $('#progresskey').val();
$.post(OC.filePath('calendar', 'ajax/import', 'import.php') + '?progresskey='+progresskey, {method: String (method), calname: String (calname), path: String (path), file: String (filename), id: String (calid)}, function(data){
if(data.status == 'success'){
$('#progressbar').progressbar('option', 'value', 100);
$('#import_done').css('display', 'block');
@ -52,7 +52,7 @@ Calendar_Import={
});
$('#form_container').css('display', 'none');
$('#progressbar_container').css('display', 'block');
window.setTimeout('Calendar_Import.getimportstatus(\'' + progressfile + '\')', 500);
window.setTimeout('Calendar_Import.getimportstatus(\'' + progresskey + '\')', 500);
});
$('#calendar').change(function(){
if($('#calendar option:selected').val() == 'newcal'){
@ -62,11 +62,11 @@ Calendar_Import={
}
});
},
getimportstatus: function(progressfile){
$.get(OC.filePath('calendar', 'import_tmp', progressfile), function(percent){
getimportstatus: function(progresskey){
$.get(OC.filePath('calendar', 'ajax/import', 'import.php') + '?progress=1&progresskey=' + progresskey, function(percent){
$('#progressbar').progressbar('option', 'value', parseInt(percent));
if(percent < 100){
window.setTimeout('Calendar_Import.getimportstatus(\'' + progressfile + '\')', 500);
window.setTimeout('Calendar_Import.getimportstatus(\'' + progresskey + '\')', 500);
}else{
$('#import_done').css('display', 'block');
}

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Der blev ikke fundet nogen kalendere.",
"No events found." => "Der blev ikke fundet nogen begivenheder.",
"Wrong calendar" => "Forkert kalender",
"New Timezone:" => "Ny tidszone:",
"Timezone changed" => "Tidszone ændret",
"Invalid request" => "Ugyldig forespørgsel",
"Calendar" => "Kalender",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ åååå]{ '&#8212;'[ MMM] d åååå}",
"Birthday" => "Fødselsdag",
"Business" => "Forretning",
"Call" => "Ring",
@ -19,6 +22,7 @@
"Projects" => "Projekter",
"Questions" => "Spørgsmål",
"Work" => "Arbejde",
"unnamed" => "unavngivet",
"Does not repeat" => "Gentages ikke",
"Daily" => "Daglig",
"Weekly" => "Ugentlig",
@ -80,10 +84,15 @@
"Calendars" => "Kalendere",
"There was a fail, while parsing the file." => "Der opstod en fejl under gennemlæsning af filen.",
"Choose active calendars" => "Vælg aktive kalendere",
"Your calendars" => "Dine kalendere",
"CalDav Link" => "CalDav-link",
"Shared calendars" => "Delte kalendere",
"No shared calendars" => "Ingen delte kalendere",
"Share Calendar" => "Del kalender",
"Download" => "Hent",
"Edit" => "Rediger",
"Delete" => "Slet",
"shared with you by" => "delt af dig",
"New calendar" => "Ny kalender",
"Edit calendar" => "Rediger kalender",
"Displayname" => "Vist navn",
@ -94,8 +103,15 @@
"Cancel" => "Annuller",
"Edit an event" => "Redigér en begivenhed",
"Export" => "Eksporter",
"Eventinfo" => "Begivenhedsinfo",
"Repeating" => "Gentagende",
"Alarm" => "Alarm",
"Attendees" => "Deltagere",
"Share" => "Del",
"Title of the Event" => "Titel på begivenheden",
"Category" => "Kategori",
"Separate categories with commas" => "Opdel kategorier med kommaer",
"Edit categories" => "Rediger kategorier",
"All Day Event" => "Heldagsarrangement",
"From" => "Fra",
"To" => "Til",
@ -125,11 +141,22 @@
"Calendar imported successfully" => "Kalender importeret korrekt",
"Close Dialog" => "Luk dialog",
"Create a new event" => "Opret en ny begivenhed",
"View an event" => "Vis en begivenhed",
"No categories selected" => "Ingen categorier valgt",
"Select category" => "Vælg kategori",
"of" => "fra",
"at" => "kl.",
"Timezone" => "Tidszone",
"Check always for changes of the timezone" => "Check altid efter ændringer i tidszone",
"Timeformat" => "Tidsformat",
"24h" => "24T",
"12h" => "12T",
"Calendar CalDAV syncing address:" => "Synkroniseringsadresse til CalDAV:"
"First day of the week" => "Ugens første dag",
"Calendar CalDAV syncing address:" => "Synkroniseringsadresse til CalDAV:",
"Users" => "Brugere",
"select users" => "Vælg brugere",
"Editable" => "Redigerbar",
"Groups" => "Grupper",
"select groups" => "Vælg grupper",
"make public" => "Offentliggør"
);

View File

@ -4,8 +4,9 @@
"Wrong calendar" => "Falscher Kalender",
"New Timezone:" => "Neue Zeitzone:",
"Timezone changed" => "Zeitzone geändert",
"Invalid request" => "Anfragefehler",
"Invalid request" => "Fehlerhafte Anfrage",
"Calendar" => "Kalender",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "ddd d MMMM[ yyyy]{ -[ddd d] MMMM yyyy}",
"Birthday" => "Geburtstag",
"Business" => "Geschäftlich",
"Call" => "Anruf",
@ -30,7 +31,7 @@
"Monthly" => "monatlich",
"Yearly" => "jährlich",
"never" => "niemals",
"by occurrences" => "nach Vorkommen",
"by occurrences" => "nach Terminen",
"by date" => "nach Datum",
"by monthday" => "an einem Monatstag",
"by weekday" => "an einem Wochentag",
@ -60,10 +61,10 @@
"October" => "Oktober",
"November" => "November",
"December" => "Dezember",
"by events date" => "bei Tag des Termins",
"by yearday(s)" => "an einem Tag des Jahres",
"by weeknumber(s)" => "an einer Wochennummer",
"by day and month" => "an einer Tag und Monats Kombination",
"by events date" => "nach Tag des Termins",
"by yearday(s)" => "nach Tag des Jahres",
"by weeknumber(s)" => "nach Wochennummer",
"by day and month" => "nach Tag und Monat",
"Date" => "Datum",
"Cal." => "Kal.",
"All day" => "Ganztags",
@ -91,7 +92,7 @@
"Download" => "Herunterladen",
"Edit" => "Bearbeiten",
"Delete" => "Löschen",
"shared with you by" => "Von dir geteilt mit",
"shared with you by" => "Geteilt mit dir von",
"New calendar" => "Neuer Kalender",
"Edit calendar" => "Kalender bearbeiten",
"Displayname" => "Anzeigename",
@ -109,7 +110,7 @@
"Share" => "Teilen",
"Title of the Event" => "Name",
"Category" => "Kategorie",
"Separate categories with commas" => "Kategorien trennen mittels Komma",
"Separate categories with commas" => "Kategorien mit Kommas trennen",
"Edit categories" => "Kategorien ändern",
"All Day Event" => "Ganztägiges Ereignis",
"From" => "von",
@ -130,8 +131,8 @@
"and the events week of year." => "und den Tag des Jahres vom Termin",
"Interval" => "Intervall",
"End" => "Ende",
"occurrences" => "Vorkommen",
"Import a calendar file" => "Kalender Datei Importieren",
"occurrences" => "Termine",
"Import a calendar file" => "Kalenderdatei Importieren",
"Please choose the calendar" => "Bitte wählen Sie den Kalender.",
"create a new calendar" => "Neuen Kalender anlegen",
"Name of new calendar" => "Kalendername",
@ -144,6 +145,7 @@
"No categories selected" => "Keine Kategorie ausgewählt",
"Select category" => "Kategorie auswählen",
"of" => "von",
"at" => "um",
"Timezone" => "Zeitzone",
"Check always for changes of the timezone" => "immer die Zeitzone überprüfen",
"Timeformat" => "Zeitformat",
@ -152,9 +154,9 @@
"First day of the week" => "erster Wochentag",
"Calendar CalDAV syncing address:" => "Kalender CalDAV Synchronisationsadresse:",
"Users" => "Nutzer",
"select users" => "gewählte Nutzer",
"select users" => "Nutzer auswählen",
"Editable" => "editierbar",
"Groups" => "Gruppen",
"select groups" => "Wähle Gruppen",
"select groups" => "Gruppen auswählen",
"make public" => "Veröffentlichen"
);

View File

@ -0,0 +1,138 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Kalentereita ei löytynyt",
"No events found." => "Tapahtumia ei löytynyt.",
"Wrong calendar" => "Väärä kalenteri",
"New Timezone:" => "Uusi aikavyöhyke:",
"Timezone changed" => "Aikavyöhyke vaihdettu",
"Invalid request" => "Virheellinen pyyntö",
"Calendar" => "Kalenteri",
"Birthday" => "Syntymäpäivä",
"Call" => "Ota yhteyttä",
"Clients" => "Asiakkaat",
"Deliverer" => "Toimittaja",
"Holidays" => "Vapaapäivät",
"Ideas" => "Ideat",
"Journey" => "Matkustus",
"Jubilee" => "Vuosipäivät",
"Meeting" => "Tapaamiset",
"Other" => "Muut",
"Personal" => "Henkilökohtainen",
"Projects" => "Projektit",
"Questions" => "Kysymykset",
"Work" => "Työ",
"unnamed" => "nimetön",
"Does not repeat" => "Ei toistoa",
"Daily" => "Päivittäin",
"Weekly" => "Viikottain",
"Every Weekday" => "Arkipäivisin",
"Bi-Weekly" => "Joka toinen viikko",
"Monthly" => "Kuukausittain",
"Yearly" => "Vuosittain",
"never" => "Ei koskaan",
"Monday" => "Maanantai",
"Tuesday" => "Tiistai",
"Wednesday" => "Keskiviikko",
"Thursday" => "Torstai",
"Friday" => "Perjantai",
"Saturday" => "Lauantai",
"Sunday" => "Sunnuntai",
"first" => "ensimmäinen",
"second" => "toinen",
"third" => "kolmas",
"fourth" => "neljäs",
"fifth" => "viides",
"last" => "viimeinen",
"January" => "Tammikuu",
"February" => "Helmikuu",
"March" => "Maaliskuu",
"April" => "Huhtikuu",
"May" => "Toukokuu",
"June" => "Kesäkuu",
"July" => "Heinäkuu",
"August" => "Elokuu",
"September" => "Syyskuu",
"October" => "Lokakuu",
"November" => "Marraskuu",
"December" => "Joulukuu",
"Date" => "Päivämäärä",
"All day" => "Koko päivä",
"New Calendar" => "Uusi kalenteri",
"Missing fields" => "Puuttuvat kentät",
"Title" => "Otsikko",
"The event ends before it starts" => "Tapahtuma päättyy ennen alkamistaan",
"There was a database fail" => "Tapahtui tietokantavirhe",
"Week" => "Viikko",
"Month" => "Kuukausi",
"List" => "Lista",
"Today" => "Tänään",
"Calendars" => "Kalenterit",
"There was a fail, while parsing the file." => "Tiedostoa jäsennettäessä tapahtui virhe.",
"Choose active calendars" => "Valitse aktiiviset kalenterit",
"Your calendars" => "Omat kalenterisi",
"CalDav Link" => "CalDav-linkki",
"Shared calendars" => "Jaetut kalenterit",
"No shared calendars" => "Ei jaettuja kalentereita",
"Share Calendar" => "Jaa kalenteri",
"Download" => "Lataa",
"Edit" => "Muokkaa",
"Delete" => "Poista",
"shared with you by" => "kanssasi jaettu",
"New calendar" => "Uusi kalenteri",
"Edit calendar" => "Muokkaa kalenteria",
"Displayname" => "Kalenterin nimi",
"Active" => "Aktiivinen",
"Calendar color" => "Kalenterin väri",
"Save" => "Tallenna",
"Submit" => "Talleta",
"Cancel" => "Peru",
"Edit an event" => "Muokkaa tapahtumaa",
"Export" => "Vie",
"Eventinfo" => "Tapahtumatiedot",
"Repeating" => "Toisto",
"Alarm" => "Hälytys",
"Attendees" => "Osallistujat",
"Share" => "Jaa",
"Title of the Event" => "Tapahtuman otsikko",
"Category" => "Luokka",
"Separate categories with commas" => "Erota luokat pilkuilla",
"Edit categories" => "Muokkaa luokkia",
"All Day Event" => "Koko päivän tapahtuma",
"From" => "Alkaa",
"To" => "Päättyy",
"Advanced options" => "Tarkemmat asetukset",
"Location" => "Sijainti",
"Location of the Event" => "Tapahtuman sijainti",
"Description" => "Kuvaus",
"Description of the Event" => "Tapahtuman kuvaus",
"Repeat" => "Toisto",
"Select weekdays" => "Valitse viikonpäivät",
"Select days" => "Valitse päivät",
"Select months" => "Valitse kuukaudet",
"Select weeks" => "Valitse viikot",
"Interval" => "Intervalli",
"Import a calendar file" => "Tuo kalenteritiedosto",
"Please choose the calendar" => "Valitse kalenteri",
"create a new calendar" => "luo uusi kalenteri",
"Name of new calendar" => "Uuden kalenterin nimi",
"Import" => "Tuo",
"Importing calendar" => "Tuodaan kalenteria",
"Calendar imported successfully" => "Kalenteri tuotu onnistuneesti",
"Close Dialog" => "Sulje ikkuna",
"Create a new event" => "Luo uusi tapahtuma",
"View an event" => "Avaa tapahtuma",
"No categories selected" => "Luokkia ei ole valittu",
"Select category" => "Valitse luokka",
"Timezone" => "Aikavyöhyke",
"Check always for changes of the timezone" => "Tarkista aina aikavyöhykkeen muutokset",
"Timeformat" => "Ajan esitysmuoto",
"24h" => "24 tuntia",
"12h" => "12 tuntia",
"First day of the week" => "Viikon ensimmäinen päivä",
"Calendar CalDAV syncing address:" => "Kalenterin CalDAV-synkronointiosoite:",
"Users" => "Käyttäjät",
"select users" => "valitse käyttäjät",
"Editable" => "Muoktattava",
"Groups" => "Ryhmät",
"select groups" => "valitse ryhmät",
"make public" => "aseta julkiseksi"
);

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Non se atoparon calendarios.",
"No events found." => "Non se atoparon eventos.",
"Wrong calendar" => "Calendario equivocado",
"New Timezone:" => "Novo fuso horario:",
"Timezone changed" => "Fuso horario trocado",
"Invalid request" => "Petición non válida",
"Calendar" => "Calendario",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "d MMM[ yyyy]{ '&#8212;'d [ MMM] yyyy}",
"Birthday" => "Aniversario",
"Business" => "Traballo",
"Call" => "Chamada",
@ -19,6 +22,7 @@
"Projects" => "Proxectos",
"Questions" => "Preguntas",
"Work" => "Traballo",
"unnamed" => "sen nome",
"Does not repeat" => "Non se repite",
"Daily" => "A diario",
"Weekly" => "Semanalmente",
@ -80,10 +84,15 @@
"Calendars" => "Calendarios",
"There was a fail, while parsing the file." => "Produciuse un erro ao procesar o ficheiro",
"Choose active calendars" => "Escolla os calendarios activos",
"Your calendars" => "Os seus calendarios",
"CalDav Link" => "Ligazón CalDav",
"Shared calendars" => "Calendarios compartidos",
"No shared calendars" => "Sen calendarios compartidos",
"Share Calendar" => "Compartir calendario",
"Download" => "Descargar",
"Edit" => "Editar",
"Delete" => "Borrar",
"shared with you by" => "compartido con vostede por",
"New calendar" => "Novo calendario",
"Edit calendar" => "Editar calendario",
"Displayname" => "Mostrar nome",
@ -94,8 +103,15 @@
"Cancel" => "Cancelar",
"Edit an event" => "Editar un evento",
"Export" => "Exportar",
"Eventinfo" => "Info do evento",
"Repeating" => "Repetido",
"Alarm" => "Alarma",
"Attendees" => "Participantes",
"Share" => "Compartir",
"Title of the Event" => "Título do evento",
"Category" => "Categoría",
"Separate categories with commas" => "Separe as categorías con comas",
"Edit categories" => "Editar categorías",
"All Day Event" => "Eventos do día",
"From" => "Desde",
"To" => "a",
@ -125,11 +141,22 @@
"Calendar imported successfully" => "Calendario importado correctamente",
"Close Dialog" => "Pechar diálogo",
"Create a new event" => "Crear un novo evento",
"View an event" => "Ver un evento",
"No categories selected" => "Non seleccionou as categorías",
"Select category" => "Seleccionar categoría",
"of" => "de",
"at" => "a",
"Timezone" => "Fuso horario",
"Check always for changes of the timezone" => "Comprobar sempre cambios de fuso horario",
"Timeformat" => "Formato de hora",
"24h" => "24h",
"12h" => "12h",
"Calendar CalDAV syncing address:" => "Enderezo de sincronización do calendario CalDAV:"
"First day of the week" => "Primeiro día da semana",
"Calendar CalDAV syncing address:" => "Enderezo de sincronización do calendario CalDAV:",
"Users" => "Usuarios",
"select users" => "escoller usuarios",
"Editable" => "Editable",
"Groups" => "Grupos",
"select groups" => "escoller grupos",
"make public" => "facer público"
);

View File

@ -1,8 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "לא נמצאו לוחות שנה.",
"No events found." => "לא נמצאו אירועים.",
"Wrong calendar" => "לוח שנה לא נכון",
"New Timezone:" => "אזור זמן חדש:",
"Timezone changed" => "אזור זמן השתנה",
"Invalid request" => "בקשה לא חוקית",
"Calendar" => "ח שנה",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "d MMM [ yyyy]{ '&#8212;'d[ MMM] yyyy}",
"Birthday" => "יום הולדת",
"Business" => "עסקים",
"Call" => "שיחה",
@ -18,6 +22,7 @@
"Projects" => "פרוייקטים",
"Questions" => "שאלות",
"Work" => "עבודה",
"unnamed" => "ללא שם",
"Does not repeat" => "ללא חזרה",
"Daily" => "יומי",
"Weekly" => "שבועי",
@ -25,9 +30,53 @@
"Bi-Weekly" => "דו שבועי",
"Monthly" => "חודשי",
"Yearly" => "שנתי",
"never" => "לעולם לא",
"by occurrences" => "לפי מופעים",
"by date" => "לפי תאריך",
"by monthday" => "לפי היום בחודש",
"by weekday" => "לפי היום בשבוע",
"Monday" => "יום שני",
"Tuesday" => "יום שלישי",
"Wednesday" => "יום רביעי",
"Thursday" => "יום חמישי",
"Friday" => "יום שישי",
"Saturday" => "שבת",
"Sunday" => "יום ראשון",
"events week of month" => "שבוע בחודש לציון הפעילות",
"first" => "ראשון",
"second" => "שני",
"third" => "שלישי",
"fourth" => "רביעי",
"fifth" => "חמישי",
"last" => "אחרון",
"January" => "ינואר",
"February" => "פברואר",
"March" => "מרץ",
"April" => "אפריל",
"May" => "מאי",
"June" => "יוני",
"July" => "יולי",
"August" => "אוגוסט",
"September" => "ספטמבר",
"October" => "אוקטובר",
"November" => "נובמבר",
"December" => "דצמבר",
"by events date" => "לפי תאריכי האירועים",
"by yearday(s)" => "לפי ימים בשנה",
"by weeknumber(s)" => "לפי מספרי השבועות",
"by day and month" => "לפי יום וחודש",
"Date" => "תאריך",
"Cal." => "לוח שנה",
"All day" => "היום",
"New Calendar" => "לוח שנה חדש",
"Missing fields" => "שדות חסרים",
"Title" => "כותרת",
"From Date" => "מתאריך",
"From Time" => "משעה",
"To Date" => "עד תאריך",
"To Time" => "עד שעה",
"The event ends before it starts" => "האירוע מסתיים עוד לפני שהתחיל",
"There was a database fail" => "אירע כשל במסד הנתונים",
"Week" => "שבוע",
"Month" => "חודש",
"List" => "רשימה",
@ -35,10 +84,15 @@
"Calendars" => "לוחות שנה",
"There was a fail, while parsing the file." => "אירעה שגיאה בעת פענוח הקובץ.",
"Choose active calendars" => "בחר לוחות שנה פעילים",
"Your calendars" => "לוחות השנה שלך",
"CalDav Link" => "קישור CalDav",
"Shared calendars" => "לוחות שנה מושתפים",
"No shared calendars" => "אין לוחות שנה משותפים",
"Share Calendar" => "שיתוף לוח שנה",
"Download" => "הורדה",
"Edit" => "עריכה",
"Delete" => "מחיקה",
"shared with you by" => "שותף אתך על ידי",
"New calendar" => "לוח שנה חדש",
"Edit calendar" => "עריכת לוח שנה",
"Displayname" => "שם תצוגה",
@ -49,18 +103,60 @@
"Cancel" => "ביטול",
"Edit an event" => "עריכת אירוע",
"Export" => "יצוא",
"Eventinfo" => "פרטי האירוע",
"Repeating" => "חוזר",
"Alarm" => "תזכורת",
"Attendees" => "משתתפים",
"Share" => "שיתוף",
"Title of the Event" => "כותרת האירוע",
"Category" => "קטגוריה",
"Separate categories with commas" => "הפרדת קטגוריות בפסיק",
"Edit categories" => "עריכת קטגוריות",
"All Day Event" => "אירוע של כל היום",
"From" => "מאת",
"To" => "עבור",
"Advanced options" => "אפשרויות מתקדמות",
"Location" => "מיקום",
"Location of the Event" => "מיקום האירוע",
"Description" => "תיאור",
"Description of the Event" => "תיאור האירוע",
"Repeat" => "חזרה",
"Advanced" => "מתקדם",
"Select weekdays" => "יש לבחור ימים בשבוע",
"Select days" => "יש לבחור בימים",
"and the events day of year." => "ויום האירוע בשנה.",
"and the events day of month." => "ויום האירוע בחודש.",
"Select months" => "יש לבחור בחודשים",
"Select weeks" => "יש לבחור בשבועות",
"and the events week of year." => "ומספור השבוע הפעיל בשנה.",
"Interval" => "משך",
"End" => "סיום",
"occurrences" => "מופעים",
"Import a calendar file" => "יבוא קובץ לוח שנה",
"Please choose the calendar" => "נא לבחור את לוח השנה",
"create a new calendar" => "יצירת לוח שנה חדש",
"Name of new calendar" => "שם לוח השנה החדש",
"Import" => "יבוא",
"Importing calendar" => "היומן מייובא",
"Calendar imported successfully" => "היומן ייובא בהצלחה",
"Close Dialog" => "סגירת הדו־שיח",
"Create a new event" => "יצירת אירוע חדש",
"View an event" => "צפייה באירוע",
"No categories selected" => "לא נבחרו קטגוריות",
"Select category" => "בחר קטגוריה",
"Timezone" => "אזור זמן"
"of" => "מתוך",
"at" => "בשנה",
"Timezone" => "אזור זמן",
"Check always for changes of the timezone" => "יש לבדוק תמיד אם יש הבדלים באזורי הזמן",
"Timeformat" => "מבנה התאריך",
"24h" => "24 שעות",
"12h" => "12 שעות",
"First day of the week" => "היום הראשון בשבוע",
"Calendar CalDAV syncing address:" => "כתובת הסנכרון ללוח שנה מסוג CalDAV:",
"Users" => "משתמשים",
"select users" => "נא לבחור במשתמשים",
"Editable" => "ניתן לעריכה",
"Groups" => "קבוצות",
"select groups" => "בחירת קבוצות",
"make public" => "הפיכה לציבורי"
);

View File

@ -1,14 +1,18 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Nisu pronađeni kalendari",
"No events found." => "Događaj nije pronađen.",
"Wrong calendar" => "Pogrešan kalendar",
"New Timezone:" => "Nova vremenska zona:",
"Timezone changed" => "Vremenska zona promijenjena",
"Invalid request" => "Neispravan zahtjev",
"Calendar" => "Kalendar",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "Rođendan",
"Business" => "Poslovno",
"Call" => "Poziv",
"Clients" => "Klijenti",
"Deliverer" => "Dostavljač",
"Holidays" => "Odmori",
"Holidays" => "Praznici",
"Ideas" => "Ideje",
"Journey" => "Putovanje",
"Jubilee" => "Obljetnica",
@ -18,6 +22,7 @@
"Projects" => "Projekti",
"Questions" => "Pitanja",
"Work" => "Posao",
"unnamed" => "bezimeno",
"Does not repeat" => "Ne ponavlja se",
"Daily" => "Dnevno",
"Weekly" => "Tjedno",
@ -25,14 +30,50 @@
"Bi-Weekly" => "Dvotjedno",
"Monthly" => "Mjesečno",
"Yearly" => "Godišnje",
"never" => "nikad",
"by occurrences" => "po pojavama",
"by date" => "po datum",
"by monthday" => "po dana mjeseca",
"by weekday" => "po tjednu",
"Monday" => "ponedeljak",
"Tuesday" => "utorak",
"Wednesday" => "srijeda",
"Thursday" => "četvrtak",
"Friday" => "petak",
"Saturday" => "subota",
"Sunday" => "nedelja",
"first" => "prvi",
"second" => "drugi",
"third" => "treći",
"fourth" => "četvrti",
"fifth" => "peti",
"last" => "zadnji",
"January" => "siječanj",
"February" => "veljača",
"March" => "ožujak",
"April" => "travanj",
"May" => "svibanj",
"June" => "lipanj",
"July" => "srpanj",
"August" => "kolovoz",
"September" => "rujan",
"October" => "listopad",
"November" => "studeni",
"December" => "prosinac",
"by events date" => "po datumu događaja",
"by yearday(s)" => "po godini(-nama)",
"by weeknumber(s)" => "po broju tjedna(-ana)",
"by day and month" => "po danu i mjeseca",
"Date" => "datum",
"Cal." => "Kal.",
"All day" => "Cijeli dan",
"New Calendar" => "Novi Kalendar",
"New Calendar" => "Novi kalendar",
"Missing fields" => "Nedostaju polja",
"Title" => "Naslov",
"From Date" => "Datum Od",
"From Time" => "Vrijeme Od",
"To Date" => "Datum Do",
"To Time" => "Vrijeme Do",
"From Date" => "Datum od",
"From Time" => "Vrijeme od",
"To Date" => "Datum do",
"To Time" => "Vrijeme do",
"The event ends before it starts" => "Događaj završava prije nego počinje",
"There was a database fail" => "Pogreška u bazi podataka",
"Week" => "Tjedan",
@ -41,11 +82,16 @@
"Today" => "Danas",
"Calendars" => "Kalendari",
"There was a fail, while parsing the file." => "Pogreška pri čitanju datoteke.",
"Choose active calendars" => "Odaberite aktive kalendare",
"CalDav Link" => "CalDav Poveznica",
"Choose active calendars" => "Odabir aktivnih kalendara",
"Your calendars" => "Vaši kalendari",
"CalDav Link" => "CalDav poveznica",
"Shared calendars" => "Podijeljeni kalendari",
"No shared calendars" => "Nema zajedničkih kalendara",
"Share Calendar" => "Podjeli kalendar",
"Download" => "Spremi lokalno",
"Edit" => "Uredi",
"Delete" => "Briši",
"shared with you by" => "podijeljeno s vama od ",
"New calendar" => "Novi kalendar",
"Edit calendar" => "Uredi kalendar",
"Displayname" => "Naziv",
@ -56,24 +102,57 @@
"Cancel" => "Odustani",
"Edit an event" => "Uredi događaj",
"Export" => "Izvoz",
"Title of the Event" => "Naslov Događaja",
"Eventinfo" => "Informacije o događaju",
"Repeating" => "Ponavljanje",
"Alarm" => "Alarm",
"Attendees" => "Polaznici",
"Share" => "Podijeli",
"Title of the Event" => "Naslov događaja",
"Category" => "Kategorija",
"Separate categories with commas" => "Odvoji kategorije zarezima",
"Edit categories" => "Uredi kategorije",
"All Day Event" => "Cjelodnevni događaj",
"From" => "Od",
"To" => "Za",
"Advanced options" => "Napredne mogućnosti",
"Location" => "Lokacija",
"Location of the Event" => "Lokacija Događaja",
"Location of the Event" => "Lokacija događaja",
"Description" => "Opis",
"Description of the Event" => "Opis događaja",
"Repeat" => "Ponavljanje",
"Please choose the calendar" => "Odaberite kalendar",
"Advanced" => "Napredno",
"Select weekdays" => "Odaberi dane u tjednu",
"Select days" => "Odaberi dane",
"Select months" => "Odaberi mjesece",
"Select weeks" => "Odaberi tjedne",
"Interval" => "Interval",
"End" => "Kraj",
"occurrences" => "pojave",
"Import a calendar file" => "Uvozite datoteku kalendara",
"Please choose the calendar" => "Odaberi kalendar",
"create a new calendar" => "stvori novi kalendar",
"Name of new calendar" => "Ime novog kalendara",
"Import" => "Uvoz",
"Importing calendar" => "Uvoz kalendara",
"Calendar imported successfully" => "Kalendar je uspješno uvezen",
"Close Dialog" => "Zatvori dijalog",
"Create a new event" => "Unesi novi događaj",
"View an event" => "Vidjeti događaj",
"No categories selected" => "Nema odabranih kategorija",
"Select category" => "Odabir kategorije",
"of" => "od",
"at" => "na",
"Timezone" => "Vremenska zona",
"Check always for changes of the timezone" => "Provjerite uvijek za promjene vremenske zone",
"Timeformat" => "Format vremena",
"24h" => "24h",
"12h" => "12h",
"Calendar CalDAV syncing address:" => "Adresa za CalDAV sinkronizaciju kalendara"
"First day of the week" => "Prvi dan tjedna",
"Calendar CalDAV syncing address:" => "Adresa za CalDAV sinkronizaciju kalendara:",
"Users" => "Korisnici",
"select users" => "odaberi korisnike",
"Editable" => "Može se uređivati",
"Groups" => "Grupe",
"select groups" => "izaberite grupe",
"make public" => "podjeli s javnošću"
);

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "カレンダーが見つかりませんでした。",
"No events found." => "イベントが見つかりませんでした。",
"Wrong calendar" => "誤ったカレンダーです",
"New Timezone:" => "新しいタイムゾーン:",
"Timezone changed" => "タイムゾーンが変更されました",
"Invalid request" => "無効なリクエストです",
"Calendar" => "カレンダー",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "誕生日",
"Business" => "ビジネス",
"Call" => "電話をかける",
@ -18,7 +21,7 @@
"Personal" => "個人",
"Projects" => "プロジェクト",
"Questions" => "質問事項",
"Work" => "仕事",
"Work" => "週の始まり",
"Does not repeat" => "繰り返さない",
"Daily" => "毎日",
"Weekly" => "毎週",
@ -31,13 +34,13 @@
"by date" => "日付で指定",
"by monthday" => "日にちで指定",
"by weekday" => "曜日で指定",
"Monday" => "月曜",
"Tuesday" => "火曜",
"Wednesday" => "水曜",
"Thursday" => "木曜",
"Friday" => "金曜",
"Saturday" => "土曜",
"Sunday" => "日曜",
"Monday" => "月曜",
"Tuesday" => "火曜",
"Wednesday" => "水曜",
"Thursday" => "木曜",
"Friday" => "金曜",
"Saturday" => "土曜",
"Sunday" => "日曜",
"events week of month" => "予定のある週を指定",
"first" => "1週目",
"second" => "2週目",
@ -64,7 +67,7 @@
"Date" => "日付",
"Cal." => "カレンダー",
"All day" => "終日",
"New Calendar" => "新しくカレンダーを作成する",
"New Calendar" => "新しくカレンダーを作成",
"Missing fields" => "項目がありません",
"Title" => "タイトル",
"From Date" => "開始日",
@ -72,19 +75,23 @@
"To Date" => "終了日",
"To Time" => "終了時間",
"The event ends before it starts" => "イベント終了時間が開始時間より先です",
"There was a database fail" => "データベースフェイルがありました",
"There was a database fail" => "データベースのエラーがありました",
"Week" => "",
"Month" => "",
"List" => "リスト",
"Today" => "今日",
"Calendars" => "カレンダー",
"There was a fail, while parsing the file." => "ファイルを構文解析する際に失敗しました",
"Choose active calendars" => "アクティブなカレンダーを選択してください",
"There was a fail, while parsing the file." => "ファイルの構文解析に失敗しました。",
"Choose active calendars" => "アクティブなカレンダーを選択",
"Your calendars" => "あなたのカレンダー",
"CalDav Link" => "CalDavへのリンク",
"Shared calendars" => "共有カレンダー",
"No shared calendars" => "共有カレンダーはありません",
"Share Calendar" => "カレンダーを共有する",
"Download" => "ダウンロード",
"Edit" => "編集",
"Delete" => "削除",
"New calendar" => "新しくカレンダーを作成する",
"New calendar" => "新しいカレンダー",
"Edit calendar" => "カレンダーを編集",
"Displayname" => "表示名",
"Active" => "アクティブ",
@ -94,8 +101,15 @@
"Cancel" => "キャンセル",
"Edit an event" => "イベントを編集",
"Export" => "エクスポート",
"Eventinfo" => "イベント情報",
"Repeating" => "繰り返し",
"Alarm" => "アラーム",
"Attendees" => "参加者",
"Share" => "共有",
"Title of the Event" => "イベントのタイトル",
"Category" => "カテゴリー",
"Separate categories with commas" => "カテゴリをコンマで区切る",
"Edit categories" => "カテゴリを編集",
"All Day Event" => "終日イベント",
"From" => "開始",
"To" => "終了",
@ -103,8 +117,8 @@
"Location" => "場所",
"Location of the Event" => "イベントの場所",
"Description" => "メモ",
"Description of the Event" => "イベントのメモ",
"Repeat" => "繰り返",
"Description of the Event" => "イベントの説明",
"Repeat" => "繰り返",
"Advanced" => "詳細設定",
"Select weekdays" => "曜日を指定",
"Select days" => "日付を指定",
@ -113,7 +127,7 @@
"Select months" => "月を指定する",
"Select weeks" => "週を指定する",
"and the events week of year." => "対象の週を選択する。",
"Interval" => "周期",
"Interval" => "間隔",
"End" => "繰り返す期間",
"occurrences" => "回繰り返す",
"Import a calendar file" => "カレンダーファイルをインポート",
@ -123,13 +137,24 @@
"Import" => "インポート",
"Importing calendar" => "カレンダーを取り込み中",
"Calendar imported successfully" => "カレンダーの取り込みに成功しました",
"Close Dialog" => "閉じる",
"Create a new event" => "新しいイベントを作成する",
"Close Dialog" => "ダイアログを閉じる",
"Create a new event" => "新しいイベントを作成",
"View an event" => "イベントを閲覧",
"No categories selected" => "カテゴリが選択されていません",
"Select category" => "カテゴリーを選択してください",
"of" => "of",
"at" => "at",
"Timezone" => "タイムゾーン",
"Check always for changes of the timezone" => "タイムゾーン変更を常に確認する",
"Check always for changes of the timezone" => "タイムゾーン変更を常に確認",
"Timeformat" => "時刻のフォーマット",
"24h" => "24時間制",
"12h" => "12時間制",
"Calendar CalDAV syncing address:" => "カレンダーのCalDAVシンクアドレス"
"24h" => "24h",
"12h" => "12h",
"First day of the week" => "週の始まり",
"Calendar CalDAV syncing address:" => "CalDAVカレンダーの同期アドレス:",
"Users" => "ユーザ",
"select users" => "ユーザを選択",
"Editable" => "編集可能",
"Groups" => "グループ",
"select groups" => "グループを選択",
"make public" => "公開する"
);

View File

@ -1,8 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Keng Kalenner fonnt.",
"No events found." => "Keng Evenementer fonnt.",
"Wrong calendar" => "Falschen Kalenner",
"New Timezone:" => "Nei Zäitzone:",
"Timezone changed" => "Zäitzon geännert",
"Invalid request" => "Ongülteg Requête",
"Calendar" => "Kalenner",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "Gebuertsdag",
"Business" => "Geschäftlech",
"Call" => "Uruff",
@ -25,6 +29,38 @@
"Bi-Weekly" => "All zweet Woch",
"Monthly" => "All Mount",
"Yearly" => "All Joer",
"never" => "ni",
"by occurrences" => "no Virkommes",
"by date" => "no Datum",
"by monthday" => "no Mount-Dag",
"by weekday" => "no Wochendag",
"Monday" => "Méindes",
"Tuesday" => "Dënschdes",
"Wednesday" => "Mëttwoch",
"Thursday" => "Donneschdes",
"Friday" => "Freides",
"Saturday" => "Samschdes",
"Sunday" => "Sonndes",
"first" => "éischt",
"second" => "Sekonn",
"third" => "Drëtt",
"fourth" => "Féiert",
"fifth" => "Fënneft",
"last" => "Läscht",
"January" => "Januar",
"February" => "Februar",
"March" => "Mäerz",
"April" => "Abrëll",
"May" => "Mee",
"June" => "Juni",
"July" => "Juli",
"August" => "August",
"September" => "September",
"October" => "Oktober",
"November" => "November",
"December" => "Dezember",
"Date" => "Datum",
"Cal." => "Cal.",
"All day" => "All Dag",
"New Calendar" => "Neien Kalenner",
"Missing fields" => "Felder déi feelen",
@ -42,7 +78,10 @@
"Calendars" => "Kalenneren",
"There was a fail, while parsing the file." => "Feeler beim lueden vum Fichier.",
"Choose active calendars" => "Wiel aktiv Kalenneren aus",
"Your calendars" => "Deng Kalenneren",
"CalDav Link" => "CalDav Link",
"Shared calendars" => "Gedeelte Kalenneren",
"No shared calendars" => "Keng gedeelten Kalenneren",
"Download" => "Eroflueden",
"Edit" => "Editéieren",
"Delete" => "Läschen",
@ -67,8 +106,22 @@
"Description" => "Beschreiwung",
"Description of the Event" => "Beschreiwung vum Evenement",
"Repeat" => "Widderhuelen",
"Advanced" => "Erweidert",
"Select weekdays" => "Wochendeeg auswielen",
"Select days" => "Deeg auswielen",
"Select months" => "Méint auswielen",
"Select weeks" => "Wochen auswielen",
"Interval" => "Intervall",
"End" => "Enn",
"occurrences" => "Virkommes",
"Import a calendar file" => "E Kalenner Fichier importéieren",
"Please choose the calendar" => "Wiel den Kalenner aus",
"create a new calendar" => "E neie Kalenner uleeën",
"Name of new calendar" => "Numm vum neie Kalenner",
"Import" => "Import",
"Importing calendar" => "Importéiert Kalenner",
"Calendar imported successfully" => "Kalenner erfollegräich importéiert",
"Close Dialog" => "Dialog zoumaachen",
"Create a new event" => "En Evenement maachen",
"Select category" => "Kategorie auswielen",
"Timezone" => "Zäitzon",

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Kalendorių nerasta.",
"No events found." => "Įvykių nerasta.",
"Wrong calendar" => "Ne tas kalendorius",
"New Timezone:" => "Nauja laiko juosta:",
"Timezone changed" => "Laiko zona pakeista",
"Invalid request" => "Klaidinga užklausa",
"Calendar" => "Kalendorius",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "Gimtadienis",
"Business" => "Verslas",
"Call" => "Skambučiai",
@ -19,6 +22,7 @@
"Projects" => "Projektai",
"Questions" => "Klausimai",
"Work" => "Darbas",
"unnamed" => "be pavadinimo",
"Does not repeat" => "Nekartoti",
"Daily" => "Kasdien",
"Weekly" => "Kiekvieną savaitę",
@ -68,7 +72,11 @@
"Calendars" => "Kalendoriai",
"There was a fail, while parsing the file." => "Apdorojant failą įvyko klaida.",
"Choose active calendars" => "Pasirinkite naudojamus kalendorius",
"Your calendars" => "Jūsų kalendoriai",
"CalDav Link" => "CalDav adresas",
"Shared calendars" => "Bendri kalendoriai",
"No shared calendars" => "Bendrų kalendorių nėra",
"Share Calendar" => "Dalintis kalendoriumi",
"Download" => "Atsisiųsti",
"Edit" => "Keisti",
"Delete" => "Trinti",
@ -82,8 +90,14 @@
"Cancel" => "Atšaukti",
"Edit an event" => "Taisyti įvykį",
"Export" => "Eksportuoti",
"Eventinfo" => "Informacija",
"Repeating" => "Pasikartojantis",
"Attendees" => "Dalyviai",
"Share" => "Dalintis",
"Title of the Event" => "Įvykio pavadinimas",
"Category" => "Kategorija",
"Separate categories with commas" => "Atskirkite kategorijas kableliais",
"Edit categories" => "Redaguoti kategorijas",
"All Day Event" => "Visos dienos įvykis",
"From" => "Nuo",
"To" => "Iki",
@ -95,6 +109,8 @@
"Repeat" => "Kartoti",
"Select weekdays" => "Pasirinkite savaitės dienas",
"Select days" => "Pasirinkite dienas",
"Select months" => "Pasirinkite mėnesius",
"Select weeks" => "Pasirinkite savaites",
"Interval" => "Intervalas",
"End" => "Pabaiga",
"Import a calendar file" => "Importuoti kalendoriaus failą",
@ -106,11 +122,19 @@
"Calendar imported successfully" => "Kalendorius sėkmingai importuotas",
"Close Dialog" => "Uždaryti",
"Create a new event" => "Sukurti naują įvykį",
"View an event" => "Peržiūrėti įvykį",
"No categories selected" => "Nepasirinktos jokios katagorijos",
"Select category" => "Pasirinkite kategoriją",
"Timezone" => "Laiko juosta",
"Check always for changes of the timezone" => "Visada tikrinti laiko zonos pasikeitimus",
"Timeformat" => "Laiko formatas",
"24h" => "24val",
"12h" => "12val",
"Calendar CalDAV syncing address:" => "CalDAV kalendoriaus synchronizavimo adresas:"
"Calendar CalDAV syncing address:" => "CalDAV kalendoriaus synchronizavimo adresas:",
"Users" => "Vartotojai",
"select users" => "pasirinkti vartotojus",
"Editable" => "Redaguojamas",
"Groups" => "Grupės",
"select groups" => "pasirinkti grupes",
"make public" => "viešinti"
);

View File

@ -147,7 +147,7 @@
"24h" => "24 t",
"12h" => "12 t",
"First day of the week" => "Ukens første dag",
"Calendar CalDAV syncing address:" => "Kalender CalDAV synkroniseringsadresse",
"Calendar CalDAV syncing address:" => "Synkroniseringsadresse fo kalender CalDAV:",
"Users" => "Brukere",
"select users" => "valgte brukere",
"Editable" => "Redigerbar",

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Brak kalendarzy",
"No events found." => "Brak wydzarzeń",
"Wrong calendar" => "Nieprawidłowy kalendarz",
"New Timezone:" => "Nowa strefa czasowa:",
"Timezone changed" => "Zmieniono strefę czasową",
"Invalid request" => "Nieprawidłowe żądanie",
"Calendar" => "Kalendarz",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "Urodziny",
"Business" => "Interesy",
"Call" => "Rozmowy",
@ -19,6 +22,7 @@
"Projects" => "Projekty",
"Questions" => "Pytania",
"Work" => "Zawodowe",
"unnamed" => "nienazwany",
"Does not repeat" => "Brak",
"Daily" => "Codziennie",
"Weekly" => "Tygodniowo",
@ -80,10 +84,15 @@
"Calendars" => "Kalendarze",
"There was a fail, while parsing the file." => "Nie udało się przetworzyć pliku.",
"Choose active calendars" => "Wybór aktywnych kalendarzy",
"Your calendars" => "Twoje kalendarze",
"CalDav Link" => "Wyświetla odnośnik CalDAV",
"Shared calendars" => "Współdzielone kalendarze",
"No shared calendars" => "Brak współdzielonych kalendarzy",
"Share Calendar" => "Współdziel kalendarz",
"Download" => "Pobiera kalendarz",
"Edit" => "Edytuje kalendarz",
"Delete" => "Usuwa kalendarz",
"shared with you by" => "współdzielisz z",
"New calendar" => "Nowy kalendarz",
"Edit calendar" => "Edytowanie kalendarza",
"Displayname" => "Wyświetlana nazwa",
@ -94,8 +103,15 @@
"Cancel" => "Anuluj",
"Edit an event" => "Edytowanie wydarzenia",
"Export" => "Wyeksportuj",
"Eventinfo" => "Informacja o wydarzeniach",
"Repeating" => "Powtarzanie",
"Alarm" => "Alarm",
"Attendees" => "Uczestnicy",
"Share" => "Współdziel",
"Title of the Event" => "Nazwa wydarzenia",
"Category" => "Kategoria",
"Separate categories with commas" => "Oddziel kategorie przecinkami",
"Edit categories" => "Edytuj kategorie",
"All Day Event" => "Wydarzenie całodniowe",
"From" => "Od",
"To" => "Do",
@ -125,11 +141,22 @@
"Calendar imported successfully" => "Zaimportowano kalendarz",
"Close Dialog" => "Zamknij okno",
"Create a new event" => "Tworzenie nowego wydarzenia",
"View an event" => "Zobacz wydarzenie",
"No categories selected" => "nie zaznaczono kategorii",
"Select category" => "Wybierz kategorię",
"of" => "z",
"at" => "w",
"Timezone" => "Strefa czasowa",
"Check always for changes of the timezone" => "Zawsze sprawdzaj zmiany strefy czasowej",
"Timeformat" => "Format czasu",
"24h" => "24h",
"12h" => "12h",
"Calendar CalDAV syncing address:" => "Adres synchronizacji kalendarza CalDAV:"
"First day of the week" => "Pierwszy dzień tygodnia",
"Calendar CalDAV syncing address:" => "Adres synchronizacji kalendarza CalDAV:",
"Users" => "Użytkownicy",
"select users" => "wybierz użytkowników",
"Editable" => "Edytowalne",
"Groups" => "Grupy",
"select groups" => "wybierz grupy",
"make public" => "uczyń publicznym"
);

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Nenhum calendário encontrado.",
"No events found." => "Nenhum evento encontrado.",
"Wrong calendar" => "Calendário errado",
"New Timezone:" => "Nova zona horária",
"Timezone changed" => "Zona horária alterada",
"Invalid request" => "Pedido inválido",
"Calendar" => "Calendário",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "Dia de anos",
"Business" => "Negócio",
"Call" => "Telefonar",
@ -19,6 +22,7 @@
"Projects" => "Projetos",
"Questions" => "Perguntas",
"Work" => "Trabalho",
"unnamed" => "não definido",
"Does not repeat" => "Não repete",
"Daily" => "Diário",
"Weekly" => "Semanal",
@ -80,10 +84,15 @@
"Calendars" => "Calendários",
"There was a fail, while parsing the file." => "Houve uma falha durante a análise do ficheiro",
"Choose active calendars" => "Escolhe calendários ativos",
"Your calendars" => "Os seus calendários",
"CalDav Link" => "Endereço CalDav",
"Shared calendars" => "Calendários partilhados",
"No shared calendars" => "Nenhum calendário partilhado",
"Share Calendar" => "Partilhar calendário",
"Download" => "Transferir",
"Edit" => "Editar",
"Delete" => "Apagar",
"shared with you by" => "Partilhado consigo por",
"New calendar" => "Novo calendário",
"Edit calendar" => "Editar calendário",
"Displayname" => "Nome de exibição",
@ -94,8 +103,15 @@
"Cancel" => "Cancelar",
"Edit an event" => "Editar um evento",
"Export" => "Exportar",
"Eventinfo" => "Informação do evento",
"Repeating" => "Repetição",
"Alarm" => "Alarme",
"Attendees" => "Participantes",
"Share" => "Partilhar",
"Title of the Event" => "Título do evento",
"Category" => "Categoria",
"Separate categories with commas" => "Separe categorias por virgulas",
"Edit categories" => "Editar categorias",
"All Day Event" => "Evento de dia inteiro",
"From" => "De",
"To" => "Para",
@ -125,11 +141,22 @@
"Calendar imported successfully" => "Calendário importado com sucesso",
"Close Dialog" => "Fechar diálogo",
"Create a new event" => "Criar novo evento",
"View an event" => "Ver um evento",
"No categories selected" => "Nenhuma categoria seleccionada",
"Select category" => "Selecionar categoria",
"of" => "de",
"at" => "em",
"Timezone" => "Zona horária",
"Check always for changes of the timezone" => "Verificar sempre por alterações na zona horária",
"Timeformat" => "Formato da hora",
"24h" => "24h",
"12h" => "12h",
"Calendar CalDAV syncing address:" => "Endereço de sincronização CalDav do calendário"
"First day of the week" => "Primeiro dia da semana",
"Calendar CalDAV syncing address:" => "Endereço de sincronização CalDav do calendário",
"Users" => "Utilizadores",
"select users" => "Selecione utilizadores",
"Editable" => "Editavel",
"Groups" => "Grupos",
"select groups" => "Selecione grupos",
"make public" => "Tornar público"
);

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Nici un calendar găsit.",
"No events found." => "Nici un eveniment găsit.",
"Wrong calendar" => "Calendar greșit",
"New Timezone:" => "Fus orar nou:",
"Timezone changed" => "Fus orar schimbat",
"Invalid request" => "Cerere eronată",
"Calendar" => "Calendar",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "LLL z[aaaa]{'&#8212;'[LLL] z aaaa}",
"Birthday" => "Zi de naștere",
"Business" => "Afaceri",
"Call" => "Sună",
@ -19,6 +22,7 @@
"Projects" => "Proiecte",
"Questions" => "Întrebări",
"Work" => "Servici",
"unnamed" => "fără nume",
"Does not repeat" => "Nerepetabil",
"Daily" => "Zilnic",
"Weekly" => "Săptămânal",
@ -80,10 +84,15 @@
"Calendars" => "Calendare",
"There was a fail, while parsing the file." => "A fost întâmpinată o eroare în procesarea fișierului",
"Choose active calendars" => "Alege calendarele active",
"Your calendars" => "Calendarele tale",
"CalDav Link" => "Legătură CalDav",
"Shared calendars" => "Calendare partajate",
"No shared calendars" => "Nici un calendar partajat",
"Share Calendar" => "Partajați calendarul",
"Download" => "Descarcă",
"Edit" => "Modifică",
"Delete" => "Șterge",
"shared with you by" => "Partajat cu tine de",
"New calendar" => "Calendar nou",
"Edit calendar" => "Modifică calendarul",
"Displayname" => "Nume afișat",
@ -94,8 +103,15 @@
"Cancel" => "Anulează",
"Edit an event" => "Modifică un eveniment",
"Export" => "Exportă",
"Eventinfo" => "Informații despre eveniment",
"Repeating" => "Ciclic",
"Alarm" => "Alarmă",
"Attendees" => "Participanți",
"Share" => "Partajează",
"Title of the Event" => "Numele evenimentului",
"Category" => "Categorie",
"Separate categories with commas" => "Separă categoriile prin virgule",
"Edit categories" => "Editează categorii",
"All Day Event" => "Toată ziua",
"From" => "De la",
"To" => "Către",
@ -125,11 +141,22 @@
"Calendar imported successfully" => "Calendarul a fost importat cu succes",
"Close Dialog" => "Închide",
"Create a new event" => "Crează un eveniment nou",
"View an event" => "Vizualizează un eveniment",
"No categories selected" => "Nici o categorie selectată",
"Select category" => "Selecteză categoria",
"of" => "din",
"at" => "la",
"Timezone" => "Fus orar",
"Check always for changes of the timezone" => "Verifică mereu pentru schimbări ale fusului orar",
"Timeformat" => "Forma de afișare a orei",
"24h" => "24h",
"12h" => "12h",
"Calendar CalDAV syncing address:" => "Adresa pentru sincronizarea calendarului CalDAV"
"First day of the week" => "Prima zi a săptămînii",
"Calendar CalDAV syncing address:" => "Adresa pentru sincronizarea calendarului CalDAV",
"Users" => "Utilizatori",
"select users" => "utilizatori selectați",
"Editable" => "Editabil",
"Groups" => "Grupuri",
"select groups" => "grupuri selectate",
"make public" => "fă public"
);

View File

@ -1,4 +1,6 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Календари не найдены.",
"No events found." => "События не найдены.",
"Wrong calendar" => "Неверный календарь",
"New Timezone:" => "Новый часовой пояс:",
"Timezone changed" => "Часовой пояс изменён",
@ -19,6 +21,7 @@
"Projects" => "Проекты",
"Questions" => "Вопросы",
"Work" => "Работа",
"unnamed" => "без имени",
"Does not repeat" => "Не повторяется",
"Daily" => "Ежедневно",
"Weekly" => "Еженедельно",
@ -80,10 +83,15 @@
"Calendars" => "Календари",
"There was a fail, while parsing the file." => "Не удалось обработать файл.",
"Choose active calendars" => "Выберите активные календари",
"Your calendars" => "Ваши календари",
"CalDav Link" => "Ссылка для CalDav",
"Shared calendars" => "Общие календари",
"No shared calendars" => "Нет общих календарей",
"Share Calendar" => "Сделать календарь общим",
"Download" => "Скачать",
"Edit" => "Редактировать",
"Delete" => "Удалить",
"shared with you by" => "с вами поделился",
"New calendar" => "Новый календарь",
"Edit calendar" => "Редактировать календарь",
"Displayname" => "Отображаемое имя",
@ -94,8 +102,15 @@
"Cancel" => "Отмена",
"Edit an event" => "Редактировать событие",
"Export" => "Экспортировать",
"Eventinfo" => "Информация о событии",
"Repeating" => "Повторение",
"Alarm" => "Сигнал",
"Attendees" => "Участники",
"Share" => "Поделиться",
"Title of the Event" => "Название событие",
"Category" => "Категория",
"Separate categories with commas" => "Разделяйте категории запятыми",
"Edit categories" => "Редактировать категории",
"All Day Event" => "Событие на весь день",
"From" => "От",
"To" => "До",
@ -125,11 +140,20 @@
"Calendar imported successfully" => "Календарь успешно импортирован",
"Close Dialog" => "Закрыть Сообщение",
"Create a new event" => "Создать новое событие",
"View an event" => "Показать событие",
"No categories selected" => "Категории не выбраны",
"Select category" => "Выбрать категорию",
"Timezone" => "Часовой пояс",
"Check always for changes of the timezone" => "Всегда проверяйте изменение часового пояса",
"Timeformat" => "Формат времени",
"24h" => "24ч",
"12h" => "12ч",
"Calendar CalDAV syncing address:" => "Адрес синхронизации календаря CalDAV:"
"First day of the week" => "Первый день недели",
"Calendar CalDAV syncing address:" => "Адрес синхронизации календаря CalDAV:",
"Users" => "Пользователи",
"select users" => "выбрать пользователей",
"Editable" => "Редактируемо",
"Groups" => "Группы",
"select groups" => "выбрать группы",
"make public" => "селать публичным"
);

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "Inga kalendrar funna",
"No events found." => "Inga händelser funna.",
"Wrong calendar" => "Fel kalender",
"New Timezone:" => "Ny tidszon:",
"Timezone changed" => "Tidszon ändrad",
"Invalid request" => "Ogiltig begäran",
"Calendar" => "Kalender",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "Födelsedag",
"Business" => "Företag",
"Call" => "Ringa",
@ -19,6 +22,7 @@
"Projects" => "Projekt",
"Questions" => "Frågor",
"Work" => "Arbetet",
"unnamed" => "Namn saknas",
"Does not repeat" => "Upprepas inte",
"Daily" => "Dagligen",
"Weekly" => "Varje vecka",
@ -80,10 +84,15 @@
"Calendars" => "Kalendrar",
"There was a fail, while parsing the file." => "Det blev ett fel medan filen analyserades.",
"Choose active calendars" => "Välj aktiva kalendrar",
"Your calendars" => "Dina kalendrar",
"CalDav Link" => "CalDAV-länk",
"Shared calendars" => "Delade kalendrar",
"No shared calendars" => "Inga delade kalendrar",
"Share Calendar" => "Dela kalender",
"Download" => "Ladda ner",
"Edit" => "Redigera",
"Delete" => "Radera",
"shared with you by" => "delad med dig av",
"New calendar" => "Nya kalender",
"Edit calendar" => "Redigera kalender",
"Displayname" => "Visningsnamn",
@ -94,8 +103,15 @@
"Cancel" => "Avbryt",
"Edit an event" => "Redigera en händelse",
"Export" => "Exportera",
"Eventinfo" => "Händelseinfo",
"Repeating" => "Repetera",
"Alarm" => "Alarm",
"Attendees" => "Deltagare",
"Share" => "Dela",
"Title of the Event" => "Rubrik för händelsen",
"Category" => "Kategori",
"Separate categories with commas" => "Separera kategorier med komman",
"Edit categories" => "Redigera kategorier",
"All Day Event" => "Hela dagen",
"From" => "Från",
"To" => "Till",
@ -125,11 +141,22 @@
"Calendar imported successfully" => "Kalender importerades utan problem",
"Close Dialog" => "Stäng ",
"Create a new event" => "Skapa en ny händelse",
"View an event" => "Visa en händelse",
"No categories selected" => "Inga kategorier valda",
"Select category" => "Välj kategori",
"of" => "av",
"at" => "",
"Timezone" => "Tidszon",
"Check always for changes of the timezone" => "Kontrollera alltid ändringar i tidszon.",
"Timeformat" => "Tidsformat",
"24h" => "24h",
"12h" => "12h",
"Calendar CalDAV syncing address:" => "Synkroniseringsadress för CalDAV kalender:"
"First day of the week" => "Första dagen av veckan",
"Calendar CalDAV syncing address:" => "Synkroniseringsadress för CalDAV kalender:",
"Users" => "Användare",
"select users" => "välj användare",
"Editable" => "Redigerbar",
"Groups" => "Grupper",
"select groups" => "Välj grupper",
"make public" => "Gör offentlig"
);

View File

@ -6,6 +6,7 @@
"Timezone changed" => "时区已修改",
"Invalid request" => "非法请求",
"Calendar" => "日历",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "生日",
"Business" => "商务",
"Call" => "呼叫",
@ -104,6 +105,7 @@
"Export" => "导出",
"Eventinfo" => "事件信息",
"Repeating" => "重复",
"Alarm" => "提醒",
"Attendees" => "参加者",
"Share" => "共享",
"Title of the Event" => "事件标题",
@ -142,6 +144,8 @@
"View an event" => "查看事件",
"No categories selected" => "无选中分类",
"Select category" => "选择分类",
"of" => "",
"at" => "",
"Timezone" => "时区",
"Check always for changes of the timezone" => "选中则总是按照时区变化",
"Timeformat" => "时间格式",

View File

@ -1,9 +1,12 @@
<?php $TRANSLATIONS = array(
"No calendars found." => "沒有找到行事曆",
"No events found." => "沒有找到活動",
"Wrong calendar" => "錯誤日曆",
"New Timezone:" => "新時區:",
"Timezone changed" => "時區已變更",
"Invalid request" => "無效請求",
"Calendar" => "日曆",
"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",
"Birthday" => "生日",
"Business" => "商業",
"Call" => "呼叫",
@ -19,6 +22,7 @@
"Projects" => "計畫",
"Questions" => "問題",
"Work" => "工作",
"unnamed" => "無名稱的",
"Does not repeat" => "不重覆",
"Daily" => "每日",
"Weekly" => "每週",
@ -29,6 +33,7 @@
"never" => "絕不",
"by occurrences" => "由事件",
"by date" => "由日期",
"by monthday" => "依月份日期",
"by weekday" => "由平日",
"Monday" => "週一",
"Tuesday" => "週二",
@ -37,6 +42,7 @@
"Friday" => "週五",
"Saturday" => "週六",
"Sunday" => "週日",
"events week of month" => "月份中活動週",
"first" => "第一",
"second" => "第二",
"third" => "第三",
@ -56,9 +62,11 @@
"November" => "十一月",
"December" => "十二月",
"by events date" => "由事件日期",
"by yearday(s)" => "依年份日期",
"by weeknumber(s)" => "由週數",
"by day and month" => "由日與月",
"Date" => "日期",
"Cal." => "行事曆",
"All day" => "整天",
"New Calendar" => "新日曆",
"Missing fields" => "遺失欄位",
@ -76,10 +84,15 @@
"Calendars" => "日曆",
"There was a fail, while parsing the file." => "解析檔案時失敗。",
"Choose active calendars" => "選擇一個作用中的日曆",
"Your calendars" => "你的行事曆",
"CalDav Link" => "CalDav 聯結",
"Shared calendars" => "分享的行事曆",
"No shared calendars" => "不分享的行事曆",
"Share Calendar" => "分享行事曆",
"Download" => "下載",
"Edit" => "編輯",
"Delete" => "刪除",
"shared with you by" => "分享給你由",
"New calendar" => "新日曆",
"Edit calendar" => "編輯日曆",
"Displayname" => "顯示名稱",
@ -90,11 +103,15 @@
"Cancel" => "取消",
"Edit an event" => "編輯事件",
"Export" => "匯出",
"Eventinfo" => "活動資訊",
"Repeating" => "重覆中",
"Alarm" => "鬧鐘",
"Attendees" => "出席者",
"Share" => "分享",
"Title of the Event" => "事件標題",
"Category" => "分類",
"Separate categories with commas" => "用逗點分隔分類",
"Edit categories" => "編輯分類",
"All Day Event" => "全天事件",
"From" => "",
"To" => "",
@ -107,8 +124,11 @@
"Advanced" => "進階",
"Select weekdays" => "選擇平日",
"Select days" => "選擇日",
"and the events day of year." => "以及年中的活動日",
"and the events day of month." => "以及月中的活動日",
"Select months" => "選擇月",
"Select weeks" => "選擇週",
"and the events week of year." => "以及年中的活動週",
"Interval" => "間隔",
"End" => "結束",
"occurrences" => "事件",
@ -121,16 +141,22 @@
"Calendar imported successfully" => "已成功匯入日曆",
"Close Dialog" => "關閉對話",
"Create a new event" => "建立一個新事件",
"View an event" => "觀看一個活動",
"No categories selected" => "沒有選擇分類",
"Select category" => "選擇分類",
"of" => "",
"at" => "",
"Timezone" => "時區",
"Check always for changes of the timezone" => "總是檢查是否變更了時區",
"Timeformat" => "日期格式",
"24h" => "24小時制",
"12h" => "12小時制",
"First day of the week" => "每週的第一天",
"Calendar CalDAV syncing address:" => "CalDAV 的日曆同步地址:",
"Users" => "使用者",
"select users" => "選擇使用者",
"Editable" => "可編輯",
"Groups" => "群組",
"select groups" => "選擇群組"
"select groups" => "選擇群組",
"make public" => "公開"
);

View File

@ -600,8 +600,8 @@ class OC_Calendar_Object{
public static function updateVCalendarFromRequest($request, $vcalendar)
{
$title = $request["title"];
$location = $request["location"];
$title = strip_tags($request["title"]);
$location = strip_tags($request["location"]);
$categories = $request["categories"];
$allday = isset($request["allday"]);
$from = $request["from"];
@ -611,7 +611,7 @@ class OC_Calendar_Object{
$totime = $request['totime'];
}
$vevent = $vcalendar->VEVENT;
$description = $request["description"];
$description = strip_tags($request["description"]);
$repeat = $request["repeat"];
if($repeat != 'doesnotrepeat'){
$rrule = '';

View File

@ -2,7 +2,7 @@
<div id="form_container">
<input type="hidden" id="filename" value="<?php echo $_['filename'];?>">
<input type="hidden" id="path" value="<?php echo $_['path'];?>">
<input type="hidden" id="progressfile" value="<?php echo md5(session_id()) . '.txt';?>">
<input type="hidden" id="progresskey" value="<?php echo rand() ?>">
<p style="text-align:center;"><b><?php echo $l->t('Please choose the calendar'); ?></b></p>
<select style="width:100%;" id="calendar" name="calendar">
<?php

View File

@ -20,25 +20,10 @@
*
*/
// Init owncloud
function bailOut($msg) {
OCP\JSON::error(array('data' => array('message' => $msg)));
OCP\Util::writeLog('contacts','ajax/addcontact.php: '.$msg, OCP\Util::DEBUG);
exit();
}
function debug($msg) {
OCP\Util::writeLog('contacts','ajax/addcontact.php: '.$msg, OCP\Util::DEBUG);
}
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');
foreach ($_POST as $key=>$element) {
debug('_POST: '.$key.'=>'.$element);
}
$aid = isset($_POST['aid'])?$_POST['aid']:null;
if(!$aid) {
$aid = min(OC_Contacts_Addressbook::activeIds()); // first active addressbook.
@ -54,7 +39,7 @@ $vcard->setUID();
$vcard->setString('FN',$fn);
$vcard->setString('N',$n);
$id = OC_Contacts_VCard::add($aid,$vcard, null, $isnew);
$id = OC_Contacts_VCard::add($aid, $vcard, null, $isnew);
if(!$id) {
OCP\JSON::error(array('data' => array('message' => OC_Contacts_App::$l10n->t('There was an error adding the contact.'))));
OCP\Util::writeLog('contacts','ajax/addcontact.php: Recieved non-positive ID on adding card: '.$id, OCP\Util::ERROR);

View File

@ -20,9 +20,6 @@
*
*/
// Init owncloud
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');

View File

@ -19,8 +19,6 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
// Init owncloud
function bailOut($msg) {
OCP\JSON::error(array('data' => array('message' => $msg)));
@ -42,18 +40,6 @@ if(is_null($vcard)) {
}
$details = OC_Contacts_VCard::structureContact($vcard);
// Some Google exported files have no FN field.
/*if(!isset($details['FN'])) {
$fn = '';
if(isset($details['N'])) {
$details['FN'] = array(implode(' ', $details['N'][0]['value']));
} elseif(isset($details['EMAIL'])) {
$details['FN'] = array('value' => $details['EMAIL'][0]['value']);
} else {
$details['FN'] = array('value' => OC_Contacts_App::$l10n->t('Unknown'));
}
}*/
// Make up for not supporting the 'N' field in earlier version.
if(!isset($details['N'])) {
$details['N'] = array();

View File

@ -20,18 +20,14 @@
*
*/
// Init owncloud
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');
$tmp_path = $_GET['tmp_path'];
$tmpkey = $_GET['tmpkey'];
$id = $_GET['id'];
OCP\Util::writeLog('contacts','ajax/cropphoto.php: tmp_path: '.$tmp_path.', exists: '.file_exists($tmp_path), OCP\Util::DEBUG);
$tmpl = new OCP\Template("contacts", "part.cropphoto");
$tmpl->assign('tmp_path', $tmp_path);
$tmpl->assign('tmpkey', $tmpkey);
$tmpl->assign('id', $id);
$page = $tmpl->fetchPage();

View File

@ -19,10 +19,7 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
// Init owncloud
//require_once('../../../lib/base.php');
// Check if we are a user
// Firefox and Konqueror tries to download application/json for me. --Arthur
OCP\JSON::setContentTypeHeader('text/plain');
OCP\JSON::checkLoggedIn();
@ -32,30 +29,24 @@ function bailOut($msg) {
OCP\Util::writeLog('contacts','ajax/currentphoto.php: '.$msg, OCP\Util::ERROR);
exit();
}
function debug($msg) {
OCP\Util::writeLog('contacts','ajax/currentphoto.php: '.$msg, OCP\Util::DEBUG);
}
if (!isset($_GET['id'])) {
bailOut(OC_Contacts_App::$l10n->t('No contact ID was submitted.'));
}
$tmpfname = tempnam(get_temp_dir(), "occOrig");
$contact = OC_Contacts_App::getContactVCard($_GET['id']);
$image = new OC_Image();
if(!$image) {
bailOut(OC_Contacts_App::$l10n->t('Error loading image.'));
}
// invalid vcard
if( is_null($contact)) {
bailOut(OC_Contacts_App::$l10n->t('Error reading contact photo.'));
} else {
$image = new OC_Image();
if(!$image->loadFromBase64($contact->getAsString('PHOTO'))) {
$image->loadFromBase64($contact->getAsString('LOGO'));
}
if($image->valid()) {
if($image->save($tmpfname)) {
OCP\JSON::success(array('data' => array('id'=>$_GET['id'], 'tmp'=>$tmpfname)));
$tmpkey = 'contact-photo-'.$contact->getAsString('UID');
if(OC_Cache::set($tmpkey, $image->data(), 600)) {
OCP\JSON::success(array('data' => array('id'=>$_GET['id'], 'tmp'=>$tmpkey)));
exit();
} else {
bailOut(OC_Contacts_App::$l10n->t('Error saving temporary file.'));

View File

@ -20,9 +20,6 @@
*
*/
// Init owncloud
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');

View File

@ -25,9 +25,6 @@ function bailOut($msg) {
exit();
}
// Init owncloud
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');

View File

@ -20,9 +20,6 @@
*
*/
// Init owncloud
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');

View File

@ -14,14 +14,11 @@ function bailOut($msg) {
OCP\Util::writeLog('contacts','ajax/editname.php: '.$msg, OCP\Util::DEBUG);
exit();
}
function debug($msg) {
OCP\Util::writeLog('contacts','ajax/editname.php: '.$msg, OCP\Util::DEBUG);
}
$tmpl = new OCP\Template("contacts", "part.edit_name_dialog");
$id = isset($_GET['id'])?$_GET['id']:'';
debug('id: '.$id);
if($id) {
$vcard = OC_Contacts_App::getContactVCard($id);
$name = array('', '', '', '', '');

View File

@ -20,20 +20,6 @@
*
*/
// Init owncloud
function bailOut($msg) {
OCP\JSON::error(array('data' => array('message' => $msg)));
OCP\Util::writeLog('contacts','ajax/loadcard.php: '.$msg, OCP\Util::DEBUG);
exit();
}
function debug($msg) {
OCP\Util::writeLog('contacts','ajax/loadcard.php: '.$msg, OCP\Util::DEBUG);
}
// foreach ($_POST as $key=>$element) {
// debug('_POST: '.$key.'=>'.$element);
// }
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');

View File

@ -19,24 +19,17 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
// Init owncloud
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');
// foreach ($_POST as $key=>$element) {
// OCP\Util::writeLog('contacts','ajax/savecrop.php: '.$key.'=>'.$element, OCP\Util::DEBUG);
// }
function bailOut($msg) {
OCP\JSON::error(array('data' => array('message' => $msg)));
OCP\Util::writeLog('contacts','ajax/loadphoto.php: '.$msg, OCP\Util::DEBUG);
exit();
}
$image = null;
$id = isset($_GET['id']) ? $_GET['id'] : '';
$refresh = isset($_GET['refresh']) ? true : false;

View File

@ -20,8 +20,6 @@
*
*/
// Check if we are a user
// Firefox and Konqueror tries to download application/json for me. --Arthur
OCP\JSON::setContentTypeHeader('text/plain');
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');
function bailOut($msg) {
@ -29,9 +27,6 @@ function bailOut($msg) {
OCP\Util::writeLog('contacts','ajax/oc_photo.php: '.$msg, OCP\Util::ERROR);
exit();
}
function debug($msg) {
OCP\Util::writeLog('contacts','ajax/oc_photo.php: '.$msg, OCP\Util::DEBUG);
}
if(!isset($_GET['id'])) {
bailOut(OC_Contacts_App::$l10n->t('No contact ID was submitted.'));
@ -42,31 +37,30 @@ if(!isset($_GET['path'])) {
}
$localpath = OC_Filesystem::getLocalFile($_GET['path']);
$tmpfname = tempnam(get_temp_dir(), "occOrig");
$tmpkey = 'contact-photo-'.$_GET['id'];
if(!file_exists($localpath)) {
bailOut(OC_Contacts_App::$l10n->t('File doesn\'t exist:').$localpath);
}
file_put_contents($tmpfname, file_get_contents($localpath));
$image = new OC_Image();
if(!$image) {
bailOut(OC_Contacts_App::$l10n->t('Error loading image.'));
}
if(!$image->loadFromFile($tmpfname)) {
if(!$image->loadFromFile($localpath)) {
bailOut(OC_Contacts_App::$l10n->t('Error loading image.'));
}
if($image->width() > 400 || $image->height() > 400) {
$image->resize(400); // Prettier resizing than with browser and saves bandwidth.
}
if(!$image->fixOrientation()) { // No fatal error so we don't bail out.
debug('Couldn\'t save correct image orientation: '.$tmpfname);
OCP\Util::writeLog('contacts','ajax/oc_photo.php: Couldn\'t save correct image orientation: '.$localpath, OCP\Util::DEBUG);
}
if($image->save($tmpfname)) {
OCP\JSON::success(array('data' => array('id'=>$_GET['id'], 'tmp'=>$tmpfname)));
if(OC_Cache::set($tmpkey, $image->data(), 600)) {
OCP\JSON::success(array('data' => array('id'=>$_GET['id'], 'tmp'=>$tmpkey)));
exit();
} else {
bailOut('Couldn\'t save temporary image: '.$tmpfname);
bailOut('Couldn\'t save temporary image: '.$tmpkey);
}
?>

View File

@ -18,21 +18,11 @@
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* TODO: Translatable strings.
* Remember to delete tmp file at some point.
*/
// Init owncloud
OCP\Util::writeLog('contacts','ajax/savecrop.php: Huzzah!!!', OCP\Util::DEBUG);
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');
// foreach ($_POST as $key=>$element) {
// OCP\Util::writeLog('contacts','ajax/savecrop.php: '.$key.'=>'.$element, OCP\Util::DEBUG);
// }
// Firefox and Konqueror tries to download application/json for me. --Arthur
OCP\JSON::setContentTypeHeader('text/plain');
@ -50,88 +40,71 @@ $y1 = (isset($_POST['y1']) && $_POST['y1']) ? $_POST['y1'] : 0;
//$y2 = isset($_POST['y2']) ? $_POST['y2'] : -1;
$w = (isset($_POST['w']) && $_POST['w']) ? $_POST['w'] : -1;
$h = (isset($_POST['h']) && $_POST['h']) ? $_POST['h'] : -1;
$tmp_path = isset($_POST['tmp_path']) ? $_POST['tmp_path'] : '';
$tmpkey = isset($_POST['tmpkey']) ? $_POST['tmpkey'] : '';
$id = isset($_POST['id']) ? $_POST['id'] : '';
if($tmp_path == '') {
bailOut('Missing path to temporary file.');
if($tmpkey == '') {
bailOut('Missing key to temporary file.');
}
if($id == '') {
bailOut('Missing contact id.');
}
OCP\Util::writeLog('contacts','savecrop.php: files: '.$tmp_path.' exists: '.file_exists($tmp_path), OCP\Util::DEBUG);
OCP\Util::writeLog('contacts','savecrop.php: key: '.$tmpkey, OCP\Util::DEBUG);
if(file_exists($tmp_path)) {
$data = OC_Cache::get($tmpkey);
if($data) {
$image = new OC_Image();
if($image->loadFromFile($tmp_path)) {
if($image->loadFromdata($data)) {
$w = ($w != -1 ? $w : $image->width());
$h = ($h != -1 ? $h : $image->height());
OCP\Util::writeLog('contacts','savecrop.php, x: '.$x1.' y: '.$y1.' w: '.$w.' h: '.$h, OCP\Util::DEBUG);
if($image->crop($x1, $y1, $w, $h)) {
if(($image->width() <= 200 && $image->height() <= 200) || $image->resize(200)) {
$tmpfname = tempnam(get_temp_dir(), "occCropped"); // create a new file because of caching issues.
if($image->save($tmpfname)) {
unlink($tmp_path);
$card = OC_Contacts_App::getContactVCard($id);
if(!$card) {
unlink($tmpfname);
bailOut('Error getting contact object.');
}
if($card->__isset('PHOTO')) {
OCP\Util::writeLog('contacts','savecrop.php: PHOTO property exists.', OCP\Util::DEBUG);
$property = $card->__get('PHOTO');
if(!$property) {
unlink($tmpfname);
bailOut('Error getting PHOTO property.');
}
$property->setValue($image->__toString());
$property->parameters[] = new Sabre_VObject_Parameter('ENCODING', 'b');
$property->parameters[] = new Sabre_VObject_Parameter('TYPE', $image->mimeType());
$card->__set('PHOTO', $property);
} else {
OCP\Util::writeLog('contacts','savecrop.php: files: Adding PHOTO property.', OCP\Util::DEBUG);
$card->addProperty('PHOTO', $image->__toString(), array('ENCODING' => 'b', 'TYPE' => $image->mimeType()));
}
$now = new DateTime;
$card->setString('REV', $now->format(DateTime::W3C));
if(!OC_Contacts_VCard::edit($id,$card)) {
bailOut('Error saving contact.');
}
unlink($tmpfname);
//$result=array( "status" => "success", 'mime'=>$image->mimeType(), 'tmp'=>$tmp_path);
$tmpl = new OCP\Template("contacts", "part.contactphoto");
$tmpl->assign('tmp_path', $tmpfname);
$tmpl->assign('mime', $image->mimeType());
$tmpl->assign('id', $id);
$tmpl->assign('refresh', true);
$tmpl->assign('width', $image->width());
$tmpl->assign('height', $image->height());
$page = $tmpl->fetchPage();
OCP\JSON::success(array('data' => array('page'=>$page, 'tmp'=>$tmpfname)));
exit();
} else {
if(file_exists($tmpfname)) {
unlink($tmpfname);
}
bailOut('Error saving temporary image');
$card = OC_Contacts_App::getContactVCard($id);
if(!$card) {
OC_Cache::remove($tmpkey);
bailOut(OC_Contacts_App::$l10n->t('Error getting contact object.'));
}
if($card->__isset('PHOTO')) {
OCP\Util::writeLog('contacts','savecrop.php: PHOTO property exists.', OCP\Util::DEBUG);
$property = $card->__get('PHOTO');
if(!$property) {
OC_Cache::remove($tmpkey);
bailOut(OC_Contacts_App::$l10n->t('Error getting PHOTO property.'));
}
$property->setValue($image->__toString());
$property->parameters[] = new Sabre_VObject_Parameter('ENCODING', 'b');
$property->parameters[] = new Sabre_VObject_Parameter('TYPE', $image->mimeType());
$card->__set('PHOTO', $property);
} else {
OCP\Util::writeLog('contacts','savecrop.php: files: Adding PHOTO property.', OCP\Util::DEBUG);
$card->addProperty('PHOTO', $image->__toString(), array('ENCODING' => 'b', 'TYPE' => $image->mimeType()));
}
$now = new DateTime;
$card->setString('REV', $now->format(DateTime::W3C));
if(!OC_Contacts_VCard::edit($id,$card)) {
bailOut(OC_Contacts_App::$l10n->t('Error saving contact.'));
}
$tmpl = new OCP\Template("contacts", "part.contactphoto");
$tmpl->assign('id', $id);
$tmpl->assign('refresh', true);
$tmpl->assign('width', $image->width());
$tmpl->assign('height', $image->height());
$page = $tmpl->fetchPage();
OCP\JSON::success(array('data' => array('page'=>$page)));
} else {
bailOut('Error resizing image');
bailOut(OC_Contacts_App::$l10n->t('Error resizing image'));
}
} else {
bailOut('Error cropping image');
bailOut(OC_Contacts_App::$l10n->t('Error cropping image'));
}
} else {
bailOut('Error creating temporary image');
bailOut(OC_Contacts_App::$l10n->t('Error creating temporary image'));
}
} else {
bailOut('Error finding image: '.$tmp_path);
bailOut(OC_Contacts_App::$l10n->t('Error finding image: ').$tmpkey);
}
if($tmp_path != '' && file_exists($tmp_path)) {
unlink($tmp_path);
}
?>
OC_Cache::remove($tmpkey);

View File

@ -20,9 +20,6 @@
*
*/
// Init owncloud
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');
@ -35,21 +32,12 @@ function bailOut($msg) {
function debug($msg) {
OCP\Util::writeLog('contacts','ajax/saveproperty.php: '.$msg, OCP\Util::DEBUG);
}
// foreach ($_POST as $key=>$element) {
// debug('_POST: '.$key.'=>'.print_r($element, true));
// }
$id = isset($_POST['id'])?$_POST['id']:null;
$name = isset($_POST['name'])?$_POST['name']:null;
$value = isset($_POST['value'])?$_POST['value']:null;
$parameters = isset($_POST['parameters'])?$_POST['parameters']:null;
$checksum = isset($_POST['checksum'])?$_POST['checksum']:null;
// if(!is_null($parameters)) {
// debug('parameters: '.count($parameters));
// foreach($parameters as $key=>$val ) {
// debug('parameter: '.$key.'=>'.implode('/',$val));
// }
// }
if(!$name) {
bailOut(OC_Contacts_App::$l10n->t('element name is not set.'));

View File

@ -28,9 +28,6 @@ function bailOut($msg) {
OCP\Util::writeLog('contacts','ajax/uploadimport.php: '.$msg, OCP\Util::ERROR);
exit();
}
function debug($msg) {
OCP\Util::writeLog('contacts','ajax/uploadimport.php: '.$msg, OCP\Util::DEBUG);
}
$view = OCP\Files::getStorage('contacts');
$tmpfile = md5(rand());
@ -39,7 +36,6 @@ $tmpfile = md5(rand());
$fn = (isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : false);
if($fn) {
if($view->file_put_contents('/'.$tmpfile, file_get_contents('php://input'))) {
debug($fn.' uploaded');
OCP\JSON::success(array('data' => array('path'=>'', 'file'=>$tmpfile)));
exit();
} else {
@ -70,7 +66,6 @@ $file=$_FILES['importfile'];
$tmpfname = tempnam(get_temp_dir(), "occOrig");
if(file_exists($file['tmp_name'])) {
if($view->file_put_contents('/'.$tmpfile, file_get_contents($file['tmp_name']))) {
debug($fn.' uploaded');
OCP\JSON::success(array('data' => array('path'=>'', 'file'=>$tmpfile)));
} else {
bailOut(OC_Contacts_App::$l10n->t('Error uploading contacts to storage.'));

View File

@ -19,14 +19,12 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
// Init owncloud
// Check if we are a user
// Firefox and Konqueror tries to download application/json for me. --Arthur
OCP\JSON::setContentTypeHeader('text/plain');
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('contacts');
// Firefox and Konqueror tries to download application/json for me. --Arthur
OCP\JSON::setContentTypeHeader('text/plain');
function bailOut($msg) {
OCP\JSON::error(array('data' => array('message' => $msg)));
OCP\Util::writeLog('contacts','ajax/uploadphoto.php: '.$msg, OCP\Util::DEBUG);
@ -39,46 +37,40 @@ function debug($msg) {
// If it is a Drag'n'Drop transfer it's handled here.
$fn = (isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : false);
if ($fn) {
// AJAX call
if (!isset($_GET['id'])) {
OCP\Util::writeLog('contacts','ajax/uploadphoto.php: No contact ID was submitted.', OCP\Util::DEBUG);
OCP\JSON::error(array('data' => array( 'message' => 'No contact ID was submitted.' )));
exit();
bailOut(OC_Contacts_App::$l10n->t('No contact ID was submitted.'));
}
$id = $_GET['id'];
$tmpfname = tempnam(get_temp_dir(), 'occOrig');
file_put_contents($tmpfname, file_get_contents('php://input'));
debug($tmpfname.' uploaded');
$tmpkey = 'contact-photo-'.md5($fn);
$data = file_get_contents('php://input');
$image = new OC_Image();
if($image->loadFromFile($tmpfname)) {
sleep(1); // Apparently it needs time to load the data.
if($image->loadFromData($data)) {
if($image->width() > 400 || $image->height() > 400) {
$image->resize(400); // Prettier resizing than with browser and saves bandwidth.
}
if(!$image->fixOrientation()) { // No fatal error so we don't bail out.
debug('Couldn\'t save correct image orientation: '.$tmpfname);
debug('Couldn\'t save correct image orientation: '.$tmpkey);
}
if($image->save($tmpfname)) {
OCP\JSON::success(array('data' => array('mime'=>$_SERVER['CONTENT_TYPE'], 'name'=>$fn, 'id'=>$id, 'tmp'=>$tmpfname)));
if(OC_Cache::set($tmpkey, $image->data(), 600)) {
OCP\JSON::success(array('data' => array('mime'=>$_SERVER['CONTENT_TYPE'], 'name'=>$fn, 'id'=>$id, 'tmp'=>$tmpkey)));
exit();
} else {
bailOut('Couldn\'t save temporary image: '.$tmpfname);
bailOut(OC_Contacts_App::$l10n->t('Couldn\'t save temporary image: ').$tmpkey);
}
} else {
bailOut('Couldn\'t load temporary image: '.$file['tmp_name']);
bailOut(OC_Contacts_App::$l10n->t('Couldn\'t load temporary image: ').$tmpkey.$data);
}
}
// Uploads from file dialog are handled here.
if (!isset($_POST['id'])) {
OCP\Util::writeLog('contacts','ajax/uploadphoto.php: No contact ID was submitted.', OCP\Util::DEBUG);
OCP\JSON::error(array('data' => array( 'message' => 'No contact ID was submitted.' )));
exit();
bailOut(OC_Contacts_App::$l10n->t('No contact ID was submitted.'));
}
if (!isset($_FILES['imagefile'])) {
OCP\Util::writeLog('contacts','ajax/uploadphoto.php: No file was uploaded. Unknown error.', OCP\Util::DEBUG);
OCP\JSON::error(array('data' => array( 'message' => 'No file was uploaded. Unknown error' )));
exit();
bailOut(OC_Contacts_App::$l10n->t('No file was uploaded. Unknown error'));
}
$error = $_FILES['imagefile']['error'];
if($error !== UPLOAD_ERR_OK) {
$errors = array(
@ -93,27 +85,26 @@ if($error !== UPLOAD_ERR_OK) {
}
$file=$_FILES['imagefile'];
$tmpfname = tempnam(get_temp_dir(), "occOrig");
if(file_exists($file['tmp_name'])) {
$tmpkey = 'contact-photo-'.md5(basename($file['tmp_name']));
$image = new OC_Image();
if($image->loadFromFile($file['tmp_name'])) {
if($image->width() > 400 || $image->height() > 400) {
$image->resize(400); // Prettier resizing than with browser and saves bandwidth.
}
if(!$image->fixOrientation()) { // No fatal error so we don't bail out.
debug('Couldn\'t save correct image orientation: '.$tmpfname);
debug('Couldn\'t save correct image orientation: '.$tmpkey);
}
if($image->save($tmpfname)) {
OCP\JSON::success(array('data' => array('mime'=>$file['type'],'size'=>$file['size'],'name'=>$file['name'], 'id'=>$_POST['id'], 'tmp'=>$tmpfname)));
if(OC_Cache::set($tmpkey, $image->data(), 600)) {
OCP\JSON::success(array('data' => array('mime'=>$file['type'],'size'=>$file['size'],'name'=>$file['name'], 'id'=>$_POST['id'], 'tmp'=>$tmpkey)));
exit();
} else {
bailOut('Couldn\'t save temporary image: '.$tmpfname);
bailOut(OC_Contacts_App::$l10n->t('Couldn\'t save temporary image: ').$tmpkey);
}
} else {
bailOut('Couldn\'t load temporary image: '.$file['tmp_name']);
bailOut(OC_Contacts_App::$l10n->t('Couldn\'t load temporary image: ').$file['tmp_name']);
}
} else {
bailOut('Temporary file: \''.$file['tmp_name'].'\' has gone AWOL?');
}
?>

View File

@ -10,16 +10,21 @@ ob_start();
OCP\JSON::checkLoggedIn();
OCP\App::checkAppEnabled('contacts');
session_write_close();
$nl = "\n";
$progressfile = 'import_tmp/' . md5(session_id()) . '.txt';
global $progresskey;
$progresskey = 'contacts.import-' . $_GET['progresskey'];
if (isset($_GET['progress']) && $_GET['progress']) {
echo OC_Cache::get($progresskey);
die;
}
function writeProgress($pct) {
if(is_writable('import_tmp/')){
$progressfopen = fopen($progressfile, 'w');
fwrite($progressfopen, $pct);
fclose($progressfopen);
}
global $progresskey;
OC_Cache::set($progresskey, $pct, 300);
}
writeProgress('10');
$view = $file = null;
@ -93,9 +98,7 @@ foreach($parts as $part){
//done the import
writeProgress('100');
sleep(3);
if(is_writable('import_tmp/')){
unlink($progressfile);
}
OC_Cache::remove($progresskey);
if(isset($_POST['fstype']) && $_POST['fstype'] == 'OC_FilesystemView') {
if(!$view->unlink('/' . $_POST['file'])) {
OCP\Util::writeLog('contacts','Import: Error unlinking OC_FilesystemView ' . '/' . $_POST['file'], OCP\Util::ERROR);

View File

@ -1,2 +0,0 @@
This folder contains static files with the percentage of the import.
Requires write permission

View File

@ -134,7 +134,9 @@ Contacts={
$('#edit_name').keydown(function(){Contacts.UI.Card.editName()});
/* Initialize the photo edit dialog */
$('#edit_photo_dialog').dialog({ autoOpen: false, modal: true, height: 'auto', width: 'auto' });
$('#edit_photo_dialog').dialog({
autoOpen: false, modal: true, height: 'auto', width: 'auto'
});
$('#edit_photo_dialog' ).dialog( 'option', 'buttons', [
{
text: "Ok",
@ -162,6 +164,7 @@ Contacts={
var name = $('#fn').val().strip_tags();
var item = $('#contacts [data-id="'+Contacts.UI.Card.id+'"]');
$(item).find('a').html(name);
Contacts.UI.Card.fn = name;
var added = false;
$('#contacts li').each(function(){
if ($(this).text().toLowerCase() > name.toLowerCase()) {
@ -1153,9 +1156,9 @@ Contacts={
}
});
},
editPhoto:function(id, tmp_path){
//alert('editPhoto: ' + tmp_path);
$.getJSON(OC.filePath('contacts', 'ajax', 'cropphoto.php'),{'tmp_path':tmp_path,'id':this.id},function(jsondata){
editPhoto:function(id, tmpkey){
//alert('editPhoto: ' + tmpkey);
$.getJSON(OC.filePath('contacts', 'ajax', 'cropphoto.php'),{'tmpkey':tmpkey,'id':this.id},function(jsondata){
if(jsondata.status == 'success'){
//alert(jsondata.data.page);
$('#edit_photo_dialog_img').html(jsondata.data.page);
@ -1185,6 +1188,7 @@ Contacts={
Contacts.UI.Card.loadPhotoHandlers();
}else{
OC.dialogs.alert(response.data.message, t('contacts', 'Error'));
wrapper.removeClass('wait');
}
});
Contacts.UI.Contacts.refreshThumbnail(this.id);

View File

@ -42,8 +42,8 @@ Contacts_Import={
}
$('#newaddressbook').attr('readonly', 'readonly');
$('#contacts').attr('disabled', 'disabled');
var progressfile = $('#progressfile').val();
$.post(OC.filePath('contacts', '', 'import.php'), {method: String (method), addressbookname: String (addressbookname), path: String (path), file: String (filename), id: String (addressbookid)}, function(jsondata){
var progresskey = $('#progresskey').val();
$.post(OC.filePath('contacts', '', 'import.php') + '?progresskey='+progresskey, {method: String (method), addressbookname: String (addressbookname), path: String (path), file: String (filename), id: String (addressbookid)}, function(jsondata){
if(jsondata.status == 'success'){
$('#progressbar').progressbar('option', 'value', 100);
$('#import_done').find('p').html(t('contacts', 'Result: ') + jsondata.data.imported + t('contacts', ' imported, ') + jsondata.data.failed + t('contacts', ' failed.'));
@ -55,7 +55,7 @@ Contacts_Import={
});
$('#form_container').css('display', 'none');
$('#progressbar_container').css('display', 'block');
window.setTimeout('Contacts_Import.getimportstatus(\'' + progressfile + '\')', 500);
window.setTimeout('Contacts_Import.getimportstatus(\'' + progresskey + '\')', 500);
});
$('#contacts').change(function(){
if($('#contacts option:selected').val() == 'newaddressbook'){
@ -65,11 +65,11 @@ Contacts_Import={
}
});
},
getimportstatus: function(progressfile){
$.get(OC.filePath('contacts', 'import_tmp', progressfile), function(percent){
getimportstatus: function(progresskey){
$.get(OC.filePath('contacts', '', 'import.php') + '?progress=1&progresskey=' + progresskey, function(percent){
$('#progressbar').progressbar('option', 'value', parseInt(percent));
if(percent < 100){
window.setTimeout('Contacts_Import.getimportstatus(\'' + progressfile + '\')', 500);
window.setTimeout('Contacts_Import.getimportstatus(\'' + progresskey + '\')', 500);
}else{
$('#import_done').css('display', 'block');
}

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Error en afegir la llibreta d'adreces.",
"Error activating addressbook." => "Error en activar la llibreta d'adreces.",
"No contact ID was submitted." => "No s'ha tramès cap ID de contacte.",
"Error loading image." => "Error en carregar la imatge.",
"Error reading contact photo." => "Error en llegir la foto del contacte.",
"Error saving temporary file." => "Error en desar el fitxer temporal.",
"The loading photo is not valid." => "La foto carregada no és vàlida.",
@ -27,6 +26,7 @@
"Missing contact id." => "Falta la id del contacte.",
"No photo path was submitted." => "No heu tramès el camí de la foto.",
"File doesn't exist:" => "El fitxer no existeix:",
"Error loading image." => "Error en carregar la imatge.",
"element name is not set." => "no s'ha establert el nom de l'element.",
"checksum is not set." => "no s'ha establert la suma de verificació.",
"Information about vCard is incorrect. Please reload the page: " => "La informació de la vCard és incorrecta. Carregueu de nou la pàgina:",
@ -42,6 +42,7 @@
"No file was uploaded" => "No s'ha carregat cap fitxer",
"Missing a temporary folder" => "Falta un fitxer temporal",
"Contacts" => "Contactes",
"Drop a VCF file to import contacts." => "Elimina un fitxer VCF per importar contactes.",
"Addressbook not found." => "No s'ha trobat la llibreta d'adreces.",
"This is not your addressbook." => "Aquesta no és la vostra llibreta d'adreces",
"Contact could not be found." => "No s'ha trobat el contacte.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Nom de la nova llibreta d'adreces",
"Import" => "Importa",
"Importing contacts" => "S'estan important contactes",
"Contacts imported successfully" => "Els contactes s'han importat correctament",
"Close Dialog" => "Tanca el diàleg",
"Import Addressbook" => "Importa la llibreta d'adreces",
"Select address book to import to:" => "Seleccioneu la llibreta d'adreces a la que voleu importar:",
"Drop a VCF file to import contacts." => "Elimina un fitxer VCF per importar contactes.",
"Select from HD" => "Selecciona de HD",
"You have no contacts in your addressbook." => "No teniu contactes a la llibreta d'adreces.",
"Add contact" => "Afegeix un contacte",

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Chyba při přidávání adresáře.",
"Error activating addressbook." => "Chyba při aktivaci adresáře.",
"No contact ID was submitted." => "Nebylo nastaveno ID kontaktu.",
"Error loading image." => "Chyba při načítání obrázku.",
"Error reading contact photo." => "Chyba při načítání fotky kontaktu.",
"Error saving temporary file." => "Chyba při ukládání dočasného souboru.",
"The loading photo is not valid." => "Načítaná fotka je vadná.",
@ -27,6 +26,7 @@
"Missing contact id." => "Chybí id kontaktu.",
"No photo path was submitted." => "Žádná fotka nebyla nahrána.",
"File doesn't exist:" => "Soubor neexistuje:",
"Error loading image." => "Chyba při načítání obrázku.",
"element name is not set." => "jméno elementu není nastaveno.",
"checksum is not set." => "kontrolní součet není nastaven.",
"Information about vCard is incorrect. Please reload the page: " => "Informace o vCard je nesprávná. Obnovte stránku, prosím.",
@ -42,6 +42,7 @@
"No file was uploaded" => "Žádný soubor nebyl nahrán",
"Missing a temporary folder" => "Chybí dočasný adresář",
"Contacts" => "Kontakty",
"Drop a VCF file to import contacts." => "Pro import kontaktů sem přetáhněte soubor VCF",
"Addressbook not found." => "Adresář nenalezen.",
"This is not your addressbook." => "Toto není Váš adresář.",
"Contact could not be found." => "Kontakt nebyl nalezen.",
@ -114,6 +115,7 @@
"Addressbook" => "Adresář",
"Hon. prefixes" => "Tituly před",
"Miss" => "Slečna",
"Ms" => "Ms",
"Mr" => "Pan",
"Sir" => "Sir",
"Mrs" => "Paní",
@ -124,6 +126,8 @@
"Hon. suffixes" => "Tituly za",
"J.D." => "JUDr.",
"M.D." => "MUDr.",
"D.O." => "D.O.",
"D.C." => "D.C.",
"Ph.D." => "Ph.D.",
"Esq." => "Esq.",
"Jr." => "ml.",
@ -141,11 +145,7 @@
"Name of new addressbook" => "Jméno nového adresáře",
"Import" => "Import",
"Importing contacts" => "Importování kontaktů",
"Contacts imported successfully" => "Kontakty úspěšně importovány",
"Close Dialog" => "Zavírací dialog",
"Import Addressbook" => "Importovat adresář",
"Select address book to import to:" => "Vyberte adresář do kterého chcete importovat:",
"Drop a VCF file to import contacts." => "Pro import kontaktů sem přetáhněte soubor VCF",
"Select from HD" => "Vybrat z disku",
"You have no contacts in your addressbook." => "Nemáte žádné kontakty v adresáři.",
"Add contact" => "Přidat kontakt",

View File

@ -3,14 +3,47 @@
"There was an error adding the contact." => "Der opstod en fejl ved tilføjelse af kontaktpersonen.",
"Cannot add empty property." => "Kan ikke tilføje en egenskab uden indhold.",
"At least one of the address fields has to be filled out." => "Der skal udfyldes mindst et adressefelt.",
"Trying to add duplicate property: " => "Kan ikke tilføje overlappende element.",
"Error adding contact property." => "Fejl ved tilføjelse af egenskab.",
"No ID provided" => "Intet ID medsendt",
"Error setting checksum." => "Kunne ikke sætte checksum.",
"No categories selected for deletion." => "Der ikke valgt nogle grupper at slette.",
"No address books found." => "Der blev ikke fundet nogen adressebøger.",
"No contacts found." => "Der blev ikke fundet nogen kontaktpersoner.",
"Missing ID" => "Manglende ID",
"Error parsing VCard for ID: \"" => "Kunne ikke indlæse VCard med ID'en: \"",
"Cannot add addressbook with an empty name." => "Kan ikke tilføje adressebog uden et navn.",
"Error adding addressbook." => "Fejl ved tilføjelse af adressebog.",
"Error activating addressbook." => "Fejl ved aktivering af adressebog.",
"No contact ID was submitted." => "Ingen ID for kontakperson medsendt.",
"Error reading contact photo." => "Kunne ikke indlæse foto for kontakperson.",
"Error saving temporary file." => "Kunne ikke gemme midlertidig fil.",
"The loading photo is not valid." => "Billedet under indlæsning er ikke gyldigt.",
"id is not set." => "Intet ID medsendt.",
"Information about vCard is incorrect. Please reload the page." => "Informationen om vCard er forkert. Genindlæs siden.",
"Error deleting contact property." => "Fejl ved sletning af egenskab for kontaktperson.",
"Contact ID is missing." => "Kontaktperson ID mangler.",
"Missing contact id." => "Kontaktperson ID mangler.",
"No photo path was submitted." => "Der blev ikke medsendt en sti til fotoet.",
"File doesn't exist:" => "Filen eksisterer ikke:",
"Error loading image." => "Kunne ikke indlæse billede.",
"element name is not set." => "Element navnet er ikke medsendt.",
"checksum is not set." => "Checksum er ikke medsendt.",
"Information about vCard is incorrect. Please reload the page: " => "Informationen om dette VCard stemmer ikke. Genindlæs venligst siden: ",
"Something went FUBAR. " => "Noget gik grueligt galt. ",
"Error updating contact property." => "Fejl ved opdatering af egenskab for kontaktperson.",
"Cannot update addressbook with an empty name." => "Kan ikke opdatére adressebogen med et tomt navn.",
"Error updating addressbook." => "Fejl ved opdatering af adressebog",
"Error uploading contacts to storage." => "Kunne ikke uploade kontaktepersoner til midlertidig opbevaring.",
"There is no error, the file uploaded with success" => "Der skete ingen fejl, filen blev succesfuldt uploadet",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den uploadede fil er større end upload_max_filesize indstillingen i php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uploadede fil overstiger MAX_FILE_SIZE indstilingen, som specificeret i HTML formularen",
"The uploaded file was only partially uploaded" => "Filen blev kun delvist uploadet.",
"No file was uploaded" => "Ingen fil uploadet",
"Missing a temporary folder" => "Manglende midlertidig mappe.",
"Contacts" => "Kontaktpersoner",
"Drop a VCF file to import contacts." => "Drop en VCF fil for at importere kontaktpersoner.",
"Addressbook not found." => "Adressebogen blev ikke fundet.",
"This is not your addressbook." => "Dette er ikke din adressebog.",
"Contact could not be found." => "Kontaktperson kunne ikke findes.",
"Address" => "Adresse",
@ -22,22 +55,53 @@
"Mobile" => "Mobil",
"Text" => "SMS",
"Voice" => "Telefonsvarer",
"Message" => "Besked",
"Fax" => "Fax",
"Video" => "Video",
"Pager" => "Personsøger",
"Internet" => "Internet",
"{name}'s Birthday" => "{name}'s fødselsdag",
"Contact" => "Kontaktperson",
"Add Contact" => "Tilføj kontaktperson",
"Addressbooks" => "Adressebøger",
"Configure Address Books" => "Konfigurer adressebøger",
"New Address Book" => "Ny adressebog",
"Import from VCF" => "Importer fra VCF",
"CardDav Link" => "CardDav-link",
"Download" => "Download",
"Edit" => "Rediger",
"Delete" => "Slet",
"Download contact" => "Download kontaktperson",
"Delete contact" => "Slet kontaktperson",
"Drop photo to upload" => "Drop foto for at uploade",
"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formatter som valgfrit, fuldt navn, efternavn først eller efternavn først med komma",
"Edit name details" => "Rediger navnedetaljer.",
"Nickname" => "Øgenavn",
"Enter nickname" => "Indtast øgenavn",
"Birthday" => "Fødselsdag",
"dd-mm-yyyy" => "dd-mm-åååå",
"Groups" => "Grupper",
"Separate groups with commas" => "Opdel gruppenavne med kommaer",
"Edit groups" => "Rediger grupper",
"Preferred" => "Foretrukken",
"Please specify a valid email address." => "Indtast venligst en gyldig email-adresse.",
"Enter email address" => "Indtast email-adresse",
"Mail to address" => "Send mail til adresse",
"Delete email address" => "Slet email-adresse",
"Enter phone number" => "Indtast telefonnummer",
"Delete phone number" => "Slet telefonnummer",
"View on map" => "Vis på kort",
"Edit address details" => "Rediger adresse detaljer",
"Add notes here." => "Tilføj noter her.",
"Add field" => "Tilfæj element",
"Profile picture" => "Profilbillede",
"Phone" => "Telefon",
"Note" => "Note",
"Delete current photo" => "Slet nuværende foto",
"Edit current photo" => "Rediger nuværende foto",
"Upload new photo" => "Upload nyt foto",
"Select photo from ownCloud" => "Vælg foto fra ownCloud",
"Edit address" => "Rediger adresse",
"Type" => "Type",
"PO Box" => "Postboks",
"Extended" => "Udvidet",
@ -46,13 +110,48 @@
"Region" => "Region",
"Zipcode" => "Postnummer",
"Country" => "Land",
"Edit categories" => "Rediger grupper",
"Add" => "Tilføj",
"Addressbook" => "Adressebog",
"Hon. prefixes" => "Foranstillede titler",
"Miss" => "Frøken",
"Ms" => "Fru",
"Mr" => "Hr.",
"Sir" => "Sir",
"Mrs" => "Fru",
"Dr" => "Dr",
"Given name" => "Fornavn",
"Additional names" => "Mellemnavne",
"Family name" => "Efternavn",
"Hon. suffixes" => "Efterstillede titler",
"J.D." => "Cand. Jur.",
"M.D." => "M.D.",
"D.O." => "D.O.",
"D.C." => "D.C.",
"Ph.D." => "Ph.D.",
"Esq." => "Esq.",
"Jr." => "Jr.",
"Sn." => "Sn.",
"New Addressbook" => "Ny adressebog",
"Edit Addressbook" => "Rediger adressebog",
"Displayname" => "Vist navn",
"Active" => "Aktiv",
"Save" => "Gem",
"Submit" => "Gem",
"Cancel" => "Fortryd"
"Cancel" => "Fortryd",
"Import a contacts file" => "Importer fil med kontaktpersoner",
"Please choose the addressbook" => "Vælg venligst adressebog",
"create a new addressbook" => "Opret ny adressebog",
"Name of new addressbook" => "Navn på ny adressebog",
"Import" => "Importer",
"Importing contacts" => "Importerer kontaktpersoner",
"Select address book to import to:" => "Vælg hvilken adressebog, der skal importeres til:",
"Select from HD" => "Vælg fra harddisk.",
"You have no contacts in your addressbook." => "Du har ingen kontaktpersoner i din adressebog.",
"Add contact" => "Tilføj kontaktpeson.",
"Configure addressbooks" => "Konfigurer adressebøger",
"CardDAV syncing addresses" => "CardDAV synkroniserings adresse",
"more info" => "mere info",
"Primary address (Kontact et al)" => "Primær adresse (Kontak m. fl.)",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Adressbuch hinzufügen fehlgeschlagen",
"Error activating addressbook." => "Adressbuchaktivierung fehlgeschlagen",
"No contact ID was submitted." => "Es wurde keine Kontakt-ID übermittelt.",
"Error loading image." => "Fehler beim Laden des Bildes.",
"Error reading contact photo." => "Fehler beim auslesen des Kontaktfotos.",
"Error saving temporary file." => "Fehler beim Speichern der temporären Datei.",
"The loading photo is not valid." => "Das Kontaktfoto ist fehlerhaft.",
@ -27,6 +26,7 @@
"Missing contact id." => "Fehlende Kontakt-ID.",
"No photo path was submitted." => "Kein Foto-Pfad übermittelt.",
"File doesn't exist:" => "Datei existiert nicht: ",
"Error loading image." => "Fehler beim Laden des Bildes.",
"element name is not set." => "Kein Name für das Element angegeben.",
"checksum is not set." => "Keine Prüfsumme angegeben.",
"Information about vCard is incorrect. Please reload the page: " => "Die Informationen zur vCard sind fehlerhaft. Bitte Seite neu laden: ",
@ -42,6 +42,7 @@
"No file was uploaded" => "Keine Datei konnte übertragen werden.",
"Missing a temporary folder" => "Kein temporärer Ordner vorhanden",
"Contacts" => "Kontakte",
"Drop a VCF file to import contacts." => "Zieh' eine VCF Datei hierher zum Kontaktimport",
"Addressbook not found." => "Adressbuch nicht gefunden.",
"This is not your addressbook." => "Dies ist nicht dein Adressbuch.",
"Contact could not be found." => "Kontakt konnte nicht gefunden werden.",
@ -80,7 +81,7 @@
"Birthday" => "Geburtstag",
"dd-mm-yyyy" => "TT-MM-JJJJ",
"Groups" => "Gruppen",
"Separate groups with commas" => "Gruppen mit Komma trennen",
"Separate groups with commas" => "Gruppen mit Komma trennt",
"Edit groups" => "Gruppen editieren",
"Preferred" => "Bevorzugt",
"Please specify a valid email address." => "Bitte eine gültige E-Mail-Adresse angeben.",
@ -123,6 +124,14 @@
"Additional names" => "Zusätzliche Namen",
"Family name" => "Familienname",
"Hon. suffixes" => "Höflichkeitssuffixe",
"J.D." => "Dr. Jur",
"M.D." => "Dr. med.",
"D.O." => "DGOM",
"D.C." => "MChiro",
"Ph.D." => "Dr.",
"Esq." => "Hochwohlgeborenen",
"Jr." => "Jr.",
"Sn." => "Senior",
"New Addressbook" => "Neues Adressbuch",
"Edit Addressbook" => "Adressbuch editieren",
"Displayname" => "Anzeigename",
@ -136,11 +145,8 @@
"Name of new addressbook" => "Name des neuen Adressbuchs",
"Import" => "Importieren",
"Importing contacts" => "Kontakte werden importiert",
"Contacts imported successfully" => "Kontaktimport erfolgreich",
"Close Dialog" => "Dialog schließen",
"Import Addressbook" => "Adressbuch importieren",
"Select address book to import to:" => "Adressbuch, in das importiert werden soll",
"Drop a VCF file to import contacts." => "Zieh' eine VCF Datei hierher zum Kontaktimport",
"Select from HD" => "Von der Festplatte auswählen",
"You have no contacts in your addressbook." => "Du hast keine Kontakte im Adressbuch.",
"Add contact" => "Kontakt hinzufügen",
"Configure addressbooks" => "Adressbücher konfigurieren",

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Σφάλμα προσθήκης βιβλίου διευθύνσεων.",
"Error activating addressbook." => "Σφάλμα ενεργοποίησης βιβλίου διευθύνσεων",
"No contact ID was submitted." => "Δε υπεβλήθει ID επαφής",
"Error loading image." => "Σφάλμα φόρτωσης εικόνας",
"Error reading contact photo." => "Σφάλμα ανάγνωσης εικόνας επαφής",
"Error saving temporary file." => "Σφάλμα αποθήκευσης προσωρινού αρχείου",
"The loading photo is not valid." => "Η φορτωμένη φωτογραφία δεν είναι έγκυρη",
@ -27,6 +26,7 @@
"Missing contact id." => "Απουσιαζει ID επαφής",
"No photo path was submitted." => "Δε δόθηκε διαδρομή εικόνας",
"File doesn't exist:" => "Το αρχείο δεν υπάρχει:",
"Error loading image." => "Σφάλμα φόρτωσης εικόνας",
"element name is not set." => "δεν ορίστηκε όνομα στοιχείου",
"checksum is not set." => "δε ορίστηκε checksum ",
"Information about vCard is incorrect. Please reload the page: " => "Οι πληροφορίες για τη vCard είναι λανθασμένες.Παρακαλώ ξαναφορτώστε τη σελίδα:",
@ -42,6 +42,7 @@
"No file was uploaded" => "Δεν ανέβηκε κάποιο αρχείο",
"Missing a temporary folder" => "Λείπει ο προσωρινός φάκελος",
"Contacts" => "Επαφές",
"Drop a VCF file to import contacts." => "Εισάγεται ένα VCF αρχείο για εισαγωγή επαφών",
"Addressbook not found." => "Δε βρέθηκε βιβλίο διευθύνσεων",
"This is not your addressbook." => "Αυτό δεν είναι το βιβλίο διευθύνσεων σας.",
"Contact could not be found." => "Η επαφή δεν μπόρεσε να βρεθεί.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Όνομα νέου βιβλίου διευθύνσεων",
"Import" => "Εισαγωγή",
"Importing contacts" => "Εισαγωγή επαφών",
"Contacts imported successfully" => "Οι επαφές εισήχθησαν επιτυχώς",
"Close Dialog" => "Κλείσιμο διαλόγου",
"Import Addressbook" => "Εισαγωγή βιβλίου διευθύνσεων",
"Select address book to import to:" => "Επέλεξε σε ποιο βιβλίο διευθύνσεων για εισαγωγή:",
"Drop a VCF file to import contacts." => "Εισάγεται ένα VCF αρχείο για εισαγωγή επαφών",
"Select from HD" => "Επιλογή από HD",
"You have no contacts in your addressbook." => "Δεν έχεις επαφές στο βιβλίο διευθύνσεων",
"Add contact" => "Προσθήκη επαφής",

View File

@ -6,6 +6,7 @@
"Trying to add duplicate property: " => "Provante aldoni duobligitan propraĵon:",
"Error adding contact property." => "Eraro dum aldono de kontaktopropraĵo.",
"No ID provided" => "Neniu identigilo proviziĝis.",
"Error setting checksum." => "Eraro dum agordado de kontrolsumo.",
"No categories selected for deletion." => "Neniu kategorio elektiĝis por forigi.",
"No address books found." => "Neniu adresaro troviĝis.",
"No contacts found." => "Neniu kontakto troviĝis.",
@ -15,7 +16,6 @@
"Error adding addressbook." => "Eraro dum aldono de adresaro.",
"Error activating addressbook." => "Eraro dum aktivigo de adresaro.",
"No contact ID was submitted." => "Neniu kontaktidentigilo sendiĝis.",
"Error loading image." => "Eraro dum ŝargado de bildo.",
"Error reading contact photo." => "Eraro dum lego de kontakta foto.",
"Error saving temporary file." => "Eraro dum konservado de provizora dosiero.",
"The loading photo is not valid." => "La alŝutata foto ne validas.",
@ -26,7 +26,10 @@
"Missing contact id." => "Mankas kontaktidentigilo.",
"No photo path was submitted." => "Neniu vojo al foto sendiĝis.",
"File doesn't exist:" => "Dosiero ne ekzistas:",
"Error loading image." => "Eraro dum ŝargado de bildo.",
"element name is not set." => "eronomo ne agordiĝis.",
"checksum is not set." => "kontrolsumo ne agordiĝis.",
"Information about vCard is incorrect. Please reload the page: " => "Informo pri vCard malĝustas. Bonvolu reŝargi la paĝon:",
"Something went FUBAR. " => "Io FUBAR-is.",
"Error updating contact property." => "Eraro dum ĝisdatigo de kontaktopropraĵo.",
"Cannot update addressbook with an empty name." => "Ne eblas ĝisdatigi adresaron kun malplena nomo.",
@ -36,6 +39,7 @@
"No file was uploaded" => "Neniu dosiero alŝutiĝis.",
"Missing a temporary folder" => "Mankas provizora dosierujo.",
"Contacts" => "Kontaktoj",
"Drop a VCF file to import contacts." => "Demetu VCF-dosieron por enporti kontaktojn.",
"Addressbook not found." => "Adresaro ne troviĝis.",
"This is not your addressbook." => "Ĉi tiu ne estas via adresaro.",
"Contact could not be found." => "Ne eblis trovi la kontakton.",
@ -87,6 +91,7 @@
"Edit address details" => "Redakti detalojn de adreso",
"Add notes here." => "Aldoni notojn ĉi tie.",
"Add field" => "Aldoni kampon",
"Profile picture" => "Profila bildo",
"Phone" => "Telefono",
"Note" => "Noto",
"Delete current photo" => "Forigi nunan foton",
@ -105,8 +110,17 @@
"Edit categories" => "Redakti kategoriojn",
"Add" => "Aldoni",
"Addressbook" => "Adresaro",
"Hon. prefixes" => "Honoraj antaŭmetaĵoj",
"Miss" => "f-ino",
"Ms" => "s-ino",
"Mr" => "s-ro",
"Sir" => "s-ro",
"Mrs" => "s-ino",
"Dr" => "d-ro",
"Given name" => "Persona nomo",
"Additional names" => "Pliaj nomoj",
"Family name" => "Familia nomo",
"Hon. suffixes" => "Honoraj postmetaĵoj",
"New Addressbook" => "Nova adresaro",
"Edit Addressbook" => "Redakti adresaron",
"Displayname" => "Montronomo",
@ -120,7 +134,13 @@
"Name of new addressbook" => "Nomo de nova adresaro",
"Import" => "Enporti",
"Importing contacts" => "Enportante kontaktojn",
"Contacts imported successfully" => "Kontaktoj enportiĝis sukcese",
"Close Dialog" => "Fermi dialogon",
"Import Addressbook" => "Enporti adresaron"
"Select address book to import to:" => "Elektu adresaron kien enporti:",
"Select from HD" => "Elekti el malmoldisko",
"You have no contacts in your addressbook." => "Vi ne havas kontaktojn en via adresaro",
"Add contact" => "Aldoni kontakton",
"Configure addressbooks" => "Agordi adresarojn",
"CardDAV syncing addresses" => "adresoj por CardDAV-sinkronigo",
"more info" => "pli da informo",
"Primary address (Kontact et al)" => "Ĉefa adreso (por Kontakt kaj aliaj)",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Error al añadir la libreta de direcciones.",
"Error activating addressbook." => "Error al activar la libreta de direcciones.",
"No contact ID was submitted." => "No se ha mandado ninguna ID de contacto.",
"Error loading image." => "Error cargando imagen.",
"Error reading contact photo." => "Error leyendo fotografía del contacto.",
"Error saving temporary file." => "Error al guardar archivo temporal.",
"The loading photo is not valid." => "La foto que se estaba cargando no es válida.",
@ -27,6 +26,7 @@
"Missing contact id." => "Falta la id del contacto.",
"No photo path was submitted." => "No se ha introducido la ruta de la foto.",
"File doesn't exist:" => "Archivo inexistente:",
"Error loading image." => "Error cargando imagen.",
"element name is not set." => "no se ha puesto ningún nombre de elemento.",
"checksum is not set." => "no se ha puesto ninguna suma de comprobación.",
"Information about vCard is incorrect. Please reload the page: " => "La información sobre la vCard es incorrecta. Por favor, recarga la página:",
@ -42,6 +42,7 @@
"No file was uploaded" => "No se ha subido ningún archivo",
"Missing a temporary folder" => "Falta la carpeta temporal",
"Contacts" => "Contactos",
"Drop a VCF file to import contacts." => "Suelta un archivo VCF para importar contactos.",
"Addressbook not found." => "Libreta de direcciones no encontrada.",
"This is not your addressbook." => "Esta no es tu agenda de contactos.",
"Contact could not be found." => "No se ha podido encontrar el contacto.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Nombre de la nueva agenda",
"Import" => "Importar",
"Importing contacts" => "Importando contactos",
"Contacts imported successfully" => "Contactos importados correctamente",
"Close Dialog" => "Cerrar Diálogo",
"Import Addressbook" => "Importar agenda",
"Select address book to import to:" => "Selecciona una agenda para importar a:",
"Drop a VCF file to import contacts." => "Suelta un archivo VCF para importar contactos.",
"Select from HD" => "Seleccionar del disco duro",
"You have no contacts in your addressbook." => "No hay contactos en tu agenda.",
"Add contact" => "Añadir contacto",

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Viga aadressiraamatu lisamisel.",
"Error activating addressbook." => "Viga aadressiraamatu aktiveerimisel.",
"No contact ID was submitted." => "Kontakti ID-d pole sisestatud.",
"Error loading image." => "Viga pildi laadimisel.",
"Error reading contact photo." => "Viga kontakti foto lugemisel.",
"Error saving temporary file." => "Viga ajutise faili salvestamisel.",
"The loading photo is not valid." => "Laetav pilt pole korrektne pildifail.",
@ -27,6 +26,7 @@
"Missing contact id." => "Puuduv kontakti ID.",
"No photo path was submitted." => "Foto asukohta pole määratud.",
"File doesn't exist:" => "Faili pole olemas:",
"Error loading image." => "Viga pildi laadimisel.",
"element name is not set." => "elemendi nime pole määratud.",
"checksum is not set." => "kontrollsummat pole määratud.",
"Information about vCard is incorrect. Please reload the page: " => "vCard info pole korrektne. Palun lae lehekülg uuesti: ",
@ -42,6 +42,7 @@
"No file was uploaded" => "Ühtegi faili ei laetud üles",
"Missing a temporary folder" => "Ajutiste failide kaust puudub",
"Contacts" => "Kontaktid",
"Drop a VCF file to import contacts." => "Lohista siia VCF-fail, millest kontakte importida.",
"Addressbook not found." => "Aadressiraamatut ei leitud",
"This is not your addressbook." => "See pole sinu aadressiraamat.",
"Contact could not be found." => "Kontakti ei leitud.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Uue aadressiraamatu nimi",
"Import" => "Impordi",
"Importing contacts" => "Kontaktide importimine",
"Contacts imported successfully" => "Kontaktid on imporditud",
"Close Dialog" => "Sulge dialoog",
"Import Addressbook" => "Impordi aadressiraamat",
"Select address book to import to:" => "Vali aadressiraamat, millesse importida:",
"Drop a VCF file to import contacts." => "Lohista siia VCF-fail, millest kontakte importida.",
"Select from HD" => "Vali kõvakettalt",
"You have no contacts in your addressbook." => "Sinu aadressiraamatus pole ühtegi kontakti.",
"Add contact" => "Lisa kontakt",

View File

@ -11,7 +11,6 @@
"Missing ID" => "ID falta da",
"Error adding addressbook." => "Errore bat egon da helbide liburua gehitzean.",
"Error activating addressbook." => "Errore bat egon da helbide-liburua aktibatzen.",
"Error loading image." => "Errore bat izan da irudia kargatzearkoan.",
"Error reading contact photo." => "Errore bat izan da kontaktuaren argazkia igotzerakoan.",
"The loading photo is not valid." => "Kargatzen ari den argazkia ez da egokia.",
"id is not set." => "IDa ez da ezarri.",
@ -20,6 +19,7 @@
"Contact ID is missing." => "Kontaktuaren IDa falta da.",
"Missing contact id." => "Kontaktuaren IDa falta da.",
"File doesn't exist:" => "Fitxategia ez da existitzen:",
"Error loading image." => "Errore bat izan da irudia kargatzearkoan.",
"element name is not set." => "elementuaren izena ez da ezarri.",
"Error updating contact property." => "Errorea kontaktu propietatea eguneratzean.",
"Cannot update addressbook with an empty name." => "Ezin da helbide liburua eguneratu izen huts batekin.",
@ -29,6 +29,7 @@
"The uploaded file was only partially uploaded" => "Igotako fitxategiaren zati bat bakarrik igo da",
"No file was uploaded" => "Ez da fitxategirik igo",
"Contacts" => "Kontaktuak",
"Drop a VCF file to import contacts." => "Askatu VCF fitxategia kontaktuak inportatzeko.",
"Addressbook not found." => "Helbide liburua ez da aurkitu",
"This is not your addressbook." => "Hau ez da zure helbide liburua.",
"Contact could not be found." => "Ezin izan da kontaktua aurkitu.",
@ -111,11 +112,7 @@
"Name of new addressbook" => "Helbide liburuaren izena",
"Import" => "Inportatu",
"Importing contacts" => "Kontaktuak inportatzen",
"Contacts imported successfully" => "Kontaktuak ongi inportatu dira",
"Close Dialog" => "Dialogoa itxi",
"Import Addressbook" => "Inporatu helbide liburua",
"Select address book to import to:" => "Hautau helburuko helbide liburua:",
"Drop a VCF file to import contacts." => "Askatu VCF fitxategia kontaktuak inportatzeko.",
"Select from HD" => "Hautatu disko gogorretik",
"You have no contacts in your addressbook." => "Ez duzu kontakturik zure helbide liburuan.",
"Add contact" => "Gehitu kontaktua",

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "خطا درهنگام افزودن کتابچه نشانی ها",
"Error activating addressbook." => "خطا درهنگام فعال سازیکتابچه نشانی ها",
"No contact ID was submitted." => "هیچ اطلاعاتی راجع به شناسه ارسال نشده",
"Error loading image." => "خطا در بارگزاری تصویر",
"Error reading contact photo." => "خطا در خواندن اطلاعات تصویر",
"Error saving temporary file." => "خطا در ذخیره پرونده موقت",
"The loading photo is not valid." => "بارگزاری تصویر امکان پذیر نیست",
@ -27,6 +26,7 @@
"Missing contact id." => "شما اطلاعات شناسه را فراموش کرده اید",
"No photo path was submitted." => "هیچ نشانی از تصویرارسال نشده",
"File doesn't exist:" => "پرونده وجود ندارد",
"Error loading image." => "خطا در بارگزاری تصویر",
"element name is not set." => "نام اصلی تنظیم نشده است",
"checksum is not set." => "checksum تنظیم شده نیست",
"Information about vCard is incorrect. Please reload the page: " => "اطلاعات کارت ویزا شما غلط است لطفا صفحه را دوباره بارگزاری کنید",
@ -42,6 +42,7 @@
"No file was uploaded" => "هیچ پروندهای بارگذاری نشده",
"Missing a temporary folder" => "یک پوشه موقت گم شده",
"Contacts" => "اشخاص",
"Drop a VCF file to import contacts." => "یک پرونده VCF را به اینجا بکشید تا اشخاص افزوده شوند",
"Addressbook not found." => "کتابچه نشانی ها یافت نشد",
"This is not your addressbook." => "این کتابچه ی نشانه های شما نیست",
"Contact could not be found." => "اتصال ویا تماسی یافت نشد",
@ -144,11 +145,7 @@
"Name of new addressbook" => "نام کتابچه نشانی جدید",
"Import" => "وارد کردن",
"Importing contacts" => "وارد کردن اشخاص",
"Contacts imported successfully" => "اشخاص با موفقیت افزوده شدند",
"Close Dialog" => "بستن دیالوگ",
"Import Addressbook" => "وارد کردن کتابچه نشانی",
"Select address book to import to:" => "یک کتابچه نشانی انتخاب کنید تا وارد شود",
"Drop a VCF file to import contacts." => "یک پرونده VCF را به اینجا بکشید تا اشخاص افزوده شوند",
"Select from HD" => "انتخاب از دیسک سخت",
"You have no contacts in your addressbook." => "شماهیچ شخصی در کتابچه نشانی خود ندارید",
"Add contact" => "افزودن اطلاعات شخص مورد نظر",

View File

@ -0,0 +1,109 @@
<?php $TRANSLATIONS = array(
"There was an error adding the contact." => "Virhe yhteystietoa lisättäessä.",
"Cannot add empty property." => "Tyhjää ominaisuutta ei voi lisätä.",
"At least one of the address fields has to be filled out." => "Vähintään yksi osoitekenttä tulee täyttää.",
"Error adding contact property." => "Virhe lisättäessä ominaisuutta yhteystietoon.",
"No categories selected for deletion." => "Luokkia ei ole valittu poistettavaksi.",
"No address books found." => "Osoitekirjoja ei löytynyt.",
"No contacts found." => "Yhteystietoja ei löytynyt.",
"Error parsing VCard for ID: \"" => "Virhe jäsennettäessä vCardia tunnisteelle: \"",
"Cannot add addressbook with an empty name." => "Ilman nimeä olevaa osoitekirjaa ei voi lisätä.",
"Error adding addressbook." => "Virhe lisättäessä osoitekirjaa.",
"Error activating addressbook." => "Virhe aktivoitaessa osoitekirjaa.",
"Error saving temporary file." => "Virhe tallennettaessa tilapäistiedostoa.",
"Error deleting contact property." => "Virhe poistettaessa yhteystiedon ominaisuutta.",
"File doesn't exist:" => "Tiedostoa ei ole olemassa:",
"Error loading image." => "Virhe kuvaa ladatessa.",
"Error updating contact property." => "Virhe päivitettäessä yhteystiedon ominaisuutta.",
"Error updating addressbook." => "Virhe päivitettäessä osoitekirjaa.",
"There is no error, the file uploaded with success" => "Ei virhettä, tiedosto lähetettiin onnistuneesti",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Lähetetyn tiedoston koko ylittää upload_max_filesize-asetuksen arvon php.ini-tiedostossa",
"The uploaded file was only partially uploaded" => "Lähetetty tiedosto lähetettiin vain osittain",
"No file was uploaded" => "Tiedostoa ei lähetetty",
"Missing a temporary folder" => "Tilapäiskansio puuttuu",
"Contacts" => "Yhteystiedot",
"Addressbook not found." => "Osoitekirjaa ei löytynyt.",
"This is not your addressbook." => "Tämä ei ole osoitekirjasi.",
"Contact could not be found." => "Yhteystietoa ei löytynyt.",
"Address" => "Osoite",
"Telephone" => "Puhelin",
"Email" => "Sähköposti",
"Organization" => "Organisaatio",
"Work" => "Työ",
"Home" => "Koti",
"Mobile" => "Mobiili",
"Text" => "Teksti",
"Voice" => "Ääni",
"Message" => "Viesti",
"Fax" => "Faksi",
"Video" => "Video",
"Pager" => "Hakulaite",
"Internet" => "Internet",
"{name}'s Birthday" => "Henkilön {name} syntymäpäivä",
"Contact" => "Yhteystieto",
"Add Contact" => "Lisää yhteystieto",
"Addressbooks" => "Osoitekirjat",
"Configure Address Books" => "Muokkaa osoitekirjoja",
"New Address Book" => "Uusi osoitekirja",
"Import from VCF" => "Tuo VCF-tiedostosta",
"CardDav Link" => "CardDav-linkki",
"Download" => "Lataa",
"Edit" => "Muokkaa",
"Delete" => "Poista",
"Download contact" => "Lataa yhteystieto",
"Delete contact" => "Poista yhteystieto",
"Nickname" => "Kutsumanimi",
"Enter nickname" => "Anna kutsumanimi",
"Birthday" => "Syntymäpäivä",
"Groups" => "Ryhmät",
"Separate groups with commas" => "Erota ryhmät pilkuilla",
"Edit groups" => "Muokkaa ryhmiä",
"Please specify a valid email address." => "Anna kelvollinen sähköpostiosoite.",
"Enter email address" => "Anna sähköpostiosoite",
"Delete email address" => "Poista sähköpostiosoite",
"Enter phone number" => "Anna puhelinnumero",
"Delete phone number" => "Poista puhelinnumero",
"View on map" => "Näytä kartalla",
"Add notes here." => "Lisää huomiot tähän.",
"Add field" => "Lisää kenttä",
"Profile picture" => "Profiilikuva",
"Phone" => "Puhelin",
"Note" => "Huomio",
"Delete current photo" => "Poista nykyinen valokuva",
"Edit current photo" => "Muokkaa nykyistä valokuvaa",
"Upload new photo" => "Lähetä uusi valokuva",
"Select photo from ownCloud" => "Valitse valokuva ownCloudista",
"Edit address" => "Muokkaa osoitetta",
"Type" => "Tyyppi",
"PO Box" => "Postilokero",
"Extended" => "Laajennettu",
"Street" => "Katuosoite",
"City" => "Paikkakunta",
"Region" => "Alue",
"Zipcode" => "Postinumero",
"Country" => "Maa",
"Edit categories" => "Muokkaa luokkia",
"Add" => "Lisää",
"Addressbook" => "Osoitekirja",
"Given name" => "Etunimi",
"Additional names" => "Lisänimet",
"Family name" => "Sukunimi",
"New Addressbook" => "Uusi osoitekirja",
"Edit Addressbook" => "Muokkaa osoitekirjaa",
"Active" => "Aktiivinen",
"Save" => "Tallenna",
"Submit" => "Lähetä",
"Cancel" => "Peru",
"Import a contacts file" => "Tuo yhteystiedon sisältävä tiedosto",
"Please choose the addressbook" => "Valitse osoitekirja",
"create a new addressbook" => "luo uusi osoitekirja",
"Name of new addressbook" => "Uuden osoitekirjan nimi",
"Import" => "Tuo",
"Importing contacts" => "Tuodaan yhteystietoja",
"Select address book to import to:" => "Valitse osoitekirja, johon yhteystiedot tuodaan:",
"You have no contacts in your addressbook." => "Osoitekirjassasi ei ole yhteystietoja.",
"Add contact" => "Lisää yhteystieto",
"Configure addressbooks" => "Muokkaa osoitekirjoja",
"CardDAV syncing addresses" => "CardDAV-synkronointiosoitteet",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Erreur lors de l'ajout du carnet d'adresses.",
"Error activating addressbook." => "Erreur lors de l'activation du carnet d'adresses.",
"No contact ID was submitted." => "Aucun ID de contact envoyé",
"Error loading image." => "Erreur lors du chargement de l'image.",
"Error reading contact photo." => "Erreur de lecture de la photo du contact.",
"Error saving temporary file." => "Erreur de sauvegarde du fichier temporaire.",
"The loading photo is not valid." => "La photo chargée est invalide.",
@ -27,6 +26,7 @@
"Missing contact id." => "ID contact manquant.",
"No photo path was submitted." => "Le chemin de la photo n'a pas été envoyé.",
"File doesn't exist:" => "Fichier inexistant:",
"Error loading image." => "Erreur lors du chargement de l'image.",
"element name is not set." => "Le champ Nom n'est pas défini.",
"checksum is not set." => "L'hachage n'est pas défini.",
"Information about vCard is incorrect. Please reload the page: " => "L'informatiion à propos de la vCard est incorrect. Merci de rafraichir la page:",
@ -42,6 +42,7 @@
"No file was uploaded" => "Pas de fichier envoyé.",
"Missing a temporary folder" => "Absence de dossier temporaire.",
"Contacts" => "Contacts",
"Drop a VCF file to import contacts." => "Glisser un fichier VCF pour importer des contacts.",
"Addressbook not found." => "Carnet d'adresses introuvable.",
"This is not your addressbook." => "Ce n'est pas votre carnet d'adresses.",
"Contact could not be found." => "Ce contact n'a pu être trouvé.",
@ -122,6 +123,7 @@
"Additional names" => "Nom supplémentaires",
"Family name" => "Nom de famille",
"Hon. suffixes" => "Suffixes hon.",
"Ph.D." => "Dr",
"New Addressbook" => "Nouveau carnet d'adresses",
"Edit Addressbook" => "Éditer le carnet d'adresses",
"Displayname" => "Nom",
@ -135,11 +137,7 @@
"Name of new addressbook" => "Nom du nouveau carnet d'adresses",
"Import" => "Importer",
"Importing contacts" => "Importation des contacts",
"Contacts imported successfully" => "Contacts importés avec succes",
"Close Dialog" => "Fermer la boite de dialogue",
"Import Addressbook" => "Importer un carnet d'adresses.",
"Select address book to import to:" => "Selectionner le carnet d'adresses à importer vers:",
"Drop a VCF file to import contacts." => "Glisser un fichier VCF pour importer des contacts.",
"Select from HD" => "Selectionner depuis le disque dur",
"You have no contacts in your addressbook." => "Il n'y a pas de contact dans votre carnet d'adresses.",
"Add contact" => "Ajouter un contact",

View File

@ -1,5 +1,23 @@
<?php $TRANSLATIONS = array(
"Error (de)activating addressbook." => "שגיאה בהפעלה או בנטרול פנקס הכתובות.",
"There was an error adding the contact." => "אירעה שגיאה בעת הוספת איש הקשר.",
"Cannot add empty property." => "לא ניתן להוסיף מאפיין ריק.",
"At least one of the address fields has to be filled out." => "יש למלא לפחות אחד משדות הכתובת.",
"Trying to add duplicate property: " => "ניסיון להוספת מאפיין כפול: ",
"Error adding contact property." => "שגיאה בהוספת מאפיין לאיש הקשר.",
"No ID provided" => "לא צוין מזהה",
"Error setting checksum." => "שגיאה בהגדרת נתוני הביקורת.",
"No categories selected for deletion." => "לא נבחור קטגוריות למחיקה.",
"No address books found." => "לא נמצאו פנקסי כתובות.",
"No contacts found." => "לא נמצאו אנשי קשר.",
"Missing ID" => "מזהה חסר",
"Error adding addressbook." => "שגיאה בהוספת פנקס הכתובות.",
"Error activating addressbook." => "שגיאה בהפעלת פנקס הכתובות.",
"Information about vCard is incorrect. Please reload the page." => "המידע אודות vCard אינו נכון. נא לטעון מחדש את הדף.",
"Error deleting contact property." => "שגיאה במחיקת מאפיין של איש הקשר.",
"Error updating contact property." => "שגיאה בעדכון המאפיין של איש הקשר.",
"Error updating addressbook." => "שגיאה בעדכון פנקס הכתובות.",
"Contacts" => "אנשי קשר",
"This is not your addressbook." => "זהו אינו ספר הכתובות שלך",
"Contact could not be found." => "לא ניתן לאתר איש קשר",
"Address" => "כתובת",
@ -14,16 +32,34 @@
"Fax" => "פקס",
"Video" => "וידאו",
"Pager" => "זימונית",
"Contact" => "איש קשר",
"Add Contact" => "הוספת איש קשר",
"Addressbooks" => "פנקסי כתובות",
"New Address Book" => "פנקס כתובות חדש",
"CardDav Link" => "קישור ",
"Download" => "הורדה",
"Edit" => "עריכה",
"Delete" => "מחיקה",
"Download contact" => "הורדת איש קשר",
"Delete contact" => "מחיקת איש קשר",
"Birthday" => "יום הולדת",
"Preferred" => "מועדף",
"Phone" => "טלפון",
"Type" => "סוג",
"PO Box" => "תא דואר",
"Extended" => "מורחב",
"Street" => "רחוב",
"City" => "עיר",
"Region" => "אזור",
"Zipcode" => "מיקוד",
"Country" => "מדינה"
"Country" => "מדינה",
"Add" => "הוספה",
"Addressbook" => "פנקס כתובות",
"New Addressbook" => "פנקס כתובות חדש",
"Edit Addressbook" => "עריכת פנקס הכתובות",
"Displayname" => "שם התצוגה",
"Active" => "פעיל",
"Save" => "שמירה",
"Submit" => "ביצוע",
"Cancel" => "ביטול"
);

View File

@ -1,5 +1,7 @@
<?php $TRANSLATIONS = array(
"Information about vCard is incorrect. Please reload the page." => "Informacija o vCard je neispravna. Osvježite stranicu.",
"File doesn't exist:" => "Datoteka ne postoji:",
"Contacts" => "Kontakti",
"This is not your addressbook." => "Ovo nije vaš adresar.",
"Contact could not be found." => "Kontakt ne postoji.",
"Address" => "Adresa",
@ -14,16 +16,48 @@
"Fax" => "Fax",
"Video" => "Video",
"Pager" => "Pager",
"Contact" => "Kontakt",
"Add Contact" => "Dodaj kontakt",
"Addressbooks" => "Adresari",
"New Address Book" => "Novi adresar",
"CardDav Link" => "CardDav poveznica",
"Download" => "Preuzimanje",
"Edit" => "Uredi",
"Delete" => "Obriši",
"Download contact" => "Preuzmi kontakt",
"Delete contact" => "Izbriši kontakt",
"Edit name details" => "Uredi detalje imena",
"Nickname" => "Nadimak",
"Enter nickname" => "Unesi nadimank",
"Birthday" => "Rođendan",
"dd-mm-yyyy" => "dd-mm-yyyy",
"Groups" => "Grupe",
"Edit groups" => "Uredi grupe",
"Enter email address" => "Unesi email adresu",
"Enter phone number" => "Unesi broj telefona",
"View on map" => "Prikaži na karti",
"Edit address details" => "Uredi detalje adrese",
"Add notes here." => "Dodaj bilješke ovdje.",
"Add field" => "Dodaj polje",
"Phone" => "Telefon",
"Note" => "Bilješka",
"Edit current photo" => "Uredi trenutnu sliku",
"Edit address" => "Uredi adresu",
"Type" => "Tip",
"PO Box" => "Poštanski Pretinac",
"Extended" => "Prošireno",
"Street" => "Ulica",
"City" => "Grad",
"Region" => "Regija",
"Zipcode" => "Poštanski broj",
"Country" => "Država"
"Country" => "Država",
"Edit categories" => "Uredi kategorije",
"Add" => "Dodaj",
"Addressbook" => "Adresar",
"New Addressbook" => "Novi adresar",
"Edit Addressbook" => "Uredi adresar",
"Save" => "Spremi",
"Submit" => "Pošalji",
"Cancel" => "Prekini",
"Import" => "Uvezi"
);

View File

@ -1,10 +1,10 @@
<?php $TRANSLATIONS = array(
"Error (de)activating addressbook." => "Címlista (de)aktiválása sikertelen",
"There was an error adding the contact." => "Hiba a kontakt hozzáadásakor",
"There was an error adding the contact." => "Hiba a kapcsolat hozzáadásakor",
"Cannot add empty property." => "Nem adható hozzá üres tulajdonság",
"At least one of the address fields has to be filled out." => "Legalább egy címmező kitöltendő",
"Trying to add duplicate property: " => "Kísérlet dupla tulajdonság hozzáadására: ",
"Error adding contact property." => "Hiba a kontakt-tulajdonság hozzáadásakor",
"Error adding contact property." => "Hiba a kapcsolat-tulajdonság hozzáadásakor",
"No ID provided" => "Nincs ID megadva",
"Error setting checksum." => "Hiba az ellenőrzőösszeg beállításakor",
"No categories selected for deletion." => "Nincs kiválasztva törlendő kategória",
@ -16,32 +16,33 @@
"Error adding addressbook." => "Hiba a címlista hozzáadásakor",
"Error activating addressbook." => "Címlista aktiválása sikertelen",
"No contact ID was submitted." => "Nincs ID megadva a kontakthoz",
"Error loading image." => "Kép betöltése sikertelen",
"Error reading contact photo." => "A kontakt képének beolvasása sikertelen",
"Error saving temporary file." => "Ideiglenes fájl mentése sikertelen",
"The loading photo is not valid." => "A kép érvénytelen",
"id is not set." => "ID nincs beállítva",
"Information about vCard is incorrect. Please reload the page." => "A vCardról szóló információ helytelen. Töltsd újra az oldalt.",
"Error deleting contact property." => "Hiba a kontakt-tulajdonság törlésekor",
"Contact ID is missing." => "Hiányzik a kontakt ID",
"Error deleting contact property." => "Hiba a kapcsolat-tulajdonság törlésekor",
"Contact ID is missing." => "Hiányzik a kapcsolat ID",
"Missing contact id." => "Hiányzik a kontakt ID",
"No photo path was submitted." => "Nincs fénykép-útvonal megadva",
"File doesn't exist:" => "A fájl nem létezik:",
"Error loading image." => "Kép betöltése sikertelen",
"element name is not set." => "az elem neve nincs beállítva",
"checksum is not set." => "az ellenőrzőösszeg nincs beállítva",
"Information about vCard is incorrect. Please reload the page: " => "Helytelen információ a vCardról. Töltse újra az oldalt: ",
"Something went FUBAR. " => "Valami balul sült el.",
"Error updating contact property." => "Hiba a kontakt-tulajdonság frissítésekor",
"Error updating contact property." => "Hiba a kapcsolat-tulajdonság frissítésekor",
"Cannot update addressbook with an empty name." => "Üres névvel nem frissíthető a címlista",
"Error updating addressbook." => "Hiba a címlista frissítésekor",
"Error uploading contacts to storage." => "Hiba a kontaktok feltöltésekor",
"Error uploading contacts to storage." => "Hiba a kapcsolatok feltöltésekor",
"There is no error, the file uploaded with success" => "Nincs hiba, a fájl sikeresen feltöltődött",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "A feltöltött fájl mérete meghaladja az upload_max_filesize értéket 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 mérete meghaladja a HTML form-ban megadott MAX_FILE_SIZE értéket",
"The uploaded file was only partially uploaded" => "A fájl csak részlegesen lett feltöltve",
"No file was uploaded" => "Nincs feltöltött fájl",
"Missing a temporary folder" => "Hiányzik az ideiglenes könyvtár",
"Contacts" => "Kontaktok",
"Contacts" => "Kapcsolatok",
"Drop a VCF file to import contacts." => "Húzza ide a VCF fájlt a kapcsolatok importálásához",
"Addressbook not found." => "Címlista nem található",
"This is not your addressbook." => "Ez nem a te címjegyzéked.",
"Contact could not be found." => "Kapcsolat nem található.",
@ -60,8 +61,8 @@
"Pager" => "Személyhívó",
"Internet" => "Internet",
"{name}'s Birthday" => "{name} születésnapja",
"Contact" => "Kontakt",
"Add Contact" => "Kontakt hozzáadása",
"Contact" => "Kapcsolat",
"Add Contact" => "Kapcsolat hozzáadása",
"Addressbooks" => "Címlisták",
"Configure Address Books" => "Címlisták beállítása",
"New Address Book" => "Új címlista",
@ -70,8 +71,8 @@
"Download" => "Letöltés",
"Edit" => "Szerkesztés",
"Delete" => "Törlés",
"Download contact" => "Kontakt letöltése",
"Delete contact" => "Kontakt törlése",
"Download contact" => "Kapcsolat letöltése",
"Delete contact" => "Kapcsolat törlése",
"Drop photo to upload" => "Húzza ide a feltöltendő képet",
"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formátum egyedi, Rövid név, Teljes név, Visszafelé vagy Visszafelé vesszővel",
"Edit name details" => "Név részleteinek szerkesztése",
@ -118,7 +119,7 @@
"Mr" => "Mr",
"Sir" => "Sir",
"Mrs" => "Mrs",
"Dr" => "Dr",
"Dr" => "Dr.",
"Given name" => "Teljes név",
"Additional names" => "További nevek",
"Family name" => "Családnév",
@ -138,23 +139,19 @@
"Save" => "Mentés",
"Submit" => "Elküld",
"Cancel" => "Mégsem",
"Import a contacts file" => "Kontakt-fájl importálása",
"Import a contacts file" => "Kapcsolat-fájl importálása",
"Please choose the addressbook" => "Válassza ki a címlistát",
"create a new addressbook" => "Címlista létrehozása",
"Name of new addressbook" => "Új címlista neve",
"Import" => "Import",
"Importing contacts" => "Kontaktok importálása",
"Contacts imported successfully" => "Kontaktok importálása sikeres",
"Close Dialog" => "Párbeszédablak bezárása",
"Import Addressbook" => "Címlista importálása",
"Importing contacts" => "Kapcsolatok importálása",
"Select address book to import to:" => "Melyik címlistába történjen az importálás:",
"Drop a VCF file to import contacts." => "Húzza ide a VCF fájlt a kontaktok importálásához",
"Select from HD" => "Kiválasztás merevlemezről",
"You have no contacts in your addressbook." => "Nincs kontakt a címlistában",
"Add contact" => "Kontakt hozzáadása",
"You have no contacts in your addressbook." => "Nincsenek kapcsolatok a címlistában",
"Add contact" => "Kapcsolat hozzáadása",
"Configure addressbooks" => "Címlisták beállítása",
"CardDAV syncing addresses" => "CardDAV szinkronizációs címek",
"more info" => "további infó",
"more info" => "további információ",
"Primary address (Kontact et al)" => "Elsődleges cím",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -4,8 +4,8 @@
"No contacts found." => "Nulle contactos trovate.",
"Error adding addressbook." => "Error durante que il addeva le adressario.",
"Error activating addressbook." => "Error in activar adressario",
"Error loading image." => "Il habeva un error durante le cargamento del imagine.",
"Error saving temporary file." => "Error durante le scriptura in le file temporari",
"Error loading image." => "Il habeva un error durante le cargamento del imagine.",
"No file was uploaded" => "Nulle file esseva incargate.",
"Missing a temporary folder" => "Manca un dossier temporari",
"Contacts" => "Contactos",
@ -88,9 +88,6 @@
"create a new addressbook" => "Crear un nove adressario",
"Name of new addressbook" => "Nomine del nove gruppo:",
"Import" => "Importar",
"Contacts imported successfully" => "Contactos importate con successo.",
"Close Dialog" => "Clauder dialogo",
"Import Addressbook" => "Importar adressario.",
"Add contact" => "Adder adressario",
"more info" => "plus info",
"iOS/OS X" => "iOS/OS X"

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Errore durante l'aggiunta della rubrica.",
"Error activating addressbook." => "Errore durante l'attivazione della rubrica.",
"No contact ID was submitted." => "Nessun ID di contatto inviato.",
"Error loading image." => "Errore di caricamento immagine.",
"Error reading contact photo." => "Errore di lettura della foto del contatto.",
"Error saving temporary file." => "Errore di salvataggio del file temporaneo.",
"The loading photo is not valid." => "La foto caricata non è valida.",
@ -27,6 +26,7 @@
"Missing contact id." => "ID di contatto mancante.",
"No photo path was submitted." => "Non è stato inviato alcun percorso a una foto.",
"File doesn't exist:" => "Il file non esiste:",
"Error loading image." => "Errore di caricamento immagine.",
"element name is not set." => "il nome dell'elemento non è impostato.",
"checksum is not set." => "il codice di controllo non è impostato.",
"Information about vCard is incorrect. Please reload the page: " => "Le informazioni della vCard non sono corrette. Ricarica la pagina: ",
@ -42,6 +42,7 @@
"No file was uploaded" => "Nessun file è stato inviato",
"Missing a temporary folder" => "Manca una cartella temporanea",
"Contacts" => "Contatti",
"Drop a VCF file to import contacts." => "Rilascia un file VCF per importare i contatti.",
"Addressbook not found." => "Rubrica non trovata.",
"This is not your addressbook." => "Questa non è la tua rubrica.",
"Contact could not be found." => "Il contatto non può essere trovato.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Nome della nuova rubrica",
"Import" => "Importa",
"Importing contacts" => "Importazione contatti",
"Contacts imported successfully" => "Contatti importati correttamente",
"Close Dialog" => "Chiudi finestra",
"Import Addressbook" => "Importa rubrica",
"Select address book to import to:" => "Seleziona la rubrica di destinazione:",
"Drop a VCF file to import contacts." => "Rilascia un file VCF per importare i contatti.",
"Select from HD" => "Seleziona da disco",
"You have no contacts in your addressbook." => "Non hai contatti nella rubrica.",
"Add contact" => "Aggiungi contatto",

View File

@ -1,16 +1,46 @@
<?php $TRANSLATIONS = array(
"Error (de)activating addressbook." => "電話帳の有効/無効化に失敗しました。",
"Error (de)activating addressbook." => "アドレスブックの有効/無効化に失敗しました。",
"There was an error adding the contact." => "連絡先の追加でエラーが発生しました。",
"Cannot add empty property." => "項目の新規追加に失敗しました。",
"At least one of the address fields has to be filled out." => "アドレス項目の1つは記入して下さい。",
"At least one of the address fields has to be filled out." => "住所の項目のうち1つは入力して下さい。",
"Error adding contact property." => "連絡先の追加に失敗しました。",
"Error adding addressbook." => "電話帳の追加に失敗しました。",
"Error activating addressbook." => "電話帳の有効化に失敗しました。",
"No ID provided" => "IDが提供されていません",
"Error setting checksum." => "チェックサムの設定エラー。",
"No categories selected for deletion." => "削除するカテゴリが選択されていません。",
"No address books found." => "アドレスブックが見つかりません。",
"No contacts found." => "連絡先が見つかりません。",
"Error parsing VCard for ID: \"" => "VCardからIDの抽出エラー: \"",
"Cannot add addressbook with an empty name." => "名前を空白にしたままでアドレスブックを追加することはできません。",
"Error adding addressbook." => "アドレスブックの追加に失敗しました。",
"Error activating addressbook." => "アドレスブックの有効化に失敗しました。",
"No contact ID was submitted." => "連絡先IDは登録されませんでした。",
"Error reading contact photo." => "連絡先写真の読み込みエラー。",
"Error saving temporary file." => "一時ファイルの保存エラー。",
"The loading photo is not valid." => "写真の読み込みは無効です。",
"id is not set." => "idが設定されていません。",
"Information about vCard is incorrect. Please reload the page." => "vCardの情報に誤りがあります。ページをリロードして下さい。",
"Error deleting contact property." => "連絡先の削除に失敗しました。",
"Contact ID is missing." => "コンタクトIDが見つかりません。",
"Missing contact id." => "コンタクトIDが設定されていません。",
"No photo path was submitted." => "写真のパスが登録されていません。",
"File doesn't exist:" => "ファイルが存在しません:",
"Error loading image." => "画像の読み込みエラー。",
"element name is not set." => "要素名が設定されていません。",
"checksum is not set." => "チェックサムが設定されていません。",
"Information about vCard is incorrect. Please reload the page: " => "vCardの情報が正しくありません。ページを再読み込みしてください: ",
"Error updating contact property." => "連絡先の更新に失敗しました。",
"Error updating addressbook." => "電話帳の更新に失敗しました。",
"Cannot update addressbook with an empty name." => "空白の名前でアドレスブックを更新することはできません。",
"Error updating addressbook." => "アドレスブックの更新に失敗しました。",
"Error uploading contacts to storage." => "ストレージへの連絡先のアップロードエラー。",
"There is no error, the file uploaded with success" => "エラーはありません。ファイルのアップロードは成功しました",
"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" => "一時保存フォルダが見つかりません",
"Contacts" => "連絡先",
"Drop a VCF file to import contacts." => "連絡先をインポートするVCFファイルをドロップしてください。",
"Addressbook not found." => "アドレスブックが見つかりませんでした。",
"This is not your addressbook." => "これはあなたの電話帳ではありません。",
"Contact could not be found." => "連絡先を見つける事ができません。",
"Address" => "住所",
@ -22,37 +52,101 @@
"Mobile" => "携帯電話",
"Text" => "TTY TDD",
"Voice" => "音声番号",
"Message" => "メッセージ",
"Fax" => "FAX",
"Video" => "テレビ電話",
"Pager" => "ポケベル",
"Internet" => "インターネット",
"{name}'s Birthday" => "{name}の誕生日",
"Contact" => "連絡先",
"Add Contact" => "連絡先の追加",
"Addressbooks" => "電話帳",
"Configure Address Books" => "アドレスブックを設定",
"New Address Book" => "新規電話帳",
"CardDav Link" => "CardDAV リンク",
"Import from VCF" => "VCFからインポート",
"CardDav Link" => "CardDAVリンク",
"Download" => "ダウンロード",
"Edit" => "編集",
"Delete" => "削除",
"Download contact" => "連絡先のダウンロード",
"Delete contact" => "連絡先の削除",
"Birthday" => "生年月日",
"Drop photo to upload" => "写真をドロップしてアップロード",
"Edit name details" => "名前の詳細を編集",
"Nickname" => "ニックネーム",
"Enter nickname" => "ニックネームを入力",
"Birthday" => "誕生日",
"dd-mm-yyyy" => "yyyy-mm-dd",
"Groups" => "グループ",
"Separate groups with commas" => "コンマでグループを分割",
"Edit groups" => "グループを編集",
"Preferred" => "推奨",
"Please specify a valid email address." => "連絡先を追加",
"Enter email address" => "メールアドレスを入力",
"Mail to address" => "アドレスへメールを送る",
"Delete email address" => "メールアドレスを削除",
"Enter phone number" => "電話番号を入力",
"Delete phone number" => "電話番号を削除",
"View on map" => "地図で表示",
"Edit address details" => "住所の詳細を編集",
"Add notes here." => "ここにメモを追加。",
"Add field" => "項目を追加",
"Profile picture" => "プロフィール写真",
"Phone" => "電話番号",
"Note" => "メモ",
"Delete current photo" => "現在の写真を削除",
"Edit current photo" => "現在の写真を編集",
"Upload new photo" => "新しい写真をアップロード",
"Select photo from ownCloud" => "ownCloudから写真を選択",
"Edit address" => "住所を編集",
"Type" => "種類",
"PO Box" => "私書箱",
"Extended" => "拡張番地",
"Street" => "街路番地",
"Extended" => "番地2",
"Street" => "番地1",
"City" => "都市",
"Region" => "地域",
"Region" => "都道府県",
"Zipcode" => "郵便番号",
"Country" => "国名",
"Edit categories" => "カテゴリを編集",
"Add" => "追加",
"Addressbook" => "電話帳",
"New Addressbook" => "電話帳の新規作成",
"Edit Addressbook" => "電話帳の編集",
"Addressbook" => "アドレスブック",
"Miss" => "Miss",
"Ms" => "Ms",
"Mr" => "Mr",
"Sir" => "Sir",
"Mrs" => "Mrs",
"Dr" => "Dr",
"Given name" => "",
"Additional names" => "ミドルネーム",
"Family name" => "",
"Hon. suffixes" => "ストレージへの連絡先のアップロードエラー。",
"J.D." => "J.D.",
"M.D." => "M.D.",
"D.O." => "D.O.",
"D.C." => "D.C.",
"Ph.D." => "Ph.D.",
"Esq." => "Esq.",
"Jr." => "Jr.",
"Sn." => "Sn.",
"New Addressbook" => "アドレスブックの新規作成",
"Edit Addressbook" => "アドレスブックを編集",
"Displayname" => "表示名",
"Active" => "アクティブ",
"Save" => "保存",
"Submit" => "送信",
"Cancel" => "取り消し"
"Cancel" => "取り消し",
"Import a contacts file" => "コンタクトファイルをインポート",
"Please choose the addressbook" => "アドレスブックを選択してください",
"create a new addressbook" => "新しいアドレスブックを作成",
"Name of new addressbook" => "新しいアドレスブックの名前",
"Import" => "インポート",
"Importing contacts" => "コンタクトをインポート",
"Select address book to import to:" => "インポートするアドレスブックを選択:",
"Select from HD" => "HDから選択",
"You have no contacts in your addressbook." => "アドレスブックに連絡先が登録されていません。",
"Add contact" => "連絡先を追加",
"Configure addressbooks" => "アドレス帳を設定",
"CardDAV syncing addresses" => "CardDAV同期アドレス",
"more info" => "詳細情報",
"Primary address (Kontact et al)" => "プライマリアドレスKontact 他)",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -14,7 +14,6 @@
"Error adding addressbook." => "주소록을 추가할 수 없습니다.",
"Error activating addressbook." => "주소록을 활성화할 수 없습니다.",
"No contact ID was submitted." => "접속 아이디가 기입되지 않았습니다.",
"Error loading image." => "로딩 이미지 오류입니다.",
"Error reading contact photo." => "사진 읽기 오류",
"Error saving temporary file." => "임시 파일을 저장하는 동안 오류가 발생했습니다. ",
"The loading photo is not valid." => "로딩 사진이 유효하지 않습니다. ",
@ -24,6 +23,7 @@
"Contact ID is missing." => "접속 아이디가 없습니다. ",
"Missing contact id." => "접속 아이디 분실",
"File doesn't exist:" => "파일이 존재하지 않습니다. ",
"Error loading image." => "로딩 이미지 오류입니다.",
"Error updating contact property." => "연락처 속성을 업데이트할 수 없습니다.",
"Error updating addressbook." => "주소록을 업데이트할 수 없습니다.",
"No file was uploaded" => "파일이 업로드 되어있지 않습니다",

View File

@ -14,16 +14,31 @@
"Fax" => "Fax",
"Video" => "Video",
"Pager" => "Pager",
"Contact" => "Kontakt",
"Add Contact" => "Kontakt bäisetzen",
"Addressbooks" => "Adressbicher ",
"New Address Book" => "Neit Adressbuch",
"CardDav Link" => "CardDav Link",
"Download" => "Download",
"Edit" => "Editéieren",
"Delete" => "Läschen",
"Delete contact" => "Kontakt läschen",
"Birthday" => "Gebuertsdag",
"Phone" => "Telefon",
"Type" => "Typ",
"PO Box" => "Postleetzuel",
"Extended" => "Erweidert",
"Street" => "Strooss",
"City" => "Staat",
"Region" => "Regioun",
"Zipcode" => "Postleetzuel",
"Country" => "Land"
"Country" => "Land",
"Add" => "Dobäisetzen",
"Addressbook" => "Adressbuch",
"New Addressbook" => "Neit Adressbuch",
"Edit Addressbook" => "Adressbuch editéieren",
"Displayname" => "Ugewisene Numm",
"Save" => "Späicheren",
"Submit" => "Fortschécken",
"Cancel" => "Ofbriechen"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Грешки при додавање на адресарот.",
"Error activating addressbook." => "Грешка при активирање на адресарот.",
"No contact ID was submitted." => "Не беше доставено ИД за контакт.",
"Error loading image." => "Грешка во вчитување на слика.",
"Error reading contact photo." => "Грешка во читање на контакт фотографија.",
"Error saving temporary file." => "Грешка во снимање на привремена датотека.",
"The loading photo is not valid." => "Фотографијата која се вчитува е невалидна.",
@ -27,6 +26,7 @@
"Missing contact id." => "Недостасува ид за контакт.",
"No photo path was submitted." => "Не беше поднесена патека за фотографија.",
"File doesn't exist:" => "Не постои датотеката:",
"Error loading image." => "Грешка во вчитување на слика.",
"element name is not set." => "име за елементот не е поставена.",
"checksum is not set." => "сумата за проверка не е поставена.",
"Information about vCard is incorrect. Please reload the page: " => "Информацијата за vCard не е точна. Ве молам превчитајте ја страницава:",
@ -42,6 +42,7 @@
"No file was uploaded" => "Не беше подигната датотека.",
"Missing a temporary folder" => "Недостасува привремена папка",
"Contacts" => "Контакти",
"Drop a VCF file to import contacts." => "Довлечкај VCF датотека да се внесат контакти.",
"Addressbook not found." => "Адресарот не е најден.",
"This is not your addressbook." => "Ова не е во Вашиот адресар.",
"Contact could not be found." => "Контактот неможе да биде најден.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Име на новиот адресар",
"Import" => "Внеси",
"Importing contacts" => "Внесување контакти",
"Contacts imported successfully" => "Контаките беа внесени успешно",
"Close Dialog" => "Дијалог за затварање",
"Import Addressbook" => "Внеси адресар",
"Select address book to import to:" => "Изберете адресар да се внесе:",
"Drop a VCF file to import contacts." => "Довлечкај VCF датотека да се внесат контакти.",
"Select from HD" => "Изберете од хард диск",
"You have no contacts in your addressbook." => "Немате контакти во Вашиот адресар.",
"Add contact" => "Додади контакт",

View File

@ -4,6 +4,7 @@
"Cannot add empty property." => "Kan ikke legge til tomt felt.",
"At least one of the address fields has to be filled out." => "Minst en av adressefeltene må oppgis.",
"Error adding contact property." => "Et problem oppsto med å legge til kontaktfeltet.",
"No ID provided" => "Ingen ID angitt",
"No categories selected for deletion." => "Ingen kategorier valgt for sletting.",
"No address books found." => "Ingen adressebok funnet.",
"No contacts found." => "Ingen kontakter funnet.",
@ -11,14 +12,16 @@
"Cannot add addressbook with an empty name." => "Kan ikke legge til en adressebok uten navn.",
"Error adding addressbook." => "Et problem oppsto med å legge til adresseboken.",
"Error activating addressbook." => "Et problem oppsto med å aktivere adresseboken.",
"Error loading image." => "Klarte ikke å laste bilde.",
"Error reading contact photo." => "Klarte ikke å lese kontaktbilde.",
"Error saving temporary file." => "Klarte ikke å lagre midlertidig fil.",
"The loading photo is not valid." => "Bildet som lastes inn er ikke gyldig.",
"id is not set." => "id er ikke satt.",
"Information about vCard is incorrect. Please reload the page." => "Informasjonen om vCard-filen er ikke riktig. Last inn siden på nytt.",
"Error deleting contact property." => "Et problem oppsto med å fjerne kontaktfeltet.",
"Missing contact id." => "Mangler kontakt-id.",
"No photo path was submitted." => "Ingen filsti ble lagt inn.",
"File doesn't exist:" => "Filen eksisterer ikke:",
"Error loading image." => "Klarte ikke å laste bilde.",
"Something went FUBAR. " => "Noe gikk fryktelig galt.",
"Error updating contact property." => "Et problem oppsto med å legge til kontaktfeltet.",
"Cannot update addressbook with an empty name." => "Kan ikke oppdatere adressebøker uten navn.",
@ -70,7 +73,9 @@
"Separate groups with commas" => "Skill gruppene med komma",
"Edit groups" => "Endre grupper",
"Preferred" => "Foretrukket",
"Please specify a valid email address." => "Vennligst angi en gyldig e-postadresse.",
"Enter email address" => "Skriv inn e-postadresse",
"Mail to address" => "Send e-post til adresse",
"Delete email address" => "Fjern e-postadresse",
"Enter phone number" => "Skriv inn telefonnummer",
"Delete phone number" => "Fjern telefonnummer",
@ -80,6 +85,7 @@
"Add field" => "Legg til felt",
"Profile picture" => "Profilbilde",
"Phone" => "Telefon",
"Note" => "Notat",
"Delete current photo" => "Fjern nåværende bilde",
"Edit current photo" => "Rediger nåværende bilde",
"Upload new photo" => "Last opp nytt bilde",
@ -104,6 +110,7 @@
"Additional names" => "Ev. mellomnavn",
"Family name" => "Etternavn",
"Hon. suffixes" => "Titler",
"Ph.D." => "Stipendiat",
"Jr." => "Jr.",
"Sn." => "Sr.",
"New Addressbook" => "Ny adressebok",
@ -111,7 +118,7 @@
"Displayname" => "Visningsnavn",
"Active" => "Aktiv",
"Save" => "Lagre",
"Submit" => "Send inn",
"Submit" => "Lagre",
"Cancel" => "Avbryt",
"Import a contacts file" => "Importer en fil med kontakter.",
"Please choose the addressbook" => "Vennligst velg adressebok",
@ -119,9 +126,10 @@
"Name of new addressbook" => "Navn på ny adressebok",
"Import" => "Importer",
"Importing contacts" => "Importerer kontakter",
"Contacts imported successfully" => "Kontaktene ble importert uten feil",
"Close Dialog" => "Lukk dialog",
"Import Addressbook" => "Importer adressebok",
"You have no contacts in your addressbook." => "Du har ingen kontakter i din adressebok",
"Add contact" => "Ny kontakt",
"more info" => "mer info"
"Configure addressbooks" => "Konfigurer adressebøker",
"CardDAV syncing addresses" => "Synkroniseringsadresse for CardDAV",
"more info" => "mer info",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Fout bij het toevoegen van het adresboek.",
"Error activating addressbook." => "Fout bij het activeren van het adresboek.",
"No contact ID was submitted." => "Geen contact ID opgestuurd.",
"Error loading image." => "Fout bij laden plaatje.",
"Error reading contact photo." => "Lezen van contact foto mislukt.",
"Error saving temporary file." => "Tijdelijk bestand opslaan mislukt.",
"The loading photo is not valid." => "De geladen foto is niet goed.",
@ -27,6 +26,7 @@
"Missing contact id." => "Ontbrekende contact id.",
"No photo path was submitted." => "Geen fotopad opgestuurd.",
"File doesn't exist:" => "Bestand bestaat niet:",
"Error loading image." => "Fout bij laden plaatje.",
"element name is not set." => "onderdeel naam is niet opgegeven.",
"checksum is not set." => "controlegetal is niet opgegeven.",
"Information about vCard is incorrect. Please reload the page: " => "Informatie over vCard is fout. Herlaad de pagina: ",
@ -42,6 +42,7 @@
"No file was uploaded" => "Er is geen bestand geüpload",
"Missing a temporary folder" => "Er ontbreekt een tijdelijke map",
"Contacts" => "Contacten",
"Drop a VCF file to import contacts." => "Sleep een VCF bestand om de contacten te importeren.",
"Addressbook not found." => "Adresboek niet gevonden.",
"This is not your addressbook." => "Dit is niet uw adresboek.",
"Contact could not be found." => "Contact kon niet worden gevonden.",
@ -129,11 +130,7 @@
"Name of new addressbook" => "Naam van nieuw adresboek",
"Import" => "Importeer",
"Importing contacts" => "Importeren van contacten",
"Contacts imported successfully" => "Contacten zijn geïmporteerd",
"Close Dialog" => "Sluit venster",
"Import Addressbook" => "Importeer adresboek",
"Select address book to import to:" => "Selecteer adresboek voor import:",
"Drop a VCF file to import contacts." => "Sleep een VCF bestand om de contacten te importeren.",
"Select from HD" => "Selecteer van schijf",
"You have no contacts in your addressbook." => "Je hebt geen contacten in je adresboek",
"Add contact" => "Contactpersoon toevoegen",

View File

@ -3,15 +3,48 @@
"There was an error adding the contact." => "Wystąpił błąd podczas dodawania kontaktu.",
"Cannot add empty property." => "Nie można dodać pustego elementu.",
"At least one of the address fields has to be filled out." => "Należy wypełnić przynajmniej jedno pole adresu.",
"Trying to add duplicate property: " => "Próba dodania z duplikowanej właściwości:",
"Error adding contact property." => "Błąd dodawania elementu.",
"No ID provided" => "Brak opatrzonego ID ",
"Error setting checksum." => "Błąd ustawień sumy kontrolnej",
"No categories selected for deletion." => "Nie zaznaczono kategorii do usunięcia",
"No address books found." => "Nie znaleziono książek adresowych",
"No contacts found." => "Nie znaleziono kontaktów.",
"Missing ID" => "Brak ID",
"Error parsing VCard for ID: \"" => "Wystąpił błąd podczas przetwarzania VCard ID: \"",
"Cannot add addressbook with an empty name." => "Nie można dodać książki adresowej z pusta nazwą",
"Error adding addressbook." => "Błąd dodawania książki adresowej.",
"Error activating addressbook." => "Błąd aktywowania książki adresowej.",
"No contact ID was submitted." => "ID kontaktu nie został utworzony.",
"Error reading contact photo." => "Błąd odczytu zdjęcia kontaktu.",
"Error saving temporary file." => "Wystąpił błąd podczas zapisywania pliku tymczasowego.",
"The loading photo is not valid." => "Wczytywane zdjęcie nie jest poprawne.",
"id is not set." => "id nie ustawione.",
"Information about vCard is incorrect. Please reload the page." => "Informacje o vCard są nieprawidłowe. Proszę odświeżyć stronę.",
"Error deleting contact property." => "Błąd usuwania elementu.",
"Contact ID is missing." => "Brak kontaktu id.",
"Missing contact id." => "Brak kontaktu id.",
"No photo path was submitted." => "Ścieżka do zdjęcia nie została podana.",
"File doesn't exist:" => "Plik nie istnieje:",
"Error loading image." => "Błąd ładowania obrazu.",
"element name is not set." => "nazwa elementu nie jest ustawiona.",
"checksum is not set." => "checksum-a nie ustawiona",
"Information about vCard is incorrect. Please reload the page: " => "Informacje na temat vCard są niepoprawne. Proszę przeładuj stronę:",
"Something went FUBAR. " => "Gdyby coś poszło FUBAR.",
"Error updating contact property." => "Błąd uaktualniania elementu.",
"Cannot update addressbook with an empty name." => "Nie można zaktualizować książki adresowej z pustą nazwą.",
"Error updating addressbook." => "Błąd uaktualniania książki adresowej.",
"Error uploading contacts to storage." => "Wystąpił błąd podczas wysyłania kontaktów do magazynu.",
"There is no error, the file uploaded with success" => "Nie było błędów, plik wyczytano poprawnie.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Załadowany plik przekracza wielkość upload_max_filesize w php.ini ",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Wczytywany plik przekracza wielkość MAX_FILE_SIZE, która została określona w formularzu HTML",
"The uploaded file was only partially uploaded" => "Załadowany plik tylko częściowo został wysłany.",
"No file was uploaded" => "Plik nie został załadowany",
"Missing a temporary folder" => "Brak folderu tymczasowego",
"Contacts" => "Kontakty",
"This is not your addressbook." => "To nie jest twoja książka adresowa.",
"Drop a VCF file to import contacts." => "Upuść plik VCF do importu kontaktów.",
"Addressbook not found." => "Nie znaleziono książki adresowej",
"This is not your addressbook." => "To nie jest Twoja książka adresowa.",
"Contact could not be found." => "Nie można odnaleźć kontaktu.",
"Address" => "Adres",
"Telephone" => "Telefon",
@ -22,22 +55,53 @@
"Mobile" => "Komórka",
"Text" => "Połączenie tekstowe",
"Voice" => "Połączenie głosowe",
"Message" => "Wiadomość",
"Fax" => "Faks",
"Video" => "Połączenie wideo",
"Pager" => "Pager",
"Internet" => "Internet",
"{name}'s Birthday" => "{name} Urodzony",
"Contact" => "Kontakt",
"Add Contact" => "Dodaj kontakt",
"Addressbooks" => "Książki adresowe",
"Configure Address Books" => "Konfiguruj książkę adresową",
"New Address Book" => "Nowa książka adresowa",
"Import from VCF" => "Importuj z VFC",
"CardDav Link" => "Wyświetla odnośnik CardDav",
"Download" => "Pobiera książkę adresową",
"Edit" => "Edytuje książkę adresową",
"Delete" => "Usuwa książkę adresową",
"Download contact" => "Pobiera kontakt",
"Delete contact" => "Usuwa kontakt",
"Drop photo to upload" => "Upuść fotografię aby załadować",
"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format niestandardowy, krótkie nazwy, imię i nazwisko, Odwracać lub Odwrócić z przecinkiem",
"Edit name details" => "Edytuj szczegóły nazwy",
"Nickname" => "Nazwa",
"Enter nickname" => "Wpisz nazwę",
"Birthday" => "Urodziny",
"dd-mm-yyyy" => "dd-mm-rrrr",
"Groups" => "Grupy",
"Separate groups with commas" => "Oddziel grupy przecinkami",
"Edit groups" => "Edytuj grupy",
"Preferred" => "Preferowane",
"Please specify a valid email address." => "Określ prawidłowy adres e-mail.",
"Enter email address" => "Wpisz adres email",
"Mail to address" => "Mail na adres",
"Delete email address" => "Usuń adres mailowy",
"Enter phone number" => "Wpisz numer telefonu",
"Delete phone number" => "Usuń numer telefonu",
"View on map" => "Zobacz na mapie",
"Edit address details" => "Edytuj szczegóły adresu",
"Add notes here." => "Dodaj notatkę tutaj.",
"Add field" => "Dodaj pole",
"Profile picture" => "Zdjęcie profilu",
"Phone" => "Telefon",
"Note" => "Uwaga",
"Delete current photo" => "Usuń aktualne zdjęcie",
"Edit current photo" => "Edytuj aktualne zdjęcie",
"Upload new photo" => "Wczytaj nowe zdjęcie",
"Select photo from ownCloud" => "Wybierz zdjęcie z ownCloud",
"Edit address" => "Edytuj adres",
"Type" => "Typ",
"PO Box" => "Skrzynka pocztowa",
"Extended" => "Rozszerzony",
@ -46,13 +110,48 @@
"Region" => "Region",
"Zipcode" => "Kod pocztowy",
"Country" => "Kraj",
"Edit categories" => "Edytuj kategorie",
"Add" => "Dodaj",
"Addressbook" => "Książka adresowa",
"Hon. prefixes" => "Prefiksy Hon.",
"Miss" => "Panna",
"Ms" => "Ms",
"Mr" => "Pan",
"Sir" => "Sir",
"Mrs" => "Pani",
"Dr" => "Dr",
"Given name" => "Podaj imię",
"Additional names" => "Dodatkowe nazwy",
"Family name" => "Nazwa rodziny",
"Hon. suffixes" => "Sufiksy Hon.",
"J.D." => "J.D.",
"M.D." => "M.D.",
"D.O." => "D.O.",
"D.C." => "D.C.",
"Ph.D." => "Ph.D.",
"Esq." => "Esq.",
"Jr." => "Jr.",
"Sn." => "Sn.",
"New Addressbook" => "Nowa książka adresowa",
"Edit Addressbook" => "Edytowanie książki adresowej",
"Displayname" => "Wyświetlana nazwa",
"Active" => "Aktywna",
"Save" => "Zapisz",
"Submit" => "Potwierdź",
"Cancel" => "Anuluj"
"Cancel" => "Anuluj",
"Import a contacts file" => "Importuj plik z kontaktami",
"Please choose the addressbook" => "Proszę wybrać książkę adresową",
"create a new addressbook" => "utwórz nową książkę adresową",
"Name of new addressbook" => "Nazwa nowej książki adresowej",
"Import" => "Import",
"Importing contacts" => "importuj kontakty",
"Select address book to import to:" => "Zaznacz książkę adresową do importu do:",
"Select from HD" => "Wybierz z HD",
"You have no contacts in your addressbook." => "Nie masz żadnych kontaktów w swojej książce adresowej.",
"Add contact" => "Dodaj kontakt",
"Configure addressbooks" => "Konfiguruj książkę adresową",
"CardDAV syncing addresses" => "adres do synchronizacji CardDAV",
"more info" => "więcej informacji",
"Primary address (Kontact et al)" => "Pierwszy adres",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Erro ao adicionar agenda.",
"Error activating addressbook." => "Erro ao ativar agenda.",
"No contact ID was submitted." => "Nenhum ID do contato foi submetido.",
"Error loading image." => "Erro ao carregar imagem.",
"Error reading contact photo." => "Erro de leitura na foto do contato.",
"Error saving temporary file." => "Erro ao salvar arquivo temporário.",
"The loading photo is not valid." => "Foto carregada não é válida.",
@ -27,6 +26,7 @@
"Missing contact id." => "Faltando ID do contato.",
"No photo path was submitted." => "Nenhum caminho para foto foi submetido.",
"File doesn't exist:" => "Arquivo não existe:",
"Error loading image." => "Erro ao carregar imagem.",
"element name is not set." => "nome do elemento não definido.",
"checksum is not set." => "checksum não definido.",
"Information about vCard is incorrect. Please reload the page: " => "Informação sobre vCard incorreto. Por favor, recarregue a página:",
@ -37,7 +37,13 @@
"Error uploading contacts to storage." => "Erro enviando contatos para armazenamento.",
"There is no error, the file uploaded with success" => "Arquivo enviado com sucesso",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O arquivo enviado excede a diretiva upload_max_filesize em php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O arquivo carregado excede o argumento MAX_FILE_SIZE especificado no formulário HTML",
"The uploaded file was only partially uploaded" => "O arquivo foi parcialmente carregado",
"No file was uploaded" => "Nenhum arquivo carregado",
"Missing a temporary folder" => "Diretório temporário não encontrado",
"Contacts" => "Contatos",
"Drop a VCF file to import contacts." => "Arraste um arquivo VCF para importar contatos.",
"Addressbook not found." => "Lista de endereços não encontrado.",
"This is not your addressbook." => "Esta não é a sua agenda de endereços.",
"Contact could not be found." => "Contato não pôde ser encontrado.",
"Address" => "Endereço",
@ -49,22 +55,53 @@
"Mobile" => "Móvel",
"Text" => "Texto",
"Voice" => "Voz",
"Message" => "Mensagem",
"Fax" => "Fax",
"Video" => "Vídeo",
"Pager" => "Pager",
"Internet" => "Internet",
"{name}'s Birthday" => "Aniversário de {name}",
"Contact" => "Contato",
"Add Contact" => "Adicionar Contato",
"Addressbooks" => "Agendas",
"Addressbooks" => "Agendas de Endereço",
"Configure Address Books" => "Configurar Livro de Endereços",
"New Address Book" => "Nova agenda",
"Import from VCF" => "Importar de VCF",
"CardDav Link" => "Link CardDav",
"Download" => "Baixar",
"Edit" => "Editar",
"Delete" => "Excluir",
"Download contact" => "Baixar contato",
"Delete contact" => "Apagar contato",
"Drop photo to upload" => "Arraste a foto para ser carregada",
"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizado, Nome curto, Nome completo, Inverter ou Inverter com vírgula",
"Edit name details" => "Editar detalhes do nome",
"Nickname" => "Apelido",
"Enter nickname" => "Digite o apelido",
"Birthday" => "Aniversário",
"dd-mm-yyyy" => "dd-mm-aaaa",
"Groups" => "Grupos",
"Separate groups with commas" => "Separe grupos por virgula",
"Edit groups" => "Editar grupos",
"Preferred" => "Preferido",
"Please specify a valid email address." => "Por favor, especifique um email válido.",
"Enter email address" => "Digite um endereço de email",
"Mail to address" => "Correio para endereço",
"Delete email address" => "Remover endereço de email",
"Enter phone number" => "Digite um número de telefone",
"Delete phone number" => "Remover número de telefone",
"View on map" => "Visualizar no mapa",
"Edit address details" => "Editar detalhes de endereço",
"Add notes here." => "Adicionar notas",
"Add field" => "Adicionar campo",
"Profile picture" => "Imagem do Perfil",
"Phone" => "Telefone",
"Note" => "Nota",
"Delete current photo" => "Deletar imagem atual",
"Edit current photo" => "Editar imagem atual",
"Upload new photo" => "Carregar nova foto",
"Select photo from ownCloud" => "Selecionar foto do OwnCloud",
"Edit address" => "Editar endereço",
"Type" => "Digite",
"PO Box" => "Caixa Postal",
"Extended" => "Estendido",
@ -73,13 +110,48 @@
"Region" => "Região",
"Zipcode" => "CEP",
"Country" => "País",
"Edit categories" => "Editar categorias",
"Add" => "Adicionar",
"Addressbook" => "Agenda",
"New Addressbook" => "Nova agenda",
"Edit Addressbook" => "Editar agenda",
"Addressbook" => "Agenda de Endereço",
"Hon. prefixes" => "Exmo. Prefixos ",
"Miss" => "Senhorita",
"Ms" => "Srta.",
"Mr" => "Sr.",
"Sir" => "Senhor",
"Mrs" => "Sra.",
"Dr" => "Dr",
"Given name" => "Primeiro Nome",
"Additional names" => "Segundo Nome",
"Family name" => "Sobrenome",
"Hon. suffixes" => "Exmo. Sufixos",
"J.D." => "J.D.",
"M.D." => "M.D.",
"D.O." => "D.O.",
"D.C." => "D.C.",
"Ph.D." => "Ph.D.",
"Esq." => "Esq.",
"Jr." => "Jr.",
"Sn." => "Sn.",
"New Addressbook" => "Nova Agenda de Endereço",
"Edit Addressbook" => "Editar Agenda de Endereço",
"Displayname" => "Nome de exibição",
"Active" => "Ativo",
"Save" => "Salvar",
"Submit" => "Enviar",
"Cancel" => "Cancelar"
"Cancel" => "Cancelar",
"Import a contacts file" => "Importar arquivos de contato.",
"Please choose the addressbook" => "Por favor, selecione uma agenda de endereços",
"create a new addressbook" => "Criar nova agenda de endereços",
"Name of new addressbook" => "Nome da nova agenda de endereços",
"Import" => "Importar",
"Importing contacts" => "Importar contatos",
"Select address book to import to:" => "Selecione agenda de endereços para importar ao destino:",
"Select from HD" => "Selecione do disco rigído",
"You have no contacts in your addressbook." => "Voce não tem contatos em sua agenda de endereços.",
"Add contact" => "Adicionar contatos",
"Configure addressbooks" => "Configurar agenda de endereços",
"CardDAV syncing addresses" => "Sincronizando endereços CardDAV",
"more info" => "leia mais",
"Primary address (Kontact et al)" => "Endereço primário(Kontact et al)",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -3,14 +3,42 @@
"There was an error adding the contact." => "Erro ao adicionar contato",
"Cannot add empty property." => "Não é possivel adicionar uma propriedade vazia",
"At least one of the address fields has to be filled out." => "Pelo menos um dos campos de endereço precisa de estar preenchido",
"Trying to add duplicate property: " => "A tentar adicionar propriedade duplicada: ",
"Error adding contact property." => "Erro ao adicionar propriedade do contato",
"No ID provided" => "Nenhum ID inserido",
"Error setting checksum." => "Erro a definir checksum.",
"No categories selected for deletion." => "Nenhuma categoria selecionada para eliminar.",
"No address books found." => "Nenhum livro de endereços encontrado.",
"No contacts found." => "Nenhum contacto encontrado.",
"Missing ID" => "Falta ID",
"Error parsing VCard for ID: \"" => "Erro a analisar VCard para o ID: \"",
"Cannot add addressbook with an empty name." => "Não é possivel adicionar Livro de endereços com nome vazio.",
"Error adding addressbook." => "Erro ao adicionar livro de endereços",
"Error activating addressbook." => "Erro ao ativar livro de endereços",
"No contact ID was submitted." => "Nenhum ID de contacto definido.",
"Error reading contact photo." => "Erro a ler a foto do contacto.",
"Error saving temporary file." => "Erro a guardar ficheiro temporário.",
"The loading photo is not valid." => "A foto carregada não é valida.",
"id is not set." => "id não está definido",
"Information about vCard is incorrect. Please reload the page." => "A informação sobre o vCard está incorreta. Por favor refresque a página",
"Error deleting contact property." => "Erro ao apagar propriedade do contato",
"Contact ID is missing." => "Falta o ID do contacto.",
"Missing contact id." => "Falta o ID do contacto.",
"No photo path was submitted." => "Nenhum caminho da foto definido.",
"File doesn't exist:" => "O ficheiro não existe:",
"Error loading image." => "Erro a carregar a imagem.",
"element name is not set." => "o nome do elemento não está definido.",
"checksum is not set." => "Checksum não está definido.",
"Information about vCard is incorrect. Please reload the page: " => "A informação sobre o VCard está incorrecta. Por favor refresque a página: ",
"Something went FUBAR. " => "Algo provocou um FUBAR. ",
"Error updating contact property." => "Erro ao atualizar propriedade do contato",
"Cannot update addressbook with an empty name." => "Não é possivel actualizar o livro de endereços com o nome vazio.",
"Error updating addressbook." => "Erro a atualizar o livro de endereços",
"Error uploading contacts to storage." => "Erro a carregar os contactos para o armazenamento.",
"There is no error, the file uploaded with success" => "Não ocorreu erros, o ficheiro foi submetido com sucesso",
"No file was uploaded" => "Nenhum ficheiro foi submetido",
"Contacts" => "Contactos",
"Addressbook not found." => "Livro de endereços não encontrado.",
"This is not your addressbook." => "Esta não é a sua lista de contactos",
"Contact could not be found." => "O contacto não foi encontrado",
"Address" => "Morada",
@ -22,22 +50,50 @@
"Mobile" => "Telemovel",
"Text" => "Texto",
"Voice" => "Voz",
"Message" => "Mensagem",
"Fax" => "Fax",
"Video" => "Vídeo",
"Pager" => "Pager",
"Internet" => "Internet",
"{name}'s Birthday" => "Aniversário de {name}",
"Contact" => "Contacto",
"Add Contact" => "Adicionar Contacto",
"Addressbooks" => "Livros de endereços",
"Configure Address Books" => "Configurar livros de endereços",
"New Address Book" => "Novo livro de endereços",
"Import from VCF" => "Importar de VCF",
"CardDav Link" => "Endereço CardDav",
"Download" => "Transferir",
"Edit" => "Editar",
"Delete" => "Apagar",
"Download contact" => "Transferir contacto",
"Delete contact" => "Apagar contato",
"Edit name details" => "Editar detalhes do nome",
"Nickname" => "Alcunha",
"Enter nickname" => "Introduza alcunha",
"Birthday" => "Aniversário",
"dd-mm-yyyy" => "dd-mm-aaaa",
"Groups" => "Grupos",
"Separate groups with commas" => "Separe os grupos usando virgulas",
"Edit groups" => "Editar grupos",
"Preferred" => "Preferido",
"Please specify a valid email address." => "Por favor indique um endereço de correio válido",
"Enter email address" => "Introduza endereço de email",
"Mail to address" => "Enviar correio para o endereço",
"Delete email address" => "Eliminar o endereço de correio",
"Enter phone number" => "Insira o número de telefone",
"Delete phone number" => "Eliminar o número de telefone",
"View on map" => "Ver no mapa",
"Edit address details" => "Editar os detalhes do endereço",
"Add notes here." => "Insira notas aqui.",
"Add field" => "Adicionar campo",
"Profile picture" => "Foto do perfil",
"Phone" => "Telefone",
"Note" => "Nota",
"Delete current photo" => "Eliminar a foto actual",
"Edit current photo" => "Editar a foto actual",
"Select photo from ownCloud" => "Selecionar uma foto da ownCloud",
"Edit address" => "Editar endereço",
"Type" => "Tipo",
"PO Box" => "Apartado",
"Extended" => "Extendido",
@ -46,13 +102,28 @@
"Region" => "Região",
"Zipcode" => "Código Postal",
"Country" => "País",
"Edit categories" => "Editar categorias",
"Add" => "Adicionar",
"Addressbook" => "Livro de endereços",
"Ms" => "Sra",
"Mr" => "Sr",
"Sir" => "Sr",
"Dr" => "Dr",
"Additional names" => "Nomes adicionais",
"Family name" => "Nome de familia",
"New Addressbook" => "Novo livro de endereços",
"Edit Addressbook" => "Editar livro de endereços",
"Displayname" => "Nome de exibição",
"Active" => "Ativo",
"Save" => "Guardar",
"Submit" => "Submeter",
"Cancel" => "Cancelar"
"Cancel" => "Cancelar",
"Import a contacts file" => "Importar um ficheiro de contactos",
"Please choose the addressbook" => "Por favor seleccione o livro de endereços",
"create a new addressbook" => "Criar um novo livro de endereços",
"Import" => "Importar",
"Importing contacts" => "A importar os contactos",
"Add contact" => "Adicionar contacto",
"more info" => "mais informação",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -4,10 +4,30 @@
"Cannot add empty property." => "Nu se poate adăuga un câmp gol.",
"At least one of the address fields has to be filled out." => "Cel puțin unul din câmpurile adresei trebuie completat.",
"Error adding contact property." => "Contactul nu a putut fi adăugat.",
"No ID provided" => "Nici un ID nu a fost furnizat",
"Error setting checksum." => "Eroare la stabilirea sumei de control",
"No categories selected for deletion." => "Nici o categorie selectată pentru ștergere",
"No address books found." => "Nici o carte de adrese găsită",
"No contacts found." => "Nici un contact găsit",
"Missing ID" => "ID lipsă",
"Error parsing VCard for ID: \"" => "Eroare la prelucrarea VCard-ului pentru ID:\"",
"Cannot add addressbook with an empty name." => "Nu e posibil de adăugat o carte de adrese fără nume",
"Error adding addressbook." => "Agenda nu a putut fi adăugată.",
"Error activating addressbook." => "Eroare la activarea agendei.",
"No contact ID was submitted." => "Nici un ID de contact nu a fost transmis",
"Error reading contact photo." => "Eroare la citerea fotografiei de contact",
"Error saving temporary file." => "Eroare la salvarea fișierului temporar.",
"The loading photo is not valid." => "Fotografia care se încarcă nu este validă.",
"id is not set." => "ID-ul nu este stabilit",
"Information about vCard is incorrect. Please reload the page." => "Informațiile cărții de vizită sunt incorecte. Te rog reîncarcă pagina.",
"Error deleting contact property." => "Eroare la ștergerea proprietăților contactului.",
"Contact ID is missing." => "ID-ul de contact lipsește.",
"Missing contact id." => "ID de contact lipsă.",
"No photo path was submitted." => "Nici o adresă către fotografie nu a fost transmisă",
"File doesn't exist:" => "Fișierul nu există:",
"Error loading image." => "Eroare la încărcarea imaginii.",
"element name is not set." => "numele elementului nu este stabilit.",
"checksum is not set." => "suma de control nu este stabilită.",
"Error updating contact property." => "Eroare la actualizarea proprietăților contactului.",
"Error updating addressbook." => "Eroare la actualizarea agendei.",
"Contacts" => "Contacte",
@ -22,9 +42,12 @@
"Mobile" => "Mobil",
"Text" => "Text",
"Voice" => "Voce",
"Message" => "Mesaj",
"Fax" => "Fax",
"Video" => "Video",
"Pager" => "Pager",
"Internet" => "Internet",
"{name}'s Birthday" => "Ziua de naștere a {name}",
"Contact" => "Contact",
"Add Contact" => "Adaugă contact",
"Addressbooks" => "Agende",
@ -35,8 +58,19 @@
"Delete" => "Șterge",
"Download contact" => "Descarcă acest contact",
"Delete contact" => "Șterge contact",
"Edit name details" => "Introdu detalii despre nume",
"Nickname" => "Pseudonim",
"Enter nickname" => "Introdu pseudonim",
"Birthday" => "Zi de naștere",
"dd-mm-yyyy" => "zz-ll-aaaa",
"Groups" => "Grupuri",
"Separate groups with commas" => "Separă grupurile cu virgule",
"Edit groups" => "Editează grupuri",
"Preferred" => "Preferat",
"Please specify a valid email address." => "Te rog să specifici un e-mail corect",
"Enter email address" => "Introdu adresa de e-mail",
"Mail to address" => "Trimite mesaj la e-mail",
"Delete email address" => "Șterge e-mail",
"Phone" => "Telefon",
"Type" => "Tip",
"PO Box" => "CP",

View File

@ -4,13 +4,40 @@
"Cannot add empty property." => "Невозможно добавить пустой параметр.",
"At least one of the address fields has to be filled out." => "Как минимум одно поле адреса должно быть заполнено.",
"Error adding contact property." => "Ошибка добавления информации к контакту.",
"No ID provided" => "ID не предоставлен",
"Error setting checksum." => "Ошибка установки контрольной суммы.",
"No categories selected for deletion." => "Категории для удаления не установлены.",
"No address books found." => "Адресные книги не найдены.",
"No contacts found." => "Контакты не найдены.",
"Missing ID" => "Отсутствует ID",
"Error parsing VCard for ID: \"" => "Ошибка обработки VCard для ID: \"",
"Cannot add addressbook with an empty name." => "Нельзя добавить адресную книгу без имени.",
"Error adding addressbook." => "Ошибка добавления адресной книги.",
"Error activating addressbook." => "Ошибка активации адресной книги.",
"Error reading contact photo." => "Ошибка чтения фотографии контакта.",
"Error saving temporary file." => "Ошибка сохранения временного файла.",
"The loading photo is not valid." => "Загружаемая фотография испорчена.",
"id is not set." => "id не установлен.",
"Information about vCard is incorrect. Please reload the page." => "Информация о vCard некорректна. Пожалуйста, обновите страницу.",
"Error deleting contact property." => "Ошибка удаления информации из контакта.",
"Contact ID is missing." => "ID контакта отсутствует.",
"File doesn't exist:" => "Файл не существует:",
"Error loading image." => "Ошибка загрузки картинки.",
"element name is not set." => "имя элемента не установлено.",
"checksum is not set." => "контрольная сумма не установлена.",
"Information about vCard is incorrect. Please reload the page: " => "Информация о vCard не корректна. Перезагрузите страницу: ",
"Error updating contact property." => "Ошибка обновления информации контакта.",
"Cannot update addressbook with an empty name." => "Нельзя обновить адресную книгу с пустым именем.",
"Error updating addressbook." => "Ошибка обновления адресной книги.",
"Error uploading contacts to storage." => "Ошибка загрузки контактов в хранилище.",
"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" => "Отсутствует временная папка",
"Contacts" => "Контакты",
"Addressbook not found." => "Адресная книга не найдена.",
"This is not your addressbook." => "Это не ваша адресная книга.",
"Contact could not be found." => "Контакт не найден.",
"Address" => "Адрес",
@ -22,22 +49,50 @@
"Mobile" => "Мобильный",
"Text" => "Текст",
"Voice" => "Голос",
"Message" => "Сообщение",
"Fax" => "Факс",
"Video" => "Видео",
"Pager" => "Пейджер",
"Internet" => "Интернет",
"{name}'s Birthday" => "День рождения {name}",
"Contact" => "Контакт",
"Add Contact" => "Добавить Контакт",
"Addressbooks" => "Адресные книги",
"Configure Address Books" => "Настроить Адресную книгу",
"New Address Book" => "Новая адресная книга",
"Import from VCF" => "Импортировать из VCF",
"CardDav Link" => "Ссылка CardDAV",
"Download" => "Скачать",
"Edit" => "Редактировать",
"Delete" => "Удалить",
"Download contact" => "Скачать контакт",
"Delete contact" => "Удалить контакт",
"Drop photo to upload" => "Перетяните фотографии для загрузки",
"Nickname" => "Псевдоним",
"Enter nickname" => "Введите псевдоним",
"Birthday" => "День рождения",
"dd-mm-yyyy" => "dd-mm-yyyy",
"Groups" => "Группы",
"Edit groups" => "Редактировать группы",
"Preferred" => "Предпочитаемый",
"Please specify a valid email address." => "Укажите действительный адрес электронной почты.",
"Enter email address" => "Укажите адрес электронной почты",
"Mail to address" => "Написать по адресу",
"Delete email address" => "Удалить адрес электронной почты",
"Enter phone number" => "Ввести номер телефона",
"Delete phone number" => "Удалить номер телефона",
"View on map" => "Показать на карте",
"Edit address details" => "Ввести детали адреса",
"Add notes here." => "Добавьте заметки здесь.",
"Add field" => "Добавить поле",
"Profile picture" => "Фото профиля",
"Phone" => "Телефон",
"Note" => "Заметка",
"Delete current photo" => "Удалить текущую фотографию",
"Edit current photo" => "Редактировать текущую фотографию",
"Upload new photo" => "Загрузить новую фотографию",
"Select photo from ownCloud" => "Выбрать фотографию из ownCloud",
"Edit address" => "Редактировать адрес",
"Type" => "Тип",
"PO Box" => "АО",
"Extended" => "Расширенный",
@ -46,13 +101,27 @@
"Region" => "Область",
"Zipcode" => "Почтовый индекс",
"Country" => "Страна",
"Edit categories" => "Редактировать категрии",
"Add" => "Добавить",
"Addressbook" => "Адресная книга",
"Given name" => "Имя",
"Additional names" => "Дополнительные имена (отчество)",
"Family name" => "Фамилия",
"New Addressbook" => "Новая адресная книга",
"Edit Addressbook" => "Редактировать адресную книгу",
"Displayname" => "Отображаемое имя",
"Active" => "Активно",
"Save" => "Сохранить",
"Submit" => "Отправить",
"Cancel" => "Отменить"
"Cancel" => "Отменить",
"Import a contacts file" => "Загрузить файл контактов",
"Please choose the addressbook" => "Выберите адресную книгу",
"create a new addressbook" => "создать новую адресную книгу",
"Name of new addressbook" => "Имя новой адресной книги",
"Import" => "Импорт",
"Importing contacts" => "Импорт контактов",
"You have no contacts in your addressbook." => "В адресной книге есть контакты.",
"Add contact" => "Добавить контакт",
"Configure addressbooks" => "Настроить адресную книгу",
"more info" => "дополнительная информация"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Chyba počas pridávania adresára.",
"Error activating addressbook." => "Chyba aktivovania adresára.",
"No contact ID was submitted." => "Nebolo nastavené ID kontaktu.",
"Error loading image." => "Chyba pri nahrávaní obrázka.",
"Error reading contact photo." => "Chyba pri čítaní fotky kontaktu.",
"Error saving temporary file." => "Chyba pri ukladaní dočasného súboru.",
"The loading photo is not valid." => "Načítaná fotka je vadná.",
@ -27,6 +26,7 @@
"Missing contact id." => "Chýba ID kontaktu.",
"No photo path was submitted." => "Žiadna fotka nebola poslaná.",
"File doesn't exist:" => "Súbor neexistuje:",
"Error loading image." => "Chyba pri nahrávaní obrázka.",
"element name is not set." => "meno elementu nie je nastavené.",
"checksum is not set." => "kontrolný súčet nie je nastavený.",
"Information about vCard is incorrect. Please reload the page: " => "Informácia o vCard je nesprávna. Obnovte stránku, prosím.",
@ -42,6 +42,7 @@
"No file was uploaded" => "Žiadny súbor nebol uložený",
"Missing a temporary folder" => "Chýba dočasný priečinok",
"Contacts" => "Kontakty",
"Drop a VCF file to import contacts." => "Pretiahnite VCF súbor pre import kontaktov.",
"Addressbook not found." => "Adresár sa nenašiel.",
"This is not your addressbook." => "Toto nie je váš adresár.",
"Contact could not be found." => "Kontakt nebol nájdený.",
@ -142,11 +143,7 @@
"Name of new addressbook" => "Meno nového adresára",
"Import" => "Importovať",
"Importing contacts" => "Importovanie kontaktov",
"Contacts imported successfully" => "Kontakty úspešne importované",
"Close Dialog" => "Zatvoriť ponuku",
"Import Addressbook" => "Importovanie adresára",
"Select address book to import to:" => "Vyberte adresár, do ktorého chcete importovať:",
"Drop a VCF file to import contacts." => "Pretiahnite VCF súbor pre import kontaktov.",
"Select from HD" => "Vyberte z pevného disku",
"You have no contacts in your addressbook." => "Nemáte žiadne kontakty v adresári.",
"Add contact" => "Pridať kontakt",

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Napaka pri dodajanju imenika.",
"Error activating addressbook." => "Napaka pri aktiviranju imenika.",
"No contact ID was submitted." => "ID stika ni bil poslan.",
"Error loading image." => "Napaka pri nalaganju slike.",
"Error reading contact photo." => "Napaka pri branju slike stika.",
"Error saving temporary file." => "Napaka pri shranjevanju začasne datoteke.",
"The loading photo is not valid." => "Slika, ki se nalaga ni veljavna.",
@ -27,6 +26,7 @@
"Missing contact id." => "Manjka id stika.",
"No photo path was submitted." => "Pot slike ni bila poslana.",
"File doesn't exist:" => "Datoteka ne obstaja:",
"Error loading image." => "Napaka pri nalaganju slike.",
"element name is not set." => "ime elementa ni nastavljeno.",
"checksum is not set." => "nadzorna vsota ni nastavljena.",
"Information about vCard is incorrect. Please reload the page: " => "Informacija o vCard je napačna. Prosimo, če ponovno naložite stran: ",
@ -42,6 +42,7 @@
"No file was uploaded" => "Nobena datoteka ni bila naložena",
"Missing a temporary folder" => "Manjka začasna mapa",
"Contacts" => "Stiki",
"Drop a VCF file to import contacts." => "Za uvoz stikov spustite VCF datoteko tukaj.",
"Addressbook not found." => "Imenik ni bil najden.",
"This is not your addressbook." => "To ni vaš imenik.",
"Contact could not be found." => "Stika ni bilo mogoče najti.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Ime novega imenika",
"Import" => "Uvozi",
"Importing contacts" => "Uvažam stike",
"Contacts imported successfully" => "Stiki so bili uspešno uvoženi",
"Close Dialog" => "Zapri dialog",
"Import Addressbook" => "Uvozi imenik",
"Select address book to import to:" => "Izberite imenik v katerega boste uvažali:",
"Drop a VCF file to import contacts." => "Za uvoz stikov spustite VCF datoteko tukaj.",
"Select from HD" => "Izberi iz HD",
"You have no contacts in your addressbook." => "V vašem imeniku ni stikov.",
"Add contact" => "Dodaj stik",

View File

@ -4,13 +4,42 @@
"Cannot add empty property." => "Kan inte lägga till en tom egenskap",
"At least one of the address fields has to be filled out." => "Minst ett fält måste fyllas i",
"Error adding contact property." => "Fel när kontaktegenskap skulle läggas till",
"No ID provided" => "Inget ID angett",
"Error setting checksum." => "Fel uppstod när kontrollsumma skulle sättas.",
"No categories selected for deletion." => "Inga kategorier valda för borttaging",
"No address books found." => "Ingen adressbok funnen.",
"No contacts found." => "Inga kontakter funna.",
"Missing ID" => "ID saknas",
"Cannot add addressbook with an empty name." => "Kan inte lägga till adressbok med ett tomt namn.",
"Error adding addressbook." => "Fel när adressbok skulle läggas till",
"Error activating addressbook." => "Fel uppstod när adressbok skulle aktiveras",
"No contact ID was submitted." => "Inget kontakt-ID angavs.",
"Error reading contact photo." => "Fel uppstod när ",
"Error saving temporary file." => "Fel uppstod när temporär fil skulle sparas.",
"The loading photo is not valid." => "Det laddade fotot är inte giltigt.",
"id is not set." => "ID är inte satt.",
"Information about vCard is incorrect. Please reload the page." => "Information om vCard är felaktigt. Vänligen ladda om sidan.",
"Error deleting contact property." => "Fel uppstod när kontaktegenskap skulle tas bort",
"Contact ID is missing." => "Kontakt-ID saknas.",
"Missing contact id." => "Saknar kontakt-ID.",
"No photo path was submitted." => "Ingen sökväg till foto angavs.",
"File doesn't exist:" => "Filen existerar inte.",
"Error loading image." => "Fel uppstod när bild laddades.",
"checksum is not set." => "kontrollsumma är inte satt.",
"Information about vCard is incorrect. Please reload the page: " => "Informationen om vCard är fel. Ladda om sidan:",
"Error updating contact property." => "Fel uppstod när kontaktegenskap skulle uppdateras",
"Cannot update addressbook with an empty name." => "Kan inte uppdatera adressboken med ett tomt namn.",
"Error updating addressbook." => "Fel uppstod när adressbok skulle uppdateras",
"Error uploading contacts to storage." => "Fel uppstod när kontakt skulle lagras.",
"There is no error, the file uploaded with success" => "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 MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uppladdade filen överskrider MAX_FILE_SIZE direktivet som har angetts i HTML formuläret",
"The uploaded file was only partially uploaded" => "Den uppladdade filen var bara delvist uppladdad",
"No file was uploaded" => "Ingen fil laddades upp",
"Missing a temporary folder" => "En temporär mapp saknas",
"Contacts" => "Kontakter",
"Drop a VCF file to import contacts." => "Släpp en VCF-fil för att importera kontakter.",
"Addressbook not found." => "Hittade inte adressboken",
"This is not your addressbook." => "Det här är inte din adressbok.",
"Contact could not be found." => "Kontakt kunde inte hittas.",
"Address" => "Adress",
@ -22,22 +51,53 @@
"Mobile" => "Mobil",
"Text" => "Text",
"Voice" => "Röst",
"Message" => "Meddelande",
"Fax" => "Fax",
"Video" => "Video",
"Pager" => "Personsökare",
"Internet" => "Internet",
"{name}'s Birthday" => "{name}'s födelsedag",
"Contact" => "Kontakt",
"Add Contact" => "Lägg till kontakt",
"Addressbooks" => "Adressböcker",
"Configure Address Books" => "Konfigurera adressböcker",
"New Address Book" => "Ny adressbok",
"Import from VCF" => "Importera från VCF",
"CardDav Link" => "CardDAV länk",
"Download" => "Nedladdning",
"Edit" => "Redigera",
"Delete" => "Radera",
"Download contact" => "Ladda ner kontakt",
"Delete contact" => "Radera kontakt",
"Drop photo to upload" => "Släpp foto för att ladda upp",
"Format custom, Short name, Full name, Reverse or Reverse with comma" => " anpassad, korta namn, hela namn, bakåt eller bakåt med komma",
"Edit name details" => "Redigera detaljer för namn",
"Nickname" => "Smeknamn",
"Enter nickname" => "Ange smeknamn",
"Birthday" => "Födelsedag",
"dd-mm-yyyy" => "dd-mm-åååå",
"Groups" => "Grupper",
"Separate groups with commas" => "Separera grupperna med kommatecken",
"Edit groups" => "Editera grupper",
"Preferred" => "Föredragen",
"Please specify a valid email address." => "Vänligen ange en giltig e-postadress",
"Enter email address" => "Ange e-postadress",
"Mail to address" => "Posta till adress.",
"Delete email address" => "Ta bort e-postadress",
"Enter phone number" => "Ange ett telefonnummer",
"Delete phone number" => "Ta bort telefonnummer",
"View on map" => "Visa på karta",
"Edit address details" => "Redigera detaljer för adress",
"Add notes here." => "Lägg till noteringar här.",
"Add field" => "Lägg till fält",
"Profile picture" => "Profilbild",
"Phone" => "Telefon",
"Note" => "Notering",
"Delete current photo" => "Ta bort aktuellt foto",
"Edit current photo" => "Redigera aktuellt foto",
"Upload new photo" => "Ladda upp ett nytt foto",
"Select photo from ownCloud" => "Välj foto från ownCloud",
"Edit address" => "Editera adress",
"Type" => "Typ",
"PO Box" => "Postbox",
"Extended" => "Utökad",
@ -46,13 +106,38 @@
"Region" => "Län",
"Zipcode" => "Postnummer",
"Country" => "Land",
"Edit categories" => "Editera kategorier",
"Add" => "Ny",
"Addressbook" => "Adressbok",
"Miss" => "Herr",
"Ms" => "Ingen adressbok funnen.",
"Mr" => "Fru",
"Mrs" => "Fröken",
"Dr" => "Dr",
"Given name" => "Förnamn",
"Additional names" => "Mellannamn",
"Family name" => "Efternamn",
"Ph.D." => "Fil.dr.",
"New Addressbook" => "Ny adressbok",
"Edit Addressbook" => "Redigera adressbok",
"Displayname" => "Visningsnamn",
"Active" => "Aktiv",
"Save" => "Spara",
"Submit" => "Skicka in",
"Cancel" => "Avbryt"
"Cancel" => "Avbryt",
"Import a contacts file" => "Importera en kontaktfil",
"Please choose the addressbook" => "Vänligen välj adressboken",
"create a new addressbook" => "skapa en ny adressbok",
"Name of new addressbook" => "Namn för ny adressbok",
"Import" => "Importera",
"Importing contacts" => "Importerar kontakter",
"Select address book to import to:" => "Importera till adressbok:",
"Select from HD" => "Välj från hårddisk",
"You have no contacts in your addressbook." => "Du har inga kontakter i din adressbok.",
"Add contact" => "Lägg till en kontakt",
"Configure addressbooks" => "Konfigurera adressböcker",
"CardDAV syncing addresses" => "CardDAV synkningsadresser",
"more info" => "mera information",
"Primary address (Kontact et al)" => "Primär adress (Kontakt o.a.)",
"iOS/OS X" => "iOS/OS X"
);

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "เกิดข้อผิดพลาดในการเพิ่มสมุดบันทึกที่อยู่ใหม่",
"Error activating addressbook." => "เกิดข้อผิดพลาดในการเปิดใช้งานสมุดบันทึกที่อยู่",
"No contact ID was submitted." => "ไม่มีรหัสข้อมูลการติดต่อถูกส่งมา",
"Error loading image." => "เกิดข้อผิดพลาดในการโหลดรูปภาพ",
"Error reading contact photo." => "เกิดข้อผิดพลาดในการอ่านรูปภาพของข้อมูลการติดต่อ",
"Error saving temporary file." => "เกิดข้อผิดพลาดในการบันทึกไฟล์ชั่วคราว",
"The loading photo is not valid." => "โหลดรูปภาพไม่ถูกต้อง",
@ -27,6 +26,7 @@
"Missing contact id." => "รหัสข้อมูลการติดต่อเกิดการสูญหาย",
"No photo path was submitted." => "ไม่พบตำแหน่งพาธของรูปภาพ",
"File doesn't exist:" => "ไม่มีไฟล์ดังกล่าว",
"Error loading image." => "เกิดข้อผิดพลาดในการโหลดรูปภาพ",
"element name is not set." => "ยังไม่ได้กำหนดชื่อ",
"checksum is not set." => "ยังไม่ได้กำหนดค่า checksum",
"Information about vCard is incorrect. Please reload the page: " => "ข้อมูล vCard ไม่ถูกต้อง กรุณาโหลดหน้าเว็บใหม่อีกครั้ง: ",
@ -42,6 +42,7 @@
"No file was uploaded" => "ไม่มีไฟล์ที่ถูกอัพโหลด",
"Missing a temporary folder" => "โฟลเดอร์ชั่วคราวเกิดการสูญหาย",
"Contacts" => "ข้อมูลการติดต่อ",
"Drop a VCF file to import contacts." => "วางไฟล์ VCF ที่ต้องการนำเข้าข้อมูลการติดต่อ",
"Addressbook not found." => "ไม่พบสมุดบันทึกที่อยู่ที่ต้องการ",
"This is not your addressbook." => "นี่ไม่ใช่สมุดบันทึกที่อยู่ของคุณ",
"Contact could not be found." => "ไม่พบข้อมูลการติดต่อ",
@ -144,11 +145,7 @@
"Name of new addressbook" => "กำหนดชื่อของสมุดที่อยู่ที่สร้างใหม่",
"Import" => "นำเข้า",
"Importing contacts" => "นำเข้าข้อมูลการติดต่อ",
"Contacts imported successfully" => "ข้อมูลการติดต่อถูกนำเข้าข้อมูลเรียบร้อยแล้ว",
"Close Dialog" => "ปิดกล่องข้อความ",
"Import Addressbook" => "นำเข้าข้อมูลสมุดบันทึกที่อยู่",
"Select address book to import to:" => "เลือกสมุดบันทึกที่อยู่ที่ต้องการนำเข้า:",
"Drop a VCF file to import contacts." => "วางไฟล์ VCF ที่ต้องการนำเข้าข้อมูลการติดต่อ",
"Select from HD" => "เลือกจากฮาร์ดดิส",
"You have no contacts in your addressbook." => "คุณยังไม่มีข้อมูลการติดต่อใดๆในสมุดบันทึกที่อยู่ของคุณ",
"Add contact" => "เพิ่มชื่อผู้ติดต่อ",

View File

@ -16,7 +16,6 @@
"Error adding addressbook." => "Adres defteri eklenirken hata oluştu.",
"Error activating addressbook." => "Adres defteri etkinleştirilirken hata oluştu.",
"No contact ID was submitted." => "Bağlantı ID'si girilmedi.",
"Error loading image." => "İmaj yükleme hatası.",
"Error reading contact photo." => "Bağlantı fotoğrafı okunamadı.",
"Error saving temporary file." => "Geçici dosya kaydetme hatası.",
"The loading photo is not valid." => "Yüklenecek fotograf geçerli değil.",
@ -27,6 +26,7 @@
"Missing contact id." => "Eksik bağlantı id'si.",
"No photo path was submitted." => "Fotoğraf girilmedi.",
"File doesn't exist:" => "Dosya mevcut değil:",
"Error loading image." => "İmaj yükleme hatası.",
"element name is not set." => "eleman ismi atanmamış.",
"checksum is not set." => "checksum atanmamış.",
"Information about vCard is incorrect. Please reload the page: " => "vCard hakkındaki bilgi hatalı. Lütfen sayfayı yeniden yükleyin: ",
@ -42,6 +42,7 @@
"No file was uploaded" => "Hiç dosya gönderilmedi",
"Missing a temporary folder" => "Geçici dizin eksik",
"Contacts" => "Kişiler",
"Drop a VCF file to import contacts." => "Bağlantıları içe aktarmak için bir VCF dosyası bırakın.",
"Addressbook not found." => "Adres defteri bulunamadı.",
"This is not your addressbook." => "Bu sizin adres defteriniz değil.",
"Contact could not be found." => "Kişi bulunamadı.",
@ -144,11 +145,7 @@
"Name of new addressbook" => "Yeni adres defteri için isim",
"Import" => "İçe aktar",
"Importing contacts" => "Bağlantıları içe aktar",
"Contacts imported successfully" => "Bağlantılar başarıyla içe aktarıldı",
"Close Dialog" => "Diyaloğu kapat",
"Import Addressbook" => "Adres defterini içeri aktar",
"Select address book to import to:" => "İçe aktarılacak adres defterini seçin:",
"Drop a VCF file to import contacts." => "Bağlantıları içe aktarmak için bir VCF dosyası bırakın.",
"Select from HD" => "HD'den seç",
"You have no contacts in your addressbook." => "Adres defterinizde hiç bağlantı yok.",
"Add contact" => "Bağlatı ekle",

View File

@ -3,27 +3,36 @@
"There was an error adding the contact." => "添加联系人时出错。",
"Cannot add empty property." => "无法添加空属性。",
"At least one of the address fields has to be filled out." => "至少需要填写一项地址。",
"Trying to add duplicate property: " => "试图添加重复属性: ",
"Error adding contact property." => "添加联系人属性错误。",
"No ID provided" => "未提供 ID",
"Error setting checksum." => "设置校验值错误。",
"No categories selected for deletion." => "未选中要删除的分类。",
"No address books found." => "找不到地址簿。",
"No contacts found." => "找不到联系人。",
"Missing ID" => "缺少 ID",
"Error parsing VCard for ID: \"" => "无法解析如下ID的 VCard",
"Cannot add addressbook with an empty name." => "无法无姓名的地址簿。",
"Error adding addressbook." => "添加地址簿错误。",
"Error activating addressbook." => "激活地址簿错误。",
"Error loading image." => "加载图片错误",
"No contact ID was submitted." => "未提交联系人 ID",
"Error reading contact photo." => "读取联系人照片错误。",
"Error saving temporary file." => "保存临时文件错误。",
"The loading photo is not valid." => "装入的照片不正确。",
"id is not set." => "没有设置 id。",
"Information about vCard is incorrect. Please reload the page." => "vCard 的信息不正确。请重新加载页面。",
"Error deleting contact property." => "删除联系人属性错误。",
"Contact ID is missing." => "缺少联系人 ID。",
"Missing contact id." => "缺少联系人 ID。",
"No photo path was submitted." => "未提供照片路径。",
"File doesn't exist:" => "文件不存在:",
"Error loading image." => "加载图片错误。",
"checksum is not set." => "未设置校验值。",
"Error updating contact property." => "更新联系人属性错误。",
"Error updating addressbook." => "更新地址簿错误",
"The uploaded file was only partially uploaded" => "已上传文件只上传了部分",
"No file was uploaded" => "没有文件被上传",
"Missing a temporary folder" => "缺少临时目录",
"Contacts" => "联系人",
"Addressbook not found." => "未找到地址簿。",
"This is not your addressbook." => "这不是您的地址簿。",
@ -37,6 +46,7 @@
"Mobile" => "移动电话",
"Text" => "文本",
"Voice" => "语音",
"Message" => "消息",
"Fax" => "传真",
"Video" => "视频",
"Pager" => "传呼机",
@ -54,6 +64,8 @@
"Delete" => "删除",
"Download contact" => "下载联系人",
"Delete contact" => "删除联系人",
"Drop photo to upload" => "拖拽图片进行上传",
"Edit name details" => "编辑名称详情",
"Nickname" => "昵称",
"Enter nickname" => "输入昵称",
"Birthday" => "生日",
@ -70,7 +82,11 @@
"Delete phone number" => "删除电话号码",
"View on map" => "在地图上显示",
"Edit address details" => "编辑地址细节。",
"Add notes here." => "添加注释。",
"Add field" => "添加字段",
"Profile picture" => "联系人图片",
"Phone" => "电话",
"Note" => "注释",
"Delete current photo" => "删除当前照片",
"Edit current photo" => "编辑当前照片",
"Upload new photo" => "上传新照片",
@ -102,8 +118,9 @@
"Name of new addressbook" => "新地址簿名称",
"Import" => "导入",
"Importing contacts" => "导入联系人",
"Contacts imported successfully" => "联系人导入成功",
"Close Dialog" => "关闭对话框",
"Add contact" => "添加联系人",
"Configure addressbooks" => "配置地址簿",
"CardDAV syncing addresses" => "CardDAV 同步地址",
"more info" => "更多信息",
"Primary address (Kontact et al)" => "首选地址 (Kontact 等)",
"iOS/OS X" => "iOS/OS X"

View File

@ -5,13 +5,17 @@
"At least one of the address fields has to be filled out." => "至少必須填寫一欄地址",
"Error adding contact property." => "添加通訊錄內容中發生錯誤",
"No ID provided" => "未提供 ID",
"No contacts found." => "沒有找到聯絡人",
"Missing ID" => "遺失ID",
"Error adding addressbook." => "添加電話簿中發生錯誤",
"Error activating addressbook." => "啟用電話簿中發生錯誤",
"Information about vCard is incorrect. Please reload the page." => "有關 vCard 的資訊不正確,請重新載入此頁。",
"Error deleting contact property." => "刪除通訊錄內容中發生錯誤",
"Error updating contact property." => "更新通訊錄內容中發生錯誤",
"Error updating addressbook." => "電話簿更新中發生錯誤",
"No file was uploaded" => "沒有已上傳的檔案",
"Contacts" => "通訊錄",
"Addressbook not found." => "找不到通訊錄",
"This is not your addressbook." => "這不是你的電話簿",
"Contact could not be found." => "通訊錄未發現",
"Address" => "地址",
@ -28,24 +32,40 @@
"Video" => "影片",
"Pager" => "呼叫器",
"Internet" => "網際網路",
"{name}'s Birthday" => "{name}的生日",
"Contact" => "通訊錄",
"Add Contact" => "添加通訊錄",
"Addressbooks" => "電話簿",
"Configure Address Books" => "設定通訊錄",
"New Address Book" => "新電話簿",
"Import from VCF" => "從VCF匯入",
"CardDav Link" => "CardDav 聯結",
"Download" => "下載",
"Edit" => "編輯",
"Delete" => "刪除",
"Download contact" => "下載通訊錄",
"Delete contact" => "刪除通訊錄",
"Edit name details" => "編輯姓名詳細資訊",
"Nickname" => "綽號",
"Enter nickname" => "輸入綽號",
"Birthday" => "生日",
"dd-mm-yyyy" => "dd-mm-yyyy",
"Groups" => "群組",
"Separate groups with commas" => "用逗號分隔群組",
"Edit groups" => "編輯群組",
"Preferred" => "首選",
"Please specify a valid email address." => "註填入合法的電子郵件住址",
"Enter email address" => "輸入電子郵件地址",
"Mail to address" => "寄送住址",
"Delete email address" => "刪除電子郵件住址",
"Enter phone number" => "輸入電話號碼",
"Delete phone number" => "刪除電話號碼",
"Edit address details" => "電子郵件住址詳細資訊",
"Add notes here." => "在這裡新增註解",
"Add field" => "新增欄位",
"Profile picture" => "個人資料照片",
"Phone" => "電話",
"Note" => "註解",
"Type" => "類型",
"PO Box" => "通訊地址",
"Extended" => "分機",
@ -56,6 +76,13 @@
"Country" => "國家",
"Add" => "添加",
"Addressbook" => "電話簿",
"Mr" => "先生",
"Sir" => "先生",
"Mrs" => "小姐",
"Dr" => "博士(醫生)",
"Given name" => "給定名(名)",
"Additional names" => "額外名",
"Family name" => "家族名(姓)",
"New Addressbook" => "新電話簿",
"Edit Addressbook" => "編輯電話簿",
"Displayname" => "顯示名稱",

View File

@ -14,7 +14,7 @@ OCP\User::checkLoggedIn();
OCP\App::checkAppEnabled('contacts');
function getStandardImage(){
OCP\Response::setExpiresHeader('P10D');
//OCP\Response::setExpiresHeader('P10D');
OCP\Response::enableCaching();
OCP\Response::redirect(OCP\Util::imagePath('contacts', 'person_large.png'));
}

View File

@ -1,7 +1,7 @@
<?php
$id = $_['id'];
$tmp_path = $_['tmp_path'];
OCP\Util::writeLog('contacts','templates/part.cropphoto.php: tmp_path: '.$tmp_path.', exists: '.file_exists($tmp_path), OCP\Util::DEBUG);
$tmpkey = $_['tmpkey'];
OCP\Util::writeLog('contacts','templates/part.cropphoto.php: tmpkey: '.$tmpkey, OCP\Util::DEBUG);
?>
<script language="Javascript">
jQuery(function($) {
@ -38,7 +38,8 @@ OCP\Util::writeLog('contacts','templates/part.cropphoto.php: tmp_path: '.$tmp_pa
return true;
});*/
</script>
<img id="cropbox" src="<?php echo OCP\Util::linkToAbsolute('contacts', 'dynphoto.php'); ?>?tmp_path=<?php echo urlencode($tmp_path); ?>" />
<?php if(OC_Cache::hasKey($tmpkey)) { ?>
<img id="cropbox" src="<?php echo OCP\Util::linkToAbsolute('contacts', 'tmpphoto.php'); ?>?tmpkey=<?php echo $tmpkey; ?>" />
<form id="cropform"
class="coords"
method="post"
@ -47,7 +48,7 @@ OCP\Util::writeLog('contacts','templates/part.cropphoto.php: tmp_path: '.$tmp_pa
action="<?php echo OCP\Util::linkToAbsolute('contacts', 'ajax/savecrop.php'); ?>">
<input type="hidden" id="id" name="id" value="<?php echo $id; ?>" />
<input type="hidden" id="tmp_path" name="tmp_path" value="<?php echo $tmp_path; ?>" />
<input type="hidden" id="tmpkey" name="tmpkey" value="<?php echo $tmpkey; ?>" />
<fieldset id="coords">
<input type="hidden" id="x1" name="x1" value="" />
<input type="hidden" id="y1" name="y1" value="" />
@ -58,5 +59,8 @@ OCP\Util::writeLog('contacts','templates/part.cropphoto.php: tmp_path: '.$tmp_pa
</fieldset>
<iframe name="crop_target" id='crop_target' src=""></iframe>
</form>
<?php
} else {
echo $l->t('The temporary image has been removed from cache.');
}
?>

View File

@ -2,7 +2,7 @@
<div id="form_container">
<input type="hidden" id="filename" value="<?php echo $_['filename'];?>">
<input type="hidden" id="path" value="<?php echo $_['path'];?>">
<input type="hidden" id="progressfile" value="<?php echo md5(session_id()) . '.txt';?>">
<input type="hidden" id="progresskey" value="<?php echo rand() ?>">
<p class="bold" style="text-align:center;"><?php echo $l->t('Please choose the addressbook'); ?></p>
<select style="width:100%;" id="contacts" name="contacts">
<?php

View File

@ -20,14 +20,12 @@
*
*/
// Init owncloud
OCP\JSON::checkLoggedIn();
//OCP\User::checkLoggedIn();
OCP\App::checkAppEnabled('contacts');
function getStandardImage(){
OCP\Response::setExpiresHeader('P10D');
//OCP\Response::setExpiresHeader('P10D');
OCP\Response::enableCaching();
OCP\Response::redirect(OCP\Util::imagePath('contacts', 'person.png'));
}
@ -59,12 +57,10 @@ $image = new OC_Image();
$photo = $contact->getAsString('PHOTO');
if($photo) {
OCP\Response::setETagHeader(md5($photo));
if($image->loadFromBase64($photo)) {
if($image->centerCrop()) {
if($image->resize($thumbnail_size)) {
if($image->show()) {
// done
exit();
} else {
OCP\Util::writeLog('contacts','thumbnail.php. Couldn\'t display thumbnail for ID '.$id,OCP\Util::ERROR);

View File

@ -20,15 +20,14 @@
*
*/
// Init owncloud
$tmp_path = $_GET['tmp_path'];
$tmpkey = $_GET['tmpkey'];
$maxsize = isset($_GET['maxsize']) ? $_GET['maxsize'] : -1;
header("Cache-Control: no-cache, no-store, must-revalidate");
OCP\Util::writeLog('contacts','dynphoto.php: tmp_path: '.$tmp_path.', exists: '.file_exists($tmp_path), OCP\Util::DEBUG);
OCP\Util::writeLog('contacts','tmpphoto.php: tmpkey: '.$tmpkey, OCP\Util::DEBUG);
$image = new OC_Image($tmp_path);
$image = new OC_Image();
$image->loadFromData(OC_Cache::get($tmpkey));
if($maxsize != -1) {
$image->resize($maxsize);
}

View File

@ -51,8 +51,10 @@ $allowZipDownload = intval(OCP\Config::getSystemValue('allowZipDownload', true))
OCP\App::setActiveNavigationEntry( "files_administration" );
$htaccessWritable=is_writable(OC::$SERVERROOT.'/.htaccess');
$tmpl = new OCP\Template( 'files', 'admin' );
$tmpl->assign( 'htaccessWorking', $htaccessWorking );
$tmpl->assign( 'uploadChangable', $htaccessWorking and $htaccessWritable );
$tmpl->assign( 'uploadMaxFilesize', $maxUploadFilesize);
$tmpl->assign( 'maxPossibleUploadSize', OCP\Util::humanFileSize(PHP_INT_MAX));
$tmpl->assign( 'allowZipDownload', $allowZipDownload);

View File

@ -15,6 +15,10 @@ if($filename == '') {
OCP\JSON::error(array("data" => array( "message" => "Empty Filename" )));
exit();
}
if(strpos($filename,'/')!==false){
OCP\JSON::error(array("data" => array( "message" => "Invalid Filename" )));
exit();
}
if($source){
if(substr($source,0,8)!='https://' and substr($source,0,7)!='http://'){

View File

@ -13,6 +13,10 @@ if(trim($foldername) == '') {
OCP\JSON::error(array("data" => array( "message" => "Empty Foldername" )));
exit();
}
if(strpos($filename,'/')!==false){
OCP\JSON::error(array("data" => array( "message" => "Invalid Foldername" )));
exit();
}
if(OC_Files::newFile($dir, stripslashes($foldername), 'dir')) {
OCP\JSON::success(array("data" => array()));

View File

@ -51,7 +51,7 @@ FileActions={
var actions=this.get(mime,type);
return actions[name];
},
display:function(parent){
display:function(parent, filename, type){
FileActions.currentFile=parent;
$('#fileList span.fileactions, #fileList td.date a.action').remove();
var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
@ -62,6 +62,8 @@ FileActions={
parent.children('a.name').append('<span class="fileactions" />');
var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
for(name in actions){
// no rename and share action for the 'Shared' dir
if((name=='Rename' || name =='Share') && type=='dir' && filename=='Shared') { continue; }
if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){
var img=FileActions.icons[name];
if(img.call){
@ -84,7 +86,7 @@ FileActions={
parent.find('a.name>span.fileactions').append(element);
}
}
if(actions['Delete']){
if(actions['Delete'] && (type!='dir' || filename != 'Shared')){ // no delete action for the 'Shared' dir
var img=FileActions.icons['Delete'];
if(img.call){
img=img(file);

View File

@ -56,7 +56,7 @@ $(document).ready(function() {
// Sets the file-action buttons behaviour :
$('tr').live('mouseenter',function(event) {
FileActions.display($(this).children('td.filename'));
FileActions.display($(this).children('td.filename'), $(this).attr('data-file'), $(this).attr('data-type'));
});
$('tr').live('mouseleave',function(event) {
FileActions.hide();
@ -452,6 +452,11 @@ $(document).ready(function() {
input.focus();
input.change(function(){
var name=$(this).val();
if(name.indexOf('/')!=-1){
$('#notification').text(t('files','Invalid name, \'/\' is not allowed.'));
$('#notification').fadeIn();
return;
}
switch(type){
case 'file':
$.post(

View File

@ -6,6 +6,8 @@
"No file was uploaded" => "لم يتم ترفيع أي من الملفات",
"Missing a temporary folder" => "المجلد المؤقت غير موجود",
"Files" => "الملفات",
"Size" => "حجم",
"Modified" => "معدل",
"Maximum upload size" => "الحد الأقصى لحجم الملفات التي يمكن رفعها",
"New" => "جديد",
"Text file" => "ملف",
@ -14,8 +16,6 @@
"Nothing in here. Upload something!" => "لا يوجد شيء هنا. إرفع بعض الملفات!",
"Name" => "الاسم",
"Download" => "تحميل",
"Size" => "حجم",
"Modified" => "معدل",
"Delete" => "محذوف",
"Upload too large" => "حجم الترفيع أعلى من المسموح",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "حجم الملفات التي تريد ترفيعها أعلى من المسموح على الخادم."

View File

@ -6,13 +6,13 @@
"No file was uploaded" => "Фахлът не бе качен",
"Missing a temporary folder" => "Липсва временната папка",
"Files" => "Файлове",
"Size" => "Размер",
"Modified" => "Променено",
"Maximum upload size" => "Макс. размер за качване",
"Upload" => "Качване",
"Nothing in here. Upload something!" => "Няма нищо, качете нещо!",
"Name" => "Име",
"Download" => "Изтегляне",
"Size" => "Размер",
"Modified" => "Променено",
"Delete" => "Изтриване",
"Upload too large" => "Файлът е прекалено голям",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файловете които се опитвате да качите са по-големи от позволеното за сървъра."

View File

@ -7,6 +7,8 @@
"Missing a temporary folder" => "S'ha perdut un fitxer temporal",
"Failed to write to disk" => "Ha fallat en escriure al disc",
"Files" => "Fitxers",
"Size" => "Mida",
"Modified" => "Modificat",
"File handling" => "Gestió de fitxers",
"Maximum upload size" => "Mida màxima de pujada",
"max. possible: " => "màxim possible:",
@ -24,9 +26,6 @@
"Name" => "Nom",
"Share" => "Comparteix",
"Download" => "Baixa",
"Size" => "Mida",
"Modified" => "Modificat",
"Delete all" => "Esborra-ho tot",
"Delete" => "Suprimeix",
"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",

View File

@ -7,6 +7,8 @@
"Missing a temporary folder" => "Chybí adresář pro sočasné soubory",
"Failed to write to disk" => "Zápis na disk se nezdařil",
"Files" => "Soubory",
"Size" => "Velikost",
"Modified" => "Změněno",
"File handling" => "Nastavení chování k souborům",
"Maximum upload size" => "Maximální velikost ukládaných souborů",
"max. possible: " => "největší možná:",
@ -24,9 +26,6 @@
"Name" => "Název",
"Share" => "Sdílet",
"Download" => "Stáhnout",
"Size" => "Velikost",
"Modified" => "Změněno",
"Delete all" => "Smazat vše",
"Delete" => "Vymazat",
"Upload too large" => "Příliš velký soubor",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Soubory, které se snažíte uložit, překračují maximální velikosti uploadu na tomto serveru.",

View File

@ -5,18 +5,30 @@
"The uploaded file was only partially uploaded" => "Den uploadede file blev kun delvist uploadet",
"No file was uploaded" => "Ingen fil blev uploadet",
"Missing a temporary folder" => "Mangler en midlertidig mappe",
"Failed to write to disk" => "Fejl ved skrivning til disk.",
"Files" => "Filer",
"Size" => "Størrelse",
"Modified" => "Ændret",
"File handling" => "Filhåndtering",
"Maximum upload size" => "Maksimal upload-størrelse",
"max. possible: " => "max. mulige: ",
"Needed for multi-file and folder downloads." => "Nødvendigt for at kunne downloade mapper og flere filer ad gangen.",
"Enable ZIP-download" => "Muliggør ZIP-download",
"0 is unlimited" => "0 er ubegrænset",
"Maximum input size for ZIP files" => "Maksimal størrelse på ZIP filer",
"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!",
"Name" => "Navn",
"Share" => "Del",
"Download" => "Download",
"Size" => "Størrelse",
"Modified" => "Ændret",
"Delete" => "Slet",
"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."
"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.",
"Files are being scanned, please wait." => "Filerne bliver indlæst, vent venligst.",
"Current scanning" => "Indlæser"
);

View File

@ -1,20 +1,23 @@
<?php $TRANSLATIONS = array(
"There is no error, the file uploaded with success" => "Datei hochgeladen.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Die hochgeladene Datei ist zu groß.",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die hochgeladene Datei ist zu groß.",
"There is no error, the file uploaded with success" => "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.",
"Missing a temporary folder" => "Temporärer Ordner fehlt.",
"Failed to write to disk" => "Fehler beim Schreiben auf Festplatte",
"Files" => "Dateien",
"Maximum upload size" => "Maximale Größe",
"Files" => "Files",
"Size" => "Größe",
"Modified" => "Bearbeitet",
"File handling" => "Dateibehandlung",
"Maximum upload size" => "Maximum upload size",
"max. possible: " => "maximal möglich:",
"Needed for multi-file and folder downloads." => "Für Mehrfachdateien- und Ordnerupload benötigt:",
"Needed for multi-file and folder downloads." => "Für Mehrfachdateien- 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",
"New" => "Neu",
"Text file" => "Text Datei",
"Text file" => "Textdatei",
"Folder" => "Ordner",
"From url" => "Von der URL",
"Upload" => "Hochladen",
@ -23,9 +26,6 @@
"Name" => "Name",
"Share" => "Teilen",
"Download" => "Herunterladen",
"Size" => "Größe",
"Modified" => "Bearbeitet",
"Delete all" => "Alle löschen",
"Delete" => "Löschen",
"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.",

View File

@ -7,6 +7,8 @@
"Missing a temporary folder" => "Λείπει ένας προσωρινός φάκελος",
"Failed to write to disk" => "Η εγγραφή στο δίσκο απέτυχε",
"Files" => "Αρχεία",
"Size" => "Μέγεθος",
"Modified" => "Τροποποιήθηκε",
"File handling" => "Διαχείριση αρχείων",
"Maximum upload size" => "Μέγιστο μέγεθος μεταφόρτωσης",
"max. possible: " => "μέγιστο δυνατό:",
@ -24,9 +26,6 @@
"Name" => "Όνομα",
"Share" => "Διαμοίρασε",
"Download" => "Λήψη",
"Size" => "Μέγεθος",
"Modified" => "Τροποποιήθηκε",
"Delete all" => "Διαγραφή όλων",
"Delete" => "Διαγραφή",
"Upload too large" => "Πολύ μεγάλο το αρχείο προς μεταφόρτωση",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Τα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο μέγεθος μεταφόρτωσης αρχείων σε αυτόν το διακομιστή.",

View File

@ -7,6 +7,8 @@
"Missing a temporary folder" => "Mankas tempa dosierujo",
"Failed to write to disk" => "Malsukcesis skribo al disko",
"Files" => "Dosieroj",
"Size" => "Grando",
"Modified" => "Modifita",
"File handling" => "Dosieradministro",
"Maximum upload size" => "Maksimuma alŝutogrando",
"max. possible: " => "maks. ebla: ",
@ -24,9 +26,6 @@
"Name" => "Nomo",
"Share" => "Kunhavigi",
"Download" => "Elŝuti",
"Size" => "Grando",
"Modified" => "Modifita",
"Delete all" => "Forigi ĉion",
"Delete" => "Forigi",
"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.",

View File

@ -7,6 +7,8 @@
"Missing a temporary folder" => "Falta un directorio temporal",
"Failed to write to disk" => "La escritura en disco ha fallado",
"Files" => "Archivos",
"Size" => "Tamaño",
"Modified" => "Modificado",
"File handling" => "Tratamiento de archivos",
"Maximum upload size" => "Tamaño máximo de subida",
"max. possible: " => "máx. posible:",
@ -24,9 +26,6 @@
"Name" => "Nombre",
"Share" => "Compartir",
"Download" => "Descargar",
"Size" => "Tamaño",
"Modified" => "Modificado",
"Delete all" => "Eliminar todo",
"Delete" => "Eliminado",
"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.",

View File

@ -7,6 +7,8 @@
"Missing a temporary folder" => "Ajutiste failide kaust puudub",
"Failed to write to disk" => "Kettale kirjutamine ebaõnnestus",
"Files" => "Failid",
"Size" => "Suurus",
"Modified" => "Muudetud",
"File handling" => "Failide käsitlemine",
"Maximum upload size" => "Maksimaalne üleslaadimise suurus",
"max. possible: " => "maks. võimalik: ",
@ -24,9 +26,6 @@
"Name" => "Nimi",
"Share" => "Jaga",
"Download" => "Lae alla",
"Size" => "Suurus",
"Modified" => "Muudetud",
"Delete all" => "Kustuta kõik",
"Delete" => "Kustuta",
"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.",

Some files were not shown because too many files have changed in this diff Show More