diff --git a/3rdparty/Sabre/CalDAV/CalendarQueryValidator.php b/3rdparty/Sabre/CalDAV/CalendarQueryValidator.php index 4bcd32cdf8..8f674840e8 100755 --- a/3rdparty/Sabre/CalDAV/CalendarQueryValidator.php +++ b/3rdparty/Sabre/CalDAV/CalendarQueryValidator.php @@ -304,28 +304,29 @@ class Sabre_CalDAV_CalendarQueryValidator { // one is the first to trigger. Based on this, we can // determine if we can 'give up' expanding events. $firstAlarm = null; - foreach($expandedEvent->VALARM as $expandedAlarm) { + if ($expandedEvent->VALARM !== null) { + foreach($expandedEvent->VALARM as $expandedAlarm) { - $effectiveTrigger = $expandedAlarm->getEffectiveTriggerTime(); - if ($expandedAlarm->isInTimeRange($start, $end)) { - return true; - } + $effectiveTrigger = $expandedAlarm->getEffectiveTriggerTime(); + if ($expandedAlarm->isInTimeRange($start, $end)) { + return true; + } - if ((string)$expandedAlarm->TRIGGER['VALUE'] === 'DATE-TIME') { - // This is an alarm with a non-relative trigger - // time, likely created by a buggy client. The - // implication is that every alarm in this - // recurring event trigger at the exact same - // time. It doesn't make sense to traverse - // further. - } else { - // We store the first alarm as a means to - // figure out when we can stop traversing. - if (!$firstAlarm || $effectiveTrigger < $firstAlarm) { - $firstAlarm = $effectiveTrigger; + if ((string)$expandedAlarm->TRIGGER['VALUE'] === 'DATE-TIME') { + // This is an alarm with a non-relative trigger + // time, likely created by a buggy client. The + // implication is that every alarm in this + // recurring event trigger at the exact same + // time. It doesn't make sense to traverse + // further. + } else { + // We store the first alarm as a means to + // figure out when we can stop traversing. + if (!$firstAlarm || $effectiveTrigger < $firstAlarm) { + $firstAlarm = $effectiveTrigger; + } } } - } if (is_null($firstAlarm)) { // No alarm was found. diff --git a/3rdparty/Sabre/CalDAV/Plugin.php b/3rdparty/Sabre/CalDAV/Plugin.php index 5903968c00..c56ab38484 100755 --- a/3rdparty/Sabre/CalDAV/Plugin.php +++ b/3rdparty/Sabre/CalDAV/Plugin.php @@ -49,23 +49,23 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { /** * The email handler for invites and other scheduling messages. - * - * @var Sabre_CalDAV_Schedule_IMip + * + * @var Sabre_CalDAV_Schedule_IMip */ protected $imipHandler; /** * Sets the iMIP handler. * - * iMIP = The email transport of iCalendar scheduling messages. Setting - * this is optional, but if you want the server to allow invites to be sent + * iMIP = The email transport of iCalendar scheduling messages. Setting + * this is optional, but if you want the server to allow invites to be sent * out, you must set a handler. * - * Specifically iCal will plain assume that the server supports this. If - * the server doesn't, iCal will display errors when inviting people to + * Specifically iCal will plain assume that the server supports this. If + * the server doesn't, iCal will display errors when inviting people to * events. * - * @param Sabre_CalDAV_Schedule_IMip $imipHandler + * @param Sabre_CalDAV_Schedule_IMip $imipHandler * @return void */ public function setIMipHandler(Sabre_CalDAV_Schedule_IMip $imipHandler) { @@ -723,12 +723,12 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { if (!$originator) { throw new Sabre_DAV_Exception_BadRequest('The Originator: header must be specified when making POST requests'); - } + } if (!$recipients) { throw new Sabre_DAV_Exception_BadRequest('The Recipient: header must be specified when making POST requests'); - } + } - if (!preg_match('/^mailto:(.*)@(.*)$/', $originator)) { + if (!preg_match('/^mailto:(.*)@(.*)$/i', $originator)) { throw new Sabre_DAV_Exception_BadRequest('Originator must start with mailto: and must be valid email address'); } $originator = substr($originator,7); @@ -737,14 +737,14 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { foreach($recipients as $k=>$recipient) { $recipient = trim($recipient); - if (!preg_match('/^mailto:(.*)@(.*)$/', $recipient)) { + if (!preg_match('/^mailto:(.*)@(.*)$/i', $recipient)) { throw new Sabre_DAV_Exception_BadRequest('Recipients must start with mailto: and must be valid email address'); } $recipient = substr($recipient, 7); $recipients[$k] = $recipient; } - // We need to make sure that 'originator' matches one of the email + // We need to make sure that 'originator' matches one of the email // addresses of the selected principal. $principal = $outboxNode->getOwner(); $props = $this->server->getProperties($principal,array( @@ -760,7 +760,7 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { throw new Sabre_DAV_Exception_Forbidden('The addresses specified in the Originator header did not match any addresses in the owners calendar-user-address-set header'); } - try { + try { $vObject = Sabre_VObject_Reader::read($this->server->httpRequest->getBody(true)); } catch (Sabre_VObject_ParseException $e) { throw new Sabre_DAV_Exception_BadRequest('The request body must be a valid iCalendar object. Parse error: ' . $e->getMessage()); @@ -785,9 +785,10 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { } if (in_array($method, array('REQUEST','REPLY','ADD','CANCEL')) && $componentType==='VEVENT') { - $this->iMIPMessage($originator, $recipients, $vObject); + $result = $this->iMIPMessage($originator, $recipients, $vObject); $this->server->httpResponse->sendStatus(200); - $this->server->httpResponse->sendBody('Messages sent'); + $this->server->httpResponse->setHeader('Content-Type','application/xml'); + $this->server->httpResponse->sendBody($this->generateScheduleResponse($result)); } else { throw new Sabre_DAV_Exception_NotImplemented('This iTIP method is currently not implemented'); } @@ -796,18 +797,83 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { /** * Sends an iMIP message by email. - * - * @param string $originator - * @param array $recipients - * @param Sabre_VObject_Component $vObject - * @return void + * + * This method must return an array with status codes per recipient. + * This should look something like: + * + * array( + * 'user1@example.org' => '2.0;Success' + * ) + * + * Formatting for this status code can be found at: + * https://tools.ietf.org/html/rfc5545#section-3.8.8.3 + * + * A list of valid status codes can be found at: + * https://tools.ietf.org/html/rfc5546#section-3.6 + * + * @param string $originator + * @param array $recipients + * @param Sabre_VObject_Component $vObject + * @return array */ protected function iMIPMessage($originator, array $recipients, Sabre_VObject_Component $vObject) { if (!$this->imipHandler) { - throw new Sabre_DAV_Exception_NotImplemented('No iMIP handler is setup on this server.'); + $resultStatus = '5.2;This server does not support this operation'; + } else { + $this->imipHandler->sendMessage($originator, $recipients, $vObject); + $resultStatus = '2.0;Success'; } - $this->imipHandler->sendMessage($originator, $recipients, $vObject); + + $result = array(); + foreach($recipients as $recipient) { + $result[$recipient] = $resultStatus; + } + + return $result; + + + } + + /** + * Generates a schedule-response XML body + * + * The recipients array is a key->value list, containing email addresses + * and iTip status codes. See the iMIPMessage method for a description of + * the value. + * + * @param array $recipients + * @return string + */ + public function generateScheduleResponse(array $recipients) { + + $dom = new DOMDocument('1.0','utf-8'); + $dom->formatOutput = true; + $xscheduleResponse = $dom->createElement('cal:schedule-response'); + $dom->appendChild($xscheduleResponse); + + foreach($this->server->xmlNamespaces as $namespace=>$prefix) { + + $xscheduleResponse->setAttribute('xmlns:' . $prefix, $namespace); + + } + + foreach($recipients as $recipient=>$status) { + $xresponse = $dom->createElement('cal:response'); + + $xrecipient = $dom->createElement('cal:recipient'); + $xrecipient->appendChild($dom->createTextNode($recipient)); + $xresponse->appendChild($xrecipient); + + $xrequestStatus = $dom->createElement('cal:request-status'); + $xrequestStatus->appendChild($dom->createTextNode($status)); + $xresponse->appendChild($xrequestStatus); + + $xscheduleResponse->appendChild($xresponse); + + } + + return $dom->saveXML(); } diff --git a/3rdparty/Sabre/CalDAV/Version.php b/3rdparty/Sabre/CalDAV/Version.php index 289a0c83a3..ace9901c08 100755 --- a/3rdparty/Sabre/CalDAV/Version.php +++ b/3rdparty/Sabre/CalDAV/Version.php @@ -14,7 +14,7 @@ class Sabre_CalDAV_Version { /** * Full version number */ - const VERSION = '1.6.3'; + const VERSION = '1.6.4'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/Sabre/CardDAV/Plugin.php b/3rdparty/Sabre/CardDAV/Plugin.php index ca20e46849..96def6dd96 100755 --- a/3rdparty/Sabre/CardDAV/Plugin.php +++ b/3rdparty/Sabre/CardDAV/Plugin.php @@ -154,7 +154,10 @@ class Sabre_CardDAV_Plugin extends Sabre_DAV_ServerPlugin { $val = stream_get_contents($val); // Taking out \r to not screw up the xml output - $returnedProperties[200][$addressDataProp] = str_replace("\r","", $val); + //$returnedProperties[200][$addressDataProp] = str_replace("\r","", $val); + // The stripping of \r breaks the Mail App in OSX Mountain Lion + // this is fixed in master, but not backported. /Tanghus + $returnedProperties[200][$addressDataProp] = $val; } } diff --git a/3rdparty/Sabre/DAV/Locks/Plugin.php b/3rdparty/Sabre/DAV/Locks/Plugin.php index fd956950b8..035b3a6386 100755 --- a/3rdparty/Sabre/DAV/Locks/Plugin.php +++ b/3rdparty/Sabre/DAV/Locks/Plugin.php @@ -292,7 +292,10 @@ class Sabre_DAV_Locks_Plugin extends Sabre_DAV_ServerPlugin { $this->server->tree->getNodeForPath($uri); // We need to call the beforeWriteContent event for RFC3744 - $this->server->broadcastEvent('beforeWriteContent',array($uri)); + // Edit: looks like this is not used, and causing problems now. + // + // See Issue 222 + // $this->server->broadcastEvent('beforeWriteContent',array($uri)); } catch (Sabre_DAV_Exception_NotFound $e) { diff --git a/3rdparty/Sabre/DAV/Version.php b/3rdparty/Sabre/DAV/Version.php index 40cfe81b34..274646240a 100755 --- a/3rdparty/Sabre/DAV/Version.php +++ b/3rdparty/Sabre/DAV/Version.php @@ -14,7 +14,7 @@ class Sabre_DAV_Version { /** * Full version number */ - const VERSION = '1.6.3'; + const VERSION = '1.6.4'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/Sabre/HTTP/BasicAuth.php b/3rdparty/Sabre/HTTP/BasicAuth.php index a747cc6a31..f90ed24f5d 100755 --- a/3rdparty/Sabre/HTTP/BasicAuth.php +++ b/3rdparty/Sabre/HTTP/BasicAuth.php @@ -46,7 +46,7 @@ class Sabre_HTTP_BasicAuth extends Sabre_HTTP_AbstractAuth { if (strpos(strtolower($auth),'basic')!==0) return false; - return explode(':', base64_decode(substr($auth, 6))); + return explode(':', base64_decode(substr($auth, 6)),2); } diff --git a/3rdparty/Sabre/HTTP/Version.php b/3rdparty/Sabre/HTTP/Version.php index 23dc7f8a7a..e6b4f7e535 100755 --- a/3rdparty/Sabre/HTTP/Version.php +++ b/3rdparty/Sabre/HTTP/Version.php @@ -14,7 +14,7 @@ class Sabre_HTTP_Version { /** * Full version number */ - const VERSION = '1.6.2'; + const VERSION = '1.6.4'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/Sabre/VObject/Component/VEvent.php b/3rdparty/Sabre/VObject/Component/VEvent.php index 4cc1e36d7d..d6b910874d 100755 --- a/3rdparty/Sabre/VObject/Component/VEvent.php +++ b/3rdparty/Sabre/VObject/Component/VEvent.php @@ -42,14 +42,15 @@ class Sabre_VObject_Component_VEvent extends Sabre_VObject_Component { $effectiveStart = $this->DTSTART->getDateTime(); if (isset($this->DTEND)) { + + // The DTEND property is considered non inclusive. So for a 3 day + // event in july, dtstart and dtend would have to be July 1st and + // July 4th respectively. + // + // See: + // http://tools.ietf.org/html/rfc5545#page-54 $effectiveEnd = $this->DTEND->getDateTime(); - // If this was an all-day event, we should just increase the - // end-date by 1. Otherwise the event will last until the second - // the date changed, by increasing this by 1 day the event lasts - // all of the last day as well. - if ($this->DTSTART->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $effectiveEnd->modify('+1 day'); - } + } elseif (isset($this->DURATION)) { $effectiveEnd = clone $effectiveStart; $effectiveEnd->add( Sabre_VObject_DateTimeParser::parseDuration($this->DURATION) ); diff --git a/3rdparty/Sabre/VObject/RecurrenceIterator.php b/3rdparty/Sabre/VObject/RecurrenceIterator.php index 833aa091ab..740270dd8f 100755 --- a/3rdparty/Sabre/VObject/RecurrenceIterator.php +++ b/3rdparty/Sabre/VObject/RecurrenceIterator.php @@ -337,6 +337,8 @@ class Sabre_VObject_RecurrenceIterator implements Iterator { $this->endDate = clone $this->startDate; if (isset($this->baseEvent->DURATION)) { $this->endDate->add(Sabre_VObject_DateTimeParser::parse($this->baseEvent->DURATION->value)); + } elseif ($this->baseEvent->DTSTART->getDateType()===Sabre_VObject_Property_DateTime::DATE) { + $this->endDate->modify('+1 day'); } } $this->currentDate = clone $this->startDate; @@ -561,7 +563,7 @@ class Sabre_VObject_RecurrenceIterator implements Iterator { */ public function fastForward(DateTime $dt) { - while($this->valid() && $this->getDTEnd() < $dt) { + while($this->valid() && $this->getDTEnd() <= $dt) { $this->next(); } @@ -823,9 +825,40 @@ class Sabre_VObject_RecurrenceIterator implements Iterator { */ protected function nextYearly() { + $currentMonth = $this->currentDate->format('n'); + $currentYear = $this->currentDate->format('Y'); + $currentDayOfMonth = $this->currentDate->format('j'); + + // No sub-rules, so we just advance by year if (!$this->byMonth) { + + // Unless it was a leap day! + if ($currentMonth==2 && $currentDayOfMonth==29) { + + $counter = 0; + do { + $counter++; + // Here we increase the year count by the interval, until + // we hit a date that's also in a leap year. + // + // We could just find the next interval that's dividable by + // 4, but that would ignore the rule that there's no leap + // year every year that's dividable by a 100, but not by + // 400. (1800, 1900, 2100). So we just rely on the datetime + // functions instead. + $nextDate = clone $this->currentDate; + $nextDate->modify('+ ' . ($this->interval*$counter) . ' years'); + } while ($nextDate->format('n')!=2); + $this->currentDate = $nextDate; + + return; + + } + + // The easiest form $this->currentDate->modify('+' . $this->interval . ' years'); return; + } $currentMonth = $this->currentDate->format('n'); @@ -877,8 +910,8 @@ class Sabre_VObject_RecurrenceIterator implements Iterator { } else { - // no byDay or byMonthDay, so we can just loop through the - // months. + // These are the 'byMonth' rules, if there are no byDay or + // byMonthDay sub-rules. do { $currentMonth++; @@ -888,6 +921,7 @@ class Sabre_VObject_RecurrenceIterator implements Iterator { } } while (!in_array($currentMonth, $this->byMonth)); $this->currentDate->setDate($currentYear, $currentMonth, $currentDayOfMonth); + return; } diff --git a/3rdparty/Sabre/VObject/Version.php b/3rdparty/Sabre/VObject/Version.php index 2617c7b129..9ee03d8711 100755 --- a/3rdparty/Sabre/VObject/Version.php +++ b/3rdparty/Sabre/VObject/Version.php @@ -14,7 +14,7 @@ class Sabre_VObject_Version { /** * Full version number */ - const VERSION = '1.3.3'; + const VERSION = '1.3.4'; /** * Stability : alpha, beta, stable diff --git a/apps/admin_audit/appinfo/info.xml b/apps/admin_audit/appinfo/info.xml index 6eb62fbbd1..4fa013162f 100644 --- a/apps/admin_audit/appinfo/info.xml +++ b/apps/admin_audit/appinfo/info.xml @@ -5,6 +5,7 @@ 0.1 AGPL Bart Visscher - 2 + 4 Audit user actions in Owncloud + true diff --git a/apps/bookmarks/ajax/addBookmark.php b/apps/bookmarks/ajax/addBookmark.php index 483716405a..c8a64d531c 100644 --- a/apps/bookmarks/ajax/addBookmark.php +++ b/apps/bookmarks/ajax/addBookmark.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); @@ -34,4 +29,4 @@ OCP\JSON::checkAppEnabled('bookmarks'); require_once(OC_App::getAppPath('bookmarks').'/bookmarksHelper.php'); $id = addBookmark($_POST['url'], $_POST['title'], $_POST['tags']); -OCP\JSON::success(array('data' => $id)); \ No newline at end of file +OCP\JSON::success(array('data' => $id)); diff --git a/apps/bookmarks/ajax/delBookmark.php b/apps/bookmarks/ajax/delBookmark.php index f40f02ebab..ba1dfff3be 100644 --- a/apps/bookmarks/ajax/delBookmark.php +++ b/apps/bookmarks/ajax/delBookmark.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); diff --git a/apps/bookmarks/ajax/editBookmark.php b/apps/bookmarks/ajax/editBookmark.php index 0b37d161af..ad43be064f 100644 --- a/apps/bookmarks/ajax/editBookmark.php +++ b/apps/bookmarks/ajax/editBookmark.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); diff --git a/apps/bookmarks/ajax/recordClick.php b/apps/bookmarks/ajax/recordClick.php index 1eee1718d1..0283f09f60 100644 --- a/apps/bookmarks/ajax/recordClick.php +++ b/apps/bookmarks/ajax/recordClick.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('bookmarks'); diff --git a/apps/bookmarks/ajax/updateList.php b/apps/bookmarks/ajax/updateList.php index 4de2475d06..cf9a2cf918 100644 --- a/apps/bookmarks/ajax/updateList.php +++ b/apps/bookmarks/ajax/updateList.php @@ -22,11 +22,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('bookmarks'); diff --git a/apps/bookmarks/l10n/bg_BG.php b/apps/bookmarks/l10n/bg_BG.php new file mode 100644 index 0000000000..04d731b107 --- /dev/null +++ b/apps/bookmarks/l10n/bg_BG.php @@ -0,0 +1,12 @@ + "Отметки", +"unnamed" => "неозаглавено", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Завлачете това в лентата с отметки на браузъра си и го натискайте, когато искате да отметнете бързо някоя страница:", +"Read later" => "Отмятане", +"Address" => "Адрес", +"Title" => "Заглавие", +"Tags" => "Етикети", +"Save bookmark" => "Запис на отметката", +"You have no bookmarks" => "Нямате отметки", +"Bookmarklet
" => "Бутон за отметки
" +); diff --git a/apps/bookmarks/l10n/ca.php b/apps/bookmarks/l10n/ca.php new file mode 100644 index 0000000000..cf90d9a887 --- /dev/null +++ b/apps/bookmarks/l10n/ca.php @@ -0,0 +1,12 @@ + "Adreces d'interès", +"unnamed" => "sense nom", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Arrossegueu-ho al navegador i feu-hi un clic quan volgueu marcar ràpidament una adreça d'interès:", +"Read later" => "Llegeix més tard", +"Address" => "Adreça", +"Title" => "Títol", +"Tags" => "Etiquetes", +"Save bookmark" => "Desa l'adreça d'interès", +"You have no bookmarks" => "No teniu adreces d'interès", +"Bookmarklet
" => "Bookmarklet
" +); diff --git a/apps/bookmarks/l10n/de.php b/apps/bookmarks/l10n/de.php new file mode 100644 index 0000000000..9e0f137382 --- /dev/null +++ b/apps/bookmarks/l10n/de.php @@ -0,0 +1,12 @@ + "Lesezeichen", +"unnamed" => "unbenannt", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Ziehe dies zu deinen Browser-Lesezeichen und klicke es, wenn du eine Website schnell den Lesezeichen hinzufügen willst.", +"Read later" => "Später lesen", +"Address" => "Adresse", +"Title" => "Title", +"Tags" => "Tags", +"Save bookmark" => "Lesezeichen speichern", +"You have no bookmarks" => "Du hast keine Lesezeichen", +"Bookmarklet
" => "Bookmarklet
" +); diff --git a/apps/bookmarks/l10n/el.php b/apps/bookmarks/l10n/el.php new file mode 100644 index 0000000000..f282a1bbf8 --- /dev/null +++ b/apps/bookmarks/l10n/el.php @@ -0,0 +1,12 @@ + "Σελιδοδείκτες", +"unnamed" => "ανώνυμο", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Σύρετε αυτό στους σελιδοδείκτες του περιηγητή σας και κάντε κλικ επάνω του, όταν θέλετε να προσθέσετε σύντομα μια ιστοσελίδα ως σελιδοδείκτη:", +"Read later" => "Ανάγνωση αργότερα", +"Address" => "Διεύθυνση", +"Title" => "Τίτλος", +"Tags" => "Ετικέτες", +"Save bookmark" => "Αποθήκευση σελιδοδείκτη", +"You have no bookmarks" => "Δεν έχετε σελιδοδείκτες", +"Bookmarklet
" => "Εφαρμογίδιο Σελιδοδεικτών
" +); diff --git a/apps/bookmarks/l10n/eo.php b/apps/bookmarks/l10n/eo.php new file mode 100644 index 0000000000..808cda8a04 --- /dev/null +++ b/apps/bookmarks/l10n/eo.php @@ -0,0 +1,11 @@ + "Legosignoj", +"unnamed" => "nenomita", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Ŝovu tion ĉi al la legosignoj de via TTT-legilo kaj klaku ĝin, se vi volas rapide legosignigi TTT-paĝon:", +"Read later" => "Legi poste", +"Address" => "Adreso", +"Title" => "Titolo", +"Tags" => "Etikedoj", +"Save bookmark" => "Konservi legosignon", +"You have no bookmarks" => "Vi havas neniun legosignon" +); diff --git a/apps/bookmarks/l10n/es.php b/apps/bookmarks/l10n/es.php new file mode 100644 index 0000000000..071b0dda70 --- /dev/null +++ b/apps/bookmarks/l10n/es.php @@ -0,0 +1,12 @@ + "Marcadores", +"unnamed" => "sin nombre", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Arrastra desde aquí a los marcadores de tu navegador, y haz clic cuando quieras marcar una página web rápidamente:", +"Read later" => "Leer después", +"Address" => "Dirección", +"Title" => "Título", +"Tags" => "Etiquetas", +"Save bookmark" => "Guardar marcador", +"You have no bookmarks" => "No tienes marcadores", +"Bookmarklet
" => "Bookmarklet
" +); diff --git a/apps/bookmarks/l10n/et_EE.php b/apps/bookmarks/l10n/et_EE.php new file mode 100644 index 0000000000..da9e4d92a6 --- /dev/null +++ b/apps/bookmarks/l10n/et_EE.php @@ -0,0 +1,10 @@ + "Järjehoidjad", +"unnamed" => "nimetu", +"Read later" => "Loe hiljem", +"Address" => "Aadress", +"Title" => "Pealkiri", +"Tags" => "Sildid", +"Save bookmark" => "Salvesta järjehoidja", +"You have no bookmarks" => "Sul pole järjehoidjaid" +); diff --git a/apps/bookmarks/l10n/fi_FI.php b/apps/bookmarks/l10n/fi_FI.php new file mode 100644 index 0000000000..c814747411 --- /dev/null +++ b/apps/bookmarks/l10n/fi_FI.php @@ -0,0 +1,12 @@ + "Kirjanmerkit", +"unnamed" => "nimetön", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Vedä tämä selaimesi kirjanmerkkipalkkiin ja napsauta sitä, kun haluat lisätä kirjanmerkin nopeasti:", +"Read later" => "Lue myöhemmin", +"Address" => "Osoite", +"Title" => "Otsikko", +"Tags" => "Tunnisteet", +"Save bookmark" => "Tallenna kirjanmerkki", +"You have no bookmarks" => "Sinulla ei ole kirjanmerkkejä", +"Bookmarklet
" => "Kirjanmerkitsin
" +); diff --git a/apps/bookmarks/l10n/fr.php b/apps/bookmarks/l10n/fr.php new file mode 100644 index 0000000000..508c82369f --- /dev/null +++ b/apps/bookmarks/l10n/fr.php @@ -0,0 +1,12 @@ + "Favoris", +"unnamed" => "sans titre", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Glissez ceci dans les favoris de votre navigateur, et cliquer dessus lorsque vous souhaitez ajouter la page en cours à vos marques-pages :", +"Read later" => "Lire plus tard", +"Address" => "Adresse", +"Title" => "Titre", +"Tags" => "Étiquettes", +"Save bookmark" => "Sauvegarder le favori", +"You have no bookmarks" => "Vous n'avez aucun favori", +"Bookmarklet
" => "Gestionnaire de favoris
" +); diff --git a/apps/bookmarks/l10n/it.php b/apps/bookmarks/l10n/it.php new file mode 100644 index 0000000000..862d75bde4 --- /dev/null +++ b/apps/bookmarks/l10n/it.php @@ -0,0 +1,12 @@ + "Segnalibri", +"unnamed" => "senza nome", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Quando vuoi creare rapidamente un segnalibro, trascinalo sui segnalibri del browser e fai clic su di esso:", +"Read later" => "Leggi dopo", +"Address" => "Indirizzo", +"Title" => "Titolo", +"Tags" => "Tag", +"Save bookmark" => "Salva segnalibro", +"You have no bookmarks" => "Non hai segnalibri", +"Bookmarklet
" => "Bookmarklet
" +); diff --git a/apps/bookmarks/l10n/sl.php b/apps/bookmarks/l10n/sl.php new file mode 100644 index 0000000000..32a4162908 --- /dev/null +++ b/apps/bookmarks/l10n/sl.php @@ -0,0 +1,12 @@ + "Zaznamki", +"unnamed" => "neimenovano", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Povlecite to povezavo med zaznamke v vašem brskalniku in jo, ko želite ustvariti zaznamek trenutne strani, preprosto kliknite:", +"Read later" => "Preberi kasneje", +"Address" => "Naslov", +"Title" => "Ime", +"Tags" => "Oznake", +"Save bookmark" => "Shrani zaznamek", +"You have no bookmarks" => "Nimate zaznamkov", +"Bookmarklet
" => "Bookmarklet
" +); diff --git a/apps/bookmarks/l10n/sv.php b/apps/bookmarks/l10n/sv.php new file mode 100644 index 0000000000..689bd452f1 --- /dev/null +++ b/apps/bookmarks/l10n/sv.php @@ -0,0 +1,12 @@ + "Bokmärken", +"unnamed" => "namnlös", +"Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:" => "Dra till din webbläsares bokmärken och klicka på det när du vill bokmärka en webbsida snabbt:", +"Read later" => "Läs senare", +"Address" => "Adress", +"Title" => "Titel", +"Tags" => "Taggar", +"Save bookmark" => "Spara bokmärke", +"You have no bookmarks" => "Du har inga bokmärken", +"Bookmarklet
" => "Skriptbokmärke
" +); diff --git a/apps/calendar/ajax/calendar/overview.php b/apps/calendar/ajax/calendar/overview.php index 9d43364ffb..1d8e49ea5f 100644 --- a/apps/calendar/ajax/calendar/overview.php +++ b/apps/calendar/ajax/calendar/overview.php @@ -4,9 +4,7 @@ * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. - */ - - + */ $l10n = OC_L10N::get('calendar'); OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('calendar'); diff --git a/apps/calendar/appinfo/app.php b/apps/calendar/appinfo/app.php index 4fdba29126..5c05c57bca 100644 --- a/apps/calendar/appinfo/app.php +++ b/apps/calendar/appinfo/app.php @@ -33,5 +33,4 @@ OCP\App::addNavigationEntry( array( 'href' => OCP\Util::linkTo( 'calendar', 'index.php' ), 'icon' => OCP\Util::imagePath( 'calendar', 'icon.svg' ), 'name' => $l->t('Calendar'))); -OCP\App::registerPersonal('calendar', 'settings'); OC_Search::registerProvider('OC_Search_Provider_Calendar'); diff --git a/apps/calendar/appinfo/remote.php b/apps/calendar/appinfo/remote.php index e8f9e80c7a..6669d7ce2c 100644 --- a/apps/calendar/appinfo/remote.php +++ b/apps/calendar/appinfo/remote.php @@ -21,10 +21,13 @@ $principalBackend = new OC_Connector_Sabre_Principal(); $caldavBackend = new OC_Connector_Sabre_CalDAV(); // Root nodes -$nodes = array( - new Sabre_CalDAV_Principal_Collection($principalBackend), +$collection = new Sabre_CalDAV_Principal_Collection($principalBackend); +$collection->disableListing = true; // Disable listening + +$nodes = array( + $collection, new Sabre_CalDAV_CalendarRootNode($principalBackend, $caldavBackend), -); + ); // Fire up server $server = new Sabre_DAV_Server($nodes); @@ -35,5 +38,6 @@ $server->addPlugin(new Sabre_CalDAV_Plugin()); $server->addPlugin(new Sabre_DAVACL_Plugin()); $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload $server->addPlugin(new Sabre_CalDAV_ICSExportPlugin()); + // And off we go! $server->exec(); diff --git a/apps/calendar/calendar.php b/apps/calendar/calendar.php new file mode 100644 index 0000000000..2c0bee9d23 --- /dev/null +++ b/apps/calendar/calendar.php @@ -0,0 +1,12 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +$l10n = OC_L10N::get('calendar'); +OCP\JSON::checkLoggedIn(); +OCP\JSON::checkAppEnabled('calendar'); +$tmpl = new OCP\Template('calendar', 'part.choosecalendar'); +$tmpl->printpage(); \ No newline at end of file diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css index 373a456563..5cda4b1bef 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -19,7 +19,7 @@ #loading { display: none;margin: 0;padding:0;margin-top:5px;} -#calendar_holder {position: relative;bottom: 0; right: 0; left: 0; top: 3em;} +#fullcalendar {position: relative;bottom: 0; right: 0; left: 0; top: 3em;} .fc-content{padding:2px 4px;} #listview {margin: 0; padding: 10px; background: #EEEEEE;} #listview #more_before, #listview #more_after {border: 1px solid #1a1a1a; width:25em;padding: 3px;text-align: center;} @@ -133,3 +133,12 @@ padding:0 8px 2px; line-height:1.2; margin-bottom:4px; } + +#choosecalendar a.settings{ + margin-top: 25px; + margin-right: 10px; +} + +#fullcalendar{ + overflow: scroll; +} \ No newline at end of file diff --git a/apps/calendar/index.php b/apps/calendar/index.php index 4b87119592..a8ad4ab335 100644 --- a/apps/calendar/index.php +++ b/apps/calendar/index.php @@ -5,8 +5,6 @@ * later. * See the COPYING-README file. */ - - OCP\User::checkLoggedIn(); OCP\App::checkAppEnabled('calendar'); @@ -24,8 +22,17 @@ foreach($calendars as $calendar){ } } -$eventSources[] = array('url' => '?app=calendar&getfile=ajax/events.php?calendar_id=shared_rw', 'backgroundColor' => '#1D2D44', 'borderColor' => '#888', 'textColor' => 'white', 'editable'=>'true'); -$eventSources[] = array('url' => '?app=calendar&getfile=ajax/events.php?calendar_id=shared_r', 'backgroundColor' => '#1D2D44', 'borderColor' => '#888', 'textColor' => 'white', 'editable' => 'false'); +$events_baseURL = OCP\Util::linkTo('calendar', 'ajax/events.php'); +$eventSources[] = array('url' => $events_baseURL.'?calendar_id=shared_rw', + 'backgroundColor' => '#1D2D44', + 'borderColor' => '#888', + 'textColor' => 'white', + 'editable'=>'true'); +$eventSources[] = array('url' => $events_baseURL.'?calendar_id=shared_r', + 'backgroundColor' => '#1D2D44', + 'borderColor' => '#888', + 'textColor' => 'white', + 'editable' => 'false'); OCP\Util::emitHook('OC_Calendar', 'getSources', array('sources' => &$eventSources)); $categories = OC_Calendar_App::getCategoryOptions(); diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 25311fa0df..23846c89b8 100644 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -18,7 +18,7 @@ Calendar={ startEventDialog:function(){ Calendar.UI.loading(false); $('.tipsy').remove(); - $('#calendar_holder').fullCalendar('unselect'); + $('#fullcalendar').fullCalendar('unselect'); Calendar.UI.lockTime(); $( "#from" ).datepicker({ dateFormat : 'dd-mm-yy' @@ -88,7 +88,7 @@ Calendar={ $.post(url, post, function(data){ Calendar.UI.loading(false); if(data.status == 'success'){ - $('#calendar_holder').fullCalendar('removeEvents', $('#event_form input[name=id]').val()); + $('#fullcalendar').fullCalendar('removeEvents', $('#event_form input[name=id]').val()); $('#event').dialog('destroy').remove(); } else { $('#errorbox').html(t('calendar', 'Deletion failed')); @@ -133,7 +133,7 @@ Calendar={ } else if(data.status == 'success'){ $('#event').dialog('destroy').remove(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } },"json"); }, @@ -148,7 +148,7 @@ Calendar={ console.log("Event moved successfully"); }else{ revertFunc(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } }); }, @@ -163,7 +163,7 @@ Calendar={ console.log("Event resized successfully"); }else{ revertFunc(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } }); }, @@ -239,11 +239,11 @@ Calendar={ doc_height = $(document).height(), win_height = $(window).height(); if(direction == 'down' && win_height == (doc_height - scroll)){ - $('#calendar_holder').fullCalendar('next'); + $('#fullcalendar').fullCalendar('next'); $(document).scrollTop(0); event.preventDefault(); }else if (direction == 'top' && scroll == 0) { - $('#calendar_holder').fullCalendar('prev'); + $('#fullcalendar').fullCalendar('prev'); $(document).scrollTop(win_height); event.preventDefault(); } @@ -398,9 +398,9 @@ Calendar={ if (data.status == 'success'){ checkbox.checked = data.active == 1; if (data.active == 1){ - $('#calendar_holder').fullCalendar('addEventSource', data.eventSource); + $('#fullcalendar').fullCalendar('addEventSource', data.eventSource); }else{ - $('#calendar_holder').fullCalendar('removeEventSource', data.eventSource.url); + $('#fullcalendar').fullCalendar('removeEventSource', data.eventSource.url); } } }); @@ -426,10 +426,10 @@ Calendar={ function(data) { if (data.status == 'success'){ var url = 'ajax/events.php?calendar_id='+calid; - $('#calendar_holder').fullCalendar('removeEventSource', url); + $('#fullcalendar').fullCalendar('removeEventSource', url); $('#choosecalendar_dialog').dialog('destroy').remove(); Calendar.UI.Calendar.overview(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } }); } @@ -456,8 +456,8 @@ Calendar={ function(data){ if(data.status == 'success'){ $(button).closest('tr').prev().html(data.page).show().next().remove(); - $('#calendar_holder').fullCalendar('removeEventSource', data.eventSource.url); - $('#calendar_holder').fullCalendar('addEventSource', data.eventSource); + $('#fullcalendar').fullCalendar('removeEventSource', data.eventSource.url); + $('#fullcalendar').fullCalendar('addEventSource', data.eventSource); if (calendarid == 'new'){ $('#choosecalendar_dialog > table:first').append(''); } @@ -504,7 +504,7 @@ Calendar={ idtype: '', activation:function(object,owner,id){ $.post(OC.filePath('calendar', 'ajax/share', 'activation.php'),{id:id, idtype:'calendar', activation:object.checked?1:0}); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); }, dropdown:function(userid, calid){ $('.calendar_share_dropdown').remove(); @@ -612,7 +612,7 @@ Calendar={ console.log('The drop-import feature is not supported in your browser :('); return false; } - droparea = document.getElementById('calendar_holder'); + droparea = document.getElementById('fullcalendar'); droparea.ondrop = function(e){ e.preventDefault(); Calendar.UI.Drop.drop(e); @@ -626,7 +626,7 @@ Calendar={ reader = new FileReader(); reader.onload = function(event){ Calendar.UI.Drop.import(event.target.result); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } reader.readAsDataURL(file); } @@ -634,7 +634,7 @@ Calendar={ import:function(data){ $.post(OC.filePath('calendar', 'ajax/import', 'dropimport.php'), {'data':data},function(result) { if(result.status == 'success'){ - $('#calendar_holder').fullCalendar('addEventSource', result.eventSource); + $('#fullcalendar').fullCalendar('addEventSource', result.eventSource); $('#notification').html(result.message); $('#notification').slideDown(); window.setTimeout(function(){$('#notification').slideUp();}, 5000); @@ -647,7 +647,11 @@ Calendar={ }); } } - } + }, + Settings:{ + // + }, + } $.fullCalendar.views.list = ListView; function ListView(element, calendar) { @@ -815,7 +819,7 @@ function ListView(element, calendar) { } $(document).ready(function(){ Calendar.UI.initScroll(); - $('#calendar_holder').fullCalendar({ + $('#fullcalendar').fullCalendar({ header: false, firstDay: firstDay, editable: true, @@ -851,10 +855,10 @@ $(document).ready(function(){ } Calendar.UI.setViewActive(view.name); if (view.name == 'agendaWeek') { - $('#calendar_holder').fullCalendar('option', 'aspectRatio', 0.1); + $('#fullcalendar').fullCalendar('option', 'aspectRatio', 0.1); } else { - $('#calendar_holder').fullCalendar('option', 'aspectRatio', 1.35); + $('#fullcalendar').fullCalendar('option', 'aspectRatio', 1.35); } }, columnFormat: { @@ -888,7 +892,7 @@ $(document).ready(function(){ changeYear: true, showButtonPanel: true, beforeShow: function(input, inst) { - var calendar_holder = $('#calendar_holder'); + var calendar_holder = $('#fullcalendar'); var date = calendar_holder.fullCalendar('getDate'); inst.input.datepicker('setDate', date); inst.input.val(calendar_holder.fullCalendar('getView').title); @@ -896,30 +900,36 @@ $(document).ready(function(){ }, onSelect: function(value, inst) { var date = inst.input.datepicker('getDate'); - $('#calendar_holder').fullCalendar('gotoDate', date); + $('#fullcalendar').fullCalendar('gotoDate', date); } }); fillWindow($('#content')); OCCategories.changed = Calendar.UI.categoriesChanged; OCCategories.app = 'calendar'; $('#oneweekview_radio').click(function(){ - $('#calendar_holder').fullCalendar('changeView', 'agendaWeek'); + $('#fullcalendar').fullCalendar('changeView', 'agendaWeek'); }); $('#onemonthview_radio').click(function(){ - $('#calendar_holder').fullCalendar('changeView', 'month'); + $('#fullcalendar').fullCalendar('changeView', 'month'); }); $('#listview_radio').click(function(){ - $('#calendar_holder').fullCalendar('changeView', 'list'); + $('#fullcalendar').fullCalendar('changeView', 'list'); }); $('#today_input').click(function(){ - $('#calendar_holder').fullCalendar('today'); + $('#fullcalendar').fullCalendar('today'); }); $('#datecontrol_left').click(function(){ - $('#calendar_holder').fullCalendar('prev'); + $('#fullcalendar').fullCalendar('prev'); }); $('#datecontrol_right').click(function(){ - $('#calendar_holder').fullCalendar('next'); + $('#fullcalendar').fullCalendar('next'); }); Calendar.UI.Share.init(); Calendar.UI.Drop.init(); + $('#choosecalendar .generalsettings').on('click keydown', function() { + OC.appSettings({appid:'calendar', loadJS:true, cache:false}); + }); + $('#choosecalendar .calendarsettings').on('click keydown', function() { + OC.appSettings({appid:'calendar', loadJS:true, cache:false, scriptName:'calendar.php'}); + }); }); diff --git a/apps/calendar/js/settings.js b/apps/calendar/js/settings.js index 60741f2b6f..20753a7b8f 100644 --- a/apps/calendar/js/settings.js +++ b/apps/calendar/js/settings.js @@ -1,11 +1,7 @@ $(document).ready(function(){ $('#timezone').change( function(){ - OC.msg.startSaving('#calendar .msg') - // Serialize the data var post = $( '#timezone' ).serialize(); - $.post( OC.filePath('calendar', 'ajax/settings', 'settimezone.php'), post, function(data){ - //OC.msg.finishedSaving('#calendar .msg', data); - }); + $.post( OC.filePath('calendar', 'ajax/settings', 'settimezone.php'), post, function(data){return;}); return false; }); $('#timezone').chosen(); @@ -52,6 +48,7 @@ $(document).ready(function(){ }); }); calendarcachecheck(); + }); function calendarcachecheck(){ $.getJSON(OC.filePath('calendar', 'ajax/cache', 'status.php'), function(jsondata, status) { diff --git a/apps/calendar/l10n/bg_BG.php b/apps/calendar/l10n/bg_BG.php index e4f73d24a9..592502b268 100644 --- a/apps/calendar/l10n/bg_BG.php +++ b/apps/calendar/l10n/bg_BG.php @@ -1,7 +1,23 @@ "Не са открити календари.", +"No events found." => "Не са открити събития.", +"Import failed" => "Грешка при внасяне", +"New Timezone:" => "Нов часови пояс:", "Timezone changed" => "Часовата зона е сменена", "Invalid request" => "Невалидна заявка", "Calendar" => "Календар", +"Birthday" => "Роджен ден", +"Clients" => "Клиенти", +"Holidays" => "Празници", +"Ideas" => "Идеи", +"Journey" => "Пътуване", +"Meeting" => "Среща", +"Other" => "Друго", +"Personal" => "Лично", +"Projects" => "Проекти", +"Questions" => "Въпроси", +"Work" => "Работа", +"New Calendar" => "Нов календар", "Does not repeat" => "Не се повтаря", "Daily" => "Дневно", "Weekly" => "Седмично", @@ -9,32 +25,64 @@ "Bi-Weekly" => "Двуседмично", "Monthly" => "Месечно", "Yearly" => "Годишно", +"never" => "никога", +"Monday" => "Понеделник", +"Tuesday" => "Вторник", +"Wednesday" => "Сряда", +"Thursday" => "Четвъртък", +"Friday" => "Петък", +"Saturday" => "Събота", +"Sunday" => "Неделя", "All day" => "Всички дни", +"Missing fields" => "Липсват полета", "Title" => "Заглавие", "Week" => "Седмица", "Month" => "Месец", +"List" => "Списък", "Today" => "Днес", "Calendars" => "Календари", "There was a fail, while parsing the file." => "Възникна проблем с разлистването на файла.", "Choose active calendars" => "Изберете активен календар", +"Your calendars" => "Вашите календари", +"Shared calendars" => "Споделени календари", +"No shared calendars" => "Няма споделени календари", +"Share Calendar" => "Споделяне на календар", "Download" => "Изтегляне", "Edit" => "Промяна", +"Delete" => "Изтриване", +"New calendar" => "Нов календар", "Edit calendar" => "Промени календар", "Displayname" => "Екранно име", "Active" => "Активен", "Calendar color" => "Цвят на календара", +"Save" => "Запис", "Submit" => "Продължи", +"Cancel" => "Отказ", "Edit an event" => "Промяна на събитие", +"Export" => "Изнасяне", +"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" => "Повтори", +"create a new calendar" => "създаване на нов календар", +"Please choose a calendar" => "Изберете календар", +"Name of new calendar" => "Име на новия календар", +"Import" => "Внасяне", +"Close Dialog" => "Затваряне на прозореца", "Create a new event" => "Ново събитие", -"Timezone" => "Часова зона" +"View an event" => "Преглед на събитие", +"No categories selected" => "Няма избрани категории", +"Timezone" => "Часова зона", +"First day of the week" => "Първи ден на седмицата", +"Groups" => "Групи" ); diff --git a/apps/calendar/l10n/ca.php b/apps/calendar/l10n/ca.php index afb1c799d9..d999eaf473 100644 --- a/apps/calendar/l10n/ca.php +++ b/apps/calendar/l10n/ca.php @@ -1,12 +1,23 @@ "No tots els calendaris estan en memòria", +"Everything seems to be completely cached" => "Sembla que tot està en memòria", "No calendars found." => "No s'han trobat calendaris.", "No events found." => "No s'han trobat events.", "Wrong calendar" => "Calendari erroni", +"The file contained either no events or all events are already saved in your calendar." => "El fitxer no contenia esdeveniments o aquests ja estaven desats en el vostre caledari", +"events has been saved in the new calendar" => "els esdeveniments s'han desat en el calendari nou", +"Import failed" => "Ha fallat la importació", +"events has been saved in your calendar" => "els esdveniments s'han desat en el calendari", "New Timezone:" => "Nova zona horària:", "Timezone changed" => "La zona horària ha canviat", "Invalid request" => "Sol.licitud no vàlida", "Calendar" => "Calendari", -"MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"ddd" => "ddd", +"ddd M/d" => "ddd d/M", +"dddd M/d" => "dddd d/M", +"MMMM yyyy" => "MMMM yyyy", +"MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "d [MMM ][yyyy ]{'—' d MMM yyyy}", +"dddd, MMM d, yyyy" => "dddd, d MMM, yyyy", "Birthday" => "Aniversari", "Business" => "Feina", "Call" => "Trucada", @@ -22,7 +33,9 @@ "Projects" => "Projectes", "Questions" => "Preguntes", "Work" => "Feina", +"by" => "per", "unnamed" => "sense nom", +"New Calendar" => "Calendari nou", "Does not repeat" => "No es repeteix", "Daily" => "Diari", "Weekly" => "Mensual", @@ -67,8 +80,26 @@ "by day and month" => "per dia del mes", "Date" => "Data", "Cal." => "Cal.", +"Sun." => "Dg.", +"Mon." => "Dl.", +"Tue." => "Dm.", +"Wed." => "Dc.", +"Thu." => "Dj.", +"Fri." => "Dv.", +"Sat." => "Ds.", +"Jan." => "Gen.", +"Feb." => "Febr.", +"Mar." => "Març", +"Apr." => "Abr.", +"May." => "Maig", +"Jun." => "Juny", +"Jul." => "Jul.", +"Aug." => "Ag.", +"Sep." => "Set.", +"Oct." => "Oct.", +"Nov." => "Nov.", +"Dec." => "Des.", "All day" => "Tot el dia", -"New Calendar" => "Calendari nou", "Missing fields" => "Els camps que falten", "Title" => "Títol", "From Date" => "Des de la data", @@ -132,18 +163,17 @@ "Interval" => "Interval", "End" => "Final", "occurrences" => "aparicions", -"Import a calendar file" => "Importa un fitxer de calendari", -"Please choose the calendar" => "Escolliu el calendari", "create a new calendar" => "crea un nou calendari", +"Import a calendar file" => "Importa un fitxer de calendari", +"Please choose a calendar" => "Escolliu un calendari", "Name of new calendar" => "Nom del nou calendari", +"Take an available name!" => "Escolliu un nom disponible!", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "Ja hi ha un calendari amb aquest nom. Si continueu, els calendaris es combinaran.", "Import" => "Importa", -"Importing calendar" => "S'està important el calendari", -"Calendar imported successfully" => "El calendari s'ha importat amb èxit", "Close Dialog" => "Tanca el diàleg", "Create a new event" => "Crea un nou esdeveniment", "View an event" => "Mostra un event", "No categories selected" => "No hi ha categories seleccionades", -"Select category" => "Seleccioneu categoria", "of" => "de", "at" => "a", "Timezone" => "Zona horària", @@ -152,7 +182,13 @@ "24h" => "24h", "12h" => "12h", "First day of the week" => "Primer dia de la setmana", -"Calendar CalDAV syncing address:" => "Adreça de sincronització del calendari CalDAV:", +"Cache" => "Memòria de cau", +"Clear cache for repeating events" => "Neteja la memòria de cau pels esdeveniments amb repetició", +"Calendar CalDAV syncing addresses" => "Adreça de sincronització del calendari CalDAV", +"more info" => "més informació", +"Primary address (Kontact et al)" => "Adreça primària (Kontact et al)", +"iOS/OS X" => "IOS/OS X", +"Read only iCalendar link(s)" => "Enllaç(os) iCalendar només de lectura", "Users" => "Usuaris", "select users" => "seleccioneu usuaris", "Editable" => "Editable", diff --git a/apps/calendar/l10n/de.php b/apps/calendar/l10n/de.php index f12a18baad..8270b6785e 100644 --- a/apps/calendar/l10n/de.php +++ b/apps/calendar/l10n/de.php @@ -1,12 +1,23 @@ "Noch sind nicht alle Kalender zwischengespeichert.", +"Everything seems to be completely cached" => "Es sieht so aus, als wäre alles vollständig zwischengespeichert.", "No calendars found." => "Keine Kalender gefunden", "No events found." => "Keine Termine gefunden", "Wrong calendar" => "Falscher Kalender", +"The file contained either no events or all events are already saved in your calendar." => "Entweder enthielt die Datei keine Termine oder alle Termine waren schon im Kalender gespeichert.", +"events has been saved in the new calendar" => "Der Termin wurde im neuen Kalender gespeichert.", +"Import failed" => "Import fehlgeschlagen", +"events has been saved in your calendar" => "Der Termin wurde im Kalender gespeichert.", "New Timezone:" => "Neue Zeitzone:", "Timezone changed" => "Zeitzone geändert", "Invalid request" => "Fehlerhafte Anfrage", "Calendar" => "Kalender", -"MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "ddd d MMMM[ yyyy]{ -[ddd d] MMMM yyyy}", +"ddd" => "ddd", +"ddd M/d" => "ddd d.M", +"dddd M/d" => "dddd d.M", +"MMMM yyyy" => "MMMM yyyy", +"MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"dddd, MMM d, yyyy" => "dddd, d. MMM yyyy", "Birthday" => "Geburtstag", "Business" => "Geschäftlich", "Call" => "Anruf", @@ -22,7 +33,9 @@ "Projects" => "Projekte", "Questions" => "Fragen", "Work" => "Arbeit", +"by" => "von", "unnamed" => "unbenannt", +"New Calendar" => "Neuer Kalender", "Does not repeat" => "einmalig", "Daily" => "täglich", "Weekly" => "wöchentlich", @@ -67,8 +80,26 @@ "by day and month" => "nach Tag und Monat", "Date" => "Datum", "Cal." => "Kal.", +"Sun." => "So", +"Mon." => "Mo", +"Tue." => "Di", +"Wed." => "Mi", +"Thu." => "Do", +"Fri." => "Fr", +"Sat." => "Sa", +"Jan." => "Jan.", +"Feb." => "Feb.", +"Mar." => "Mär.", +"Apr." => "Apr.", +"May." => "Mai", +"Jun." => "Jun.", +"Jul." => "Jul.", +"Aug." => "Aug.", +"Sep." => "Sep.", +"Oct." => "Okt.", +"Nov." => "Nov.", +"Dec." => "Dez.", "All day" => "Ganztags", -"New Calendar" => "Neuer Kalender", "Missing fields" => "fehlende Felder", "Title" => "Titel", "From Date" => "Startdatum", @@ -132,18 +163,17 @@ "Interval" => "Intervall", "End" => "Ende", "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", +"Import a calendar file" => "Kalenderdatei Importieren", +"Please choose a calendar" => "Wählen Sie bitte einen Kalender.", "Name of new calendar" => "Kalendername", +"Take an available name!" => "Wählen Sie einen verfügbaren Namen.", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "Ein Kalender mit diesem Namen existiert schon. Sollten Sie fortfahren, werden die beiden Kalender zusammengeführt.", "Import" => "Importieren", -"Importing calendar" => "Kalender wird importiert.", -"Calendar imported successfully" => "Kalender erfolgreich importiert", "Close Dialog" => "Dialog schließen", "Create a new event" => "Neues Ereignis", "View an event" => "Termin öffnen", "No categories selected" => "Keine Kategorie ausgewählt", -"Select category" => "Kategorie auswählen", "of" => "von", "at" => "um", "Timezone" => "Zeitzone", @@ -152,9 +182,15 @@ "24h" => "24h", "12h" => "12h", "First day of the week" => "erster Wochentag", -"Calendar CalDAV syncing address:" => "Kalender CalDAV Synchronisationsadresse:", -"Users" => "Nutzer", -"select users" => "Nutzer auswählen", +"Cache" => "Zwischenspeicher", +"Clear cache for repeating events" => "Lösche den Zwischenspeicher für wiederholende Veranstaltungen.", +"Calendar CalDAV syncing addresses" => "CalDAV-Kalender gleicht Adressen ab.", +"more info" => "weitere Informationen", +"Primary address (Kontact et al)" => "Primäre Adresse (Kontakt u.a.)", +"iOS/OS X" => "iOS/OS X", +"Read only iCalendar link(s)" => "Nur lesende(r) iCalender-Link(s)", +"Users" => "Benutzer", +"select users" => "Benutzer auswählen", "Editable" => "editierbar", "Groups" => "Gruppen", "select groups" => "Gruppen auswählen", diff --git a/apps/calendar/l10n/el.php b/apps/calendar/l10n/el.php index 0b289fbcf6..4657213848 100644 --- a/apps/calendar/l10n/el.php +++ b/apps/calendar/l10n/el.php @@ -1,17 +1,28 @@ "Δεν έχει δημιουργηθεί λανθάνουσα μνήμη για όλα τα ημερολόγια", +"Everything seems to be completely cached" => "Όλα έχουν αποθηκευτεί στη cache", "No calendars found." => "Δε βρέθηκαν ημερολόγια.", "No events found." => "Δε βρέθηκαν γεγονότα.", "Wrong calendar" => "Λάθος ημερολόγιο", +"The file contained either no events or all events are already saved in your calendar." => "Το αρχείο που περιέχει είτε κανένα γεγονός είτε όλα τα γεγονότα έχουν ήδη αποθηκευτεί στο ημερολόγιό σας.", +"events has been saved in the new calendar" => "τα συμβάντα αποθηκεύτηκαν σε ένα νέο ημερολόγιο", +"Import failed" => "Η εισαγωγή απέτυχε", +"events has been saved in your calendar" => "το συμβάν αποθηκεύτηκε στο ημερολογιό σου", "New Timezone:" => "Νέα ζώνη ώρας:", "Timezone changed" => "Η ζώνη ώρας άλλαξε", "Invalid request" => "Μη έγκυρο αίτημα", "Calendar" => "Ημερολόγιο", +"ddd" => "ddd", +"ddd M/d" => "ddd M/d", +"dddd M/d" => "dddd M/d", +"MMMM yyyy" => "MMMM yyyy", "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"dddd, MMM d, yyyy" => "dddd, MMM d, yyyy", "Birthday" => "Γενέθλια", "Business" => "Επιχείρηση", "Call" => "Κλήση", "Clients" => "Πελάτες", -"Deliverer" => "Παραδώσας", +"Deliverer" => "Προμηθευτής", "Holidays" => "Διακοπές", "Ideas" => "Ιδέες", "Journey" => "Ταξίδι", @@ -22,7 +33,9 @@ "Projects" => "Έργα", "Questions" => "Ερωτήσεις", "Work" => "Εργασία", +"by" => "από", "unnamed" => "ανώνυμο", +"New Calendar" => "Νέα Ημερολόγιο", "Does not repeat" => "Μη επαναλαμβανόμενο", "Daily" => "Καθημερινά", "Weekly" => "Εβδομαδιαία", @@ -67,8 +80,26 @@ "by day and month" => "κατά ημέρα και μήνα", "Date" => "Ημερομηνία", "Cal." => "Ημερ.", +"Sun." => "Κυρ.", +"Mon." => "Δευ.", +"Tue." => "Τρί.", +"Wed." => "Τετ.", +"Thu." => "Πέμ.", +"Fri." => "Παρ.", +"Sat." => "Σάβ.", +"Jan." => "Ιαν.", +"Feb." => "Φεβ.", +"Mar." => "Μάρ.", +"Apr." => "Απρ.", +"May." => "Μαΐ.", +"Jun." => "Ιούν.", +"Jul." => "Ιούλ.", +"Aug." => "Αύγ.", +"Sep." => "Σεπ.", +"Oct." => "Οκτ.", +"Nov." => "Νοέ.", +"Dec." => "Δεκ.", "All day" => "Ολοήμερο", -"New Calendar" => "Νέα Ημερολόγιο", "Missing fields" => "Πεδία που λείπουν", "Title" => "Τίτλος", "From Date" => "Από Ημερομηνία", @@ -132,18 +163,17 @@ "Interval" => "Διάστημα", "End" => "Τέλος", "occurrences" => "περιστατικά", -"Import a calendar file" => "Εισαγωγή αρχείου ημερολογίου", -"Please choose the calendar" => "Παρακαλώ επιλέξτε το ημερολόγιο", "create a new calendar" => "δημιουργία νέου ημερολογίου", +"Import a calendar file" => "Εισαγωγή αρχείου ημερολογίου", +"Please choose a calendar" => "Παρακαλώ επέλεξε ένα ημερολόγιο", "Name of new calendar" => "Όνομα νέου ημερολογίου", +"Take an available name!" => "Επέλεξε ένα διαθέσιμο όνομα!", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "Ένα ημερολόγιο με αυτό το όνομα υπάρχει ήδη. Εάν θέλετε να συνεχίσετε, αυτά τα 2 ημερολόγια θα συγχωνευθούν.", "Import" => "Εισαγωγή", -"Importing calendar" => "Εισαγωγή ημερολογίου", -"Calendar imported successfully" => "Το ημερολόγιο εισήχθει επιτυχώς", "Close Dialog" => "Κλείσιμο Διαλόγου", "Create a new event" => "Δημιουργήστε ένα νέο συμβάν", "View an event" => "Εμφάνισε ένα γεγονός", "No categories selected" => "Δεν επελέγησαν κατηγορίες", -"Select category" => "Επιλέξτε κατηγορία", "of" => "του", "at" => "στο", "Timezone" => "Ζώνη ώρας", @@ -152,7 +182,13 @@ "24h" => "24ω", "12h" => "12ω", "First day of the week" => "Πρώτη μέρα της εβδομάδας", -"Calendar CalDAV syncing address:" => "Διεύθυνση για το συγχρονισμού του ημερολογίου CalDAV:", +"Cache" => "Cache", +"Clear cache for repeating events" => "Εκκαθάριση λανθάνουσας μνήμης για επανάληψη γεγονότων", +"Calendar CalDAV syncing addresses" => "Διευθύνσεις συγχρονισμού ημερολογίου CalDAV", +"more info" => "περισσότερες πλροφορίες", +"Primary address (Kontact et al)" => "Κύρια Διεύθυνση(Επαφή και άλλα)", +"iOS/OS X" => "iOS/OS X", +"Read only iCalendar link(s)" => " iCalendar link(s) μόνο για ανάγνωση", "Users" => "Χρήστες", "select users" => "επέλεξε χρήστες", "Editable" => "Επεξεργάσιμο", diff --git a/apps/calendar/l10n/fi_FI.php b/apps/calendar/l10n/fi_FI.php index 4de94b7b7b..23096d7365 100644 --- a/apps/calendar/l10n/fi_FI.php +++ b/apps/calendar/l10n/fi_FI.php @@ -2,6 +2,9 @@ "No calendars found." => "Kalentereita ei löytynyt", "No events found." => "Tapahtumia ei löytynyt.", "Wrong calendar" => "Väärä kalenteri", +"The file contained either no events or all events are already saved in your calendar." => "Tiedosto ei joko sisältänyt tapahtumia tai vaihtoehtoisesti kaikki tapahtumat on jo tallennettu kalenteriisi.", +"Import failed" => "Tuonti epäonnistui", +"events has been saved in your calendar" => "tapahtumaa on tallennettu kalenteriisi", "New Timezone:" => "Uusi aikavyöhyke:", "Timezone changed" => "Aikavyöhyke vaihdettu", "Invalid request" => "Virheellinen pyyntö", @@ -21,6 +24,7 @@ "Questions" => "Kysymykset", "Work" => "Työ", "unnamed" => "nimetön", +"New Calendar" => "Uusi kalenteri", "Does not repeat" => "Ei toistoa", "Daily" => "Päivittäin", "Weekly" => "Viikottain", @@ -55,8 +59,26 @@ "November" => "Marraskuu", "December" => "Joulukuu", "Date" => "Päivämäärä", +"Sun." => "Su", +"Mon." => "Ma", +"Tue." => "Ti", +"Wed." => "Ke", +"Thu." => "To", +"Fri." => "Pe", +"Sat." => "La", +"Jan." => "Tammi", +"Feb." => "Helmi", +"Mar." => "Maalis", +"Apr." => "Huhti", +"May." => "Touko", +"Jun." => "Kesä", +"Jul." => "Heinä", +"Aug." => "Elo", +"Sep." => "Syys", +"Oct." => "Loka", +"Nov." => "Marras", +"Dec." => "Joulu", "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", @@ -110,25 +132,24 @@ "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", +"Import a calendar file" => "Tuo kalenteritiedosto", +"Please choose a calendar" => "Valitse kalenteri", "Name of new calendar" => "Uuden kalenterin nimi", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "Samalla nimellä on jo olemassa kalenteri. Jos jatkat kaikesta huolimatta, kalenterit yhdistetään.", "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:", +"Calendar CalDAV syncing addresses" => "Kalenterin CalDAV-synkronointiosoitteet", +"iOS/OS X" => "iOS/OS X", "Users" => "Käyttäjät", "select users" => "valitse käyttäjät", "Editable" => "Muoktattava", diff --git a/apps/calendar/l10n/fr.php b/apps/calendar/l10n/fr.php index 506453af42..c43b16631e 100644 --- a/apps/calendar/l10n/fr.php +++ b/apps/calendar/l10n/fr.php @@ -1,12 +1,23 @@ "Tous les calendriers ne sont pas mis en cache", +"Everything seems to be completely cached" => "Tout semble être en cache", "No calendars found." => "Aucun calendrier n'a été trouvé.", "No events found." => "Aucun événement n'a été trouvé.", "Wrong calendar" => "Mauvais calendrier", +"The file contained either no events or all events are already saved in your calendar." => "Soit le fichier ne contient aucun événement soit tous les événements sont déjà enregistrés dans votre calendrier.", +"events has been saved in the new calendar" => "Les événements ont été enregistrés dans le nouveau calendrier", +"Import failed" => "Échec de l'import", +"events has been saved in your calendar" => "Les événements ont été enregistrés dans votre calendrier", "New Timezone:" => "Nouveau fuseau horaire :", "Timezone changed" => "Fuseau horaire modifié", "Invalid request" => "Requête invalide", "Calendar" => "Calendrier", +"ddd" => "ddd", +"ddd M/d" => "ddd d/M", +"dddd M/d" => "dddd d/M", +"MMMM yyyy" => "MMMM yyyy", "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"dddd, MMM d, yyyy" => "dddd, d MMM, yyyy", "Birthday" => "Anniversaire", "Business" => "Professionnel", "Call" => "Appel", @@ -22,7 +33,9 @@ "Projects" => "Projets", "Questions" => "Questions", "Work" => "Travail", +"by" => "par", "unnamed" => "sans-nom", +"New Calendar" => "Nouveau Calendrier", "Does not repeat" => "Pas de répétition", "Daily" => "Tous les jours", "Weekly" => "Hebdomadaire", @@ -67,8 +80,26 @@ "by day and month" => "par jour et mois", "Date" => "Date", "Cal." => "Cal.", +"Sun." => "Dim.", +"Mon." => "Lun.", +"Tue." => "Mar.", +"Wed." => "Mer.", +"Thu." => "Jeu", +"Fri." => "Ven.", +"Sat." => "Sam.", +"Jan." => "Jan.", +"Feb." => "Fév.", +"Mar." => "Mars", +"Apr." => "Avr.", +"May." => "Mai", +"Jun." => "Juin", +"Jul." => "Juil.", +"Aug." => "Août", +"Sep." => "Sep.", +"Oct." => "Oct.", +"Nov." => "Nov.", +"Dec." => "Déc.", "All day" => "Journée entière", -"New Calendar" => "Nouveau Calendrier", "Missing fields" => "Champs manquants", "Title" => "Titre", "From Date" => "De la date", @@ -132,18 +163,17 @@ "Interval" => "Intervalle", "End" => "Fin", "occurrences" => "occurrences", -"Import a calendar file" => "Importer un fichier de calendriers", -"Please choose the calendar" => "Choisissez le calendrier svp", "create a new calendar" => "Créer un nouveau calendrier", +"Import a calendar file" => "Importer un fichier de calendriers", +"Please choose a calendar" => "Veuillez sélectionner un calendrier", "Name of new calendar" => "Nom pour le nouveau calendrier", +"Take an available name!" => "Choisissez un nom disponible !", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "Un calendrier de ce nom existe déjà. Si vous choisissez de continuer les calendriers seront fusionnés.", "Import" => "Importer", -"Importing calendar" => "Import du calendrier", -"Calendar imported successfully" => "Calendrier importé avec succès", "Close Dialog" => "Fermer la fenêtre", "Create a new event" => "Créer un nouvel événement", "View an event" => "Voir un événement", "No categories selected" => "Aucune catégorie sélectionnée", -"Select category" => "Sélectionner une catégorie", "of" => "de", "at" => "à", "Timezone" => "Fuseau horaire", @@ -152,7 +182,13 @@ "24h" => "24h", "12h" => "12h", "First day of the week" => "Premier jour de la semaine", -"Calendar CalDAV syncing address:" => "Adresse de synchronisation du calendrier CalDAV :", +"Cache" => "Cache", +"Clear cache for repeating events" => "Nettoyer le cache des événements répétitifs", +"Calendar CalDAV syncing addresses" => "Adresses de synchronisation des calendriers CalDAV", +"more info" => "plus d'infos", +"Primary address (Kontact et al)" => "Adresses principales (Kontact et assimilés)", +"iOS/OS X" => "iOS/OS X", +"Read only iCalendar link(s)" => "lien(s) iCalendar en lecture seule", "Users" => "Utilisateurs", "select users" => "sélectionner les utilisateurs", "Editable" => "Modifiable", diff --git a/apps/calendar/l10n/it.php b/apps/calendar/l10n/it.php index cdb2d99c82..68f3e89dae 100644 --- a/apps/calendar/l10n/it.php +++ b/apps/calendar/l10n/it.php @@ -1,12 +1,23 @@ "Non tutti i calendari sono mantenuti completamente in cache", +"Everything seems to be completely cached" => "Tutto sembra essere mantenuto completamente in cache", "No calendars found." => "Nessun calendario trovato.", "No events found." => "Nessun evento trovato.", "Wrong calendar" => "Calendario sbagliato", +"The file contained either no events or all events are already saved in your calendar." => "Il file non conteneva alcun evento o tutti gli eventi erano già salvati nel tuo calendario.", +"events has been saved in the new calendar" => "gli eventi sono stati salvati nel nuovo calendario", +"Import failed" => "Importazione non riuscita", +"events has been saved in your calendar" => "gli eventi sono stati salvati nel tuo calendario", "New Timezone:" => "Nuovo fuso orario:", "Timezone changed" => "Fuso orario cambiato", "Invalid request" => "Richiesta non valida", "Calendar" => "Calendario", +"ddd" => "ddd", +"ddd M/d" => "ddd d/M", +"dddd M/d" => "dddd d/M", +"MMMM yyyy" => "MMMM yyyy", "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"dddd, MMM d, yyyy" => "dddd, d MMM yyyy", "Birthday" => "Compleanno", "Business" => "Azienda", "Call" => "Chiama", @@ -22,7 +33,9 @@ "Projects" => "Progetti", "Questions" => "Domande", "Work" => "Lavoro", +"by" => "da", "unnamed" => "senza nome", +"New Calendar" => "Nuovo calendario", "Does not repeat" => "Non ripetere", "Daily" => "Giornaliero", "Weekly" => "Settimanale", @@ -67,8 +80,26 @@ "by day and month" => "per giorno e mese", "Date" => "Data", "Cal." => "Cal.", +"Sun." => "Dom.", +"Mon." => "Lun.", +"Tue." => "Mar.", +"Wed." => "Mer.", +"Thu." => "Gio.", +"Fri." => "Ven.", +"Sat." => "Sab.", +"Jan." => "Gen.", +"Feb." => "Feb.", +"Mar." => "Mar.", +"Apr." => "Apr.", +"May." => "Mag.", +"Jun." => "Giu.", +"Jul." => "Lug.", +"Aug." => "Ago.", +"Sep." => "Set.", +"Oct." => "Ott.", +"Nov." => "Nov.", +"Dec." => "Dic.", "All day" => "Tutti il giorno", -"New Calendar" => "Nuovo calendario", "Missing fields" => "Campi mancanti", "Title" => "Titolo", "From Date" => "Dal giorno", @@ -110,7 +141,7 @@ "Share" => "Condividi", "Title of the Event" => "Titolo dell'evento", "Category" => "Categoria", -"Separate categories with commas" => "Categorie separate con virgole", +"Separate categories with commas" => "Categorie separate da virgole", "Edit categories" => "Modifica le categorie", "All Day Event" => "Evento che occupa tutta la giornata", "From" => "Da", @@ -132,18 +163,17 @@ "Interval" => "Intervallo", "End" => "Fine", "occurrences" => "occorrenze", -"Import a calendar file" => "Importa un file di calendario", -"Please choose the calendar" => "Scegli il calendario", "create a new calendar" => "Crea un nuovo calendario", +"Import a calendar file" => "Importa un file di calendario", +"Please choose a calendar" => "Scegli un calendario", "Name of new calendar" => "Nome del nuovo calendario", +"Take an available name!" => "Usa un nome disponibile!", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "Un calendario con questo nome esiste già. Se continui, i due calendari saranno uniti.", "Import" => "Importa", -"Importing calendar" => "Importazione del calendario in corso", -"Calendar imported successfully" => "Calendario importato correttamente", "Close Dialog" => "Chiudi la finestra di dialogo", "Create a new event" => "Crea un nuovo evento", "View an event" => "Visualizza un evento", "No categories selected" => "Nessuna categoria selezionata", -"Select category" => "Seleziona una categoria", "of" => "di", "at" => "alle", "Timezone" => "Fuso orario", @@ -152,7 +182,13 @@ "24h" => "24h", "12h" => "12h", "First day of the week" => "Primo giorno della settimana", -"Calendar CalDAV syncing address:" => "Indirizzo sincronizzazione calendario CalDAV:", +"Cache" => "Cache", +"Clear cache for repeating events" => "Cancella gli eventi che si ripetono dalla cache", +"Calendar CalDAV syncing addresses" => "Indirizzi di sincronizzazione calendari CalDAV", +"more info" => "ulteriori informazioni", +"Primary address (Kontact et al)" => "Indirizzo principale (Kontact e altri)", +"iOS/OS X" => "iOS/OS X", +"Read only iCalendar link(s)" => "Collegamento(i) iCalendar sola lettura", "Users" => "Utenti", "select users" => "seleziona utenti", "Editable" => "Modificabile", diff --git a/apps/calendar/l10n/ru.php b/apps/calendar/l10n/ru.php index af40b06b9f..934e2c4840 100644 --- a/apps/calendar/l10n/ru.php +++ b/apps/calendar/l10n/ru.php @@ -1,11 +1,23 @@ "Не все календари полностью кешированы", +"Everything seems to be completely cached" => "Все, вроде бы, закешировано", "No calendars found." => "Календари не найдены.", "No events found." => "События не найдены.", "Wrong calendar" => "Неверный календарь", +"The file contained either no events or all events are already saved in your calendar." => "Файл либо не собержит событий, либо все события уже есть в календаре", +"events has been saved in the new calendar" => "события были сохранены в новый календарь", +"Import failed" => "Ошибка импорта", +"events has been saved in your calendar" => "события были сохранены в вашем календаре", "New Timezone:" => "Новый часовой пояс:", "Timezone changed" => "Часовой пояс изменён", "Invalid request" => "Неверный запрос", "Calendar" => "Календарь", +"ddd" => "ддд", +"ddd M/d" => "ддд М/д", +"dddd M/d" => "дддд М/д", +"MMMM yyyy" => "ММММ гггг", +"MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"dddd, MMM d, yyyy" => "дддд, МММ д, гггг", "Birthday" => "День рождения", "Business" => "Бизнес", "Call" => "Звонить", @@ -22,6 +34,7 @@ "Questions" => "Вопросы", "Work" => "Работа", "unnamed" => "без имени", +"New Calendar" => "Новый Календарь", "Does not repeat" => "Не повторяется", "Daily" => "Ежедневно", "Weekly" => "Еженедельно", @@ -66,8 +79,26 @@ "by day and month" => "по дню и месяцу", "Date" => "Дата", "Cal." => "Кал.", +"Sun." => "Вс.", +"Mon." => "Пн.", +"Tue." => "Вт.", +"Wed." => "Ср.", +"Thu." => "Чт.", +"Fri." => "Пт.", +"Sat." => "Сб.", +"Jan." => "Янв.", +"Feb." => "Фев.", +"Mar." => "Мар.", +"Apr." => "Апр.", +"May." => "Май.", +"Jun." => "Июн.", +"Jul." => "Июл.", +"Aug." => "Авг.", +"Sep." => "Сен.", +"Oct." => "Окт.", +"Nov." => "Ноя.", +"Dec." => "Дек.", "All day" => "Весь день", -"New Calendar" => "Новый Календарь", "Missing fields" => "Незаполненные поля", "Title" => "Название", "From Date" => "Дата начала", @@ -131,25 +162,24 @@ "Interval" => "Интервал", "End" => "Окончание", "occurrences" => "повторений", -"Import a calendar file" => "Импортировать календарь из файла", -"Please choose the calendar" => "Пожалуйста, выберите календарь", "create a new calendar" => "Создать новый календарь", +"Import a calendar file" => "Импортировать календарь из файла", +"Please choose a 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" => "Выбрать категорию", +"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:", +"more info" => "подробнее", "Users" => "Пользователи", "select users" => "выбрать пользователей", "Editable" => "Редактируемо", diff --git a/apps/calendar/l10n/sv.php b/apps/calendar/l10n/sv.php index 59f8c6e6b5..e29e96b463 100644 --- a/apps/calendar/l10n/sv.php +++ b/apps/calendar/l10n/sv.php @@ -1,12 +1,23 @@ "Alla kalendrar är inte fullständigt sparade i cache", +"Everything seems to be completely cached" => "Allt verkar vara fullständigt sparat i cache", "No calendars found." => "Inga kalendrar funna", "No events found." => "Inga händelser funna.", "Wrong calendar" => "Fel kalender", +"The file contained either no events or all events are already saved in your calendar." => "Filen innehöll inga händelser eller så är alla händelser redan sparade i kalendern.", +"events has been saved in the new calendar" => "händelser har sparats i den nya kalendern", +"Import failed" => "Misslyckad import", +"events has been saved in your calendar" => "händelse har sparats i din kalender", "New Timezone:" => "Ny tidszon:", "Timezone changed" => "Tidszon ändrad", "Invalid request" => "Ogiltig begäran", "Calendar" => "Kalender", +"ddd" => "ddd", +"ddd M/d" => "ddd M/d", +"dddd M/d" => "dddd M/d", +"MMMM yyyy" => "MMMM åååå", "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"dddd, MMM d, yyyy" => "ddd, MMM d, åååå", "Birthday" => "Födelsedag", "Business" => "Företag", "Call" => "Ringa", @@ -22,7 +33,9 @@ "Projects" => "Projekt", "Questions" => "Frågor", "Work" => "Arbetet", +"by" => "av", "unnamed" => "Namn saknas", +"New Calendar" => "Ny kalender", "Does not repeat" => "Upprepas inte", "Daily" => "Dagligen", "Weekly" => "Varje vecka", @@ -67,8 +80,26 @@ "by day and month" => "efter dag och månad", "Date" => "Datum", "Cal." => "Kal.", +"Sun." => "Sön.", +"Mon." => "Mån.", +"Tue." => "Tis.", +"Wed." => "Ons.", +"Thu." => "Tor.", +"Fri." => "Fre.", +"Sat." => "Lör.", +"Jan." => "Jan.", +"Feb." => "Feb.", +"Mar." => "Mar.", +"Apr." => "Apr.", +"May." => "Maj.", +"Jun." => "Jun.", +"Jul." => "Jul.", +"Aug." => "Aug.", +"Sep." => "Sep.", +"Oct." => "Okt.", +"Nov." => "Nov.", +"Dec." => "Dec.", "All day" => "Hela dagen", -"New Calendar" => "Ny kalender", "Missing fields" => "Saknade fält", "Title" => "Rubrik", "From Date" => "Från datum", @@ -132,18 +163,17 @@ "Interval" => "Hur ofta", "End" => "Slut", "occurrences" => "Händelser", -"Import a calendar file" => "Importera en kalenderfil", -"Please choose the calendar" => "Välj kalender", "create a new calendar" => "skapa en ny kalender", +"Import a calendar file" => "Importera en kalenderfil", +"Please choose a calendar" => "Välj en kalender", "Name of new calendar" => "Namn på ny kalender", +"Take an available name!" => "Ta ett ledigt namn!", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "En kalender med detta namn finns redan. Om du fortsätter ändå så kommer dessa kalendrar att slås samman.", "Import" => "Importera", -"Importing calendar" => "Importerar kalender", -"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" => "på", "Timezone" => "Tidszon", @@ -152,7 +182,13 @@ "24h" => "24h", "12h" => "12h", "First day of the week" => "Första dagen av veckan", -"Calendar CalDAV syncing address:" => "Synkroniseringsadress för CalDAV kalender:", +"Cache" => "Cache", +"Clear cache for repeating events" => "Töm cache för upprepade händelser", +"Calendar CalDAV syncing addresses" => "Kalender CalDAV synkroniserar adresser", +"more info" => "mer info", +"Primary address (Kontact et al)" => "Primary address (Kontact et al)", +"iOS/OS X" => "iOS/OS X", +"Read only iCalendar link(s)" => "Read only iCalendar link(s)", "Users" => "Användare", "select users" => "välj användare", "Editable" => "Redigerbar", diff --git a/apps/calendar/l10n/tr.php b/apps/calendar/l10n/tr.php index a72e4c39f6..912228dc72 100644 --- a/apps/calendar/l10n/tr.php +++ b/apps/calendar/l10n/tr.php @@ -1,12 +1,23 @@ "Bütün takvimler tamamen ön belleğe alınmadı", +"Everything seems to be completely cached" => "Bütün herşey tamamen ön belleğe alınmış görünüyor", "No calendars found." => "Takvim yok.", "No events found." => "Etkinlik yok.", "Wrong calendar" => "Yanlış takvim", +"The file contained either no events or all events are already saved in your calendar." => "Dosya ya hiçbir etkinlik içermiyor veya bütün etkinlikler takviminizde zaten saklı.", +"events has been saved in the new calendar" => "Etkinlikler yeni takvimde saklandı", +"Import failed" => "İçeri aktarma başarısız oldu.", +"events has been saved in your calendar" => "Etkinlikler takviminizde saklandı", "New Timezone:" => "Yeni Zamandilimi:", "Timezone changed" => "Zaman dilimi değiştirildi", "Invalid request" => "Geçersiz istek", "Calendar" => "Takvim", +"ddd" => "ddd", +"ddd M/d" => "ddd M/d", +"dddd M/d" => "dddd M/d", +"MMMM yyyy" => "MMMM yyyy", "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "AAA g[ yyyy]{ '—'[ AAA] g yyyy}", +"dddd, MMM d, yyyy" => "dddd, MMM d, yyyy", "Birthday" => "Doğum günü", "Business" => "İş", "Call" => "Arama", @@ -22,7 +33,9 @@ "Projects" => "Projeler", "Questions" => "Sorular", "Work" => "İş", +"by" => "hazırlayan", "unnamed" => "isimsiz", +"New Calendar" => "Yeni Takvim", "Does not repeat" => "Tekrar etmiyor", "Daily" => "Günlük", "Weekly" => "Haftalı", @@ -67,8 +80,26 @@ "by day and month" => "gün ve aya göre", "Date" => "Tarih", "Cal." => "Takv.", +"Sun." => "Paz.", +"Mon." => "Pzt.", +"Tue." => "Sal.", +"Wed." => "Çar.", +"Thu." => "Per.", +"Fri." => "Cum.", +"Sat." => "Cmt.", +"Jan." => "Oca.", +"Feb." => "Şbt.", +"Mar." => "Mar.", +"Apr." => "Nis", +"May." => "May.", +"Jun." => "Haz.", +"Jul." => "Tem.", +"Aug." => "Agu.", +"Sep." => "Eyl.", +"Oct." => "Eki.", +"Nov." => "Kas.", +"Dec." => "Ara.", "All day" => "Tüm gün", -"New Calendar" => "Yeni Takvim", "Missing fields" => "Eksik alanlar", "Title" => "Başlık", "From Date" => "Bu Tarihten", @@ -132,18 +163,17 @@ "Interval" => "Aralık", "End" => "Son", "occurrences" => "olaylar", -"Import a calendar file" => "Takvim dosyasını içeri aktar", -"Please choose the calendar" => "Lütfen takvimi seçin", "create a new calendar" => "Yeni bir takvim oluştur", +"Import a calendar file" => "Takvim dosyasını içeri aktar", +"Please choose a calendar" => "Lütfen takvim seçiniz", "Name of new calendar" => "Yeni takvimin adı", +"Take an available name!" => "Müsait ismi al !", +"A Calendar with this name already exists. If you continue anyhow, these calendars will be merged." => "Bu isimde bir takvim zaten mevcut. Yine de devam ederseniz bu takvimler birleştirilecektir.", "Import" => "İçe Al", -"Importing calendar" => "Takvim içe aktarılıyor", -"Calendar imported successfully" => "Takvim başarıyla içe aktarıldı", "Close Dialog" => "Diyalogu kapat", "Create a new event" => "Yeni olay oluştur", "View an event" => "Bir olay görüntüle", "No categories selected" => "Kategori seçilmedi", -"Select category" => "Kategori seçin", "of" => "nın", "at" => "üzerinde", "Timezone" => "Zaman dilimi", @@ -152,7 +182,13 @@ "24h" => "24s", "12h" => "12s", "First day of the week" => "Haftanın ilk günü", -"Calendar CalDAV syncing address:" => "CalDAV Takvim eşzamanlama adresi:", +"Cache" => "Önbellek", +"Clear cache for repeating events" => "Tekrar eden etkinlikler için ön belleği temizle.", +"Calendar CalDAV syncing addresses" => "CalDAV takvimi adresleri senkronize ediyor.", +"more info" => "daha fazla bilgi", +"Primary address (Kontact et al)" => "Öncelikli adres", +"iOS/OS X" => "iOS/OS X", +"Read only iCalendar link(s)" => "Sadece okunabilir iCalendar link(ler)i", "Users" => "Kullanıcılar", "select users" => "kullanıcıları seç", "Editable" => "Düzenlenebilir", diff --git a/apps/calendar/l10n/vi.php b/apps/calendar/l10n/vi.php new file mode 100644 index 0000000000..059b89e163 --- /dev/null +++ b/apps/calendar/l10n/vi.php @@ -0,0 +1,135 @@ + "Không tìm thấy lịch.", +"No events found." => "Không tìm thấy sự kiện nào", +"Wrong calendar" => "Sai lịch", +"New Timezone:" => "Múi giờ mới :", +"Timezone changed" => "Thay đổi múi giờ", +"Invalid request" => "Yêu cầu không hợp lệ", +"Calendar" => "Lịch", +"ddd" => "ddd", +"ddd M/d" => "ddd M/d", +"dddd M/d" => "dddd M/d", +"MMMM yyyy" => "MMMM yyyy", +"MMM d[ yyyy]{ '—'[ MMM] d yyyy}" => "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", +"dddd, MMM d, yyyy" => "dddd, MMM d, yyyy", +"Birthday" => "Ngày sinh nhật", +"Business" => "Công việc", +"Call" => "Số điện thoại", +"Clients" => "Máy trạm", +"Holidays" => "Ngày lễ", +"Ideas" => "Ý tưởng", +"Jubilee" => "Lễ kỷ niệm", +"Meeting" => "Hội nghị", +"Other" => "Khác", +"Personal" => "Cá nhân", +"Projects" => "Dự án", +"Questions" => "Câu hỏi", +"Work" => "Công việc", +"New Calendar" => "Lịch mới", +"Does not repeat" => "Không lặp lại", +"Daily" => "Hàng ngày", +"Weekly" => "Hàng tuần", +"Every Weekday" => "Mỗi ngày trong tuần", +"Bi-Weekly" => "Hai tuần một lần", +"Monthly" => "Hàng tháng", +"Yearly" => "Hàng năm", +"never" => "không thay đổi", +"by occurrences" => "bởi xuất hiện", +"by date" => "bởi ngày", +"by monthday" => "bởi ngày trong tháng", +"by weekday" => "bởi ngày trong tuần", +"Monday" => "Thứ 2", +"Tuesday" => "Thứ 3", +"Wednesday" => "Thứ 4", +"Thursday" => "Thứ 5", +"Friday" => "Thứ ", +"Saturday" => "Thứ 7", +"Sunday" => "Chủ nhật", +"events week of month" => "sự kiện trong tuần của tháng", +"first" => "đầu tiên", +"second" => "Thứ hai", +"third" => "Thứ ba", +"fourth" => "Thứ tư", +"fifth" => "Thứ năm", +"January" => "Tháng 1", +"February" => "Tháng 2", +"March" => "Tháng 3", +"April" => "Tháng 4", +"May" => "Tháng 5", +"June" => "Tháng 6", +"July" => "Tháng 7", +"August" => "Tháng 8", +"September" => "Tháng 9", +"October" => "Tháng 10", +"November" => "Tháng 11", +"December" => "Tháng 12", +"by events date" => "Theo ngày tháng sự kiện", +"by weeknumber(s)" => "số tuần", +"by day and month" => "ngày, tháng", +"Date" => "Ngày", +"Cal." => "Cal.", +"All day" => "Tất cả các ngày", +"Title" => "Tiêu đề", +"From Date" => "Từ ngày", +"From Time" => "Từ thời gian", +"To Date" => "Tới ngày", +"To Time" => "Tới thời gian", +"The event ends before it starts" => "Sự kiện này kết thúc trước khi nó bắt đầu", +"Week" => "Tuần", +"Month" => "Tháng", +"List" => "Danh sách", +"Today" => "Hôm nay", +"Calendars" => "Lịch", +"There was a fail, while parsing the file." => "Có một thất bại, trong khi phân tích các tập tin.", +"Choose active calendars" => "Chọn lịch hoạt động", +"Your calendars" => "Lịch của bạn", +"CalDav Link" => "Liên kết CalDav ", +"Shared calendars" => "Chia sẻ lịch", +"No shared calendars" => "Không chia sẻ lcihj", +"Share Calendar" => "Chia sẻ lịch", +"Download" => "Tải về", +"Edit" => "Chỉnh sửa", +"Delete" => "Xóa", +"shared with you by" => "Chia sẻ bởi", +"New calendar" => "Lịch mới", +"Edit calendar" => "sửa Lịch", +"Displayname" => "Hiển thị tên", +"Active" => "Kích hoạt", +"Calendar color" => "Màu lịch", +"Save" => "Lưu", +"Submit" => "Submit", +"Cancel" => "Hủy", +"Edit an event" => "Sửa sự kiện", +"Share" => "Chia sẻ", +"Title of the Event" => "Tên sự kiện", +"Category" => "Danh mục", +"All Day Event" => "Sự kiện trong ngày", +"From" => "Từ", +"To" => "Tới", +"Advanced options" => "Tùy chọn nâng cao", +"Location" => "Nơi", +"Location of the Event" => "Nơi tổ chức sự kiện", +"Description" => "Mô tả", +"Description of the Event" => "Mô tả sự kiện", +"Repeat" => "Lặp lại", +"Advanced" => "Nâng cao", +"Select weekdays" => "Chọn ngày trong tuần", +"Select days" => "Chọn ngày", +"and the events day of year." => "và sự kiện của ngày trong năm", +"and the events day of month." => "và sự kiện của một ngày trong năm", +"Select months" => "Chọn tháng", +"Select weeks" => "Chọn tuần", +"and the events week of year." => "và sự kiện của tuần trong năm.", +"create a new calendar" => "Tạo lịch mới", +"Name of new calendar" => "Tên lịch mới", +"Close Dialog" => "Đóng hộp thoại", +"Create a new event" => "Tạo một sự kiện mới", +"View an event" => "Xem một sự kiện", +"No categories selected" => "Không danh sách nào được chọn", +"of" => "của", +"at" => "tại", +"Timezone" => "Múi giờ", +"Check always for changes of the timezone" => "Luôn kiểm tra múi giờ", +"24h" => "24h", +"12h" => "12h" +); diff --git a/apps/calendar/lib/app.php b/apps/calendar/lib/app.php index 29e5ab5b0c..8bdb54f486 100644 --- a/apps/calendar/lib/app.php +++ b/apps/calendar/lib/app.php @@ -396,8 +396,8 @@ class OC_Calendar_App{ $last_modified = @$vevent->__get('LAST-MODIFIED'); $lastmodified = ($last_modified)?$last_modified->getDateTime()->format('U'):0; $staticoutput = array('id'=>(int)$event['id'], - 'title' => htmlspecialchars(($event['summary']!=NULL || $event['summary'] != '')?$event['summary']: self::$l10n->t('unnamed')), - 'description' => isset($vevent->DESCRIPTION)?htmlspecialchars($vevent->DESCRIPTION->value):'', + 'title' => ($event['summary']!=NULL || $event['summary'] != '')?$event['summary']: self::$l10n->t('unnamed'), + 'description' => isset($vevent->DESCRIPTION)?$vevent->DESCRIPTION->value:'', 'lastmodified'=>$lastmodified, 'allDay'=>$allday); if(OC_Calendar_Object::isrepeating($id) && OC_Calendar_Repeat::is_cached_inperiod($event['id'], $start, $end)){ diff --git a/apps/calendar/lib/connector_sabre.php b/apps/calendar/lib/connector_sabre.php index 263fb7ffde..ac3b26ceb3 100644 --- a/apps/calendar/lib/connector_sabre.php +++ b/apps/calendar/lib/connector_sabre.php @@ -105,6 +105,9 @@ class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract { if(!isset($newValues['timezone'])) $newValues['timezone'] = null; if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = 0; if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null; + if(!is_null($newValues['calendarcolor']) && strlen($newValues['calendarcolor']) == 9){ + $newValues['calendarcolor'] = substr($newValues['calendarcolor'], 0, 7); + } return OC_Calendar_Calendar::addCalendarFromDAVData($principalUri,$calendarUri,$newValues['displayname'],$newValues['components'],$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); } @@ -192,7 +195,10 @@ class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract { if(!isset($newValues['timezone'])) $newValues['timezone'] = null; if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = null; if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null; - + if(!is_null($newValues['calendarcolor']) && strlen($newValues['calendarcolor']) == 9){ + $newValues['calendarcolor'] = substr($newValues['calendarcolor'], 0, 7); + } + OC_Calendar_Calendar::editCalendar($calendarId,$newValues['displayname'],null,$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); return true; @@ -206,6 +212,10 @@ class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract { * @return void */ public function deleteCalendar($calendarId) { + if(preg_match( '=iCal/[1-4]?.*Mac OS X/10.[1-6](.[0-9])?=', $_SERVER['HTTP_USER_AGENT'] )){ + throw new Sabre_DAV_Exception_Forbidden("Action is not possible with OSX 10.6.x", 403); + } + OC_Calendar_Calendar::deleteCalendar($calendarId); } diff --git a/apps/calendar/settings.php b/apps/calendar/settings.php index eaa20c6c9b..f563518046 100644 --- a/apps/calendar/settings.php +++ b/apps/calendar/settings.php @@ -14,4 +14,4 @@ $tmpl->assign('calendars', OC_Calendar_Calendar::allCalendars(OCP\USER::getUser( OCP\Util::addscript('calendar','settings'); -return $tmpl->fetchPage(); +$tmpl->printPage(); \ No newline at end of file diff --git a/apps/calendar/templates/calendar.php b/apps/calendar/templates/calendar.php index 29b9bf6bc5..c94cc755ab 100644 --- a/apps/calendar/templates/calendar.php +++ b/apps/calendar/templates/calendar.php @@ -33,6 +33,7 @@ ?> }); +
@@ -41,8 +42,9 @@
- "/> - " onclick="Calendar.UI.Calendar.overview();" /> + + <?php echo $l->t('Settings'); ?> + <?php echo $l->t('Settings'); ?>
@@ -50,12 +52,6 @@
- -
-
- +
-
- t("There was a fail, while parsing the file."); ?> -
- + \ No newline at end of file diff --git a/apps/calendar/templates/part.choosecalendar.php b/apps/calendar/templates/part.choosecalendar.php index 8d621cc363..ad2f9e753f 100644 --- a/apps/calendar/templates/part.choosecalendar.php +++ b/apps/calendar/templates/part.choosecalendar.php @@ -1,51 +1,52 @@ -
"> -

t('Your calendars'); ?>:

- -"; - $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields'); - $tmpl->assign('calendar', $option_calendars[$i]); - if(OC_Calendar_Share::allUsersSharedwith($option_calendars[$i]['id'], OC_Calendar_Share::CALENDAR) == array()){ - $shared = false; - }else{ - $shared = true; + +

t('Your calendars'); ?>:

+
+ "; + $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields'); + $tmpl->assign('calendar', $option_calendars[$i]); + if(OC_Calendar_Share::allUsersSharedwith($option_calendars[$i]['id'], OC_Calendar_Share::CALENDAR) == array()){ + $shared = false; + }else{ + $shared = true; + } + $tmpl->assign('shared', $shared); + $tmpl->printpage(); + echo ""; } - $tmpl->assign('shared', $shared); - $tmpl->printpage(); - echo ""; -} -?> - - - - - - -
- -
-

">

-

-

t('Shared calendars'); ?>:

- -'; - $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields.shared'); - $tmpl->assign('share', $share[$i]); - $tmpl->printpage(); - echo ''; -} -?> -
-' . $l->t('No shared calendars') . '

'; -} -?> -
\ No newline at end of file + ?> + + + + + + + +

">

+ + +
+

t('Shared calendars'); ?>:

+ + '; + $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields.shared'); + $tmpl->assign('share', $share[$i]); + $tmpl->printpage(); + echo ''; + } + ?> +
+ ' . $l->t('No shared calendars') . '

'; + } + ?> + + \ No newline at end of file diff --git a/apps/calendar/templates/part.choosecalendar.rowfields.php b/apps/calendar/templates/part.choosecalendar.rowfields.php index 4492ce731c..d29113c9a6 100644 --- a/apps/calendar/templates/part.choosecalendar.rowfields.php +++ b/apps/calendar/templates/part.choosecalendar.rowfields.php @@ -11,7 +11,7 @@ - + diff --git a/apps/calendar/templates/part.editevent.php b/apps/calendar/templates/part.editevent.php index 102366f8f0..ea91192cc6 100644 --- a/apps/calendar/templates/part.editevent.php +++ b/apps/calendar/templates/part.editevent.php @@ -5,9 +5,9 @@ inc("part.eventform"); ?>
- " onclick="Calendar.UI.validateEventForm('?app=calendar&getfile=ajax/event/edit.php');"> - " onclick="Calendar.UI.submitDeleteEventForm('?app=calendar&getfile=ajax/event/delete.php');"> - " onclick="window.location='?app=calendar&getfile=export.php?eventid=';"> + " onclick="Calendar.UI.validateEventForm('');"> + " onclick="Calendar.UI.submitDeleteEventForm('');"> + " onclick="window.location='?eventid=';"> diff --git a/apps/calendar/templates/part.newevent.php b/apps/calendar/templates/part.newevent.php index f4bb867b18..a4f48aecbc 100644 --- a/apps/calendar/templates/part.newevent.php +++ b/apps/calendar/templates/part.newevent.php @@ -3,7 +3,7 @@ inc("part.eventform"); ?>
- " onclick="Calendar.UI.validateEventForm('?app=calendar&getfile=ajax/event/new.php');"> + " onclick="Calendar.UI.validateEventForm('');"> diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index 28c357621a..56a6a42ee0 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -7,11 +7,16 @@ * See the COPYING-README file. */ ?> -
-
- t('Calendar'); ?> - - + + + + + +
+ + + - - + + + + + + + + - - + + + + - - - -
+ +    + +
+ +
+    + + +   + +
+ +    + -
+
+ +    + -
- -
- +
+ +    + + +
+ +

t('URLs'); ?>

+
t('Calendar CalDAV syncing addresses'); ?> (t('more info'); ?>)
t('Primary address (Kontact et al)'); ?>
@@ -63,5 +97,5 @@
-
-
+ + \ No newline at end of file diff --git a/apps/contacts/ajax/addbook.php b/apps/contacts/ajax/addbook.php deleted file mode 100644 index 751185b44f..0000000000 --- a/apps/contacts/ajax/addbook.php +++ /dev/null @@ -1,19 +0,0 @@ - - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -$book = array( - 'id' => 'new', - 'displayname' => '', -); -$tmpl = new OCP\Template('contacts', 'part.editaddressbook'); -$tmpl->assign('new', true); -$tmpl->assign('addressbook', $book); -$tmpl->printPage(); diff --git a/apps/contacts/ajax/activation.php b/apps/contacts/ajax/addressbook/activate.php similarity index 62% rename from apps/contacts/ajax/activation.php rename to apps/contacts/ajax/addressbook/activate.php index 69173c54c4..a8dec21dac 100644 --- a/apps/contacts/ajax/activation.php +++ b/apps/contacts/ajax/addressbook/activate.php @@ -7,17 +7,17 @@ * See the COPYING-README file. */ - + OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -$bookid = $_POST['bookid']; -$book = OC_Contacts_App::getAddressbook($bookid);// is owner access check +$id = $_POST['id']; +$book = OC_Contacts_App::getAddressbook($id);// is owner access check -if(!OC_Contacts_Addressbook::setActive($bookid, $_POST['active'])) { +if(!OC_Contacts_Addressbook::setActive($id, $_POST['active'])) { OCP\Util::writeLog('contacts', - 'ajax/activation.php: Error activating addressbook: '. $bookid, + 'ajax/activation.php: Error activating addressbook: '. $id, OCP\Util::ERROR); OCP\JSON::error(array( 'data' => array( @@ -26,7 +26,7 @@ if(!OC_Contacts_Addressbook::setActive($bookid, $_POST['active'])) { } OCP\JSON::success(array( - 'active' => OC_Contacts_Addressbook::isActive($bookid), - 'bookid' => $bookid, - 'book' => $book, + 'active' => OC_Contacts_Addressbook::isActive($id), + 'id' => $id, + 'addressbook' => $book, )); diff --git a/apps/contacts/ajax/addaddressbook.php b/apps/contacts/ajax/addressbook/add.php similarity index 89% rename from apps/contacts/ajax/addaddressbook.php rename to apps/contacts/ajax/addressbook/add.php index 40773704bb..65077743ed 100644 --- a/apps/contacts/ajax/addaddressbook.php +++ b/apps/contacts/ajax/addressbook/add.php @@ -6,13 +6,13 @@ * later. * See the COPYING-README file. */ - + // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -require_once 'loghandler.php'; +require_once __DIR__.'/../loghandler.php'; debug('name: '.$_POST['name']); @@ -34,4 +34,4 @@ if(!OC_Contacts_Addressbook::setActive($bookid, 1)) { bailOut('Error activating addressbook.'); } $addressbook = OC_Contacts_App::getAddressbook($bookid); -OCP\JSON::success(array('data' => $addressbook)); +OCP\JSON::success(array('data' => array('addressbook' => $addressbook))); diff --git a/apps/contacts/ajax/deletebook.php b/apps/contacts/ajax/addressbook/delete.php similarity index 90% rename from apps/contacts/ajax/deletebook.php rename to apps/contacts/ajax/addressbook/delete.php index 1b86ecf223..f59c605f4e 100644 --- a/apps/contacts/ajax/deletebook.php +++ b/apps/contacts/ajax/addressbook/delete.php @@ -24,9 +24,12 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); +require_once __DIR__.'/../loghandler.php'; -//$id = $_GET['id']; $id = $_POST['id']; +if(!$id) { + bailOut(OC_Contacts_App::$l10n->t('id is not set.')); +} OC_Contacts_App::getAddressbook( $id ); // is owner access check OC_Contacts_Addressbook::delete($id); diff --git a/apps/contacts/ajax/updateaddressbook.php b/apps/contacts/ajax/addressbook/update.php similarity index 58% rename from apps/contacts/ajax/updateaddressbook.php rename to apps/contacts/ajax/addressbook/update.php index a14b215843..0fc66c3a3b 100644 --- a/apps/contacts/ajax/updateaddressbook.php +++ b/apps/contacts/ajax/addressbook/update.php @@ -6,33 +6,34 @@ * See the COPYING-README file. */ - + // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); -require_once 'loghandler.php'; - -$bookid = $_POST['id']; -OC_Contacts_App::getAddressbook($bookid); // is owner access check +require_once __DIR__.'/../loghandler.php'; +$id = $_POST['id']; $name = trim(strip_tags($_POST['name'])); +$description = trim(strip_tags($_POST['description'])); +if(!$id) { + bailOut(OC_Contacts_App::$l10n->t('id is not set.')); +} + if(!$name) { bailOut(OC_Contacts_App::$l10n->t('Cannot update addressbook with an empty name.')); } -if(!OC_Contacts_Addressbook::edit($bookid, $name, null)) { +if(!OC_Contacts_Addressbook::edit($id, $name, $description)) { bailOut(OC_Contacts_App::$l10n->t('Error updating addressbook.')); } -if(!OC_Contacts_Addressbook::setActive($bookid, $_POST['active'])) { +if(!OC_Contacts_Addressbook::setActive($id, $_POST['active'])) { bailOut(OC_Contacts_App::$l10n->t('Error (de)activating addressbook.')); } -$addressbook = OC_Contacts_App::getAddressbook($bookid); -$tmpl = new OCP\Template('contacts', 'part.chooseaddressbook.rowfields'); -$tmpl->assign('addressbook', $addressbook); +OC_Contacts_App::getAddressbook($id); // is owner access check +$addressbook = OC_Contacts_App::getAddressbook($id); OCP\JSON::success(array( - 'page' => $tmpl->fetchPage(), 'addressbook' => $addressbook, )); diff --git a/apps/contacts/ajax/chooseaddressbook.php b/apps/contacts/ajax/chooseaddressbook.php deleted file mode 100644 index 1ce8dd46ee..0000000000 --- a/apps/contacts/ajax/chooseaddressbook.php +++ /dev/null @@ -1,15 +0,0 @@ - - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$tmpl = new OCP\Template("contacts", "part.chooseaddressbook"); -$page = $tmpl->fetchPage(); -OCP\JSON::success(array('data' => array('page'=>$page))); diff --git a/apps/contacts/ajax/addcontact.php b/apps/contacts/ajax/contact/add.php similarity index 91% rename from apps/contacts/ajax/addcontact.php rename to apps/contacts/ajax/contact/add.php index 6aaf5a9df3..043e947dc4 100644 --- a/apps/contacts/ajax/addcontact.php +++ b/apps/contacts/ajax/contact/add.php @@ -49,4 +49,10 @@ if(!$id) { exit(); } -OCP\JSON::success(array('data' => array( 'id' => $id, 'aid' => $aid ))); +OCP\JSON::success(array( + 'data' => array( + 'id' => $id, + 'aid' => $aid, + 'lastmodified' => OC_Contacts_VCard::lastModified($vcard)->format('U') + ) +)); diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/contact/addproperty.php similarity index 90% rename from apps/contacts/ajax/addproperty.php rename to apps/contacts/ajax/contact/addproperty.php index 58b857547f..1412cad1cb 100644 --- a/apps/contacts/ajax/addproperty.php +++ b/apps/contacts/ajax/contact/addproperty.php @@ -25,7 +25,7 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -require_once 'loghandler.php'; +require_once __DIR__.'/../loghandler.php'; $id = isset($_POST['id'])?$_POST['id']:null; $name = isset($_POST['name'])?$_POST['name']:null; @@ -48,9 +48,9 @@ if(!$vcard) { if(!is_array($value)) { $value = trim($value); - if(!$value + if(!$value && in_array( - $name, + $name, array('TEL', 'EMAIL', 'ORG', 'BDAY', 'URL', 'NICKNAME', 'NOTE')) ) { bailOut($l10n->t('Cannot add empty property.')); @@ -78,9 +78,9 @@ foreach($current as $item) { } if(is_array($value)) { - // NOTE: Important, otherwise the compound value will + // NOTE: Important, otherwise the compound value will // be set in the order the fields appear in the form! - ksort($value); + ksort($value); $value = array_map('strip_tags', $value); } else { $value = strip_tags($value); @@ -123,10 +123,10 @@ switch($name) { $line = count($vcard->children) - 1; -// Apparently Sabre_VObject_Parameter doesn't do well with +// Apparently Sabre_VObject_Parameter doesn't do well with // multiple values or I don't know how to do it. Tanghus. foreach ($parameters as $key=>$element) { - if(is_array($element) && strtoupper($key) == 'TYPE') { + if(is_array($element) && strtoupper($key) == 'TYPE') { // NOTE: Maybe this doesn't only apply for TYPE? // And it probably shouldn't be done here anyways :-/ foreach($element as $e) { @@ -144,4 +144,9 @@ if(!OC_Contacts_VCard::edit($id, $vcard)) { bailOut($l10n->t('Error adding contact property: '.$name)); } -OCP\JSON::success(array('data' => array( 'checksum' => $checksum ))); +OCP\JSON::success(array( + 'data' => array( + 'checksum' => $checksum, + 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U')) + ) +); diff --git a/apps/contacts/ajax/deletecard.php b/apps/contacts/ajax/contact/delete.php similarity index 96% rename from apps/contacts/ajax/deletecard.php rename to apps/contacts/ajax/contact/delete.php index 9777046fc8..def98b3670 100644 --- a/apps/contacts/ajax/deletecard.php +++ b/apps/contacts/ajax/contact/delete.php @@ -23,7 +23,8 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -require_once 'loghandler.php'; + +require_once __DIR__.'/../loghandler.php'; $id = isset($_POST['id'])?$_POST['id']:null; if(!$id) { diff --git a/apps/contacts/ajax/deleteproperty.php b/apps/contacts/ajax/contact/deleteproperty.php similarity index 88% rename from apps/contacts/ajax/deleteproperty.php rename to apps/contacts/ajax/contact/deleteproperty.php index 205df8bc18..b76eb19462 100644 --- a/apps/contacts/ajax/deleteproperty.php +++ b/apps/contacts/ajax/contact/deleteproperty.php @@ -24,7 +24,8 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -require_once 'loghandler.php'; + +require_once __DIR__.'/../loghandler.php'; $id = $_POST['id']; $checksum = $_POST['checksum']; @@ -43,4 +44,9 @@ if(!OC_Contacts_VCard::edit($id, $vcard)) { bailOut($l10n->t('Error deleting contact property.')); } -OCP\JSON::success(array('data' => array( 'id' => $id ))); +OCP\JSON::success(array( + 'data' => array( + 'id' => $id, + 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U'), + ) +)); diff --git a/apps/contacts/ajax/contactdetails.php b/apps/contacts/ajax/contact/details.php similarity index 91% rename from apps/contacts/ajax/contactdetails.php rename to apps/contacts/ajax/contact/details.php index 27d7611ade..c22f18937d 100644 --- a/apps/contacts/ajax/contactdetails.php +++ b/apps/contacts/ajax/contact/details.php @@ -19,8 +19,8 @@ * License along with this library. If not, see . * */ - -require_once 'loghandler.php'; + +require_once __DIR__.'/../loghandler.php'; // Check if we are a user OCP\JSON::checkLoggedIn(); @@ -31,7 +31,7 @@ if(is_null($id)) { bailOut(OC_Contacts_App::$l10n->t('Missing ID')); } $card = OC_Contacts_VCard::find($id); -$vcard = OC_Contacts_App::getContactVCard( $id ); +$vcard = OC_VObject::parse($card['carddata']); if(is_null($vcard)) { bailOut(OC_Contacts_App::$l10n->t('Error parsing VCard for ID: "'.$id.'"')); } @@ -53,5 +53,6 @@ if(isset($details['PHOTO'])) { $details['id'] = $id; $details['displayname'] = $card['fullname']; $details['addressbookid'] = $card['addressbookid']; +$details['lastmodified'] = OC_Contacts_App::lastModified($vcard)->format('U'); OC_Contacts_App::setLastModifiedHeader($vcard); OCP\JSON::success(array('data' => $details)); diff --git a/apps/contacts/ajax/contacts.php b/apps/contacts/ajax/contact/list.php similarity index 70% rename from apps/contacts/ajax/contacts.php rename to apps/contacts/ajax/contact/list.php index 67ebcaf736..c5eca292f1 100644 --- a/apps/contacts/ajax/contacts.php +++ b/apps/contacts/ajax/contact/list.php @@ -13,7 +13,7 @@ function cmp($a, $b) } return ($a['displayname'] < $b['displayname']) ? -1 : 1; } - + OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); @@ -37,34 +37,49 @@ $ids = array(); foreach($active_addressbooks as $addressbook) { $ids[] = $addressbook['id']; if(!isset($contacts_addressbook[$addressbook['id']])) { - $contacts_addressbook[$addressbook['id']] = array('contacts' => array('type' => 'book',)); - $contacts_addressbook[$addressbook['id']]['displayname'] = $addressbook['displayname']; + $contacts_addressbook[$addressbook['id']] + = array('contacts' => array('type' => 'book',)); + $contacts_addressbook[$addressbook['id']]['displayname'] + = $addressbook['displayname']; } -} +} -$contacts_alphabet = array(); +$contacts_alphabet = array(); // get next 50 for each addressbook. foreach($ids as $id) { if($id) { - $contacts_alphabet = array_merge($contacts_alphabet, OC_Contacts_VCard::all($id, $start, 50)); + $contacts_alphabet = array_merge( + $contacts_alphabet, + OC_Contacts_VCard::all($id, $start, 50) + ); } } // Our new array for the contacts sorted by addressbook if($contacts_alphabet) { foreach($contacts_alphabet as $contact) { - if(!isset($contacts_addressbook[$contact['addressbookid']])) { // It should never execute. - $contacts_addressbook[$contact['addressbookid']] = array('contacts' => array('type' => 'book',)); + // This should never execute. + if(!isset($contacts_addressbook[$contact['addressbookid']])) { + $contacts_addressbook[$contact['addressbookid']] = array( + 'contacts' => array('type' => 'book',) + ); } $display = trim($contact['fullname']); if(!$display) { $vcard = OC_Contacts_App::getContactVCard($contact['id']); if(!is_null($vcard)) { $struct = OC_Contacts_VCard::structureContact($vcard); - $display = isset($struct['EMAIL'][0])?$struct['EMAIL'][0]['value']:'[UNKNOWN]'; + $display = isset($struct['EMAIL'][0]) + ? $struct['EMAIL'][0]['value'] + : '[UNKNOWN]'; } } - $contacts_addressbook[$contact['addressbookid']]['contacts'][] = array('type' => 'contact', 'id' => $contact['id'], 'addressbookid' => $contact['addressbookid'], 'displayname' => htmlspecialchars($display)); + $contacts_addressbook[$contact['addressbookid']]['contacts'][] = array( + 'type' => 'contact', + 'id' => $contact['id'], + 'addressbookid' => $contact['addressbookid'], + 'displayname' => htmlspecialchars($display) + ); } } unset($contacts_alphabet); diff --git a/apps/contacts/ajax/movetoaddressbook.php b/apps/contacts/ajax/contact/move.php similarity index 100% rename from apps/contacts/ajax/movetoaddressbook.php rename to apps/contacts/ajax/contact/move.php diff --git a/apps/contacts/ajax/saveproperty.php b/apps/contacts/ajax/contact/saveproperty.php similarity index 82% rename from apps/contacts/ajax/saveproperty.php rename to apps/contacts/ajax/contact/saveproperty.php index 5d743c99df..fd541b7361 100644 --- a/apps/contacts/ajax/saveproperty.php +++ b/apps/contacts/ajax/contact/saveproperty.php @@ -19,7 +19,9 @@ * License along with this library. If not, see . * */ -require_once 'loghandler.php'; + +require_once __DIR__.'/../loghandler.php'; + // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); @@ -41,9 +43,9 @@ if(!$checksum) { } if(is_array($value)) { $value = array_map('strip_tags', $value); - // NOTE: Important, otherwise the compound value will be + // NOTE: Important, otherwise the compound value will be // set in the order the fields appear in the form! - ksort($value); + ksort($value); //if($name == 'CATEGORIES') { // $value = OC_Contacts_VCard::escapeDelimiters($value, ','); //} else { @@ -56,12 +58,16 @@ if(is_array($value)) { $vcard = OC_Contacts_App::getContactVCard( $id ); $line = OC_Contacts_App::getPropertyLineByChecksum($vcard, $checksum); if(is_null($line)) { - bailOut(OC_Contacts_App::$l10n->t('Information about vCard is incorrect. Please reload the page: ').$checksum); + bailOut(OC_Contacts_App::$l10n->t( + 'Information about vCard is incorrect. Please reload the page: ').$checksum + ); } $element = $vcard->children[$line]->name; if($element != $name) { - bailOut(OC_Contacts_App::$l10n->t('Something went FUBAR. ').$name.' != '.$element); + bailOut(OC_Contacts_App::$l10n->t( + 'Something went FUBAR. ').$name.' != '.$element + ); } /* preprocessing value */ @@ -91,11 +97,13 @@ if(!$value) { /* setting value */ switch($element) { case 'BDAY': - // I don't use setDateTime() because that formats it as YYYYMMDD instead of YYYY-MM-DD - // which is what the RFC recommends. + // I don't use setDateTime() because that formats it as YYYYMMDD instead + // of YYYY-MM-DD which is what the RFC recommends. $vcard->children[$line]->setValue($value); $vcard->children[$line]->parameters = array(); - $vcard->children[$line]->add(new Sabre_VObject_Parameter('VALUE', 'DATE')); + $vcard->children[$line]->add( + new Sabre_VObject_Parameter('VALUE', 'DATE') + ); debug('Setting value:'.$name.' '.$vcard->children[$line]); break; case 'CATEGORIES': @@ -114,7 +122,10 @@ if(!$value) { debug('Adding parameter: '.$key); foreach($parameter as $val) { debug('Adding parameter: '.$key.'=>'.$val); - $vcard->children[$line]->add(new Sabre_VObject_Parameter($key, strtoupper(strip_tags($val)))); + $vcard->children[$line]->add(new Sabre_VObject_Parameter( + $key, + strtoupper(strip_tags($val))) + ); } } } @@ -134,4 +145,9 @@ if(!OC_Contacts_VCard::edit($id, $vcard)) { exit(); } -OCP\JSON::success(array('data' => array( 'line' => $line, 'checksum' => $checksum, 'oldchecksum' => $_POST['checksum'] ))); +OCP\JSON::success(array('data' => array( + 'line' => $line, + 'checksum' => $checksum, + 'oldchecksum' => $_POST['checksum'], + 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U'), +))); diff --git a/apps/contacts/ajax/createaddressbook.php b/apps/contacts/ajax/createaddressbook.php deleted file mode 100644 index 8dbd63f642..0000000000 --- a/apps/contacts/ajax/createaddressbook.php +++ /dev/null @@ -1,36 +0,0 @@ - - * Copyright (c) 2011 Bart Visscher - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); -require_once 'loghandler.php'; - -$userid = OCP\USER::getUser(); -$name = trim(strip_tags($_POST['name'])); -if(!$name) { - bailOut('Cannot add addressbook with an empty name.'); -} -$bookid = OC_Contacts_Addressbook::add($userid, $name, null); -if(!$bookid) { - bailOut('Error adding addressbook: '.$name); -} - -if(!OC_Contacts_Addressbook::setActive($bookid, 1)) { - bailOut('Error activating addressbook.'); -} -$addressbook = OC_Contacts_App::getAddressbook($bookid); -$tmpl = new OCP\Template('contacts', 'part.chooseaddressbook.rowfields'); -$tmpl->assign('addressbook', $addressbook); -OCP\JSON::success(array( - 'page' => $tmpl->fetchPage(), - 'addressbook' => $addressbook, -)); diff --git a/apps/contacts/ajax/editaddressbook.php b/apps/contacts/ajax/editaddressbook.php deleted file mode 100644 index 4bc77302e5..0000000000 --- a/apps/contacts/ajax/editaddressbook.php +++ /dev/null @@ -1,16 +0,0 @@ - - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -$addressbook = OC_Contacts_App::getAddressbook($_GET['bookid']); -$tmpl = new OCP\Template("contacts", "part.editaddressbook"); -$tmpl->assign('new', false); -$tmpl->assign('addressbook', $addressbook); -$tmpl->printPage(); diff --git a/apps/contacts/ajax/savecrop.php b/apps/contacts/ajax/savecrop.php index 8ee2e46bf0..2483d0f712 100644 --- a/apps/contacts/ajax/savecrop.php +++ b/apps/contacts/ajax/savecrop.php @@ -25,7 +25,7 @@ OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); // Firefox and Konqueror tries to download application/json for me. --Arthur -OCP\JSON::setContentTypeHeader('text/plain'); +OCP\JSON::setContentTypeHeader('text/plain; charset=utf-8'); require_once 'loghandler.php'; @@ -57,48 +57,54 @@ if($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, + '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)) { - $card = OC_Contacts_App::getContactVCard($id); - if(!$card) { + if(($image->width() <= 200 && $image->height() <= 200) + || $image->resize(200)) { + $vcard = OC_Contacts_App::getContactVCard($id); + if(!$vcard) { OC_Cache::remove($tmpkey); - bailOut(OC_Contacts_App::$l10n->t('Error getting contact object.')); + bailOut(OC_Contacts_App::$l10n + ->t('Error getting contact object.')); } - if($card->__isset('PHOTO')) { + if($vcard->__isset('PHOTO')) { OCP\Util::writeLog('contacts', - 'savecrop.php: PHOTO property exists.', + 'savecrop.php: PHOTO property exists.', OCP\Util::DEBUG); - $property = $card->__get('PHOTO'); + $property = $vcard->__get('PHOTO'); if(!$property) { OC_Cache::remove($tmpkey); - bailOut(OC_Contacts_App::$l10n->t('Error getting PHOTO property.')); + 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); + $property->parameters[] + = new Sabre_VObject_Parameter('ENCODING', 'b'); + $property->parameters[] + = new Sabre_VObject_Parameter('TYPE', $image->mimeType()); + $vcard->__set('PHOTO', $property); } else { OCP\Util::writeLog('contacts', - 'savecrop.php: files: Adding PHOTO property.', + 'savecrop.php: files: Adding PHOTO property.', OCP\Util::DEBUG); - $card->addProperty('PHOTO', - $image->__toString(), array('ENCODING' => 'b', + $vcard->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)) { + $vcard->setString('REV', $now->format(DateTime::W3C)); + if(!OC_Contacts_VCard::edit($id, $vcard)) { 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))); + OCP\JSON::success(array( + 'data' => array( + 'id' => $id, + 'width' => $image->width(), + 'height' => $image->height(), + 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U') + ) + )); } else { bailOut(OC_Contacts_App::$l10n->t('Error resizing image')); } diff --git a/apps/contacts/ajax/uploadphoto.php b/apps/contacts/ajax/uploadphoto.php index 4cd38db8c7..34830b291d 100644 --- a/apps/contacts/ajax/uploadphoto.php +++ b/apps/contacts/ajax/uploadphoto.php @@ -26,7 +26,7 @@ OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); // Firefox and Konqueror tries to download application/json for me. --Arthur -OCP\JSON::setContentTypeHeader('text/plain'); +OCP\JSON::setContentTypeHeader('text/plain; charset=utf-8'); require_once 'loghandler.php'; $l10n = OC_Contacts_App::$l10n; // If it is a Drag'n'Drop transfer it's handled here. @@ -50,9 +50,9 @@ if ($fn) { if(OC_Cache::set($tmpkey, $image->data(), 600)) { OCP\JSON::success(array( 'data' => array( - 'mime'=>$_SERVER['CONTENT_TYPE'], - 'name'=>$fn, - 'id'=>$id, + 'mime'=>$_SERVER['CONTENT_TYPE'], + 'name'=>$fn, + 'id'=>$id, 'tmp'=>$tmpkey))); exit(); } else { @@ -100,8 +100,8 @@ if(file_exists($file['tmp_name'])) { 'data' => array( 'mime'=>$file['type'], 'size'=>$file['size'], - 'name'=>$file['name'], - 'id'=>$_POST['id'], + 'name'=>$file['name'], + 'id'=>$_POST['id'], 'tmp'=>$tmpkey, ))); exit(); diff --git a/apps/contacts/appinfo/app.php b/apps/contacts/appinfo/app.php index cbbbbc79e5..7e73f315dd 100644 --- a/apps/contacts/appinfo/app.php +++ b/apps/contacts/appinfo/app.php @@ -18,7 +18,5 @@ OCP\App::addNavigationEntry( array( 'icon' => OCP\Util::imagePath( 'settings', 'users.svg' ), 'name' => OC_L10N::get('contacts')->t('Contacts') )); - -OCP\App::registerPersonal('contacts', 'settings'); OCP\Util::addscript('contacts', 'loader'); OC_Search::registerProvider('OC_Search_Provider_Contacts'); diff --git a/apps/contacts/appinfo/remote.php b/apps/contacts/appinfo/remote.php index fd5604aec6..9eee55583a 100644 --- a/apps/contacts/appinfo/remote.php +++ b/apps/contacts/appinfo/remote.php @@ -36,10 +36,13 @@ $principalBackend = new OC_Connector_Sabre_Principal(); $carddavBackend = new OC_Connector_Sabre_CardDAV(); // Root nodes -$nodes = array( - new Sabre_CalDAV_Principal_Collection($principalBackend), +$collection = new Sabre_CalDAV_Principal_Collection($principalBackend); +$collection->disableListing = true; // Disable listening + +$nodes = array( + $collection, new Sabre_CardDAV_AddressBookRoot($principalBackend, $carddavBackend), -); + ); // Fire up server $server = new Sabre_DAV_Server($nodes); diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css index ddae27da21..c5308c4d25 100644 --- a/apps/contacts/css/contacts.css +++ b/apps/contacts/css/contacts.css @@ -14,8 +14,8 @@ #bottomcontrols { padding: 0; bottom:0px; height:2.8em; width: 20em; margin:0; background:#eee; border-top:1px solid #ccc; position:fixed; -moz-box-shadow: 0 -3px 3px -3px #000; -webkit-box-shadow: 0 -3px 3px -3px #000; box-shadow: 0 -3px 3px -3px #000;} #bottomcontrols img { margin-top: 0.35em; } #uploadprogressbar { display: none; padding: 0; bottom: 3em; height:2em; width: 20em; margin:0; background:#eee; border:1px solid #ccc; position:fixed; } -#contacts_newcontact, #contacts_import, #chooseaddressbook { float: left; margin: 0.2em 0 0 1em; border: 0 none; border-radius: 0; -moz-box-shadow: none; box-shadow: none; outline: 0 none; } -#chooseaddressbook { float: right; margin: 0.2em 1em 0 0; } +#contacts_newcontact, #bottomcontrols .settings { float: left; margin: 0.2em 0 0 1em; border: 0 none; border-radius: 0; -moz-box-shadow: none; box-shadow: none; outline: 0 none; } +#bottomcontrols .settings { float: right; margin: 0.2em 1em 0 0; } #actionbar { clear: both; height: 30px;} #contacts_deletecard {position:relative; float:left; background:url('%webroot%/core/img/actions/delete.svg') no-repeat center; } #contacts_downloadcard {position:relative; float:left; background:url('%webroot%/core/img/actions/download.svg') no-repeat center; } @@ -125,7 +125,7 @@ input[type="checkbox"] { width: 20px; height: 20px; vertical-align: bottom; } .typelist[type="button"] { float: left; max-width: 10em; border: 0; background-color: #fff; color: #bbb} /* for multiselect */ .typelist[type="button"]:hover { color: #777; } /* for multiselect */ .addresslist { clear: both; font-weight: bold; } -#ninjahelp { position: absolute; bottom: 0; left: 0; right: 0; padding: 1em; margin: 1em; border: thin solid #eee; border-radius: 5px; background-color: #DBDBDB; opacity: 0.9; } +#ninjahelp { position: absolute; bottom: 0; left: 0; right: 0; padding: 1em; margin: 1em; opacity: 0.9; } #ninjahelp .close { position: absolute; top: 5px; right: 5px; height: 20px; width: 20px; } #ninjahelp h2, .help-section h3 { width: 100%; font-weight: bold; text-align: center; } #ninjahelp h2 { font-size: 1.4em; } @@ -134,3 +134,13 @@ input[type="checkbox"] { width: 20px; height: 20px; vertical-align: bottom; } .help-section dl { width: 100%; float: left; clear: right; margin: 0; padding: 0; cursor: normal; } .help-section dt { display: table-cell; clear: left; float: left; width: 35%; margin: 0; padding: 0.2em; text-align: right; text-overflow: ellipsis; vertical-align: text-bottom; font-weight: bold: } .help-section dd { display: table-cell; clear: right; float: left; margin: 0; padding: 0.2em; white-space: nowrap; vertical-align: text-bottom; } +.contacts-settings dl { width: 100%; } +.addressbooks-settings table { width: 100%; } +.addressbooks-settings .actions { width: 100%; white-space: nowrap; } +.addressbooks-settings .actions * { float: left; } +.addressbooks-settings .actions input.name { width: 5em; } +.addressbooks-settings .actions input.name { width: 7em; } +.addressbooks-settings a.action { opacity: 0.2; } +.addressbooks-settings a.action:hover { opacity: 1; } +.addressbooks-settings td.active, .addressbooks-settings td.action { width: 20px; } + diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index 4c6c8bf3d9..67bfa9847e 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -10,1712 +10,1700 @@ String.prototype.strip_tags = function(){ return stripped; }; -Contacts={ - UI:{ - /** - * Arguments: - * message: The text message to show. The only mandatory parameter. - * timeout: The timeout in seconds before the notification disappears. Default 10. - * timeouthandler: A function to run on timeout. - * clickhandler: A function to run on click. If a timeouthandler is given it will be cancelled. - * data: An object that will be passed as argument to the timeouthandler and clickhandler functions. - */ - notify:function(params) { - self = this; - if(!self.notifier) { +OC.Contacts={ + /** + * Arguments: + * message: The text message to show. + * timeout: The timeout in seconds before the notification disappears. Default 10. + * timeouthandler: A function to run on timeout. + * clickhandler: A function to run on click. If a timeouthandler is given it will be cancelled. + * data: An object that will be passed as argument to the timeouthandler and clickhandler functions. + * cancel: If set cancel all ongoing timer events and hide the notification. + */ + notify:function(params) { + var self = this; + if(!self.notifier) { + self.notifier = $('#notification'); + } + if(params.cancel) { + self.notifier.off('click'); + for(var id in self.notifier.data()) { + if($.isNumeric(id)) { + clearTimeout(parseInt(id)); + } + } + self.notifier.text('').fadeOut().removeData(); + return; + } + self.notifier.text(params.message); + self.notifier.fadeIn(); + self.notifier.on('click', function() { $(this).fadeOut();}); + var timer = setTimeout(function() { + if(!self || !self.notifier) { + var self = OC.Contacts; self.notifier = $('#notification'); } - self.notifier.text(params.message); - self.notifier.fadeIn(); - self.notifier.on('click', function() { $(this).fadeOut();}); - var timer = setTimeout(function() { - self.notifier.fadeOut(); - if(params.timeouthandler && $.isFunction(params.timeouthandler)) { - params.timeouthandler(self.notifier.data(dataid)); - self.notifier.off('click'); - self.notifier.removeData(dataid); + self.notifier.fadeOut(); + if(params.timeouthandler && $.isFunction(params.timeouthandler)) { + params.timeouthandler(self.notifier.data(dataid)); + self.notifier.off('click'); + self.notifier.removeData(dataid); + } + }, params.timeout && $.isNumeric(params.timeout) ? parseInt(params.timeout)*1000 : 10000); + var dataid = timer.toString(); + if(params.data) { + self.notifier.data(dataid, params.data); + } + if(params.clickhandler && $.isFunction(params.clickhandler)) { + self.notifier.on('click', function() { + if(!self || !self.notifier) { + var self = OC.Contacts; + self.notifier = $(this); } - }, params.timeout && $.isNumeric(params.timeout) ? parseInt(params.timeout)*1000 : 10000); - var dataid = timer.toString(); - if(params.data) { - self.notifier.data(dataid, params.data); + clearTimeout(timer); + self.notifier.off('click'); + params.clickhandler(self.notifier.data(dataid)); + self.notifier.removeData(dataid); + }); + } + }, + notImplemented:function() { + OC.dialogs.alert(t('contacts', 'Sorry, this functionality has not been implemented yet'), t('contacts', 'Not implemented')); + }, + searchOSM:function(obj) { + var adr = OC.Contacts.propertyContainerFor(obj).find('.adr').val(); + if(adr == undefined) { + OC.dialogs.alert(t('contacts', 'Couldn\'t get a valid address.'), t('contacts', 'Error')); + return; + } + // FIXME: I suck at regexp. /Tanghus + var adrarr = adr.split(';'); + var adrstr = ''; + if(adrarr[2].trim() != '') { + adrstr = adrstr + adrarr[2].trim() + ','; + } + if(adrarr[3].trim() != '') { + adrstr = adrstr + adrarr[3].trim() + ','; + } + if(adrarr[4].trim() != '') { + adrstr = adrstr + adrarr[4].trim() + ','; + } + if(adrarr[5].trim() != '') { + adrstr = adrstr + adrarr[5].trim() + ','; + } + if(adrarr[6].trim() != '') { + adrstr = adrstr + adrarr[6].trim(); + } + adrstr = encodeURIComponent(adrstr); + var uri = 'http://open.mapquestapi.com/nominatim/v1/search.php?q=' + adrstr + '&limit=10&addressdetails=1&polygon=1&zoom='; + var newWindow = window.open(uri,'_blank'); + newWindow.focus(); + }, + mailTo:function(obj) { + var adr = OC.Contacts.propertyContainerFor($(obj)).find('input[type="email"]').val().trim(); + if(adr == '') { + OC.dialogs.alert(t('contacts', 'Please enter an email address.'), t('contacts', 'Error')); + return; + } + window.location.href='mailto:' + adr; + }, + propertyContainerFor:function(obj) { + return $(obj).parents('.propertycontainer').first(); + }, + checksumFor:function(obj) { + return $(obj).parents('.propertycontainer').first().data('checksum'); + }, + propertyTypeFor:function(obj) { + return $(obj).parents('.propertycontainer').first().data('element'); + }, + loading:function(obj, state) { + if(state) { + $(obj).addClass('loading'); + } else { + $(obj).removeClass('loading'); + } + }, + showCardDAVUrl:function(username, bookname){ + $('#carddav_url').val(totalurl + '/' + username + '/' + decodeURIComponent(bookname)); + $('#carddav_url').show(); + $('#carddav_url_close').show(); + }, + loadListHandlers:function() { + $('.propertylist li a.delete').unbind('click'); + $('.propertylist li a.delete').unbind('keydown'); + var deleteItem = function(obj) { + obj.tipsy('hide'); + OC.Contacts.Card.deleteProperty(obj, 'list'); + } + $('.propertylist li a.delete, .addresscard .delete').click(function() { deleteItem($(this)) }); + $('.propertylist li a.delete, .addresscard .delete').keydown(function() { deleteItem($(this)) }); + $('.propertylist li a.mail').click(function() { OC.Contacts.mailTo(this) }); + $('.propertylist li a.mail').keydown(function() { OC.Contacts.mailTo(this) }); + $('.addresscard .globe').click(function() { $(this).tipsy('hide');OC.Contacts.searchOSM(this); }); + $('.addresscard .globe').keydown(function() { $(this).tipsy('hide');OC.Contacts.searchOSM(this); }); + $('.addresscard .edit').click(function() { $(this).tipsy('hide');OC.Contacts.Card.editAddress(this, false); }); + $('.addresscard .edit').keydown(function() { $(this).tipsy('hide');OC.Contacts.Card.editAddress(this, false); }); + $('.addresscard,.propertylist li,.propertycontainer').hover( + function () { + $(this).find('.globe,.mail,.delete,.edit').animate({ opacity: 1.0 }, 200, function() {}); + }, + function () { + $(this).find('.globe,.mail,.delete,.edit').animate({ opacity: 0.1 }, 200, function() {}); } - if(params.clickhandler && $.isFunction(params.clickhandler)) { - self.notifier.on('click', function() { - clearTimeout(timer); - self.notifier.off('click'); - params.clickhandler(self.notifier.data(dataid)); - self.notifier.removeData(dataid); - }); - } - }, - notImplemented:function() { - OC.dialogs.alert(t('contacts', 'Sorry, this functionality has not been implemented yet'), t('contacts', 'Not implemented')); - }, - searchOSM:function(obj) { - var adr = Contacts.UI.propertyContainerFor(obj).find('.adr').val(); - if(adr == undefined) { - OC.dialogs.alert(t('contacts', 'Couldn\'t get a valid address.'), t('contacts', 'Error')); - return; - } - // FIXME: I suck at regexp. /Tanghus - var adrarr = adr.split(';'); - var adrstr = ''; - if(adrarr[2].trim() != '') { - adrstr = adrstr + adrarr[2].trim() + ','; - } - if(adrarr[3].trim() != '') { - adrstr = adrstr + adrarr[3].trim() + ','; - } - if(adrarr[4].trim() != '') { - adrstr = adrstr + adrarr[4].trim() + ','; - } - if(adrarr[5].trim() != '') { - adrstr = adrstr + adrarr[5].trim() + ','; - } - if(adrarr[6].trim() != '') { - adrstr = adrstr + adrarr[6].trim(); - } - adrstr = encodeURIComponent(adrstr); - var uri = 'http://open.mapquestapi.com/nominatim/v1/search.php?q=' + adrstr + '&limit=10&addressdetails=1&polygon=1&zoom='; - var newWindow = window.open(uri,'_blank'); + ); + }, + loadHandlers:function() { + var deleteItem = function(obj) { + obj.tipsy('hide'); + OC.Contacts.Card.deleteProperty(obj, 'single'); + } + var goToUrl = function(obj) { + var url = OC.Contacts.propertyContainerFor(obj).find('#url').val(); + if(url != '') { + var newWindow = window.open(url,'_blank'); newWindow.focus(); - }, - mailTo:function(obj) { - var adr = Contacts.UI.propertyContainerFor($(obj)).find('input[type="email"]').val().trim(); - if(adr == '') { - OC.dialogs.alert(t('contacts', 'Please enter an email address.'), t('contacts', 'Error')); - return; } - window.location.href='mailto:' + adr; - }, - propertyContainerFor:function(obj) { - return $(obj).parents('.propertycontainer').first(); - }, - checksumFor:function(obj) { - return $(obj).parents('.propertycontainer').first().data('checksum'); - }, - propertyTypeFor:function(obj) { - return $(obj).parents('.propertycontainer').first().data('element'); - }, - loading:function(obj, state) { - if(state) { - $(obj).addClass('loading'); - } else { - $(obj).removeClass('loading'); + } + + $('#identityprops a.delete').click( function() { deleteItem($(this)) }); + $('#identityprops a.delete').keydown( function() { deleteItem($(this)) }); + $('#categories_value a.edit').click( function() { $(this).tipsy('hide');OCCategories.edit(); } ); + $('#categories_value a.edit').keydown( function() { $(this).tipsy('hide');OCCategories.edit(); } ); + $('#url_value a.globe').click( function() { $(this).tipsy('hide');goToUrl($(this)); } ); + $('#url_value a.globe').keydown( function() { $(this).tipsy('hide');goToUrl($(this)); } ); + $('#fn_select').combobox({ + 'id': 'fn', + 'name': 'value', + 'classes': ['contacts_property', 'nonempty', 'huge', 'tip', 'float'], + 'attributes': {'placeholder': t('contacts', 'Enter name')}, + 'title': t('contacts', 'Format custom, Short name, Full name, Reverse or Reverse with comma')}); + $('#bday').datepicker({ + dateFormat : 'dd-mm-yy' + }); + // Style phone types + $('#phonelist').find('select.contacts_property').multiselect({ + noneSelectedText: t('contacts', 'Select type'), + header: false, + selectedList: 4, + classes: 'typelist' + }); + $('#edit_name').click(function(){OC.Contacts.Card.editName()}); + $('#edit_name').keydown(function(){OC.Contacts.Card.editName()}); + + $('#phototools li a').click(function() { + $(this).tipsy('hide'); + }); + $('#contacts_details_photo_wrapper').hover( + function () { + $('#phototools').slideDown(200); + }, + function () { + $('#phototools').slideUp(200); } - }, - showCardDAVUrl:function(username, bookname){ - $('#carddav_url').val(totalurl + '/' + username + '/' + decodeURIComponent(bookname)); - $('#carddav_url').show(); - $('#carddav_url_close').show(); - }, - loadListHandlers:function() { - $('.propertylist li a.delete').unbind('click'); - $('.propertylist li a.delete').unbind('keydown'); - var deleteItem = function(obj) { - obj.tipsy('hide'); - Contacts.UI.Card.deleteProperty(obj, 'list'); + ); + $('#phototools').hover( + function () { + $(this).removeClass('transparent'); + }, + function () { + $(this).addClass('transparent'); } - $('.propertylist li a.delete, .addresscard .delete').click(function() { deleteItem($(this)) }); - $('.propertylist li a.delete, .addresscard .delete').keydown(function() { deleteItem($(this)) }); - $('.propertylist li a.mail').click(function() { Contacts.UI.mailTo(this) }); - $('.propertylist li a.mail').keydown(function() { Contacts.UI.mailTo(this) }); - $('.addresscard .globe').click(function() { $(this).tipsy('hide');Contacts.UI.searchOSM(this); }); - $('.addresscard .globe').keydown(function() { $(this).tipsy('hide');Contacts.UI.searchOSM(this); }); - $('.addresscard .edit').click(function() { $(this).tipsy('hide');Contacts.UI.Card.editAddress(this, false); }); - $('.addresscard .edit').keydown(function() { $(this).tipsy('hide');Contacts.UI.Card.editAddress(this, false); }); - $('.addresscard,.propertylist li,.propertycontainer').hover( - function () { - $(this).find('.globe,.mail,.delete,.edit').animate({ opacity: 1.0 }, 200, function() {}); - }, - function () { - $(this).find('.globe,.mail,.delete,.edit').animate({ opacity: 0.1 }, 200, function() {}); + ); + $('#phototools .upload').click(function() { + $('#file_upload_start').trigger('click'); + }); + $('#phototools .cloud').click(function() { + OC.dialogs.filepicker(t('contacts', 'Select photo'), OC.Contacts.Card.cloudPhotoSelected, false, 'image', true); + }); + /* Initialize the photo edit dialog */ + $('#edit_photo_dialog').dialog({ + autoOpen: false, modal: true, height: 'auto', width: 'auto' + }); + $('#edit_photo_dialog' ).dialog( 'option', 'buttons', [ + { + text: "Ok", + click: function() { + OC.Contacts.Card.savePhoto(this); + $(this).dialog('close'); } - ); - }, - loadHandlers:function() { - var deleteItem = function(obj) { - obj.tipsy('hide'); - Contacts.UI.Card.deleteProperty(obj, 'single'); + }, + { + text: "Cancel", + click: function() { $(this).dialog('close'); } } + ] ); - var goToUrl = function(obj) { - var url = Contacts.UI.propertyContainerFor(obj).find('#url').val(); - if(url != '') { - var newWindow = window.open(url,'_blank'); - newWindow.focus(); - } + // Name has changed. Update it and reorder. + $('#fn').change(function(){ + var name = $('#fn').val().strip_tags(); + var item = $('.contacts li[data-id="'+OC.Contacts.Card.id+'"]').detach(); + $(item).find('a').html(name); + OC.Contacts.Card.fn = name; + OC.Contacts.Contacts.insertContact({contact:item}); + OC.Contacts.Contacts.scrollTo(OC.Contacts.Card.id); + }); + + $('#contacts_deletecard').click( function() { OC.Contacts.Card.delayedDelete();return false;} ); + $('#contacts_deletecard').keydown( function(event) { + if(event.which == 13 || event.which == 32) { + OC.Contacts.Card.delayedDelete(); } + return false; + }); - $('#identityprops a.delete').click( function() { deleteItem($(this)) }); - $('#identityprops a.delete').keydown( function() { deleteItem($(this)) }); - $('#categories_value a.edit').click( function() { $(this).tipsy('hide');OCCategories.edit(); } ); - $('#categories_value a.edit').keydown( function() { $(this).tipsy('hide');OCCategories.edit(); } ); - $('#url_value a.globe').click( function() { $(this).tipsy('hide');goToUrl($(this)); } ); - $('#url_value a.globe').keydown( function() { $(this).tipsy('hide');goToUrl($(this)); } ); - $('#fn_select').combobox({ - 'id': 'fn', - 'name': 'value', - 'classes': ['contacts_property', 'nonempty', 'huge', 'tip', 'float'], - 'attributes': {'placeholder': t('contacts', 'Enter name')}, - 'title': t('contacts', 'Format custom, Short name, Full name, Reverse or Reverse with comma')}); - $('#bday').datepicker({ - dateFormat : 'dd-mm-yy' - }); - // Style phone types - $('#phonelist').find('select.contacts_property').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - $('#edit_name').click(function(){Contacts.UI.Card.editName()}); - $('#edit_name').keydown(function(){Contacts.UI.Card.editName()}); - - $('#phototools li a').click(function() { - $(this).tipsy('hide'); - }); - $('#contacts_details_photo_wrapper').hover( - function () { - $('#phototools').slideDown(200); - }, - function () { - $('#phototools').slideUp(200); - } - ); - $('#phototools').hover( - function () { - $(this).removeClass('transparent'); - }, - function () { - $(this).addClass('transparent'); - } - ); - $('#phototools .upload').click(function() { - $('#file_upload_start').trigger('click'); - }); - $('#phototools .cloud').click(function() { - OC.dialogs.filepicker(t('contacts', 'Select photo'), Contacts.UI.Card.cloudPhotoSelected, false, 'image', true); - }); - /* Initialize the photo edit dialog */ - $('#edit_photo_dialog').dialog({ - autoOpen: false, modal: true, height: 'auto', width: 'auto' - }); - $('#edit_photo_dialog' ).dialog( 'option', 'buttons', [ - { - text: "Ok", - click: function() { - Contacts.UI.Card.savePhoto(this); - $(this).dialog('close'); - } - }, - { - text: "Cancel", - click: function() { $(this).dialog('close'); } - } - ] ); - - // Name has changed. Update it and reorder. - $('#fn').change(function(){ - var name = $('#fn').val().strip_tags(); - var item = $('.contacts li[data-id="'+Contacts.UI.Card.id+'"]').detach(); - $(item).find('a').html(name); - Contacts.UI.Card.fn = name; - Contacts.UI.Contacts.insertContact({contact:item}); - Contacts.UI.Contacts.scrollTo(Contacts.UI.Card.id); - }); - - $('#contacts_deletecard').click( function() { Contacts.UI.Card.delayedDelete();return false;} ); - $('#contacts_deletecard').keydown( function(event) { - if(event.which == 13 || event.which == 32) { - Contacts.UI.Card.delayedDelete(); - } - return false; - }); - - $('#contacts_downloadcard').click( function() { Contacts.UI.Card.doExport();return false;} ); - $('#contacts_downloadcard').keydown( function(event) { - if(event.which == 13 || event.which == 32) { - Contacts.UI.Card.doExport(); - } - return false; - }); - - // Profile picture upload handling - // New profile picture selected - $('#file_upload_start').change(function(){ - Contacts.UI.Card.uploadPhoto(this.files); - }); - $('#contacts_details_photo_wrapper').bind('dragover',function(event){ - $(event.target).addClass('droppable'); - event.stopPropagation(); - event.preventDefault(); - }); - $('#contacts_details_photo_wrapper').bind('dragleave',function(event){ - $(event.target).removeClass('droppable'); - //event.stopPropagation(); - //event.preventDefault(); - }); - $('#contacts_details_photo_wrapper').bind('drop',function(event){ - event.stopPropagation(); - event.preventDefault(); - $(event.target).removeClass('droppable'); - $.fileUpload(event.originalEvent.dataTransfer.files); - }); - - $('#categories').multiple_autocomplete({source: categories}); - $('#contacts_deletecard').tipsy({gravity: 'ne'}); - $('#contacts_downloadcard').tipsy({gravity: 'ne'}); - $('#contacts_propertymenu_button').tipsy(); - $('#contacts_newcontact, #contacts_import, #chooseaddressbook').tipsy({gravity: 'sw'}); - - $('body').click(function(e){ - if(!$(e.target).is('#contacts_propertymenu_button')) { - $('#contacts_propertymenu_dropdown').hide(); - } - }); - function propertyMenu(){ - var menu = $('#contacts_propertymenu_dropdown'); - if(menu.is(':hidden')) { - menu.show(); - menu.find('li').first().focus(); - } else { - menu.hide(); - } + $('#contacts_downloadcard').click( function() { OC.Contacts.Card.doExport();return false;} ); + $('#contacts_downloadcard').keydown( function(event) { + if(event.which == 13 || event.which == 32) { + OC.Contacts.Card.doExport(); } - $('#contacts_propertymenu_button').click(propertyMenu); - $('#contacts_propertymenu_button').keydown(propertyMenu); - function propertyMenuItem(){ - var type = $(this).data('type'); - Contacts.UI.Card.addProperty(type); + return false; + }); + + // Profile picture upload handling + // New profile picture selected + $('#file_upload_start').change(function(){ + OC.Contacts.Card.uploadPhoto(this.files); + }); + $('#contacts_details_photo_wrapper').bind('dragover',function(event){ + $(event.target).addClass('droppable'); + event.stopPropagation(); + event.preventDefault(); + }); + $('#contacts_details_photo_wrapper').bind('dragleave',function(event){ + $(event.target).removeClass('droppable'); + }); + $('#contacts_details_photo_wrapper').bind('drop',function(event){ + event.stopPropagation(); + event.preventDefault(); + $(event.target).removeClass('droppable'); + $.fileUpload(event.originalEvent.dataTransfer.files); + }); + + $('#categories').multiple_autocomplete({source: categories}); + $('#contacts_deletecard').tipsy({gravity: 'ne'}); + $('#contacts_downloadcard').tipsy({gravity: 'ne'}); + $('#contacts_propertymenu_button').tipsy(); + $('#contacts_newcontact, #contacts_import, #bottomcontrols .settings').tipsy({gravity: 'sw'}); + + $('body').click(function(e){ + if(!$(e.target).is('#contacts_propertymenu_button')) { $('#contacts_propertymenu_dropdown').hide(); } - $('#contacts_propertymenu_dropdown a').click(propertyMenuItem); - $('#contacts_propertymenu_dropdown a').keydown(propertyMenuItem); - }, - Card:{ - update:function(params) { // params {cid:int, aid:int} - if(!params) { params = {}; } - $('#contacts li,#contacts h3').removeClass('active'); - console.log('Card, cid: ' + params.cid + ' aid: ' + params.aid); - var newid, bookid, firstitem; - if(!parseInt(params.cid) && !parseInt(params.aid)) { - firstitem = $('#contacts ul').first().find('li:first-child'); - if(firstitem.length > 0) { - newid = parseInt(firstitem.data('id')); - bookid = parseInt(firstitem.data('bookid')); + }); + function propertyMenu(){ + var menu = $('#contacts_propertymenu_dropdown'); + if(menu.is(':hidden')) { + menu.show(); + menu.find('li').first().focus(); + } else { + menu.hide(); + } + } + $('#contacts_propertymenu_button').click(propertyMenu); + $('#contacts_propertymenu_button').keydown(propertyMenu); + function propertyMenuItem(){ + var type = $(this).data('type'); + OC.Contacts.Card.addProperty(type); + $('#contacts_propertymenu_dropdown').hide(); + } + $('#contacts_propertymenu_dropdown a').click(propertyMenuItem); + $('#contacts_propertymenu_dropdown a').keydown(propertyMenuItem); + }, + Card:{ + update:function(params) { // params {cid:int, aid:int} + if(!params) { params = {}; } + $('#contacts li,#contacts h3').removeClass('active'); + console.log('Card, cid: ' + params.cid + ' aid: ' + params.aid); + var newid, bookid, firstitem; + if(!parseInt(params.cid) && !parseInt(params.aid)) { + firstitem = $('#contacts ul').find('li:first-child'); + if(firstitem.length > 0) { + if(firstitem.length > 1) { + firstitem = firstitem.first(); } - } else if(!parseInt(params.cid) && parseInt(params.aid)) { - bookid = parseInt(params.aid); - newid = parseInt($('#contacts').find('li[data-bookid="'+bookid+'"]').first().data('id')); - } else if(parseInt(params.cid) && !parseInt(params.aid)) { - newid = parseInt(params.cid); - var listitem = Contacts.UI.Contacts.getContact(newid); //$('#contacts li[data-id="'+newid+'"]'); - console.log('Is contact in list? ' + listitem.length); - if(listitem.length) { - //bookid = parseInt($('#contacts li[data-id="'+newid+'"]').data('bookid')); - bookid = parseInt(Contacts.UI.Contacts.getContact(newid).data('bookid')); - } else { // contact isn't in list yet. - bookid = 'unknown'; - } - } else { - newid = parseInt(params.cid); - bookid = parseInt(params.aid); + newid = parseInt(firstitem.data('id')); + bookid = parseInt(firstitem.data('bookid')); } - if(!bookid || !newid) { - bookid = parseInt($('#contacts h3').first().data('id')); - newid = parseInt($('#contacts').find('li[data-bookid="'+bookid+'"]').first().data('id')); + } else if(!parseInt(params.cid) && parseInt(params.aid)) { + bookid = parseInt(params.aid); + newid = parseInt($('#contacts').find('li[data-bookid="'+bookid+'"]').first().data('id')); + } else if(parseInt(params.cid) && !parseInt(params.aid)) { + newid = parseInt(params.cid); + var listitem = OC.Contacts.Contacts.getContact(newid); //$('#contacts li[data-id="'+newid+'"]'); + console.log('Is contact in list? ' + listitem.length); + if(listitem.length) { + //bookid = parseInt($('#contacts li[data-id="'+newid+'"]').data('bookid')); + bookid = parseInt(OC.Contacts.Contacts.getContact(newid).data('bookid')); + } else { // contact isn't in list yet. + bookid = 'unknown'; } - console.log('newid: ' + newid + ' bookid: ' +bookid); - var localLoadContact = function(newid, bookid) { - if($('.contacts li').length > 0) { - $.getJSON(OC.filePath('contacts', 'ajax', 'contactdetails.php'),{'id':newid},function(jsondata){ - if(jsondata.status == 'success'){ - if(bookid == 'unknown') { - bookid = jsondata.data.addressbookid; - var contact = Contacts.UI.Contacts.insertContact({ - contactlist:$('#contacts ul[data-id="'+bookid+'"]'), - data:jsondata.data - }); - } - $('#contacts li[data-id="'+newid+'"],#contacts h3[data-id="'+bookid+'"]').addClass('active'); - $('#contacts ul[data-id="'+bookid+'"]').slideDown(300); - Contacts.UI.Card.loadContact(jsondata.data, bookid); - Contacts.UI.Contacts.scrollTo(newid); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - } - - // Make sure proper DOM is loaded. - if(!$('#card').length && newid) { - console.log('Loading card DOM'); - $.getJSON(OC.filePath('contacts', 'ajax', 'loadcard.php'),{requesttoken:requesttoken},function(jsondata){ - if(jsondata.status == 'success'){ - $('#rightcontent').html(jsondata.data.page).ready(function() { - Contacts.UI.loadHandlers(); - localLoadContact(newid, bookid); - }); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - else if(!newid) { - console.log('Loading intro'); - // load intro page - $.getJSON(OC.filePath('contacts', 'ajax', 'loadintro.php'),{},function(jsondata){ - if(jsondata.status == 'success'){ - id = ''; - $('#rightcontent').data('id',''); - $('#rightcontent').html(jsondata.data.page); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - else { - localLoadContact(newid, bookid); - } - }, - doExport:function() { - document.location.href = OC.linkTo('contacts', 'export.php') + '?contactid=' + this.id; - }, - editNew:function(){ // add a new contact - this.id = ''; this.fn = ''; this.fullname = ''; this.givname = ''; this.famname = ''; this.addname = ''; this.honpre = ''; this.honsuf = ''; - //Contacts.UI.Card.add(t('contacts', 'Contact')+';'+t('contacts', 'New')+';;;', t('contacts', 'New Contact'), '', true); - Contacts.UI.Card.add(';;;;;', '', '', true); - return false; - }, - add:function(n, fn, aid, isnew){ // add a new contact - console.log('Adding ' + fn); - aid = aid?aid:$('#contacts h3.active').first().data('id'); - var localAddcontact = function(n, fn, aid, isnew) { - $.post(OC.filePath('contacts', 'ajax', 'addcontact.php'), { n: n, fn: fn, aid: aid, isnew: isnew }, - function(jsondata) { - if (jsondata.status == 'success'){ - $('#rightcontent').data('id',jsondata.data.id); - var id = jsondata.data.id; - var aid = jsondata.data.aid; - $.getJSON(OC.filePath('contacts', 'ajax', 'contactdetails.php'),{'id':id},function(jsondata){ - if(jsondata.status == 'success'){ - Contacts.UI.Card.loadContact(jsondata.data, aid); - var item = Contacts.UI.Contacts.insertContact({data:jsondata.data}); - if(isnew) { // add some default properties - Contacts.UI.Card.addProperty('EMAIL'); - Contacts.UI.Card.addProperty('TEL'); - $('#fn').focus(); - } - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - $('#contact_identity').show(); - $('#actionbar').show(); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - - if(!$('#card').length) { - console.log('Loading card DOM'); - $.getJSON(OC.filePath('contacts', 'ajax', 'loadcard.php'),{'requesttoken': requesttoken},function(jsondata){ - if(jsondata.status == 'success'){ - $('#rightcontent').html(jsondata.data.page).ready(function() { - Contacts.UI.loadHandlers(); - localAddcontact(n, fn, aid, isnew); - }); - } else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } else { - localAddcontact(n, fn, aid, isnew); - } - }, - delayedDelete:function() { - /* TODO: - $(window).unload(function() { - deleteFilesInQueue(); - }); - */ - $('#contacts_deletecard').tipsy('hide'); - var newid = '', bookid; - var curlistitem = Contacts.UI.Contacts.getContact(this.id); - curlistitem.removeClass('active'); - var newlistitem = curlistitem.prev('li'); - if(!newlistitem) { - newlistitem = curlistitem.next('li'); - } - curlistitem.detach(); - if($(newlistitem).is('li')) { - newid = newlistitem.data('id'); - bookid = newlistitem.data('bookid'); - } - $('#rightcontent').data('id', newid); - - with(this) { - delete id; delete fn; delete fullname; delete shortname; delete famname; - delete givname; delete addname; delete honpre; delete honsuf; delete data; - } - + } else { + newid = parseInt(params.cid); + bookid = parseInt(params.aid); + } + if(!bookid || !newid) { + bookid = parseInt($('#contacts h3').first().data('id')); + newid = parseInt($('#contacts').find('li[data-bookid="'+bookid+'"]').first().data('id')); + } + console.log('newid: ' + newid + ' bookid: ' +bookid); + var localLoadContact = function(newid, bookid) { if($('.contacts li').length > 0) { - Contacts.UI.Card.update({cid:newid, aid:bookid}); - } else { - // load intro page - $.getJSON(OC.filePath('contacts', 'ajax', 'loadintro.php'),{},function(jsondata){ + $.getJSON(OC.filePath('contacts', 'ajax', 'contact/details.php'),{'id':newid},function(jsondata){ if(jsondata.status == 'success'){ - id = ''; - $('#rightcontent').html(jsondata.data.page).removeData('id'); - } - else{ + if(bookid == 'unknown') { + bookid = jsondata.data.addressbookid; + var contact = OC.Contacts.Contacts.insertContact({ + contactlist:$('#contacts ul[data-id="'+bookid+'"]'), + data:jsondata.data + }); + } + $('#contacts li[data-id="'+newid+'"],#contacts h3[data-id="'+bookid+'"]').addClass('active'); + $('#contacts ul[data-id="'+bookid+'"]').slideDown(300); + OC.Contacts.Card.loadContact(jsondata.data, bookid); + OC.Contacts.Contacts.scrollTo(newid); + } else { OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); } }); } - Contacts.UI.notify({ - data:curlistitem, - message:t('contacts','Click to undo deletion of "') + curlistitem.find('a').text() + '"', - timeouthandler:function(contact) { - Contacts.UI.Card.doDelete(contact.data('id')); - delete contact; - }, - clickhandler:function(contact) { - Contacts.UI.Contacts.insertContact({contact:contact}); - Contacts.UI.notify({message:t('contacts', 'Cancelled deletion of: "') + curlistitem.find('a').text() + '"'}); - } - }); - }, - doDelete:function(id) { - $.post(OC.filePath('contacts', 'ajax', 'deletecard.php'),{'id':id},function(jsondata) { - if(jsondata.status == 'error'){ + } + + // Make sure proper DOM is loaded. + if(!$('#card').length && newid) { + console.log('Loading card DOM'); + $.getJSON(OC.filePath('contacts', 'ajax', 'loadcard.php'),{requesttoken:requesttoken},function(jsondata){ + if(jsondata.status == 'success'){ + $('#rightcontent').html(jsondata.data.page).ready(function() { + OC.Contacts.loadHandlers(); + localLoadContact(newid, bookid); + }); + } else { OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); } }); - return false; - }, - loadContact:function(jsondata, bookid){ - this.data = jsondata; - this.id = this.data.id; - this.bookid = bookid; - $('#rightcontent').data('id',this.id); - this.populateNameFields(); - this.loadPhoto(); - this.loadMails(); - this.loadPhones(); - this.loadAddresses(); - this.loadSingleProperties(); - Contacts.UI.loadListHandlers(); - var note = $('#note'); - if(this.data.NOTE) { - note.data('checksum', this.data.NOTE[0]['checksum']); - var textarea = note.find('textarea'); - var txt = this.data.NOTE[0]['value']; - var nheight = txt.split('\n').length > 4 ? txt.split('\n').length+2 : 5; - textarea.css('min-height', nheight+'em'); - textarea.attr('rows', nheight); - textarea.val(txt); - note.show(); - textarea.expandingTextarea(); - $('#contacts_propertymenu_dropdown a[data-type="NOTE"]').parent().hide(); - } else { - note.removeData('checksum'); - note.find('textarea').val(''); - note.hide(); - $('#contacts_propertymenu_dropdown a[data-type="NOTE"]').parent().show(); - } - }, - loadSingleProperties:function() { - var props = ['BDAY', 'NICKNAME', 'ORG', 'URL', 'CATEGORIES']; - // Clear all elements - $('#ident .propertycontainer').each(function(){ - if(props.indexOf($(this).data('element')) > -1) { - $(this).data('checksum', ''); - $(this).find('input').val(''); - $(this).hide(); - $(this).prev().hide(); - } - }); - for(var prop in props) { - var propname = props[prop]; - if(this.data[propname] != undefined) { - $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().hide(); - var property = this.data[propname][0]; - var value = property['value'], checksum = property['checksum']; - - if(propname == 'BDAY') { - var val = $.datepicker.parseDate('yy-mm-dd', value.substring(0, 10)); - value = $.datepicker.formatDate('dd-mm-yy', val); - } - var identcontainer = $('#contact_identity'); - identcontainer.find('#'+propname.toLowerCase()).val(value); - identcontainer.find('#'+propname.toLowerCase()+'_value').data('checksum', checksum); - identcontainer.find('#'+propname.toLowerCase()+'_label').show(); - identcontainer.find('#'+propname.toLowerCase()+'_value').show(); + } else if(!newid) { + console.log('Loading intro'); + // load intro page + $.getJSON(OC.filePath('contacts', 'ajax', 'loadintro.php'),{},function(jsondata){ + if(jsondata.status == 'success'){ + id = ''; + $('#rightcontent').data('id',''); + $('#rightcontent').html(jsondata.data.page); } else { - $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().show(); - } - } - }, - populateNameFields:function() { - var props = ['FN', 'N']; - // Clear all elements - $('#ident .propertycontainer').each(function(){ - if(props.indexOf($(this).data('element')) > -1) { - $(this).data('checksum', ''); - $(this).find('input').val(''); + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); } }); + } + else { + localLoadContact(newid, bookid); + } + }, + doExport:function() { + document.location.href = OC.linkTo('contacts', 'export.php') + '?contactid=' + this.id; + }, + editNew:function(){ // add a new contact + this.id = ''; this.fn = ''; this.fullname = ''; this.givname = ''; this.famname = ''; this.addname = ''; this.honpre = ''; this.honsuf = ''; + OC.Contacts.Card.add(';;;;;', '', '', true); + return false; + }, + add:function(n, fn, aid, isnew){ // add a new contact + console.log('Adding ' + fn); + aid = aid?aid:$('#contacts h3.active').first().data('id'); + var localAddcontact = function(n, fn, aid, isnew) { + $.post(OC.filePath('contacts', 'ajax', 'contact/add.php'), { n: n, fn: fn, aid: aid, isnew: isnew }, + function(jsondata) { + if (jsondata.status == 'success'){ + $('#rightcontent').data('id',jsondata.data.id); + var id = jsondata.data.id; + var aid = jsondata.data.aid; + $.getJSON(OC.filePath('contacts', 'ajax', 'contact/details.php'),{'id':id},function(jsondata){ + if(jsondata.status == 'success'){ + OC.Contacts.Card.loadContact(jsondata.data, aid); + var item = OC.Contacts.Contacts.insertContact({data:jsondata.data}); + if(isnew) { // add some default properties + OC.Contacts.Card.addProperty('EMAIL'); + OC.Contacts.Card.addProperty('TEL'); + $('#fn').focus(); + } + } + else{ + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + $('#contact_identity').show(); + $('#actionbar').show(); + } + else{ + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + } - with(this) { - delete fn; delete fullname; delete givname; delete famname; - delete addname; delete honpre; delete honsuf; - } + if(!$('#card').length) { + console.log('Loading card DOM'); + $.getJSON(OC.filePath('contacts', 'ajax', 'loadcard.php'),{'requesttoken': requesttoken},function(jsondata){ + if(jsondata.status == 'success'){ + $('#rightcontent').html(jsondata.data.page).ready(function() { + OC.Contacts.loadHandlers(); + localAddcontact(n, fn, aid, isnew); + }); + } else{ + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + } else { + localAddcontact(n, fn, aid, isnew); + } + }, + delayedDelete:function() { + $('#contacts_deletecard').tipsy('hide'); + var newid = '', bookid; + var curlistitem = OC.Contacts.Contacts.getContact(this.id); + curlistitem.removeClass('active'); + var newlistitem = curlistitem.prev('li'); + if(!newlistitem) { + newlistitem = curlistitem.next('li'); + } + curlistitem.detach(); + if($(newlistitem).is('li')) { + newid = newlistitem.data('id'); + bookid = newlistitem.data('bookid'); + } + $('#rightcontent').data('id', newid); - if(this.data.FN) { - this.fn = this.data.FN[0]['value']; + OC.Contacts.Contacts.deletionQueue.push(this.id); + if(!window.onbeforeunload) { + window.onbeforeunload = OC.Contacts.Contacts.warnNotDeleted; + } + + with(this) { + delete id; delete fn; delete fullname; delete shortname; delete famname; + delete givname; delete addname; delete honpre; delete honsuf; delete data; + } + + if($('.contacts li').length > 0) { + OC.Contacts.Card.update({cid:newid, aid:bookid}); + } else { + // load intro page + $.getJSON(OC.filePath('contacts', 'ajax', 'loadintro.php'),{},function(jsondata){ + if(jsondata.status == 'success'){ + id = ''; + $('#rightcontent').html(jsondata.data.page).removeData('id'); + } else { + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + } + OC.Contacts.notify({ + data:curlistitem, + message:t('contacts','Click to undo deletion of "') + curlistitem.find('a').text() + '"', + timeouthandler:function(contact) { + OC.Contacts.Card.doDelete(contact.data('id'), true); + delete contact; + }, + clickhandler:function(contact) { + OC.Contacts.Contacts.insertContact({contact:contact}); + OC.Contacts.notify({message:t('contacts', 'Cancelled deletion of: "') + curlistitem.find('a').text() + '"'}); + window.onbeforeunload = null; } - else { - this.fn = ''; + }); + }, + doDelete:function(id, removeFromQueue) { + if(OC.Contacts.Contacts.deletionQueue.indexOf(id) == -1 && removeFromQueue) { + return; + } + $.post(OC.filePath('contacts', 'ajax', 'contact/delete.php'),{'id':id},function(jsondata) { + if(jsondata.status == 'error'){ + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); } - if(this.data.N == undefined) { - narray = [this.fn,'','','','']; // Checking for non-existing 'N' property :-P + if(removeFromQueue) { + OC.Contacts.Contacts.deletionQueue.splice(OC.Contacts.Contacts.deletionQueue.indexOf(id), 1); + } + if(OC.Contacts.Contacts.deletionQueue.length == 0) { + window.onbeforeunload = null; + } + }); + }, + loadContact:function(jsondata, bookid){ + this.data = jsondata; + this.id = this.data.id; + this.bookid = bookid; + $('#rightcontent').data('id',this.id); + this.populateNameFields(); + this.loadPhoto(); + this.loadMails(); + this.loadPhones(); + this.loadAddresses(); + this.loadSingleProperties(); + OC.Contacts.loadListHandlers(); + var note = $('#note'); + if(this.data.NOTE) { + note.data('checksum', this.data.NOTE[0]['checksum']); + var textarea = note.find('textarea'); + var txt = this.data.NOTE[0]['value']; + var nheight = txt.split('\n').length > 4 ? txt.split('\n').length+2 : 5; + textarea.css('min-height', nheight+'em'); + textarea.attr('rows', nheight); + textarea.val(txt); + note.show(); + textarea.expandingTextarea(); + $('#contacts_propertymenu_dropdown a[data-type="NOTE"]').parent().hide(); + } else { + note.removeData('checksum'); + note.find('textarea').val(''); + note.hide(); + $('#contacts_propertymenu_dropdown a[data-type="NOTE"]').parent().show(); + } + }, + loadSingleProperties:function() { + var props = ['BDAY', 'NICKNAME', 'ORG', 'URL', 'CATEGORIES']; + // Clear all elements + $('#ident .propertycontainer').each(function(){ + if(props.indexOf($(this).data('element')) > -1) { + $(this).data('checksum', ''); + $(this).find('input').val(''); + $(this).hide(); + $(this).prev().hide(); + } + }); + for(var prop in props) { + var propname = props[prop]; + if(this.data[propname] != undefined) { + $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().hide(); + var property = this.data[propname][0]; + var value = property['value'], checksum = property['checksum']; + + if(propname == 'BDAY') { + var val = $.datepicker.parseDate('yy-mm-dd', value.substring(0, 10)); + value = $.datepicker.formatDate('dd-mm-yy', val); + } + var identcontainer = $('#contact_identity'); + identcontainer.find('#'+propname.toLowerCase()).val(value); + identcontainer.find('#'+propname.toLowerCase()+'_value').data('checksum', checksum); + identcontainer.find('#'+propname.toLowerCase()+'_label').show(); + identcontainer.find('#'+propname.toLowerCase()+'_value').show(); } else { - narray = this.data.N[0]['value']; + $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().show(); } - this.famname = narray[0] || ''; - this.givname = narray[1] || ''; - this.addname = narray[2] || ''; - this.honpre = narray[3] || ''; - this.honsuf = narray[4] || ''; - if(this.honpre.length > 0) { - this.fullname += this.honpre + ' '; + } + }, + populateNameFields:function() { + var props = ['FN', 'N']; + // Clear all elements + $('#ident .propertycontainer').each(function(){ + if(props.indexOf($(this).data('element')) > -1) { + $(this).data('checksum', ''); + $(this).find('input').val(''); } - if(this.givname.length > 0) { - this.fullname += ' ' + this.givname; - } - if(this.addname.length > 0) { - this.fullname += ' ' + this.addname; - } - if(this.famname.length > 0) { - this.fullname += ' ' + this.famname; - } - if(this.honsuf.length > 0) { - this.fullname += ', ' + this.honsuf; - } - $('#n').val(narray.join(';')); - $('#fn_select option').remove(); - var names = [this.fn, this.fullname, this.givname + ' ' + this.famname, this.famname + ' ' + this.givname, this.famname + ', ' + this.givname]; - if(this.data.ORG) { - names[names.length]=this.data.ORG[0].value; - } - $.each(names, function(key, value) { - $('#fn_select') - .append($('') - .text(value)); - }); + }); + + with(this) { + delete fn; delete fullname; delete givname; delete famname; + delete addname; delete honpre; delete honsuf; + } + + if(this.data.FN) { + this.fn = this.data.FN[0]['value']; + } + else { + this.fn = ''; + } + if(this.data.N == undefined) { + narray = [this.fn,'','','','']; // Checking for non-existing 'N' property :-P + } else { + narray = this.data.N[0]['value']; + } + this.famname = narray[0] || ''; + this.givname = narray[1] || ''; + this.addname = narray[2] || ''; + this.honpre = narray[3] || ''; + this.honsuf = narray[4] || ''; + if(this.honpre.length > 0) { + this.fullname += this.honpre + ' '; + } + if(this.givname.length > 0) { + this.fullname += ' ' + this.givname; + } + if(this.addname.length > 0) { + this.fullname += ' ' + this.addname; + } + if(this.famname.length > 0) { + this.fullname += ' ' + this.famname; + } + if(this.honsuf.length > 0) { + this.fullname += ', ' + this.honsuf; + } + $('#n').val(narray.join(';')); + $('#fn_select option').remove(); + var names = [this.fn, this.fullname, this.givname + ' ' + this.famname, this.famname + ' ' + this.givname, this.famname + ', ' + this.givname]; + if(this.data.ORG) { + names[names.length]=this.data.ORG[0].value; + } + $.each(names, function(key, value) { + $('#fn_select') + .append($('') + .text(value)); + }); $('#fn_select').combobox('value', this.fn); $('#contact_identity').find('*[data-element="N"]').data('checksum', this.data.N[0]['checksum']); if(this.data.FN) { $('#contact_identity').find('*[data-element="FN"]').data('checksum', this.data.FN[0]['checksum']); } $('#contact_identity').show(); - }, - hasCategory:function(category) { - if(this.data.CATEGORIES) { - var categories = this.data.CATEGORIES[0]['value'].split(/,\s*/); - for(var c in categories) { - var cat = this.data.CATEGORIES[0]['value'][c]; - if(typeof cat === 'string' && (cat.toUpperCase() === category.toUpperCase())) { - return true; - } + }, + hasCategory:function(category) { + if(this.data.CATEGORIES) { + var categories = this.data.CATEGORIES[0]['value'].split(/,\s*/); + for(var c in categories) { + var cat = this.data.CATEGORIES[0]['value'][c]; + if(typeof cat === 'string' && (cat.toUpperCase() === category.toUpperCase())) { + return true; } } - return false; - }, - categoriesChanged:function(newcategories) { // Categories added/deleted. - categories = $.map(newcategories, function(v) {return v;}); - $('#categories').multiple_autocomplete('option', 'source', categories); - var categorylist = $('#categories_value').find('input'); - $.getJSON(OC.filePath('contacts', 'ajax', 'categories/categoriesfor.php'),{'id':Contacts.UI.Card.id},function(jsondata){ - if(jsondata.status == 'success'){ - $('#categories_value').data('checksum', jsondata.data.checksum); - categorylist.val(jsondata.data.value); + } + return false; + }, + categoriesChanged:function(newcategories) { // Categories added/deleted. + categories = $.map(newcategories, function(v) {return v;}); + $('#categories').multiple_autocomplete('option', 'source', categories); + var categorylist = $('#categories_value').find('input'); + $.getJSON(OC.filePath('contacts', 'ajax', 'categories/categoriesfor.php'),{'id':OC.Contacts.Card.id},function(jsondata){ + if(jsondata.status == 'success'){ + $('#categories_value').data('checksum', jsondata.data.checksum); + categorylist.val(jsondata.data.value); + } else { + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + }, + savePropertyInternal:function(name, fields, oldchecksum, checksum) { + // TODO: Add functionality for new fields. + //console.log('savePropertyInternal: ' + name + ', fields: ' + fields + 'checksum: ' + checksum); + //console.log('savePropertyInternal: ' + this.data[name]); + var multivalue = ['CATEGORIES']; + var params = {}; + var value = multivalue.indexOf(name) != -1 ? new Array() : undefined; + jQuery.each(fields, function(i, field){ + //.substring(11,'parameters[TYPE][]'.indexOf(']')) + if(field.name.substring(0, 5) === 'value') { + if(multivalue.indexOf(name) != -1) { + value.push(field.value); } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + value = field.value; } - }); - }, - savePropertyInternal:function(name, fields, oldchecksum, checksum){ - // TODO: Add functionality for new fields. - //console.log('savePropertyInternal: ' + name + ', fields: ' + fields + 'checksum: ' + checksum); - //console.log('savePropertyInternal: ' + this.data[name]); - var multivalue = ['CATEGORIES']; - var params = {}; - var value = multivalue.indexOf(name) != -1 ? new Array() : undefined; - jQuery.each(fields, function(i, field){ - //.substring(11,'parameters[TYPE][]'.indexOf(']')) - if(field.name.substring(0, 5) === 'value') { - if(multivalue.indexOf(name) != -1) { - value.push(field.value); - } else { - value = field.value; - } - } else if(field.name.substring(0, 10) === 'parameters') { - var p = field.name.substring(11,'parameters[TYPE][]'.indexOf(']')); - if(!(p in params)) { - params[p] = []; - } - params[p].push(field.value); + } else if(field.name.substring(0, 10) === 'parameters') { + var p = field.name.substring(11,'parameters[TYPE][]'.indexOf(']')); + if(!(p in params)) { + params[p] = []; } - }); - for(var i in this.data[name]) { - if(this.data[name][i]['checksum'] == oldchecksum) { - this.data[name][i]['checksum'] = checksum; - this.data[name][i]['value'] = value; - this.data[name][i]['parameters'] = params; + params[p].push(field.value); + } + }); + for(var i in this.data[name]) { + if(this.data[name][i]['checksum'] == oldchecksum) { + this.data[name][i]['checksum'] = checksum; + this.data[name][i]['value'] = value; + this.data[name][i]['parameters'] = params; + } } - } - }, - saveProperty:function(obj){ - if(!$(obj).hasClass('contacts_property')) { - return false; - } - if($(obj).hasClass('nonempty') && $(obj).val().trim() == '') { - OC.dialogs.alert(t('contacts', 'This property has to be non-empty.'), t('contacts', 'Error')); - return false; - } - container = $(obj).parents('.propertycontainer').first(); // get the parent holding the metadata. - Contacts.UI.loading(obj, true); - var checksum = container.data('checksum'); - var name = container.data('element'); - var fields = container.find('input.contacts_property,select.contacts_property').serializeArray(); - switch(name) { - case 'FN': - var nempty = true; - for(var i in Contacts.UI.Card.data.N[0]['value']) { - if(Contacts.UI.Card.data.N[0]['value'][i] != '') { - nempty = false; - break; - } + }, + saveProperty:function(obj) { + if(!$(obj).hasClass('contacts_property')) { + return false; + } + if($(obj).hasClass('nonempty') && $(obj).val().trim() == '') { + OC.dialogs.alert(t('contacts', 'This property has to be non-empty.'), t('contacts', 'Error')); + return false; + } + container = $(obj).parents('.propertycontainer').first(); // get the parent holding the metadata. + OC.Contacts.loading(obj, true); + var checksum = container.data('checksum'); + var name = container.data('element'); + var fields = container.find('input.contacts_property,select.contacts_property').serializeArray(); + switch(name) { + case 'FN': + var nempty = true; + for(var i in OC.Contacts.Card.data.N[0]['value']) { + if(OC.Contacts.Card.data.N[0]['value'][i] != '') { + nempty = false; + break; } - if(nempty) { - $('#n').val(fields[0].value + ';;;;'); - Contacts.UI.Card.data.N[0]['value'] = Array(fields[0].value, '', '', '', ''); - setTimeout(function() {Contacts.UI.Card.saveProperty($('#n'))}, 500); - } - break; - } - var q = container.find('input.contacts_property,select.contacts_property,textarea.contacts_property').serialize(); - if(q == '' || q == undefined) { - OC.dialogs.alert(t('contacts', 'Couldn\'t serialize elements.'), t('contacts', 'Error')); - Contacts.UI.loading(obj, false); - return false; - } - q = q + '&id=' + this.id + '&name=' + name; - if(checksum != undefined && checksum != '') { // save + } + if(nempty) { + $('#n').val(fields[0].value + ';;;;'); + OC.Contacts.Card.data.N[0]['value'] = Array(fields[0].value, '', '', '', ''); + setTimeout(function() {OC.Contacts.Card.saveProperty($('#n'))}, 500); + } + break; + } + var q = container.find('input.contacts_property,select.contacts_property,textarea.contacts_property').serialize(); + if(q == '' || q == undefined) { + OC.dialogs.alert(t('contacts', 'Couldn\'t serialize elements.'), t('contacts', 'Error')); + OC.Contacts.loading(obj, false); + return false; + } + q = q + '&id=' + this.id + '&name=' + name; + if(checksum != undefined && checksum != '') { // save q = q + '&checksum=' + checksum; console.log('Saving: ' + q); $(obj).attr('disabled', 'disabled'); - $.post(OC.filePath('contacts', 'ajax', 'saveproperty.php'),q,function(jsondata){ + $.post(OC.filePath('contacts', 'ajax', 'contact/saveproperty.php'),q,function(jsondata){ if(jsondata.status == 'success'){ container.data('checksum', jsondata.data.checksum); - Contacts.UI.Card.savePropertyInternal(name, fields, checksum, jsondata.data.checksum); - Contacts.UI.loading(obj, false); + OC.Contacts.Card.savePropertyInternal(name, fields, checksum, jsondata.data.checksum); + OC.Contacts.loading(obj, false); $(obj).removeAttr('disabled'); return true; } else{ OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - Contacts.UI.loading(obj, false); + OC.Contacts.loading(obj, false); $(obj).removeAttr('disabled'); return false; } },'json'); - } else { // add + } else { // add console.log('Adding: ' + q); $(obj).attr('disabled', 'disabled'); - $.post(OC.filePath('contacts', 'ajax', 'addproperty.php'),q,function(jsondata){ + $.post(OC.filePath('contacts', 'ajax', 'contact/addproperty.php'),q,function(jsondata){ if(jsondata.status == 'success'){ container.data('checksum', jsondata.data.checksum); // TODO: savePropertyInternal doesn't know about new fields - //Contacts.UI.Card.savePropertyInternal(name, fields, checksum, jsondata.data.checksum); - Contacts.UI.loading(obj, false); + //OC.Contacts.Card.savePropertyInternal(name, fields, checksum, jsondata.data.checksum); + OC.Contacts.loading(obj, false); $(obj).removeAttr('disabled'); return true; } else{ OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - Contacts.UI.loading(obj, false); + OC.Contacts.loading(obj, false); $(obj).removeAttr('disabled'); return false; } },'json'); - } - }, - addProperty:function(type){ - switch (type) { - case 'NOTE': - $('#contacts_propertymenu_dropdown a[data-type="'+type+'"]').parent().hide(); - $('#note').find('textarea').expandingTextarea().show().focus(); - break; - case 'EMAIL': - if($('#emaillist>li').length == 1) { - $('#emails').show(); - } - Contacts.UI.Card.addMail(); - break; - case 'TEL': - if($('#phonelist>li').length == 1) { - $('#phones').show(); - } - Contacts.UI.Card.addPhone(); - break; - case 'ADR': - if($('#addressdisplay>dl').length == 1) { - $('#addresses').show(); - } - Contacts.UI.Card.editAddress('new', true); - break; - case 'NICKNAME': - case 'URL': - case 'ORG': - case 'BDAY': - case 'CATEGORIES': - $('dl dt[data-element="'+type+'"],dd[data-element="'+type+'"]').show(); - $('dd[data-element="'+type+'"]').find('input').focus(); - $('#contacts_propertymenu_dropdown a[data-type="'+type+'"]').parent().hide(); - break; - } - }, - deleteProperty:function(obj, type){ - console.log('deleteProperty'); - Contacts.UI.loading(obj, true); - var checksum = Contacts.UI.checksumFor(obj); - if(checksum) { - $.post(OC.filePath('contacts', 'ajax', 'deleteproperty.php'),{'id': this.id, 'checksum': checksum },function(jsondata){ - if(jsondata.status == 'success'){ - if(type == 'list') { - Contacts.UI.propertyContainerFor(obj).remove(); - } else if(type == 'single') { - var proptype = Contacts.UI.propertyTypeFor(obj); - Contacts.UI.Card.data[proptype] = null; - var othertypes = ['NOTE', 'PHOTO']; - if(othertypes.indexOf(proptype) != -1) { - Contacts.UI.propertyContainerFor(obj).data('checksum', ''); - if(proptype == 'PHOTO') { - Contacts.UI.Contacts.refreshThumbnail(Contacts.UI.Card.id); - Contacts.UI.Card.loadPhoto(true); - } else if(proptype == 'NOTE') { - $('#note').find('textarea').val(''); - Contacts.UI.propertyContainerFor(obj).hide(); - } - } else { - $('dl dt[data-element="'+proptype+'"],dd[data-element="'+proptype+'"]').hide(); - $('dl dd[data-element="'+proptype+'"]').data('checksum', '').find('input').val(''); - } - $('#contacts_propertymenu_dropdown a[data-type="'+proptype+'"]').parent().show(); - Contacts.UI.loading(obj, false); - } else { - OC.dialogs.alert(t('contacts', '\'deleteProperty\' called without type argument. Please report at bugs.owncloud.org'), t('contacts', 'Error')); - Contacts.UI.loading(obj, false); - } - } - else{ - Contacts.UI.loading(obj, false); - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } else { // Property hasn't been saved so there's nothing to delete. - if(type == 'list') { - Contacts.UI.propertyContainerFor(obj).remove(); - } else if(type == 'single') { - var proptype = Contacts.UI.propertyTypeFor(obj); - $('dl dt[data-element="'+proptype+'"],dd[data-element="'+proptype+'"]').hide(); - $('#contacts_propertymenu_dropdown a[data-type="'+proptype+'"]').parent().show(); - Contacts.UI.loading(obj, false); - } else { - OC.dialogs.alert(t('contacts', '\'deleteProperty\' called without type argument. Please report at bugs.owncloud.org'), t('contacts', 'Error')); - } - } - }, - editName:function() { - var params = {id: this.id}; - /* Initialize the name edit dialog */ - if($('#edit_name_dialog').dialog('isOpen') == true) { - $('#edit_name_dialog').dialog('moveToTop'); - } else { - $.getJSON(OC.filePath('contacts', 'ajax', 'editname.php'),{id: this.id},function(jsondata) { - if(jsondata.status == 'success') { - $('body').append('
'); - $('#name_dialog').html(jsondata.data.page).find('#edit_name_dialog' ).dialog({ - modal: true, - closeOnEscape: true, - title: t('contacts', 'Edit name'), - height: 'auto', width: 'auto', - buttons: { - 'Ok':function() { - Contacts.UI.Card.saveName(this); - $(this).dialog('close'); - }, - 'Cancel':function() { $(this).dialog('close'); } - }, - close: function(event, ui) { - $(this).dialog('destroy').remove(); - $('#name_dialog').remove(); - }, - open: function(event, ui) { - // load 'N' property - maybe :-P - } - }); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - }, - saveName:function(dlg){ - //console.log('saveName, id: ' + this.id); - var n = new Array($(dlg).find('#fam').val().strip_tags(),$(dlg).find('#giv').val().strip_tags(),$(dlg).find('#add').val().strip_tags(),$(dlg).find('#pre').val().strip_tags(),$(dlg).find('#suf').val().strip_tags()); - this.famname = n[0]; - this.givname = n[1]; - this.addname = n[2]; - this.honpre = n[3]; - this.honsuf = n[4]; - this.fullname = ''; - - $('#n').val(n.join(';')); - if(n[3].length > 0) { - this.fullname = n[3] + ' '; - } - this.fullname += n[1] + ' ' + n[2] + ' ' + n[0]; - if(n[4].length > 0) { - this.fullname += ', ' + n[4]; - } - - $('#fn_select option').remove(); - //$('#fn_select').combobox('value', this.fn); - var tmp = [this.fullname, this.givname + ' ' + this.famname, this.famname + ' ' + this.givname, this.famname + ', ' + this.givname]; - var names = new Array(); - for(var name in tmp) { - if(names.indexOf(tmp[name]) == -1) { - names.push(tmp[name]); - } - } - $.each(names, function(key, value) { - $('#fn_select') - .append($('') - .text(value)); - }); - - if(this.id == '') { - var aid = $(dlg).find('#aid').val(); - Contacts.UI.Card.add(n.join(';'), $('#short').text(), aid); - } else { - Contacts.UI.Card.saveProperty($('#n')); - } - }, - loadAddresses:function(){ - $('#addresses').hide(); - $('#addressdisplay dl.propertycontainer').remove(); - var addresscontainer = $('#addressdisplay'); - for(var adr in this.data.ADR) { - addresscontainer.find('dl').first().clone().insertAfter($('#addressdisplay dl').last()).show(); - addresscontainer.find('dl').last().removeClass('template').addClass('propertycontainer'); - addresscontainer.find('dl').last().data('checksum', this.data.ADR[adr]['checksum']); - var adrarray = this.data.ADR[adr]['value']; - var adrtxt = ''; - if(adrarray[0] && adrarray[0].length > 0) { - adrtxt = adrtxt + '
  • ' + adrarray[0].strip_tags() + '
  • '; - } - if(adrarray[1] && adrarray[1].length > 0) { - adrtxt = adrtxt + '
  • ' + adrarray[1].strip_tags() + '
  • '; - } - if(adrarray[2] && adrarray[2].length > 0) { - adrtxt = adrtxt + '
  • ' + adrarray[2].strip_tags() + '
  • '; - } - if((3 in adrarray && 5 in adrarray) && adrarray[3].length > 0 || adrarray[5].length > 0) { - adrtxt = adrtxt + '
  • ' + adrarray[5].strip_tags() + ' ' + adrarray[3].strip_tags() + '
  • '; - } - if(adrarray[4] && adrarray[4].length > 0) { - adrtxt = adrtxt + '
  • ' + adrarray[4].strip_tags() + '
  • '; - } - if(adrarray[6] && adrarray[6].length > 0) { - adrtxt = adrtxt + '
  • ' + adrarray[6].strip_tags() + '
  • '; - } - addresscontainer.find('dl').last().find('.addresslist').html(adrtxt); - var types = new Array(); - var ttypes = new Array(); - for(var param in this.data.ADR[adr]['parameters']) { - if(param.toUpperCase() == 'TYPE') { - types.push(t('contacts', ucwords(this.data.ADR[adr]['parameters'][param].toLowerCase()))); - ttypes.push(this.data.ADR[adr]['parameters'][param]); - } - } - addresscontainer.find('dl').last().find('.adr_type_label').text(types.join('/')); - addresscontainer.find('dl').last().find('.adr_type').val(ttypes.join(',')); - addresscontainer.find('dl').last().find('.adr').val(adrarray.join(';')); - addresscontainer.find('dl').last().data('checksum', this.data.ADR[adr]['checksum']); - } - if(addresscontainer.find('dl').length > 1) { - $('#addresses').show(); - $('#contact_communication').show(); - } - return false; - }, - editAddress:function(obj, isnew){ - var container = undefined; - var params = {id: this.id}; - if(obj === 'new') { - isnew = true; - $('#addressdisplay dl').first().clone(true).insertAfter($('#addressdisplay dl').last()).show(); - container = $('#addressdisplay dl').last(); - container.removeClass('template').addClass('propertycontainer'); - } else { - params['checksum'] = Contacts.UI.checksumFor(obj); - } - /* Initialize the address edit dialog */ - if($('#edit_address_dialog').dialog('isOpen') == true){ - $('#edit_address_dialog').dialog('moveToTop'); - }else{ - $.getJSON(OC.filePath('contacts', 'ajax', 'editaddress.php'),params,function(jsondata){ - if(jsondata.status == 'success'){ - $('body').append('
    '); - $('#address_dialog').html(jsondata.data.page).find('#edit_address_dialog' ).dialog({ - height: 'auto', width: 'auto', - buttons: { - 'Ok':function() { - if(isnew) { - Contacts.UI.Card.saveAddress(this, $('#addressdisplay dl:last-child').find('input').first(), isnew); - } else { - Contacts.UI.Card.saveAddress(this, obj, isnew); - } - $(this).dialog('close'); - }, - 'Cancel':function() { - $(this).dialog('close'); - if(isnew) { - container.remove(); - } - } - }, - close : function(event, ui) { - $(this).dialog('destroy').remove(); - $('#address_dialog').remove(); - }, - open : function(event, ui) { - $( "#adr_city" ).autocomplete({ - source: function( request, response ) { - $.ajax({ - url: "http://ws.geonames.org/searchJSON", - dataType: "jsonp", - data: { - featureClass: "P", - style: "full", - maxRows: 12, - lang: lang, - name_startsWith: request.term - }, - success: function( data ) { - response( $.map( data.geonames, function( item ) { - return { - label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, - value: item.name, - country: item.countryName - } - })); - } - }); - }, - minLength: 2, - select: function( event, ui ) { - if(ui.item && $('#adr_country').val().trim().length == 0) { - $('#adr_country').val(ui.item.country); - } - }, - open: function() { - $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" ); - }, - close: function() { - $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" ); - } - }); - $('#adr_country').autocomplete({ - source: function( request, response ) { - $.ajax({ - url: "http://ws.geonames.org/searchJSON", - dataType: "jsonp", - data: { - /*featureClass: "A",*/ - featureCode: "PCLI", - /*countryBias: "true",*/ - /*style: "full",*/ - lang: lang, - maxRows: 12, - name_startsWith: request.term - }, - success: function( data ) { - response( $.map( data.geonames, function( item ) { - return { - label: item.name, - value: item.name - } - })); - } - }); - }, - minLength: 2, - select: function( event, ui ) { - /*if(ui.item) { - $('#adr_country').val(ui.item.country); - } - log( ui.item ? - "Selected: " + ui.item.label : - "Nothing selected, input was " + this.value);*/ - }, - open: function() { - $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" ); - }, - close: function() { - $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" ); - } - }); - } - }); - } else { - alert(jsondata.data.message); - } - }); - } - }, - saveAddress:function(dlg, obj, isnew){ - if(isnew) { - container = $('#addressdisplay dl').last(); - obj = container.find('input').first(); - } else { - checksum = Contacts.UI.checksumFor(obj); - container = Contacts.UI.propertyContainerFor(obj); - } - var adr = new Array( - $(dlg).find('#adr_pobox').val().strip_tags(), - $(dlg).find('#adr_extended').val().strip_tags(), - $(dlg).find('#adr_street').val().strip_tags(), - $(dlg).find('#adr_city').val().strip_tags(), - $(dlg).find('#adr_region').val().strip_tags(), - $(dlg).find('#adr_zipcode').val().strip_tags(), - $(dlg).find('#adr_country').val().strip_tags() - ); - container.find('.adr').val(adr.join(';')); - container.find('.adr_type').val($(dlg).find('#adr_type').val()); - container.find('.adr_type_label').html(t('contacts',ucwords($(dlg).find('#adr_type').val().toLowerCase()))); - Contacts.UI.Card.saveProperty($(container).find('input').first()); - var adrtxt = ''; - if(adr[0].length > 0) { - adrtxt = adrtxt + '
  • ' + adr[0] + '
  • '; - } - if(adr[1].length > 0) { - adrtxt = adrtxt + '
  • ' + adr[1] + '
  • '; - } - if(adr[2].length > 0) { - adrtxt = adrtxt + '
  • ' + adr[2] + '
  • '; - } - if(adr[3].length > 0 || adr[5].length > 0) { - adrtxt = adrtxt + '
  • ' + adr[5] + ' ' + adr[3] + '
  • '; - } - if(adr[4].length > 0) { - adrtxt = adrtxt + '
  • ' + adr[4] + '
  • '; - } - if(adr[6].length > 0) { - adrtxt = adrtxt + '
  • ' + adr[6] + '
  • '; - } - container.find('.addresslist').html(adrtxt); - }, - uploadPhoto:function(filelist) { - if(!filelist) { - OC.dialogs.alert(t('contacts','No files selected for upload.'), t('contacts', 'Error')); - return; - } - var file = filelist[0]; - var target = $('#file_upload_target'); - var form = $('#file_upload_form'); - var totalSize=0; - if(file.size > $('#max_upload').val()){ - OC.dialogs.alert(t('contacts','The file you are trying to upload exceed the maximum size for file uploads on this server.'), t('contacts', 'Error')); - return; - } else { - target.load(function(){ - var response=jQuery.parseJSON(target.contents().text()); - if(response != undefined && response.status == 'success'){ - Contacts.UI.Card.editPhoto(response.data.id, response.data.tmp); - //alert('File: ' + file.tmp + ' ' + file.name + ' ' + file.mime); - }else{ - OC.dialogs.alert(response.data.message, t('contacts', 'Error')); - } - }); - form.submit(); - } - }, - loadPhotoHandlers:function() { - var phototools = $('#phototools'); - phototools.find('li a').tipsy('hide'); - phototools.find('li a').tipsy(); - if(this.data.PHOTO) { - phototools.find('.delete').click(function() { - $(this).tipsy('hide'); - Contacts.UI.Card.deleteProperty($('#contacts_details_photo'), 'single'); - $(this).hide(); - }); - phototools.find('.edit').click(function() { - $(this).tipsy('hide'); - Contacts.UI.Card.editCurrentPhoto(); - }); - phototools.find('.delete').show(); - phototools.find('.edit').show(); - } else { - phototools.find('.delete').hide(); - phototools.find('.edit').hide(); - } - }, - cloudPhotoSelected:function(path){ - $.getJSON(OC.filePath('contacts', 'ajax', 'oc_photo.php'),{'path':path,'id':Contacts.UI.Card.id},function(jsondata){ - if(jsondata.status == 'success'){ - //alert(jsondata.data.page); - Contacts.UI.Card.editPhoto(jsondata.data.id, jsondata.data.tmp) - $('#edit_photo_dialog_img').html(jsondata.data.page); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - loadPhoto:function(refresh){ - var self = this; - var refreshstr = (refresh?'&refresh=1'+Math.random():'') - $('#phototools li a').tipsy('hide'); - var wrapper = $('#contacts_details_photo_wrapper'); - wrapper.addClass('loading').addClass('wait'); - delete this.photo; - this.photo = new Image(); - $(this.photo).load(function () { - $('img.contacts_details_photo').remove() - $(this).addClass('contacts_details_photo'); - wrapper.removeClass('loading').removeClass('wait'); - $(this).insertAfter($('#phototools')).fadeIn(); - }).error(function () { - // notify the user that the image could not be loaded - Contacts.UI.notify({message:t('contacts','Error loading profile picture.')}); - }).attr('src', OC.linkTo('contacts', 'photo.php')+'?id='+self.id+refreshstr); - this.loadPhotoHandlers() - }, - editCurrentPhoto:function(){ - $.getJSON(OC.filePath('contacts', 'ajax', 'currentphoto.php'),{'id':this.id},function(jsondata){ - if(jsondata.status == 'success'){ - //alert(jsondata.data.page); - Contacts.UI.Card.editPhoto(jsondata.data.id, jsondata.data.tmp) - $('#edit_photo_dialog_img').html(jsondata.data.page); - } - else{ - wrapper.removeClass('wait'); - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - editPhoto:function(id, tmpkey){ - //alert('editPhoto: ' + tmpkey); - $.getJSON(OC.filePath('contacts', 'ajax', 'cropphoto.php'),{'tmpkey':tmpkey,'id':this.id, 'requesttoken':requesttoken},function(jsondata){ - if(jsondata.status == 'success'){ - //alert(jsondata.data.page); - $('#edit_photo_dialog_img').html(jsondata.data.page); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - if($('#edit_photo_dialog').dialog('isOpen') == true){ - $('#edit_photo_dialog').dialog('moveToTop'); - } else { - $('#edit_photo_dialog').dialog('open'); - } - }, - savePhoto:function(){ - var target = $('#crop_target'); - var form = $('#cropform'); - var wrapper = $('#contacts_details_photo_wrapper'); - var self = this; - wrapper.addClass('wait'); - form.submit(); - target.load(function(){ - var response=jQuery.parseJSON(target.contents().text()); - if(response != undefined && response.status == 'success'){ - // load cropped photo. - self.loadPhoto(true); - Contacts.UI.Card.data.PHOTO = true; - }else{ - OC.dialogs.alert(response.data.message, t('contacts', 'Error')); - wrapper.removeClass('wait'); - } - }); - Contacts.UI.Contacts.refreshThumbnail(this.id); - }, - addMail:function() { - //alert('addMail'); - var emaillist = $('#emaillist'); - emaillist.find('li.template:first-child').clone(true).appendTo(emaillist).show().find('a .tip').tipsy(); - emaillist.find('li.template:last-child').find('select').addClass('contacts_property'); - emaillist.find('li.template:last-child').removeClass('template').addClass('propertycontainer'); - emaillist.find('li:last-child').find('input[type="email"]').focus(); - return false; - }, - loadMails:function() { - $('#emails').hide(); - $('#emaillist li.propertycontainer').remove(); - for(var mail in this.data.EMAIL) { - this.addMail(); - //$('#emaillist li:first-child').clone().appendTo($('#emaillist')).show(); - $('#emaillist li:last-child').data('checksum', this.data.EMAIL[mail]['checksum']) - $('#emaillist li:last-child').find('input[type="email"]').val(this.data.EMAIL[mail]['value']); - for(var param in this.data.EMAIL[mail]['parameters']) { - if(param.toUpperCase() == 'PREF') { - $('#emaillist li:last-child').find('input[type="checkbox"]').attr('checked', 'checked') - } - else if(param.toUpperCase() == 'TYPE') { - for(etype in this.data.EMAIL[mail]['parameters'][param]) { - var et = this.data.EMAIL[mail]['parameters'][param][etype]; - $('#emaillist li:last-child').find('select option').each(function(){ - if($.inArray($(this).val().toUpperCase(), et.toUpperCase().split(',')) > -1) { - $(this).attr('selected', 'selected'); - } - }); - } - } - } - } - if($('#emaillist li').length > 1) { - $('#emails').show(); - $('#contact_communication').show(); - } - - $('#emaillist li:last-child').find('input[type="text"]').focus(); - return false; - }, - addPhone:function() { - var phonelist = $('#phonelist'); - phonelist.find('li.template:first-child').clone(true).appendTo(phonelist); //.show(); - phonelist.find('li.template:last-child').find('select').addClass('contacts_property'); - phonelist.find('li.template:last-child').removeClass('template').addClass('propertycontainer'); - phonelist.find('li:last-child').find('input[type="text"]').focus(); - phonelist.find('li:last-child').find('select').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - phonelist.find('li:last-child').show(); - return false; - }, - loadPhones:function() { - $('#phones').hide(); - $('#phonelist li.propertycontainer').remove(); - var phonelist = $('#phonelist'); - for(var phone in this.data.TEL) { - this.addPhone(); - phonelist.find('li:last-child').find('select').multiselect('destroy'); - phonelist.find('li:last-child').data('checksum', this.data.TEL[phone]['checksum']) - phonelist.find('li:last-child').find('input[type="text"]').val(this.data.TEL[phone]['value']); - for(var param in this.data.TEL[phone]['parameters']) { - if(param.toUpperCase() == 'PREF') { - phonelist.find('li:last-child').find('input[type="checkbox"]').attr('checked', 'checked'); - } - else if(param.toUpperCase() == 'TYPE') { - for(ptype in this.data.TEL[phone]['parameters'][param]) { - var pt = this.data.TEL[phone]['parameters'][param][ptype]; - phonelist.find('li:last-child').find('select option').each(function(){ - //if ($(this).val().toUpperCase() == pt.toUpperCase()) { - if ($.inArray($(this).val().toUpperCase(), pt.toUpperCase().split(',')) > -1) { - $(this).attr('selected', 'selected'); - } - }); - } - } - } - phonelist.find('li:last-child').find('select').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - } - if(phonelist.find('li').length > 1) { - $('#phones').show(); - $('#contact_communication').show(); - } - return false; - }, - }, - Addressbooks:{ - overview:function(){ - if($('#chooseaddressbook_dialog').dialog('isOpen') == true){ - $('#chooseaddressbook_dialog').dialog('moveToTop'); - }else{ - $('body').append('
    '); - $.getJSON(OC.filePath('contacts', 'ajax', 'chooseaddressbook.php'), function(jsondata){ - if(jsondata.status == 'success'){ - $('#addressbook_dialog').html(jsondata.data.page).find('#chooseaddressbook_dialog').dialog({ - minWidth : 600, - close : function(event, ui) { - $(this).dialog('destroy').remove(); - $('#addressbook_dialog').remove(); - } - }).css('overflow','visible'); - } else { - alert(jsondata.data.message); - $('#addressbook_dialog').remove(); - } - }); - } - return false; - }, - activation:function(checkbox, bookid){ - var active = checkbox.checked; - $.post(OC.filePath('contacts', 'ajax', 'activation.php'), {bookid: bookid, active: (active?1:0)}, function(jsondata) { - if (jsondata.status == 'success'){ - if(!active) { - $('#contacts h3[data-id="'+bookid+'"],#contacts ul[data-id="'+bookid+'"]').remove(); - } else { - Contacts.UI.Contacts.update(); - } - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - checkbox.checked = !active; - } - }); - }, - addAddressbook:function(name, description, cb) { - $.post(OC.filePath('contacts', 'ajax', 'addaddressbook.php'), { name: name, description: description, active: true }, - function(jsondata){ - if(jsondata.status == 'success'){ - if(cb) { - cb(jsondata.data); - } - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - return false; - } - }); - - }, - newAddressbook:function(object){ - var tr = $(document.createElement('tr')) - .load(OC.filePath('contacts', 'ajax', 'addbook.php')); - $(object).closest('tr').after(tr).hide(); - }, - editAddressbook:function(object, bookid){ - var tr = $(document.createElement('tr')) - .load(OC.filePath('contacts', 'ajax', 'editaddressbook.php') + "?bookid="+bookid); - $(object).closest('tr').after(tr).hide(); - }, - deleteAddressbook:function(obj, bookid){ - var check = confirm("Do you really want to delete this address book?"); - if(check == false){ - return false; - }else{ - $.post(OC.filePath('contacts', 'ajax', 'deletebook.php'), { id: bookid}, - function(jsondata) { - if (jsondata.status == 'success'){ - $(obj).closest('tr').remove(); - $('#contacts h3[data-id="'+bookid+'"],#contacts ul[data-id="'+bookid+'"]').remove(); - Contacts.UI.Contacts.update(); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - }, - doImport:function(file, aid){ - $.post(OC.filePath('contacts', '', 'import.php'), { id: aid, file: file, fstype: 'OC_FilesystemView' }, - function(jsondata){ - if(jsondata.status != 'success'){ - Contacts.UI.notify({message:jsondata.data.message}); - } - }); - return false; - }, - submit:function(button, bookid){ - var displayname = $("#displayname_"+bookid).val().trim(); - var active = $("#edit_active_"+bookid+":checked").length; - var description = $("#description_"+bookid).val(); - - if(displayname.length == 0) { - OC.dialogs.alert(t('contacts', 'Displayname cannot be empty.'), t('contacts', 'Error')); - return false; - } - var url; - if (bookid == 'new'){ - url = OC.filePath('contacts', 'ajax', 'createaddressbook.php'); - }else{ - url = OC.filePath('contacts', 'ajax', 'updateaddressbook.php'); - } - $.post(url, { id: bookid, name: displayname, active: active, description: description }, - function(jsondata){ - if(jsondata.status == 'success'){ - $(button).closest('tr').prev().html(jsondata.page).show().next().remove(); - Contacts.UI.Contacts.update(); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - cancel:function(button, bookid){ - $(button).closest('tr').prev().show().next().remove(); } }, - Contacts:{ - contacts:{}, - batchnum:50, - getContact:function(id) { - if(!this.contacts[id]) { - this.contacts[id] = $('#contacts li[data-id="'+id+'"]'); - if(!this.contacts[id]) { - self = this; - $.getJSON(OC.filePath('contacts', 'ajax', 'contactdetails.php'),{'id':id},function(jsondata){ - if(jsondata.status == 'success'){ - self.contacts[id] = self.insertContact({data:jsondata.data}); + addProperty:function(type) { + switch (type) { + case 'NOTE': + $('#contacts_propertymenu_dropdown a[data-type="'+type+'"]').parent().hide(); + $('#note').find('textarea').expandingTextarea().show().focus(); + break; + case 'EMAIL': + if($('#emaillist>li').length == 1) { + $('#emails').show(); + } + OC.Contacts.Card.addMail(); + break; + case 'TEL': + if($('#phonelist>li').length == 1) { + $('#phones').show(); + } + OC.Contacts.Card.addPhone(); + break; + case 'ADR': + if($('#addressdisplay>dl').length == 1) { + $('#addresses').show(); + } + OC.Contacts.Card.editAddress('new', true); + break; + case 'NICKNAME': + case 'URL': + case 'ORG': + case 'BDAY': + case 'CATEGORIES': + $('dl dt[data-element="'+type+'"],dd[data-element="'+type+'"]').show(); + $('dd[data-element="'+type+'"]').find('input').focus(); + $('#contacts_propertymenu_dropdown a[data-type="'+type+'"]').parent().hide(); + break; + } + }, + deleteProperty:function(obj, type) { + console.log('deleteProperty'); + OC.Contacts.loading(obj, true); + var checksum = OC.Contacts.checksumFor(obj); + if(checksum) { + $.post(OC.filePath('contacts', 'ajax', 'contact/deleteproperty.php'),{'id': this.id, 'checksum': checksum },function(jsondata){ + if(jsondata.status == 'success'){ + if(type == 'list') { + OC.Contacts.propertyContainerFor(obj).remove(); + } else if(type == 'single') { + var proptype = OC.Contacts.propertyTypeFor(obj); + OC.Contacts.Card.data[proptype] = null; + var othertypes = ['NOTE', 'PHOTO']; + if(othertypes.indexOf(proptype) != -1) { + OC.Contacts.propertyContainerFor(obj).data('checksum', ''); + if(proptype == 'PHOTO') { + OC.Contacts.Contacts.refreshThumbnail(OC.Contacts.Card.id); + OC.Contacts.Card.loadPhoto(); + } else if(proptype == 'NOTE') { + $('#note').find('textarea').val(''); + OC.Contacts.propertyContainerFor(obj).hide(); } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } else { + $('dl dt[data-element="'+proptype+'"],dd[data-element="'+proptype+'"]').hide(); + $('dl dd[data-element="'+proptype+'"]').data('checksum', '').find('input').val(''); + } + $('#contacts_propertymenu_dropdown a[data-type="'+proptype+'"]').parent().show(); + OC.Contacts.loading(obj, false); + } else { + OC.dialogs.alert(t('contacts', '\'deleteProperty\' called without type argument. Please report at bugs.owncloud.org'), t('contacts', 'Error')); + OC.Contacts.loading(obj, false); + } + } + else{ + OC.Contacts.loading(obj, false); + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + } else { // Property hasn't been saved so there's nothing to delete. + if(type == 'list') { + OC.Contacts.propertyContainerFor(obj).remove(); + } else if(type == 'single') { + var proptype = OC.Contacts.propertyTypeFor(obj); + $('dl dt[data-element="'+proptype+'"],dd[data-element="'+proptype+'"]').hide(); + $('#contacts_propertymenu_dropdown a[data-type="'+proptype+'"]').parent().show(); + OC.Contacts.loading(obj, false); + } else { + OC.dialogs.alert(t('contacts', '\'deleteProperty\' called without type argument. Please report at bugs.owncloud.org'), t('contacts', 'Error')); + } + } + }, + editName:function() { + var params = {id: this.id}; + /* Initialize the name edit dialog */ + if($('#edit_name_dialog').dialog('isOpen') == true) { + $('#edit_name_dialog').dialog('moveToTop'); + } else { + $.getJSON(OC.filePath('contacts', 'ajax', 'editname.php'),{id: this.id},function(jsondata) { + if(jsondata.status == 'success') { + $('body').append('
    '); + $('#name_dialog').html(jsondata.data.page).find('#edit_name_dialog' ).dialog({ + modal: true, + closeOnEscape: true, + title: t('contacts', 'Edit name'), + height: 'auto', width: 'auto', + buttons: { + 'Ok':function() { + OC.Contacts.Card.saveName(this); + $(this).dialog('close'); + }, + 'Cancel':function() { $(this).dialog('close'); } + }, + close: function(event, ui) { + $(this).dialog('destroy').remove(); + $('#name_dialog').remove(); + }, + open: function(event, ui) { + // load 'N' property - maybe :-P + } + }); + } else { + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + } + }, + saveName:function(dlg) { + //console.log('saveName, id: ' + this.id); + var n = new Array($(dlg).find('#fam').val().strip_tags(),$(dlg).find('#giv').val().strip_tags(),$(dlg).find('#add').val().strip_tags(),$(dlg).find('#pre').val().strip_tags(),$(dlg).find('#suf').val().strip_tags()); + this.famname = n[0]; + this.givname = n[1]; + this.addname = n[2]; + this.honpre = n[3]; + this.honsuf = n[4]; + this.fullname = ''; + + $('#n').val(n.join(';')); + if(n[3].length > 0) { + this.fullname = n[3] + ' '; + } + this.fullname += n[1] + ' ' + n[2] + ' ' + n[0]; + if(n[4].length > 0) { + this.fullname += ', ' + n[4]; + } + + $('#fn_select option').remove(); + //$('#fn_select').combobox('value', this.fn); + var tmp = [this.fullname, this.givname + ' ' + this.famname, this.famname + ' ' + this.givname, this.famname + ', ' + this.givname]; + var names = new Array(); + for(var name in tmp) { + if(names.indexOf(tmp[name]) == -1) { + names.push(tmp[name]); + } + } + $.each(names, function(key, value) { + $('#fn_select') + .append($('') + .text(value)); + }); + + if(this.id == '') { + var aid = $(dlg).find('#aid').val(); + OC.Contacts.Card.add(n.join(';'), $('#short').text(), aid); + } else { + OC.Contacts.Card.saveProperty($('#n')); + } + }, + loadAddresses:function() { + $('#addresses').hide(); + $('#addressdisplay dl.propertycontainer').remove(); + var addresscontainer = $('#addressdisplay'); + for(var adr in this.data.ADR) { + addresscontainer.find('dl').first().clone().insertAfter($('#addressdisplay dl').last()).show(); + addresscontainer.find('dl').last().removeClass('template').addClass('propertycontainer'); + addresscontainer.find('dl').last().data('checksum', this.data.ADR[adr]['checksum']); + var adrarray = this.data.ADR[adr]['value']; + var adrtxt = ''; + if(adrarray[0] && adrarray[0].length > 0) { + adrtxt = adrtxt + '
  • ' + adrarray[0].strip_tags() + '
  • '; + } + if(adrarray[1] && adrarray[1].length > 0) { + adrtxt = adrtxt + '
  • ' + adrarray[1].strip_tags() + '
  • '; + } + if(adrarray[2] && adrarray[2].length > 0) { + adrtxt = adrtxt + '
  • ' + adrarray[2].strip_tags() + '
  • '; + } + if((3 in adrarray && 5 in adrarray) && adrarray[3].length > 0 || adrarray[5].length > 0) { + adrtxt = adrtxt + '
  • ' + adrarray[5].strip_tags() + ' ' + adrarray[3].strip_tags() + '
  • '; + } + if(adrarray[4] && adrarray[4].length > 0) { + adrtxt = adrtxt + '
  • ' + adrarray[4].strip_tags() + '
  • '; + } + if(adrarray[6] && adrarray[6].length > 0) { + adrtxt = adrtxt + '
  • ' + adrarray[6].strip_tags() + '
  • '; + } + addresscontainer.find('dl').last().find('.addresslist').html(adrtxt); + var types = new Array(); + var ttypes = new Array(); + for(var param in this.data.ADR[adr]['parameters']) { + if(param.toUpperCase() == 'TYPE') { + types.push(t('contacts', ucwords(this.data.ADR[adr]['parameters'][param].toLowerCase()))); + ttypes.push(this.data.ADR[adr]['parameters'][param]); + } + } + addresscontainer.find('dl').last().find('.adr_type_label').text(types.join('/')); + addresscontainer.find('dl').last().find('.adr_type').val(ttypes.join(',')); + addresscontainer.find('dl').last().find('.adr').val(adrarray.join(';')); + addresscontainer.find('dl').last().data('checksum', this.data.ADR[adr]['checksum']); + } + if(addresscontainer.find('dl').length > 1) { + $('#addresses').show(); + $('#contact_communication').show(); + } + return false; + }, + editAddress:function(obj, isnew){ + var container = undefined; + var params = {id: this.id}; + if(obj === 'new') { + isnew = true; + $('#addressdisplay dl').first().clone(true).insertAfter($('#addressdisplay dl').last()).show(); + container = $('#addressdisplay dl').last(); + container.removeClass('template').addClass('propertycontainer'); + } else { + params['checksum'] = OC.Contacts.checksumFor(obj); + } + /* Initialize the address edit dialog */ + if($('#edit_address_dialog').dialog('isOpen') == true){ + $('#edit_address_dialog').dialog('moveToTop'); + }else{ + $.getJSON(OC.filePath('contacts', 'ajax', 'editaddress.php'),params,function(jsondata){ + if(jsondata.status == 'success'){ + $('body').append('
    '); + $('#address_dialog').html(jsondata.data.page).find('#edit_address_dialog' ).dialog({ + height: 'auto', width: 'auto', + buttons: { + 'Ok':function() { + if(isnew) { + OC.Contacts.Card.saveAddress(this, $('#addressdisplay dl:last-child').find('input').first(), isnew); + } else { + OC.Contacts.Card.saveAddress(this, obj, isnew); + } + $(this).dialog('close'); + }, + 'Cancel':function() { + $(this).dialog('close'); + if(isnew) { + container.remove(); + } + } + }, + close : function(event, ui) { + $(this).dialog('destroy').remove(); + $('#address_dialog').remove(); + }, + open : function(event, ui) { + $( "#adr_city" ).autocomplete({ + source: function( request, response ) { + $.ajax({ + url: "http://ws.geonames.org/searchJSON", + dataType: "jsonp", + data: { + featureClass: "P", + style: "full", + maxRows: 12, + lang: lang, + name_startsWith: request.term + }, + success: function( data ) { + response( $.map( data.geonames, function( item ) { + return { + label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, + value: item.name, + country: item.countryName + } + })); + } + }); + }, + minLength: 2, + select: function( event, ui ) { + if(ui.item && $('#adr_country').val().trim().length == 0) { + $('#adr_country').val(ui.item.country); + } + }, + open: function() { + $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" ); + }, + close: function() { + $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" ); + } + }); + $('#adr_country').autocomplete({ + source: function( request, response ) { + $.ajax({ + url: "http://ws.geonames.org/searchJSON", + dataType: "jsonp", + data: { + /*featureClass: "A",*/ + featureCode: "PCLI", + /*countryBias: "true",*/ + /*style: "full",*/ + lang: lang, + maxRows: 12, + name_startsWith: request.term + }, + success: function( data ) { + response( $.map( data.geonames, function( item ) { + return { + label: item.name, + value: item.name + } + })); + } + }); + }, + minLength: 2, + select: function( event, ui ) { + /*if(ui.item) { + $('#adr_country').val(ui.item.country); + } + log( ui.item ? + "Selected: " + ui.item.label : + "Nothing selected, input was " + this.value);*/ + }, + open: function() { + $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" ); + }, + close: function() { + $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" ); + } + }); + } + }); + } else { + alert(jsondata.data.message); + } + }); + } + }, + saveAddress:function(dlg, obj, isnew){ + if(isnew) { + container = $('#addressdisplay dl').last(); + obj = container.find('input').first(); + } else { + checksum = OC.Contacts.checksumFor(obj); + container = OC.Contacts.propertyContainerFor(obj); + } + var adr = new Array( + $(dlg).find('#adr_pobox').val().strip_tags(), + $(dlg).find('#adr_extended').val().strip_tags(), + $(dlg).find('#adr_street').val().strip_tags(), + $(dlg).find('#adr_city').val().strip_tags(), + $(dlg).find('#adr_region').val().strip_tags(), + $(dlg).find('#adr_zipcode').val().strip_tags(), + $(dlg).find('#adr_country').val().strip_tags() + ); + container.find('.adr').val(adr.join(';')); + container.find('.adr_type').val($(dlg).find('#adr_type').val()); + container.find('.adr_type_label').html(t('contacts',ucwords($(dlg).find('#adr_type').val().toLowerCase()))); + OC.Contacts.Card.saveProperty($(container).find('input').first()); + var adrtxt = ''; + if(adr[0].length > 0) { + adrtxt = adrtxt + '
  • ' + adr[0] + '
  • '; + } + if(adr[1].length > 0) { + adrtxt = adrtxt + '
  • ' + adr[1] + '
  • '; + } + if(adr[2].length > 0) { + adrtxt = adrtxt + '
  • ' + adr[2] + '
  • '; + } + if(adr[3].length > 0 || adr[5].length > 0) { + adrtxt = adrtxt + '
  • ' + adr[5] + ' ' + adr[3] + '
  • '; + } + if(adr[4].length > 0) { + adrtxt = adrtxt + '
  • ' + adr[4] + '
  • '; + } + if(adr[6].length > 0) { + adrtxt = adrtxt + '
  • ' + adr[6] + '
  • '; + } + container.find('.addresslist').html(adrtxt); + }, + uploadPhoto:function(filelist) { + if(!filelist) { + OC.dialogs.alert(t('contacts','No files selected for upload.'), t('contacts', 'Error')); + return; + } + var file = filelist[0]; + var target = $('#file_upload_target'); + var form = $('#file_upload_form'); + var totalSize=0; + if(file.size > $('#max_upload').val()){ + OC.dialogs.alert(t('contacts','The file you are trying to upload exceed the maximum size for file uploads on this server.'), t('contacts', 'Error')); + return; + } else { + target.load(function(){ + var response=jQuery.parseJSON(target.contents().text()); + if(response != undefined && response.status == 'success'){ + OC.Contacts.Card.editPhoto(response.data.id, response.data.tmp); + //alert('File: ' + file.tmp + ' ' + file.name + ' ' + file.mime); + }else{ + OC.dialogs.alert(response.data.message, t('contacts', 'Error')); + } + }); + form.submit(); + } + }, + loadPhotoHandlers:function() { + var phototools = $('#phototools'); + phototools.find('li a').tipsy('hide'); + phototools.find('li a').tipsy(); + if(this.data.PHOTO) { + phototools.find('.delete').click(function() { + $(this).tipsy('hide'); + OC.Contacts.Card.deleteProperty($('#contacts_details_photo'), 'single'); + $(this).hide(); + }); + phototools.find('.edit').click(function() { + $(this).tipsy('hide'); + OC.Contacts.Card.editCurrentPhoto(); + }); + phototools.find('.delete').show(); + phototools.find('.edit').show(); + } else { + phototools.find('.delete').hide(); + phototools.find('.edit').hide(); + } + }, + cloudPhotoSelected:function(path){ + $.getJSON(OC.filePath('contacts', 'ajax', 'oc_photo.php'),{'path':path,'id':OC.Contacts.Card.id},function(jsondata){ + if(jsondata.status == 'success'){ + //alert(jsondata.data.page); + OC.Contacts.Card.editPhoto(jsondata.data.id, jsondata.data.tmp) + $('#edit_photo_dialog_img').html(jsondata.data.page); + } + else{ + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + }, + loadPhoto:function(){ + var self = this; + var refreshstr = ''; //'&refresh='+Math.random(); + $('#phototools li a').tipsy('hide'); + var wrapper = $('#contacts_details_photo_wrapper'); + wrapper.addClass('loading').addClass('wait'); + delete this.photo; + this.photo = new Image(); + $(this.photo).load(function () { + $('img.contacts_details_photo').remove() + $(this).addClass('contacts_details_photo'); + wrapper.removeClass('loading').removeClass('wait'); + $(this).insertAfter($('#phototools')).fadeIn(); + }).error(function () { + // notify the user that the image could not be loaded + OC.Contacts.notify({message:t('contacts','Error loading profile picture.')}); + }).attr('src', OC.linkTo('contacts', 'photo.php')+'?id='+self.id+refreshstr); + this.loadPhotoHandlers() + }, + editCurrentPhoto:function(){ + $.getJSON(OC.filePath('contacts', 'ajax', 'currentphoto.php'),{'id':this.id},function(jsondata){ + if(jsondata.status == 'success'){ + //alert(jsondata.data.page); + OC.Contacts.Card.editPhoto(jsondata.data.id, jsondata.data.tmp) + $('#edit_photo_dialog_img').html(jsondata.data.page); + } + else{ + wrapper.removeClass('wait'); + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + }, + editPhoto:function(id, tmpkey){ + //alert('editPhoto: ' + tmpkey); + $.getJSON(OC.filePath('contacts', 'ajax', 'cropphoto.php'),{'tmpkey':tmpkey,'id':this.id, 'requesttoken':requesttoken},function(jsondata){ + if(jsondata.status == 'success'){ + //alert(jsondata.data.page); + $('#edit_photo_dialog_img').html(jsondata.data.page); + } + else{ + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + if($('#edit_photo_dialog').dialog('isOpen') == true){ + $('#edit_photo_dialog').dialog('moveToTop'); + } else { + $('#edit_photo_dialog').dialog('open'); + } + }, + savePhoto:function(){ + var target = $('#crop_target'); + var form = $('#cropform'); + var wrapper = $('#contacts_details_photo_wrapper'); + var self = this; + wrapper.addClass('wait'); + form.submit(); + target.load(function(){ + var response=jQuery.parseJSON(target.contents().text()); + if(response != undefined && response.status == 'success'){ + // load cropped photo. + self.loadPhoto(); + OC.Contacts.Card.data.PHOTO = true; + }else{ + OC.dialogs.alert(response.data.message, t('contacts', 'Error')); + wrapper.removeClass('wait'); + } + }); + OC.Contacts.Contacts.refreshThumbnail(this.id); + }, + addMail:function() { + //alert('addMail'); + var emaillist = $('#emaillist'); + emaillist.find('li.template:first-child').clone(true).appendTo(emaillist).show().find('a .tip').tipsy(); + emaillist.find('li.template:last-child').find('select').addClass('contacts_property'); + emaillist.find('li.template:last-child').removeClass('template').addClass('propertycontainer'); + emaillist.find('li:last-child').find('input[type="email"]').focus(); + return false; + }, + loadMails:function() { + $('#emails').hide(); + $('#emaillist li.propertycontainer').remove(); + for(var mail in this.data.EMAIL) { + this.addMail(); + //$('#emaillist li:first-child').clone().appendTo($('#emaillist')).show(); + $('#emaillist li:last-child').data('checksum', this.data.EMAIL[mail]['checksum']) + $('#emaillist li:last-child').find('input[type="email"]').val(this.data.EMAIL[mail]['value']); + for(var param in this.data.EMAIL[mail]['parameters']) { + if(param.toUpperCase() == 'PREF') { + $('#emaillist li:last-child').find('input[type="checkbox"]').attr('checked', 'checked') + } + else if(param.toUpperCase() == 'TYPE') { + for(etype in this.data.EMAIL[mail]['parameters'][param]) { + var et = this.data.EMAIL[mail]['parameters'][param][etype]; + $('#emaillist li:last-child').find('select option').each(function(){ + if($.inArray($(this).val().toUpperCase(), et.toUpperCase().split(',')) > -1) { + $(this).attr('selected', 'selected'); } }); } + } } - return this.contacts[id]; - }, - drop:function(event, ui) { - var dragitem = ui.draggable, droptarget = $(this); - if(dragitem.is('li')) { - Contacts.UI.Contacts.dropContact(event, dragitem, droptarget); + } + if($('#emaillist li').length > 1) { + $('#emails').show(); + $('#contact_communication').show(); + } + $('#emaillist li:last-child').find('input[type="text"]').focus(); + return false; + }, + addPhone:function() { + var phonelist = $('#phonelist'); + phonelist.find('li.template:first-child').clone(true).appendTo(phonelist); //.show(); + phonelist.find('li.template:last-child').find('select').addClass('contacts_property'); + phonelist.find('li.template:last-child').removeClass('template').addClass('propertycontainer'); + phonelist.find('li:last-child').find('input[type="text"]').focus(); + phonelist.find('li:last-child').find('select').multiselect({ + noneSelectedText: t('contacts', 'Select type'), + header: false, + selectedList: 4, + classes: 'typelist' + }); + phonelist.find('li:last-child').show(); + return false; + }, + loadPhones:function() { + $('#phones').hide(); + $('#phonelist li.propertycontainer').remove(); + var phonelist = $('#phonelist'); + for(var phone in this.data.TEL) { + this.addPhone(); + phonelist.find('li:last-child').find('select').multiselect('destroy'); + phonelist.find('li:last-child').data('checksum', this.data.TEL[phone]['checksum']) + phonelist.find('li:last-child').find('input[type="text"]').val(this.data.TEL[phone]['value']); + for(var param in this.data.TEL[phone]['parameters']) { + if(param.toUpperCase() == 'PREF') { + phonelist.find('li:last-child').find('input[type="checkbox"]').attr('checked', 'checked'); + } + else if(param.toUpperCase() == 'TYPE') { + for(ptype in this.data.TEL[phone]['parameters'][param]) { + var pt = this.data.TEL[phone]['parameters'][param][ptype]; + phonelist.find('li:last-child').find('select option').each(function(){ + //if ($(this).val().toUpperCase() == pt.toUpperCase()) { + if ($.inArray($(this).val().toUpperCase(), pt.toUpperCase().split(',')) > -1) { + $(this).attr('selected', 'selected'); + } + }); + } + } + } + phonelist.find('li:last-child').find('select').multiselect({ + noneSelectedText: t('contacts', 'Select type'), + header: false, + selectedList: 4, + classes: 'typelist' + }); + } + if(phonelist.find('li').length > 1) { + $('#phones').show(); + $('#contact_communication').show(); + } + return false; + }, + }, + Contacts:{ + contacts:{}, + deletionQueue:[], + batchnum:50, + warnNotDeleted:function(e) { + e = e || window.event; + var warn = t('contacts', 'Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted.'); + if (e) { + e.returnValue = String(warn); + } + if(OC.Contacts.Contacts.deletionQueue.length > 0) { + setTimeout(OC.Contacts.Contacts.deleteFilesInQueue, 1); + } + return warn; + }, + deleteFilesInQueue:function() { + var queue = OC.Contacts.Contacts.deletionQueue; + if(queue.length > 0) { + OC.Contacts.notify({cancel:true}); + while(queue.length > 0) { + var id = queue.pop(); + if(id) { + OC.Contacts.Card.doDelete(id, false); + } + } + } + }, + getContact:function(id) { + if(!this.contacts[id]) { + this.contacts[id] = $('#contacts li[data-id="'+id+'"]'); + if(!this.contacts[id]) { + self = this; + $.getJSON(OC.filePath('contacts', 'ajax', 'contactdetails.php'),{'id':id},function(jsondata){ + if(jsondata.status == 'success'){ + self.contacts[id] = self.insertContact({data:jsondata.data}); + } + else{ + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + } + } + return this.contacts[id]; + }, + drop:function(event, ui) { + var dragitem = ui.draggable, droptarget = $(this); + if(dragitem.is('li')) { + OC.Contacts.Contacts.dropContact(event, dragitem, droptarget); + } else { + OC.Contacts.Contacts.dropAddressbook(event, dragitem, droptarget); + } + }, + dropContact:function(event, dragitem, droptarget) { + if(dragitem.data('bookid') == droptarget.data('id')) { + return false; + } + var droplist = (droptarget.is('ul'))?droptarget:droptarget.next(); + $.post(OC.filePath('contacts', 'ajax', 'contact/move.php'), { ids: dragitem.data('id'), aid: droptarget.data('id') }, + function(jsondata){ + if(jsondata.status == 'success'){ + dragitem.attr('data-bookid', droptarget.data('id')) + dragitem.data('bookid', droptarget.data('id')); + OC.Contacts.Contacts.insertContact({ + contactlist:droplist, + contact:dragitem.detach() + }); + OC.Contacts.Contacts.scrollTo(dragitem.data('id')); + } else { + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + }, + dropAddressbook:function(event, dragitem, droptarget) { + alert('Dropping address books not implemented yet'); + }, + /** + * @params params An object with the properties 'contactlist':a jquery object of the ul to insert into, + * 'contacts':a jquery object of all items in the list and either 'data': an object with the properties + * id, addressbookid and displayname or 'contact': a listitem to be inserted directly. + * If 'contactlist' or 'contacts' aren't defined they will be search for based in the properties in 'data'. + */ + insertContact:function(params) { + var id, bookid; + if(!params.contactlist) { + // FIXME: Check if contact really exists. + bookid = params.data ? params.data.addressbookid : params.contact.data('bookid'); + id = params.data ? params.data.id : params.contact.data('id'); + params.contactlist = $('#contacts ul[data-id="'+bookid+'"]'); + } + if(!params.contacts) { + bookid = params.data ? params.data.addressbookid : params.contact.data('bookid'); + id = params.data ? params.data.id : params.contact.data('id'); + params.contacts = $('#contacts ul[data-id="'+bookid+'"] li'); + } + var contact = params.data + ? $('
  • ' + + params.data.displayname+'
  • ') + : params.contact; + var added = false; + var name = params.data ? params.data.displayname.toLowerCase() : contact.find('a').text().toLowerCase(); + if(params.contacts) { + params.contacts.each(function() { + if ($(this).text().toLowerCase() > name) { + $(this).before(contact); + added = true; + return false; + } + }); + } + if(!added || !params.contacts) { + params.contactlist.append(contact); + } + //this.contacts[id] = contact; + return contact; + }, + addAddressbook:function(name, description, cb) { + $.post(OC.filePath('contacts', 'ajax/addressbook', 'add.php'), { name: name, description: description, active: true }, + function(jsondata) { + if(jsondata.status == 'success'){ + if(cb && typeof cb == 'function') { + cb(jsondata.data.addressbook); + } } else { - Contacts.UI.Contacts.dropAddressbook(event, dragitem, droptarget); - } - }, - dropContact:function(event, dragitem, droptarget) { - if(dragitem.data('bookid') == droptarget.data('id')) { + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); return false; } - var droplist = (droptarget.is('ul'))?droptarget:droptarget.next(); - $.post(OC.filePath('contacts', 'ajax', 'movetoaddressbook.php'), { ids: dragitem.data('id'), aid: droptarget.data('id') }, - function(jsondata){ - if(jsondata.status == 'success'){ - dragitem.attr('data-bookid', droptarget.data('id')) - dragitem.data('bookid', droptarget.data('id')); - Contacts.UI.Contacts.insertContact({ - contactlist:droplist, - contact:dragitem.detach() - }); - Contacts.UI.Contacts.scrollTo(dragitem.data('id')); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } + }); + }, + doImport:function(file, aid){ + $.post(OC.filePath('contacts', '', 'import.php'), { id: aid, file: file, fstype: 'OC_FilesystemView' }, + function(jsondata){ + if(jsondata.status != 'success'){ + OC.Contacts.notify({message:jsondata.data.message}); + } + }); + return false; + }, + next:function(reverse) { + var curlistitem = this.getContact(OC.Contacts.Card.id); + var newlistitem = reverse ? curlistitem.prev('li') : curlistitem.next('li'); + if(newlistitem) { + curlistitem.removeClass('active'); + OC.Contacts.Card.update({ + cid:newlistitem.data('id'), + aid:newlistitem.data('bookid') }); - }, - dropAddressbook:function(event, dragitem, droptarget) { - alert('Dropping address books not implemented yet'); - }, - /** - * @params params An object with the properties 'contactlist':a jquery object of the ul to insert into, - * 'contacts':a jquery object of all items in the list and either 'data': an object with the properties - * id, addressbookid and displayname or 'contact': a listitem to be inserted directly. - * If 'contactlist' or 'contacts' aren't defined they will be search for based in the properties in 'data'. - */ - insertContact:function(params) { - var id, bookid; - if(!params.contactlist) { - // FIXME: Check if contact really exists. - bookid = params.data ? params.data.addressbookid : params.contact.data('bookid'); - id = params.data ? params.data.id : params.contact.data('id'); - params.contactlist = $('#contacts ul[data-id="'+bookid+'"]'); - } - if(!params.contacts) { - bookid = params.data ? params.data.addressbookid : params.contact.data('bookid'); - id = params.data ? params.data.id : params.contact.data('id'); - params.contacts = $('#contacts ul[data-id="'+bookid+'"] li'); - } - var contact = params.data - ? $('
  • '+params.data.displayname+'
  • ') - : params.contact; - var added = false; - var name = params.data ? params.data.displayname.toLowerCase() : contact.find('a').text().toLowerCase(); - if(params.contacts) { - params.contacts.each(function() { - if ($(this).text().toLowerCase() > name) { - $(this).before(contact); - added = true; - return false; - } - }); - } - if(!added || !params.contacts) { - params.contactlist.append(contact); - } - //this.contacts[id] = contact; - return contact; - }, - next:function(reverse) { - // TODO: Check if we're last-child/first-child and jump to next/prev address book. - var curlistitem = $('#contacts li[data-id="'+Contacts.UI.Card.id+'"]'); - var newlistitem = reverse ? curlistitem.prev('li') : curlistitem.next('li'); + } + }, + previous:function() { + this.next(true); + }, + nextAddressbook:function(reverse) { + console.log('nextAddressbook', reverse); + var curlistitem = this.getContact(OC.Contacts.Card.id); + var parent = curlistitem.parent('ul'); + var newparent = reverse + ? parent.prevAll('ul').first() + : parent.nextAll('ul').first(); + if(newparent) { + newlistitem = newparent.find('li:first-child'); if(newlistitem) { + parent.slideUp().prev('h3').removeClass('active'); + newparent.slideDown().prev('h3').addClass('active'); curlistitem.removeClass('active'); - Contacts.UI.Card.update({ + OC.Contacts.Card.update({ cid:newlistitem.data('id'), aid:newlistitem.data('bookid') }); } - }, - previous:function() { - this.next(true); - }, - // Reload the contacts list. - update:function(params){ - if(!params) { params = {}; } - if(!params.start) { - if(params.aid) { - $('#contacts h3[data-id="'+params.aid+'"],#contacts ul[data-id="'+params.aid+'"]').remove(); - } else { - $('#contacts').empty(); - } - } - self = this; - console.log('update: ' + params.cid + ' ' + params.aid + ' ' + params.start); - var firstrun = false; - var opts = {}; - opts['startat'] = (params.start?params.start:0); + } + }, + previousAddressbook:function() { + console.log('previousAddressbook'); + this.nextAddressbook(true); + }, + // Reload the contacts list. + update:function(params){ + if(!params) { params = {}; } + if(!params.start) { if(params.aid) { - opts['aid'] = params.aid; + $('#contacts h3[data-id="'+params.aid+'"],#contacts ul[data-id="'+params.aid+'"]').remove(); + } else { + $('#contacts').empty(); } - $.getJSON(OC.filePath('contacts', 'ajax', 'contacts.php'),opts,function(jsondata){ - if(jsondata.status == 'success'){ - var books = jsondata.data.entries; - $.each(books, function(b, book) { - if($('#contacts h3[data-id="'+b+'"]').length == 0) { - firstrun = true; - if($('#contacts h3').length == 0) { - $('#contacts').html('

    '+book.displayname+'

    '); - } else { - if(!$('#contacts h3[data-id="'+b+'"]').length) { - var item = $('

    '+book.displayname+'

    ') - var added = false; - $('#contacts h3').each(function(){ - if ($(this).text().toLowerCase() > book.displayname.toLowerCase()) { - $(this).before(item).fadeIn('fast'); - added = true; - return false; - } - }); - if(!added) { - $('#contacts').append(item); + } + self = this; + console.log('update: ' + params.cid + ' ' + params.aid + ' ' + params.start); + var firstrun = false; + var opts = {}; + opts['startat'] = (params.start?params.start:0); + if(params.aid) { + opts['aid'] = params.aid; + } + $.getJSON(OC.filePath('contacts', 'ajax', 'contact/list.php'),opts,function(jsondata){ + if(jsondata.status == 'success'){ + var books = jsondata.data.entries; + $.each(books, function(b, book) { + if($('#contacts h3[data-id="'+b+'"]').length == 0) { + firstrun = true; + if($('#contacts h3').length == 0) { + $('#contacts').html('

    '+book.displayname+'

    '); + } else { + if(!$('#contacts h3[data-id="'+b+'"]').length) { + var item = $('

    ' + + book.displayname+'

    ') + var added = false; + $('#contacts h3').each(function(){ + if ($(this).text().toLowerCase() > book.displayname.toLowerCase()) { + $(this).before(item).fadeIn('fast'); + added = true; + return false; } - - } - } - $('#contacts h3[data-id="'+b+'"]').on('click', function(event) { - $('#contacts h3').removeClass('active'); - $(this).addClass('active'); - $('#contacts ul[data-id="'+b+'"]').slideToggle(300); - return false; - }); - var accept = 'li:not([data-bookid="'+b+'"]),h3:not([data-id="'+b+'"])'; - $('#contacts h3[data-id="'+b+'"],#contacts ul[data-id="'+b+'"]').droppable({ - drop: Contacts.UI.Contacts.drop, - activeClass: 'ui-state-hover', - accept: accept - }); - } - var contactlist = $('#contacts ul[data-id="'+b+'"]'); - var contacts = $('#contacts ul[data-id="'+b+'"] li'); - for(var c in book.contacts) { - if(book.contacts[c].id == undefined) { continue; } - if(!$('#contacts li[data-id="'+book.contacts[c]['id']+'"]').length) { - var contact = Contacts.UI.Contacts.insertContact({contactlist:contactlist, contacts:contacts, data:book.contacts[c]}); - if(c == self.batchnum-10) { - contact.bind('inview', function(event, isInView, visiblePartX, visiblePartY) { - $(this).unbind(event); - var bookid = $(this).data('bookid'); - var numsiblings = $('.contacts li[data-bookid="'+bookid+'"]').length; - if (isInView && numsiblings >= self.batchnum) { - console.log('This would be a good time to load more contacts.'); - Contacts.UI.Contacts.update({cid:params.cid, aid:bookid, start:$('#contacts li[data-bookid="'+bookid+'"]').length}); - } - }); + }); + if(!added) { + $('#contacts').append(item); } } } - }); - if($('#contacts h3').length > 1) { - $('#contacts li,#contacts h3').draggable({ - distance: 10, - revert: 'invalid', - axis: 'y', containment: '#contacts', - scroll: true, scrollSensitivity: 40, - opacity: 0.7, helper: 'clone' + $('#contacts h3[data-id="'+b+'"]').on('click', function(event) { + $('#contacts h3').removeClass('active'); + $(this).addClass('active'); + $('#contacts ul[data-id="'+b+'"]').slideToggle(300); + return false; + }); + var accept = 'li:not([data-bookid="'+b+'"]),h3:not([data-id="'+b+'"])'; + $('#contacts h3[data-id="'+b+'"],#contacts ul[data-id="'+b+'"]').droppable({ + drop: OC.Contacts.Contacts.drop, + activeClass: 'ui-state-hover', + accept: accept }); - } else { - $('#contacts h3').first().addClass('active'); } - if(opts['startat'] == 0) { // only update card on first load. - Contacts.UI.Card.update(params); + var contactlist = $('#contacts ul[data-id="'+b+'"]'); + var contacts = $('#contacts ul[data-id="'+b+'"] li'); + for(var c in book.contacts) { + if(book.contacts[c].id == undefined) { continue; } + if(!$('#contacts li[data-id="'+book.contacts[c]['id']+'"]').length) { + var contact = OC.Contacts.Contacts.insertContact({contactlist:contactlist, contacts:contacts, data:book.contacts[c]}); + if(c == self.batchnum-10) { + contact.bind('inview', function(event, isInView, visiblePartX, visiblePartY) { + $(this).unbind(event); + var bookid = $(this).data('bookid'); + var numsiblings = $('.contacts li[data-bookid="'+bookid+'"]').length; + if (isInView && numsiblings >= self.batchnum) { + console.log('This would be a good time to load more contacts.'); + OC.Contacts.Contacts.update({cid:params.cid, aid:bookid, start:$('#contacts li[data-bookid="'+bookid+'"]').length}); + } + }); + } + } } + }); + if($('#contacts h3').length > 1) { + $('#contacts li,#contacts h3').draggable({ + distance: 10, + revert: 'invalid', + axis: 'y', containment: '#contacts', + scroll: true, scrollSensitivity: 40, + opacity: 0.7, helper: 'clone' + }); + } else { + $('#contacts h3').first().addClass('active'); } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + if(opts['startat'] == 0) { // only update card on first load. + OC.Contacts.Card.update(params); } - }); - }, - refreshThumbnail:function(id){ - var item = $('.contacts li[data-id="'+id+'"]').find('a'); - item.html(Contacts.UI.Card.fn); - item.css('background','url('+OC.filePath('contacts', '', 'thumbnail.php')+'?id='+id+'&refresh=1'+Math.random()+') no-repeat'); - }, - scrollTo:function(id){ - var item = $('#contacts li[data-id="'+id+'"]'); - if(item && $.isNumeric(item.offset().top)) { - console.log('scrollTo ' + parseInt(item.offset().top)); - $('#contacts').animate({ - scrollTop: parseInt(item.offset()).top-40}, 'slow','swing'); + } else { + OC.Contacts.notify({message:t('contacts', 'Error')+': '+jsondata.data.message}); } + }); + }, + refreshThumbnail:function(id){ + var item = $('.contacts li[data-id="'+id+'"]').find('a'); + item.html(OC.Contacts.Card.fn); + item.css('background','url('+OC.filePath('contacts', '', 'thumbnail.php')+'?id='+id+'&refresh=1'+Math.random()+') no-repeat'); + }, + scrollTo:function(id){ + var item = $('#contacts li[data-id="'+id+'"]'); + if(item && $.isNumeric(item.offset().top)) { + console.log('scrollTo ' + parseInt(item.offset().top)); + $('#contacts').animate({ + scrollTop: parseInt(item.offset()).top-40}, 'slow','swing'); } } } } $(document).ready(function(){ - OCCategories.changed = Contacts.UI.Card.categoriesChanged; + OCCategories.changed = OC.Contacts.Card.categoriesChanged; OCCategories.app = 'contacts'; - $('#chooseaddressbook').on('click keydown', Contacts.UI.Addressbooks.overview); - $('#contacts_newcontact').on('click keydown', Contacts.UI.Card.editNew); - var ninjahelp = $('#ninjahelp'); + $('#bottomcontrols .settings').on('click keydown', function() { + try { + ninjahelp.hide(); + OC.appSettings({appid:'contacts', loadJS:true, cache:false}); + } catch(e) { + console.log('error:', e.message); + } + }); + $('#bottomcontrols .import').click(function() { + $('#import_upload_start').trigger('click'); + }); + $('#contacts_newcontact').on('click keydown', OC.Contacts.Card.editNew); + ninjahelp.find('.close').on('click keydown',function() { ninjahelp.hide(); }); $(document).on('keyup', function(event) { - console.log(event.which + ' ' + event.target.nodeName); if(event.target.nodeName.toUpperCase() != 'BODY' || $('#contacts li').length == 0 - || !Contacts.UI.Card.id) { + || !OC.Contacts.Card.id) { return; } + //console.log(event.which + ' ' + event.target.nodeName); /** * To add: - * (Shift)n/p: next/prev addressbook + * Shift-a: add addressbook * u (85): hide/show leftcontent * f (70): add field */ @@ -1723,49 +1711,45 @@ $(document).ready(function(){ case 27: // Esc ninjahelp.hide(); break; - case 46: + case 46: // Delete if(event.shiftKey) { - Contacts.UI.Card.delayedDelete(); + OC.Contacts.Card.delayedDelete(); } break; - case 32: // space - if(event.shiftKey) { - Contacts.UI.Contacts.previous(); - break; - } case 40: // down - case 75: // k - Contacts.UI.Contacts.next(); + case 74: // j + OC.Contacts.Contacts.next(); break; case 65: // a if(event.shiftKey) { // add addressbook - Contacts.UI.notImplemented(); + OC.Contacts.notImplemented(); break; } - Contacts.UI.Card.editNew(); + OC.Contacts.Card.editNew(); break; case 38: // up - case 74: // j - Contacts.UI.Contacts.previous(); + case 75: // k + OC.Contacts.Contacts.previous(); break; + case 34: // PageDown case 78: // n // next addressbook - Contacts.UI.notImplemented(); + OC.Contacts.Contacts.nextAddressbook(); break; - case 13: // Enter case 79: // o var aid = $('#contacts h3.active').first().data('id'); if(aid) { $('#contacts ul[data-id="'+aid+'"]').slideToggle(300); } break; + case 33: // PageUp case 80: // p // prev addressbook - Contacts.UI.notImplemented(); + OC.Contacts.Contacts.previousAddressbook(); break; case 82: // r - Contacts.UI.Contacts.update({cid:Contacts.UI.Card.id}); + OC.Contacts.Contacts.update({cid:OC.Contacts.Card.id}); break; case 191: // ? ninjahelp.toggle('fast'); @@ -1774,7 +1758,9 @@ $(document).ready(function(){ }); - // Load a contact. + //$(window).on('beforeunload', OC.Contacts.Contacts.deleteFilesInQueue); + + // Load a contact. $('.contacts').keydown(function(event) { if(event.which == 13 || event.which == 32) { $('.contacts').click(); @@ -1797,9 +1783,9 @@ $(document).ready(function(){ $('#contacts h3[data-id="'+bookid+'"]').addClass('active'); } } - $.getJSON(OC.filePath('contacts', 'ajax', 'contactdetails.php'),{'id':id},function(jsondata){ + $.getJSON(OC.filePath('contacts', 'ajax', 'contact/details.php'),{'id':id},function(jsondata){ if(jsondata.status == 'success'){ - Contacts.UI.Card.loadContact(jsondata.data, bookid); + OC.Contacts.Card.loadContact(jsondata.data, bookid); } else{ OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); @@ -1810,7 +1796,7 @@ $(document).ready(function(){ }); $('.contacts_property').live('change', function(){ - Contacts.UI.Card.saveProperty(this); + OC.Contacts.Card.saveProperty(this); }); $(function() { @@ -1836,7 +1822,7 @@ $(document).ready(function(){ response = $.parseJSON(xhr.responseText); if(response.status == 'success') { if(xhr.status == 200) { - Contacts.UI.Card.editPhoto(response.data.id, response.data.tmp); + OC.Contacts.Card.editPhoto(response.data.id, response.data.tmp); } else { OC.dialogs.alert(xhr.status + ': ' + xhr.responseText, t('contacts', 'Error')); } @@ -1853,7 +1839,7 @@ $(document).ready(function(){ //} } }; - xhr.open('POST', OC.filePath('contacts', 'ajax', 'uploadphoto.php')+'?id='+Contacts.UI.Card.id+'&requesttoken='+requesttoken+'&imagefile='+encodeURIComponent(file.name), true); + xhr.open('POST', OC.filePath('contacts', 'ajax', 'uploadphoto.php')+'?id='+OC.Contacts.Card.id+'&requesttoken='+requesttoken+'&imagefile='+encodeURIComponent(file.name), true); xhr.setRequestHeader('Cache-Control', 'no-cache'); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.setRequestHeader('X_FILE_NAME', encodeURIComponent(file.name)); @@ -1923,13 +1909,13 @@ $(document).ready(function(){ // import the file uploadedfiles += 1; } else { - Contacts.UI.notify({message:jsondata.data.message}); + OC.Contacts.notify({message:jsondata.data.message}); } return false; }) .error(function(jqXHR, textStatus, errorThrown) { console.log(textStatus); - Contacts.UI.notify({message:errorThrown + ': ' + textStatus,}); + OC.Contacts.notify({message:errorThrown + ': ' + textStatus,}); }); uploadingFiles[fileName] = jqXHR; } @@ -1946,7 +1932,7 @@ $(document).ready(function(){ } FileList.loadingDone(file.name); } else { - Contacts.UI.notify({message:response.data.message}); + OC.Contacts.notify({message:response.data.message}); } }); } @@ -1954,7 +1940,7 @@ $(document).ready(function(){ }, fail: function(e, data) { console.log('fail'); - Contacts.UI.notify({message:data.errorThrown + ': ' + data.textStatus}); + OC.Contacts.notify({message:data.errorThrown + ': ' + data.textStatus}); // TODO: Remove file from upload queue. }, progressall: function(e, data) { @@ -1973,7 +1959,7 @@ $(document).ready(function(){ var importFiles = function(aid, fileList) { // Create a closure that can be called from different places. if(numfiles != uploadedfiles) { - Contacts.UI.notify({message:t('contacts', 'Not all files uploaded. Retrying...')}); + OC.Contacts.notify({message:t('contacts', 'Not all files uploaded. Retrying...')}); retries += 1; if(retries > 3) { numfiles = uploadedfiles = retries = aid = 0; @@ -1989,7 +1975,7 @@ $(document).ready(function(){ $('#uploadprogressbar').progressbar('value',50); var todo = uploadedfiles; $.each(fileList, function(fileName, data) { - Contacts.UI.Addressbooks.doImport(fileName, aid); + OC.Contacts.Contacts.doImport(fileName, aid); delete fileList[fileName]; numfiles -= 1; uploadedfiles -= 1; $('#uploadprogressbar').progressbar('value',50+(50/(todo-uploadedfiles))); @@ -1997,7 +1983,7 @@ $(document).ready(function(){ $('#uploadprogressbar').progressbar('value',100); $('#uploadprogressbar').fadeOut(); setTimeout(function() { - Contacts.UI.Contacts.update({aid:aid}); + OC.Contacts.Contacts.update({aid:aid}); numfiles = uploadedfiles = retries = aid = 0; }, 1000); } @@ -2023,7 +2009,7 @@ $(document).ready(function(){ return false; } $(this).dialog('close'); - Contacts.UI.Addressbooks.addAddressbook(displayname, description, function(addressbook){ + OC.Contacts.Contacts.addAddressbook(displayname, description, function(addressbook) { aid = addressbook.id; setTimeout(function() { importFiles(aid, uploadingFiles); @@ -2070,6 +2056,6 @@ $(document).ready(function(){ }) }); - Contacts.UI.loadHandlers(); - Contacts.UI.Contacts.update({cid:id}); + OC.Contacts.loadHandlers(); + OC.Contacts.Contacts.update({cid:id}); }); diff --git a/apps/contacts/js/settings.js b/apps/contacts/js/settings.js new file mode 100644 index 0000000000..67aaa5b5f8 --- /dev/null +++ b/apps/contacts/js/settings.js @@ -0,0 +1,195 @@ +OC.Contacts = OC.Contacts || {}; +OC.Contacts.Settings = OC.Contacts.Settings || { + init:function() { + this.Addressbook.adrsettings = $('.addressbooks-settings').first(); + this.Addressbook.adractions = $('#contacts-settings').find('div.actions'); + console.log('actions: ' + this.Addressbook.adractions.length); + }, + Addressbook:{ + showActions:function(act) { + this.adractions.children().hide(); + this.adractions.children('.'+act.join(',.')).show(); + }, + doActivate:function(id, tgt) { + var active = tgt.is(':checked'); + console.log('doActivate: ', id, active); + $.post(OC.filePath('contacts', 'ajax', 'addressbook/activate.php'), {id: id, active: Number(active)}, function(jsondata) { + if (jsondata.status == 'success'){ + if(!active) { + $('#contacts h3[data-id="'+id+'"],#contacts ul[data-id="'+id+'"]').remove(); + } else { + OC.Contacts.Contacts.update(); + } + } else { + console.log('Error:', jsondata.data.message); + OC.Contacts.notify(t('contacts', 'Error') + ': ' + jsondata.data.message); + tgt.checked = !active; + } + }); + }, + doDelete:function(id) { + console.log('doDelete: ', id); + var check = confirm('Do you really want to delete this address book?'); + if(check == false){ + return false; + } else { + $.post(OC.filePath('contacts', 'ajax', 'addressbook/delete.php'), { id: id}, function(jsondata) { + if (jsondata.status == 'success'){ + $('#contacts h3[data-id="'+id+'"],#contacts ul[data-id="'+id+'"]').remove(); + $('.addressbooks-settings tr[data-id="'+id+'"]').remove() + OC.Contacts.Contacts.update(); + } else { + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + } + }, + doEdit:function(id) { + console.log('doEdit: ', id); + this.showActions(['active', 'name', 'description', 'save', 'cancel']); + var name = this.adrsettings.find('[data-id="'+id+'"]').find('.name').text(); + var description = this.adrsettings.find('[data-id="'+id+'"]').find('.description').text(); + var active = this.adrsettings.find('[data-id="'+id+'"]').find(':checkbox').is(':checked'); + console.log('name, desc', name, description); + this.adractions.find('.active').prop('checked', active); + this.adractions.find('.name').val(name); + this.adractions.find('.description').val(description); + this.adractions.data('id', id); + }, + doSave:function() { + var name = this.adractions.find('.name').val(); + var description = this.adractions.find('.description').val(); + var active = this.adractions.find('.active').is(':checked'); + var id = this.adractions.data('id'); + console.log('doSave:', id, name, description, active); + + if(name.length == 0) { + OC.dialogs.alert(t('contacts', 'Displayname cannot be empty.'), t('contacts', 'Error')); + return false; + } + var url; + if (id == 'new'){ + url = OC.filePath('contacts', 'ajax', 'addressbook/add.php'); + }else{ + url = OC.filePath('contacts', 'ajax', 'addressbook/update.php'); + } + self = this; + $.post(url, { id: id, name: name, active: Number(active), description: description }, + function(jsondata){ + if(jsondata.status == 'success'){ + self.showActions(['new',]); + self.adractions.removeData('id'); + active = Boolean(Number(jsondata.data.addressbook.active)); + if(id == 'new') { + self.adrsettings.find('table') + .append('' + + '' + + ''+jsondata.data.addressbook.displayname+'' + + ''+jsondata.data.addressbook.description+'' + + '' + + '' + + '' + + '' + + '' + + ''); + } else { + var row = self.adrsettings.find('tr[data-id="'+id+'"]'); + row.find('td.active').find('input:checkbox').prop('checked', active); + row.find('td.name').text(jsondata.data.addressbook.displayname); + row.find('td.description').text(jsondata.data.addressbook.description); + } + OC.Contacts.Contacts.update(); + } else { + OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + } + }); + }, + showLink:function(id, row, link) { + console.log('row:', row.length); + row.next('tr.link').remove(); + var linkrow = $('' + + '').insertAfter(row); + linkrow.find('input').focus().select(); + linkrow.find('button').click(function() { + $(this).parents('tr').first().remove(); + }); + }, + showCardDAV:function(id) { + console.log('showCardDAV: ', id); + var row = this.adrsettings.find('tr[data-id="'+id+'"]'); + this.showLink(id, row, totalurl+'/'+encodeURIComponent(oc_current_user)); + }, + showVCF:function(id) { + console.log('showVCF: ', id); + var row = this.adrsettings.find('tr[data-id="'+id+'"]'); + var link = totalurl+'/'+encodeURIComponent(oc_current_user)+'/'+encodeURIComponent(row.data('uri'))+'?export'; + console.log(link); + this.showLink(id, row, link); + } + } +}; + + +$(document).ready(function() { + OC.Contacts.Settings.init(); + + var moreless = $('#contacts-settings').find('.moreless').first(); + moreless.keydown(function(event) { + if(event.which == 13 || event.which == 32) { + moreless.click(); + } + }); + moreless.on('click', function(event) { + event.preventDefault(); + if(OC.Contacts.Settings.Addressbook.adrsettings.is(':visible')) { + OC.Contacts.Settings.Addressbook.adrsettings.slideUp(); + OC.Contacts.Settings.Addressbook.adrsettings.prev('dt').hide(); + moreless.text(t('contacts', 'More...')); + } else { + OC.Contacts.Settings.Addressbook.adrsettings.slideDown(); + OC.Contacts.Settings.Addressbook.adrsettings.prev('dt').show(); + moreless.text(t('contacts', 'Less...')); + } + }); + + OC.Contacts.Settings.Addressbook.adrsettings.keydown(function(event) { + if(event.which == 13 || event.which == 32) { + OC.Contacts.Settings.Addressbook.adrsettings.click(); + } + }); + + + OC.Contacts.Settings.Addressbook.adrsettings.on('click', function(event){ + $('.tipsy').remove(); + var tgt = $(event.target); + if(tgt.is('a') || tgt.is(':checkbox')) { + var id = tgt.parents('tr').first().data('id'); + if(!id) { + return; + } + if(tgt.is(':checkbox')) { + OC.Contacts.Settings.Addressbook.doActivate(id, tgt); + } else if(tgt.is('a')) { + if(tgt.hasClass('edit')) { + OC.Contacts.Settings.Addressbook.doEdit(id); + } else if(tgt.hasClass('delete')) { + OC.Contacts.Settings.Addressbook.doDelete(id); + } else if(tgt.hasClass('globe')) { + OC.Contacts.Settings.Addressbook.showCardDAV(id); + } else if(tgt.hasClass('cloud')) { + OC.Contacts.Settings.Addressbook.showVCF(id); + } + } + } else if(tgt.is('button')) { + event.preventDefault(); + if(tgt.hasClass('save')) { + OC.Contacts.Settings.Addressbook.doSave(); + } else if(tgt.hasClass('cancel')) { + OC.Contacts.Settings.Addressbook.showActions(['new']); + } else if(tgt.hasClass('new')) { + OC.Contacts.Settings.Addressbook.doEdit('new'); + } + } + }); +}); diff --git a/apps/contacts/l10n/ar.php b/apps/contacts/l10n/ar.php index 6bebda3b6a..cd57b69a89 100644 --- a/apps/contacts/l10n/ar.php +++ b/apps/contacts/l10n/ar.php @@ -1,15 +1,12 @@ "خطء خلال توقيف كتاب العناوين.", +"Error updating addressbook." => "خطء خلال تعديل كتاب العناوين", "There was an error adding the contact." => "خطء خلال اضافة معرفه جديده.", "Cannot add empty property." => "لا يمكنك اضافه صفه خاليه.", "At least one of the address fields has to be filled out." => "يجب ملء على الاقل خانه واحده من العنوان.", -"Error adding contact property." => "خطء خلال اضافة صفة المعرفه.", -"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." => "لم يتم العثور على الشخص.", @@ -25,34 +22,26 @@ "Fax" => "الفاكس", "Video" => "الفيديو", "Pager" => "الرنان", +"Birthday" => "تاريخ الميلاد", "Contact" => "معرفه", "Add Contact" => "أضف شخص ", "Addressbooks" => "كتب العناوين", -"New Address Book" => "كتاب عناوين جديد", -"CardDav Link" => "وصلة CardDav", -"Download" => "انزال", -"Edit" => "تعديل", "Delete" => "حذف", -"Download contact" => "انزال المعرفه", -"Delete contact" => "امحي المعرفه", -"Birthday" => "تاريخ الميلاد", "Preferred" => "مفضل", "Phone" => "الهاتف", +"Download contact" => "انزال المعرفه", +"Delete contact" => "امحي المعرفه", "Type" => "نوع", "PO Box" => "العنوان البريدي", "Extended" => "إضافة", -"Street" => "شارع", "City" => "المدينة", "Region" => "المنطقة", "Zipcode" => "رقم المنطقة", "Country" => "البلد", -"Add" => "أدخل", "Addressbook" => "كتاب العناوين", -"New Addressbook" => "كتاب عناوين جديد", -"Edit Addressbook" => "عدل كتاب العناوين", -"Displayname" => "الاسم المعروض", -"Active" => "فعال", +"Download" => "انزال", +"Edit" => "تعديل", +"New Address Book" => "كتاب عناوين جديد", "Save" => "حفظ", -"Submit" => "ارسال", "Cancel" => "الغاء" ); diff --git a/apps/contacts/l10n/ca.php b/apps/contacts/l10n/ca.php index 0c95b83d5e..925d78b684 100644 --- a/apps/contacts/l10n/ca.php +++ b/apps/contacts/l10n/ca.php @@ -1,39 +1,43 @@ "Error en (des)activar la llibreta d'adreces.", -"There was an error adding the contact." => "S'ha produït un error en afegir el contacte.", -"Cannot add empty property." => "No es pot afegir una propietat buida.", -"At least one of the address fields has to be filled out." => "Almenys heu d'omplir un dels camps d'adreça.", -"Trying to add duplicate property: " => "Esteu intentant afegir una propietat duplicada:", -"Error adding contact property." => "Error en afegir la propietat del contacte.", +"id is not set." => "no s'ha establert la id.", +"Cannot update addressbook with an empty name." => "No es pot actualitzar la llibreta d'adreces amb un nom buit", +"Error updating addressbook." => "Error en actualitzar la llibreta d'adreces.", "No ID provided" => "No heu facilitat cap ID", "Error setting checksum." => "Error en establir la suma de verificació.", "No categories selected for deletion." => "No heu seleccionat les categories a eliminar.", "No address books found." => "No s'han trobat llibretes d'adreces.", "No contacts found." => "No s'han trobat contactes.", -"Missing ID" => "Falta la ID", -"Error parsing VCard for ID: \"" => "Error en analitzar la ID de la VCard: \"", -"Cannot add addressbook with an empty name." => "No es pot afegir una llibreta d'adreces amb un nom buit.", -"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 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.", -"id is not set." => "no s'ha establert la id.", +"There was an error adding the contact." => "S'ha produït un error en afegir el contacte.", +"element name is not set." => "no s'ha establert el nom de l'element.", +"Could not parse contact: " => "No s'ha pogut processar el contacte:", +"Cannot add empty property." => "No es pot afegir una propietat buida.", +"At least one of the address fields has to be filled out." => "Almenys heu d'omplir un dels camps d'adreça.", +"Trying to add duplicate property: " => "Esteu intentant afegir una propietat duplicada:", +"Error adding contact property: " => "Error en afegir la propietat del contacte:", "Information about vCard is incorrect. Please reload the page." => "La informació de la vCard és incorrecta. Carregueu la pàgina de nou.", "Error deleting contact property." => "Error en eliminar la propietat del contacte.", -"Contact ID is missing." => "falta la ID del contacte.", -"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.", +"Missing ID" => "Falta la ID", +"Error parsing VCard for ID: \"" => "Error en analitzar la ID de la VCard: \"", "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:", "Something went FUBAR. " => "Alguna cosa ha anat FUBAR.", "Error updating contact property." => "Error en actualitzar la propietat del contacte.", -"Cannot update addressbook with an empty name." => "No es pot actualitzar la llibreta d'adreces amb un nom buit", -"Error updating addressbook." => "Error en actualitzar la llibreta d'adreces.", +"No contact ID was submitted." => "No s'ha tramès cap ID de contacte.", +"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.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Error en obtenir l'objecte contacte.", +"Error getting PHOTO property." => "Error en obtenir la propietat PHOTO.", +"Error saving contact." => "Error en desar el contacte.", +"Error resizing image" => "Error en modificar la mida de la imatge", +"Error cropping image" => "Error en retallar la imatge", +"Error creating temporary image" => "Error en crear la imatge temporal", +"Error finding image: " => "Error en trobar la imatge:", "Error uploading contacts to storage." => "Error en carregar contactes a l'emmagatzemament.", "There is no error, the file uploaded with success" => "No hi ha errors, el fitxer s'ha carregat correctament", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El fitxer carregat supera la directiva upload_max_filesize de php.ini", @@ -41,9 +45,27 @@ "The uploaded file was only partially uploaded" => "El fitxer només s'ha carregat parcialment", "No file was uploaded" => "No s'ha carregat cap fitxer", "Missing a temporary folder" => "Falta un fitxer temporal", +"Couldn't save temporary image: " => "No s'ha pogut desar la imatge temporal: ", +"Couldn't load temporary image: " => "No s'ha pogut carregar la imatge temporal: ", +"No file was uploaded. Unknown error" => "No s'ha carregat cap fitxer. Error desconegut", "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.", +"Sorry, this functionality has not been implemented yet" => "Aquesta funcionalitat encara no està implementada", +"Not implemented" => "No implementada", +"Couldn't get a valid address." => "No s'ha pogut obtenir una adreça vàlida.", +"Error" => "Error", +"This property has to be non-empty." => "Aquesta propietat no pot ser buida.", +"Couldn't serialize elements." => "No s'han pogut serialitzar els elements.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' s'ha cridat sense argument de tipus. Informeu-ne a bugs.owncloud.org", +"Edit name" => "Edita el nom", +"No files selected for upload." => "No s'han seleccionat fitxers per a la pujada.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "El fitxer que intenteu pujar excedeix la mida màxima de pujada en aquest servidor.", +"Select type" => "Seleccioneu un tipus", +"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Heu marcat eliminar alguns contactes, però encara no s'han eliminat. Espereu mentre s'esborren.", +"Result: " => "Resultat: ", +" imported, " => " importat, ", +" failed." => " fallada.", +"Displayname cannot be empty." => "El nom a mostrar no pot ser buit", +"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.", "Address" => "Adreça", @@ -60,25 +82,50 @@ "Video" => "Vídeo", "Pager" => "Paginador", "Internet" => "Internet", +"Birthday" => "Aniversari", +"Business" => "Negocis", +"Call" => "Trucada", +"Clients" => "Clients", +"Deliverer" => "Emissari", +"Holidays" => "Vacances", +"Ideas" => "Idees", +"Journey" => "Viatge", +"Jubilee" => "Aniversari", +"Meeting" => "Reunió", +"Other" => "Altres", +"Personal" => "Personal", +"Projects" => "Projectes", +"Questions" => "Preguntes", "{name}'s Birthday" => "Aniversari de {name}", "Contact" => "Contacte", "Add Contact" => "Afegeix un contacte", +"Import" => "Importa", +"Settings" => "Configuració", "Addressbooks" => "Llibretes d'adreces", -"Configure Address Books" => "Configura les llibretes d'adreces", -"New Address Book" => "Nova llibreta d'adreces", -"Import from VCF" => "Importa de VFC", -"CardDav Link" => "Enllaç CardDav", -"Download" => "Baixa", -"Edit" => "Edita", -"Delete" => "Suprimeix", -"Download contact" => "Baixa el contacte", -"Delete contact" => "Suprimeix el contacte", +"Close" => "Tanca", +"Keyboard shortcuts" => "Dreceres de teclat", +"Navigation" => "Navegació", +"Next contact in list" => "Següent contacte de la llista", +"Previous contact in list" => "Contacte anterior de la llista", +"Expand/collapse current addressbook" => "Expandeix/col·lapsa la llibreta d'adreces", +"Actions" => "Accions", +"Refresh contacts list" => "Carrega de nou la llista de contactes", +"Add new contact" => "Afegeix un contacte nou", +"Add new addressbook" => "Afegeix una llibreta d'adreces nova", +"Delete current contact" => "Esborra el contacte", "Drop photo to upload" => "Elimina la foto a carregar", +"Delete current photo" => "Elimina la foto actual", +"Edit current photo" => "Edita la foto actual", +"Upload new photo" => "Carrega una foto nova", +"Select photo from ownCloud" => "Selecciona una foto de ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format personalitzat, Nom curt, Nom sencer, Invertit o Invertit amb coma", "Edit name details" => "Edita detalls del nom", +"Delete" => "Suprimeix", "Nickname" => "Sobrenom", "Enter nickname" => "Escriviu el sobrenom", -"Birthday" => "Aniversari", +"Web site" => "Adreça web", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Vés a la web", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "Grups", "Separate groups with commas" => "Separeu els grups amb comes", @@ -94,24 +141,24 @@ "Edit address details" => "Edita els detalls de l'adreça", "Add notes here." => "Afegiu notes aquí.", "Add field" => "Afegeix un camp", -"Profile picture" => "Foto de perfil", "Phone" => "Telèfon", "Note" => "Nota", -"Delete current photo" => "Elimina la foto actual", -"Edit current photo" => "Edita la foto actual", -"Upload new photo" => "Carrega una foto nova", -"Select photo from ownCloud" => "Selecciona una foto de ownCloud", +"Download contact" => "Baixa el contacte", +"Delete contact" => "Suprimeix el contacte", +"The temporary image has been removed from cache." => "La imatge temporal ha estat eliminada de la memòria de cau.", "Edit address" => "Edita l'adreça", "Type" => "Tipus", "PO Box" => "Adreça postal", +"Street address" => "Adreça", +"Street and number" => "Carrer i número", "Extended" => "Addicional", -"Street" => "Carrer", +"Apartment number etc." => "Número d'apartament, etc.", "City" => "Ciutat", "Region" => "Comarca", +"E.g. state or province" => "p. ex. Estat o província ", "Zipcode" => "Codi postal", +"Postal code" => "Codi postal", "Country" => "País", -"Edit categories" => "Edita categories", -"Add" => "Afegeix", "Addressbook" => "Llibreta d'adreces", "Hon. prefixes" => "Prefix honorífic:", "Miss" => "Srta", @@ -132,26 +179,29 @@ "Esq." => "Esq.", "Jr." => "Jr.", "Sn." => "Sn.", -"New Addressbook" => "Nova llibreta d'adreces", -"Edit Addressbook" => "Edita la llibreta d'adreces", -"Displayname" => "Nom a mostrar", -"Active" => "Actiu", -"Save" => "Desa", -"Submit" => "Envia", -"Cancel" => "Cancel·la", "Import a contacts file" => "Importa un fitxer de contactes", "Please choose the addressbook" => "Escolliu la llibreta d'adreces", "create a new addressbook" => "crea una llibreta d'adreces nova", "Name of new addressbook" => "Nom de la nova llibreta d'adreces", -"Import" => "Importa", "Importing contacts" => "S'estan important contactes", -"Select address book to import to:" => "Seleccioneu la llibreta d'adreces a la que voleu importar:", -"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", "Configure addressbooks" => "Configura les llibretes d'adreces", +"Select Address Books" => "Selecccioneu llibretes d'adreces", +"Enter name" => "Escriviu un nom", +"Enter description" => "Escriviu una descripció", "CardDAV syncing addresses" => "Adreces de sincronització CardDAV", "more info" => "més informació", "Primary address (Kontact et al)" => "Adreça primària (Kontact i al)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "Mostra l'enllaç CardDav", +"Show read-only VCF link" => "Mostra l'enllaç VCF només de lectura", +"Download" => "Baixa", +"Edit" => "Edita", +"New Address Book" => "Nova llibreta d'adreces", +"Name" => "Nom", +"Description" => "Descripció", +"Save" => "Desa", +"Cancel" => "Cancel·la", +"More..." => "Més..." ); diff --git a/apps/contacts/l10n/cs_CZ.php b/apps/contacts/l10n/cs_CZ.php index 391a62010b..9b342328ac 100644 --- a/apps/contacts/l10n/cs_CZ.php +++ b/apps/contacts/l10n/cs_CZ.php @@ -1,39 +1,41 @@ "Chyba při (de)aktivaci adresáře.", -"There was an error adding the contact." => "Během přidávání kontaktu nastala chyba.", -"Cannot add empty property." => "Nelze přidat prazdný údaj.", -"At least one of the address fields has to be filled out." => "Musí být uveden nejméně jeden z adresních údajů", -"Trying to add duplicate property: " => "Pokoušíte se přidat duplicitní atribut: ", -"Error adding contact property." => "Chyba během přdávání údaje kontaktu.", +"id is not set." => "id neni nastaveno.", +"Cannot update addressbook with an empty name." => "Nelze aktualizovat adresář s prázdným jménem.", +"Error updating addressbook." => "Chyba při aktualizaci adresáře.", "No ID provided" => "ID nezadáno", "Error setting checksum." => "Chyba při nastavování kontrolního součtu.", "No categories selected for deletion." => "Žádné kategorie nebyly vybrány k smazání.", "No address books found." => "Žádný adresář nenalezen.", "No contacts found." => "Žádné kontakty nenalezeny.", -"Missing ID" => "Chybí ID", -"Error parsing VCard for ID: \"" => "Chyba při parsování VCard pro ID: \"", -"Cannot add addressbook with an empty name." => "Nelze přidat adresář s prázdným jménem.", -"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 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á.", -"id is not set." => "id neni nastaveno.", +"There was an error adding the contact." => "Během přidávání kontaktu nastala chyba.", +"element name is not set." => "jméno elementu není nastaveno.", +"Cannot add empty property." => "Nelze přidat prazdný údaj.", +"At least one of the address fields has to be filled out." => "Musí být uveden nejméně jeden z adresních údajů", +"Trying to add duplicate property: " => "Pokoušíte se přidat duplicitní atribut: ", "Information about vCard is incorrect. Please reload the page." => "Informace o vCard je nesprávná. Obnovte stránku, prosím.", "Error deleting contact property." => "Chyba při odstraňování údaje kontaktu.", -"Contact ID is missing." => "Chybí ID kontaktu.", -"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.", +"Missing ID" => "Chybí ID", +"Error parsing VCard for ID: \"" => "Chyba při parsování VCard pro ID: \"", "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.", "Something went FUBAR. " => "Něco se pokazilo. ", "Error updating contact property." => "Chyba při aktualizaci údaje kontaktu.", -"Cannot update addressbook with an empty name." => "Nelze aktualizovat adresář s prázdným jménem.", -"Error updating addressbook." => "Chyba při aktualizaci adresáře.", +"No contact ID was submitted." => "Nebylo nastaveno ID kontaktu.", +"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á.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Chyba při převzetí objektu kontakt.", +"Error getting PHOTO property." => "Chyba při získávání fotky.", +"Error saving contact." => "Chyba při ukládání kontaktu.", +"Error resizing image" => "Chyba při změně velikosti obrázku.", +"Error cropping image" => "Chyba při osekávání obrázku.", +"Error creating temporary image" => "Chyba při vytváření dočasného obrázku.", +"Error finding image: " => "Chyba při hledání obrázku:", "Error uploading contacts to storage." => "Chyba při nahrávání kontaktů do úložiště.", "There is no error, the file uploaded with success" => "Nevyskytla se žádná chyba, soubor byl úspěšně nahrán", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Nahrávaný soubor překračuje nastavení upload_max_filesize directive v php.ini", @@ -41,9 +43,24 @@ "The uploaded file was only partially uploaded" => "Nahrávaný soubor se nahrál pouze z části", "No file was uploaded" => "Žádný soubor nebyl nahrán", "Missing a temporary folder" => "Chybí dočasný adresář", +"Couldn't save temporary image: " => "Nemohu uložit dočasný obrázek: ", +"Couldn't load temporary image: " => "Nemohu načíst dočasný obrázek: ", +"No file was uploaded. Unknown error" => "Soubor nebyl odeslán. Neznámá chyba", "Contacts" => "Kontakty", -"Drop a VCF file to import contacts." => "Pro import kontaktů sem přetáhněte soubor VCF", -"Addressbook not found." => "Adresář nenalezen.", +"Sorry, this functionality has not been implemented yet" => "Bohužel, tato funkce nebyla ještě implementována.", +"Not implemented" => "Neimplementováno", +"Couldn't get a valid address." => "Nelze získat platnou adresu.", +"Error" => "Chyba", +"This property has to be non-empty." => "Tento parametr nemuže zůstat nevyplněn.", +"Couldn't serialize elements." => "Prvky nelze převést..", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' voláno bez argumentu. Prosím oznamte chybu na bugs.owncloud.org", +"Edit name" => "Upravit jméno", +"No files selected for upload." => "Žádné soubory nebyly vybrány k nahrání.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Soubor, který se pokoušíte odeslat, přesahuje maximální povolenou velikost.", +"Select type" => "Vybrat typ", +"Result: " => "Výsledek: ", +" imported, " => "importováno v pořádku,", +" failed." => "neimportováno.", "This is not your addressbook." => "Toto není Váš adresář.", "Contact could not be found." => "Kontakt nebyl nalezen.", "Address" => "Adresa", @@ -60,25 +77,23 @@ "Video" => "Video", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Narozeniny", "{name}'s Birthday" => "Narozeniny {name}", "Contact" => "Kontakt", "Add Contact" => "Přidat kontakt", +"Import" => "Import", "Addressbooks" => "Adresáře", -"Configure Address Books" => "Nastavit adresáře", -"New Address Book" => "Nový adresář", -"Import from VCF" => "Importovat z VCF", -"CardDav Link" => "CardDav odkaz", -"Download" => "Stažení", -"Edit" => "Editovat", -"Delete" => "Odstranit", -"Download contact" => "Stáhnout kontakt", -"Delete contact" => "Odstranit kontakt", +"Close" => "Zavřít", "Drop photo to upload" => "Přetáhněte sem fotku pro její nahrání", +"Delete current photo" => "Smazat současnou fotku", +"Edit current photo" => "Upravit současnou fotku", +"Upload new photo" => "Nahrát novou fotku", +"Select photo from ownCloud" => "Vybrat fotku z ownCloudu", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formát vlastní, křestní, celé jméno, obráceně nebo obráceně oddelené čárkami", "Edit name details" => "Upravit podrobnosti jména", +"Delete" => "Odstranit", "Nickname" => "Přezdívka", "Enter nickname" => "Zadejte přezdívku", -"Birthday" => "Narozeniny", "dd-mm-yyyy" => "dd. mm. yyyy", "Groups" => "Skupiny", "Separate groups with commas" => "Oddělte skupiny čárkami", @@ -94,24 +109,19 @@ "Edit address details" => "Upravit podrobnosti adresy", "Add notes here." => "Zde můžete připsat poznámky.", "Add field" => "Přidat políčko", -"Profile picture" => "Profilová fotka", "Phone" => "Telefon", "Note" => "Poznámka", -"Delete current photo" => "Smazat současnou fotku", -"Edit current photo" => "Upravit současnou fotku", -"Upload new photo" => "Nahrát novou fotku", -"Select photo from ownCloud" => "Vybrat fotku z ownCloudu", +"Download contact" => "Stáhnout kontakt", +"Delete contact" => "Odstranit kontakt", +"The temporary image has been removed from cache." => "Obrázek byl odstraněn z dočasné paměti.", "Edit address" => "Upravit adresu", "Type" => "Typ", "PO Box" => "PO box", "Extended" => "Rozšířené", -"Street" => "Ulice", "City" => "Město", "Region" => "Kraj", "Zipcode" => "PSČ", "Country" => "Země", -"Edit categories" => "Upravit kategorie", -"Add" => "Přidat", "Addressbook" => "Adresář", "Hon. prefixes" => "Tituly před", "Miss" => "Slečna", @@ -132,26 +142,21 @@ "Esq." => "Esq.", "Jr." => "ml.", "Sn." => "st.", -"New Addressbook" => "Nový adresář", -"Edit Addressbook" => "Editace adresáře", -"Displayname" => "Zobrazené jméno", -"Active" => "Aktivní", -"Save" => "Uložit", -"Submit" => "Potvrdit", -"Cancel" => "Storno", "Import a contacts file" => "Importovat soubor kontaktů", "Please choose the addressbook" => "Prosím zvolte adresář", "create a new addressbook" => "vytvořit nový adresář", "Name of new addressbook" => "Jméno nového adresáře", -"Import" => "Import", "Importing contacts" => "Importování kontaktů", -"Select address book to import to:" => "Vyberte adresář do kterého chcete importovat:", -"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", "Configure addressbooks" => "Nastavit adresář", "CardDAV syncing addresses" => "Adresa pro synchronizaci pomocí CardDAV:", "more info" => "víc informací", "Primary address (Kontact et al)" => "Hlavní adresa (Kontakt etc)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Stažení", +"Edit" => "Editovat", +"New Address Book" => "Nový adresář", +"Save" => "Uložit", +"Cancel" => "Storno" ); diff --git a/apps/contacts/l10n/da.php b/apps/contacts/l10n/da.php index 28753edda4..7d98c339f5 100644 --- a/apps/contacts/l10n/da.php +++ b/apps/contacts/l10n/da.php @@ -1,39 +1,41 @@ "Fejl ved (de)aktivering af adressebogen", -"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.", +"id is not set." => "Intet ID medsendt.", +"Cannot update addressbook with an empty name." => "Kan ikke opdatére adressebogen med et tomt navn.", +"Error updating addressbook." => "Fejl ved opdatering af adressebog", "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.", +"There was an error adding the contact." => "Der opstod en fejl ved tilføjelse af kontaktpersonen.", +"element name is not set." => "Elementnavnet er ikke medsendt.", +"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.", "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.", +"Missing ID" => "Manglende ID", +"Error parsing VCard for ID: \"" => "Kunne ikke indlæse VCard med ID'et: \"", "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", +"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.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Fejl ved indlæsning af kontaktpersonobjektet.", +"Error getting PHOTO property." => "Fejl ved indlæsning af PHOTO feltet.", +"Error saving contact." => "Kunne ikke gemme kontaktpersonen.", +"Error resizing image" => "Kunne ikke ændre billedets størrelse", +"Error cropping image" => "Kunne ikke beskære billedet", +"Error creating temporary image" => "Kunne ikke oprette midlertidigt billede", +"Error finding image: " => "Kunne ikke finde billedet: ", "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", @@ -41,9 +43,24 @@ "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.", +"Couldn't save temporary image: " => "Kunne ikke gemme midlertidigt billede: ", +"Couldn't load temporary image: " => "Kunne ikke indlæse midlertidigt billede", +"No file was uploaded. Unknown error" => "Ingen fil blev uploadet. Ukendt fejl.", "Contacts" => "Kontaktpersoner", -"Drop a VCF file to import contacts." => "Drop en VCF fil for at importere kontaktpersoner.", -"Addressbook not found." => "Adressebogen blev ikke fundet.", +"Sorry, this functionality has not been implemented yet" => "Denne funktion er desværre ikke implementeret endnu", +"Not implemented" => "Ikke implementeret", +"Couldn't get a valid address." => "Kunne ikke finde en gyldig adresse.", +"Error" => "Fejl", +"This property has to be non-empty." => "Dette felt må ikke være tomt.", +"Couldn't serialize elements." => "Kunne ikke serialisere elementerne.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' kaldet uden typeargument. Indrapporter fejl på bugs.owncloud.org", +"Edit name" => "Rediger navn", +"No files selected for upload." => "Der er ikke valgt nogen filer at uploade.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Dr.", +"Select type" => "Vælg type", +"Result: " => "Resultat:", +" imported, " => " importeret ", +" failed." => " fejl.", "This is not your addressbook." => "Dette er ikke din adressebog.", "Contact could not be found." => "Kontaktperson kunne ikke findes.", "Address" => "Adresse", @@ -60,25 +77,23 @@ "Video" => "Video", "Pager" => "Personsøger", "Internet" => "Internet", -"{name}'s Birthday" => "{name}'s fødselsdag", +"Birthday" => "Fødselsdag", +"{name}'s Birthday" => "{name}s fødselsdag", "Contact" => "Kontaktperson", "Add Contact" => "Tilføj kontaktperson", +"Import" => "Importer", "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", +"Close" => "Luk", "Drop photo to upload" => "Drop foto for at uploade", +"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", "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", +"Delete" => "Slet", +"Nickname" => "Kaldenavn", +"Enter nickname" => "Indtast kaldenavn", "dd-mm-yyyy" => "dd-mm-åååå", "Groups" => "Grupper", "Separate groups with commas" => "Opdel gruppenavne med kommaer", @@ -93,25 +108,20 @@ "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", +"Add field" => "Tilføj element", "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", +"Download contact" => "Download kontaktperson", +"Delete contact" => "Slet kontaktperson", +"The temporary image has been removed from cache." => "Det midlertidige billede er ikke længere tilgængeligt.", "Edit address" => "Rediger adresse", "Type" => "Type", "PO Box" => "Postboks", "Extended" => "Udvidet", -"Street" => "Vej", "City" => "By", "Region" => "Region", "Zipcode" => "Postnummer", "Country" => "Land", -"Edit categories" => "Rediger grupper", -"Add" => "Tilføj", "Addressbook" => "Adressebog", "Hon. prefixes" => "Foranstillede titler", "Miss" => "Frøken", @@ -119,7 +129,7 @@ "Mr" => "Hr.", "Sir" => "Sir", "Mrs" => "Fru", -"Dr" => "Dr", +"Dr" => "Dr.", "Given name" => "Fornavn", "Additional names" => "Mellemnavne", "Family name" => "Efternavn", @@ -132,26 +142,21 @@ "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", "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" +"iOS/OS X" => "iOS/OS X", +"Download" => "Download", +"Edit" => "Rediger", +"New Address Book" => "Ny adressebog", +"Save" => "Gem", +"Cancel" => "Fortryd" ); diff --git a/apps/contacts/l10n/de.php b/apps/contacts/l10n/de.php index 3a1013eb4f..5fa5bb4f9d 100644 --- a/apps/contacts/l10n/de.php +++ b/apps/contacts/l10n/de.php @@ -1,39 +1,43 @@ "(De-)Aktivierung des Adressbuches fehlgeschlagen", -"There was an error adding the contact." => "Erstellen des Kontakts fehlgeschlagen", -"Cannot add empty property." => "Feld darf nicht leer sein.", -"At least one of the address fields has to be filled out." => "Mindestens eines der Adressfelder muss ausgefüllt werden.", -"Trying to add duplicate property: " => "Versuche, doppelte Eigenschaft hinzuzufügen: ", -"Error adding contact property." => "Kontakt ändern fehlgeschlagen", +"id is not set." => "ID ist nicht angegeben.", +"Cannot update addressbook with an empty name." => "Adressbuch kann nicht mir leeren Namen aktualisiert werden.", +"Error updating addressbook." => "Adressbuch aktualisieren fehlgeschlagen", "No ID provided" => "Keine ID angegeben", "Error setting checksum." => "Fehler beim Setzen der Prüfsumme.", "No categories selected for deletion." => "Keine Kategorien zum Löschen ausgewählt.", "No address books found." => "Keine Adressbücher gefunden.", "No contacts found." => "Keine Kontakte gefunden.", -"Missing ID" => "Fehlende ID", -"Error parsing VCard for ID: \"" => "Fehler beim Einlesen der VCard für die ID: \"", -"Cannot add addressbook with an empty name." => "Bitte einen Namen für das Adressbuch angeben.", -"Error adding addressbook." => "Adressbuch hinzufügen fehlgeschlagen", -"Error activating addressbook." => "Adressbuchaktivierung fehlgeschlagen", -"No contact ID was submitted." => "Es wurde keine Kontakt-ID übermittelt.", -"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.", -"id is not set." => "ID ist nicht angegeben.", +"There was an error adding the contact." => "Erstellen des Kontakts fehlgeschlagen", +"element name is not set." => "Kein Name für das Element angegeben.", +"Could not parse contact: " => "Konnte folgenden Kontakt nicht verarbeiten:", +"Cannot add empty property." => "Feld darf nicht leer sein.", +"At least one of the address fields has to be filled out." => "Mindestens eines der Adressfelder muss ausgefüllt werden.", +"Trying to add duplicate property: " => "Versuche, doppelte Eigenschaft hinzuzufügen: ", +"Error adding contact property: " => "Fehler beim Hinzufügen der Kontakteigenschaft:", "Information about vCard is incorrect. Please reload the page." => "Die Information der vCard ist fehlerhaft. Bitte aktualisiere die Seite.", "Error deleting contact property." => "Kontakteigenschaft löschen fehlgeschlagen", -"Contact ID is missing." => "Keine Kontakt-ID angegeben.", -"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.", +"Missing ID" => "Fehlende ID", +"Error parsing VCard for ID: \"" => "Fehler beim Einlesen der VCard für die ID: \"", "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: ", "Something went FUBAR. " => "Irgendwas ist hier so richtig schief gelaufen. ", "Error updating contact property." => "Kontakteigenschaft aktualisieren fehlgeschlagen", -"Cannot update addressbook with an empty name." => "Adressbuch kann nicht mir leeren Namen aktualisiert werden.", -"Error updating addressbook." => "Adressbuch aktualisieren fehlgeschlagen", +"No contact ID was submitted." => "Es wurde keine Kontakt-ID übermittelt.", +"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.", +"Contact ID is missing." => "Keine Kontakt-ID angegeben.", +"No photo path was submitted." => "Kein Foto-Pfad übermittelt.", +"File doesn't exist:" => "Datei existiert nicht: ", +"Error loading image." => "Fehler beim Laden des Bildes.", +"Error getting contact object." => "Fehler beim Abruf des Kontakt-Objektes.", +"Error getting PHOTO property." => "Fehler beim Abrufen der PHOTO Eigenschaft.", +"Error saving contact." => "Fehler beim Speichern des Kontaktes", +"Error resizing image" => "Fehler bei der Größenänderung des Bildes", +"Error cropping image" => "Fehler beim Zuschneiden des Bildes", +"Error creating temporary image" => "Fehler beim erstellen des temporären Bildes", +"Error finding image: " => "Fehler beim Suchen des Bildes: ", "Error uploading contacts to storage." => "Übertragen der Kontakte fehlgeschlagen", "There is no error, the file uploaded with success" => "Alles bestens, Datei erfolgreich übertragen.", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Datei größer als durch die upload_max_filesize Direktive in php.ini erlaubt", @@ -41,14 +45,32 @@ "The uploaded file was only partially uploaded" => "Datei konnte nur teilweise übertragen werden", "No file was uploaded" => "Keine Datei konnte übertragen werden.", "Missing a temporary folder" => "Kein temporärer Ordner vorhanden", +"Couldn't save temporary image: " => "Konnte das temporäre Bild nicht speichern:", +"Couldn't load temporary image: " => "Konnte das temporäre Bild nicht laden:", +"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler", "Contacts" => "Kontakte", -"Drop a VCF file to import contacts." => "Zieh' eine VCF Datei hierher zum Kontaktimport", -"Addressbook not found." => "Adressbuch nicht gefunden.", +"Sorry, this functionality has not been implemented yet" => "Diese Funktion steht leider noch nicht zur Verfügung", +"Not implemented" => "Nicht Verfügbar", +"Couldn't get a valid address." => "Konnte keine gültige Adresse abrufen", +"Error" => "Fehler", +"This property has to be non-empty." => "Dieses Feld darf nicht Leer sein.", +"Couldn't serialize elements." => "Konnte Elemente nicht serialisieren", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' wurde ohne Argumente aufgerufen, bitte Melde dies auf bugs.owncloud.org", +"Edit name" => "Name ändern", +"No files selected for upload." => "Keine Datei(en) zum Hochladen ausgewählt", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei, die Sie versuchen hochzuladen, überschreitet die maximale Größe für Datei-Uploads auf diesem Server.", +"Select type" => "Wähle Typ", +"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Einige zum Löschen markiert Kontakte wurden noch nicht gelöscht. Bitte warten ...", +"Result: " => "Ergebnis: ", +" imported, " => " importiert, ", +" failed." => " fehlgeschlagen.", +"Displayname cannot be empty." => "Der Anzeigename darf nicht leer sein.", +"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.", "Address" => "Adresse", "Telephone" => "Telefon", -"Email" => "Email", +"Email" => "E-Mail", "Organization" => "Organisation", "Work" => "Arbeit", "Home" => "Zuhause", @@ -60,28 +82,55 @@ "Video" => "Video", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Geburtstag", +"Business" => "Geschäftlich", +"Call" => "Anruf", +"Clients" => "Kunden", +"Deliverer" => "Lieferant", +"Holidays" => "Feiertage", +"Ideas" => "Ideen", +"Journey" => "Reise", +"Jubilee" => "Jubiläum", +"Meeting" => "Besprechung", +"Other" => "Andere", +"Personal" => "Persönlich", +"Projects" => "Projekte", +"Questions" => "Fragen", "{name}'s Birthday" => "Geburtstag von {name}", "Contact" => "Kontakt", "Add Contact" => "Kontakt hinzufügen", +"Import" => "Importieren", +"Settings" => "Einstellungen", "Addressbooks" => "Adressbücher", -"Configure Address Books" => "Adressbücher konfigurieren", -"New Address Book" => "Neues Adressbuch", -"Import from VCF" => "Import von VCF Datei", -"CardDav Link" => "CardDav Link", -"Download" => "Herunterladen", -"Edit" => "Bearbeiten", +"Close" => "Schließen", +"Keyboard shortcuts" => "Tastaturbefehle", +"Navigation" => "Navigation", +"Next contact in list" => "Nächster Kontakt aus der Liste", +"Previous contact in list" => "Vorheriger Kontakt aus der Liste", +"Expand/collapse current addressbook" => "Ausklappen/Einklappen des Adressbuches", +"Next addressbook" => "Nächstes Adressbuch", +"Previous addressbook" => "Vorheriges Adressbuch", +"Actions" => "Aktionen", +"Refresh contacts list" => "Kontaktliste neu laden", +"Add new contact" => "Neuen Kontakt hinzufügen", +"Add new addressbook" => "Neues Adressbuch hinzufügen", +"Delete current contact" => "Aktuellen Kontakt löschen", +"Drop photo to upload" => "Zieh' ein Foto hierher zum Hochladen", +"Delete current photo" => "Derzeitiges Foto löschen", +"Edit current photo" => "Foto ändern", +"Upload new photo" => "Neues Foto hochladen", +"Select photo from ownCloud" => "Foto aus ownCloud auswählen", +"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format benutzerdefiniert, Kurzname, Vollname, Rückwärts oder Rückwärts mit Komma", +"Edit name details" => "Name ändern", "Delete" => "Löschen", -"Download contact" => "Kontakt herunterladen", -"Delete contact" => "Kontakt löschen", -"Drop photo to upload" => "Zieh' ein Foto hierher zum hochladen", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format benutzerdefiniert, Kurzname, Vollname, Rückwärts order Rückwärts mit Komma", -"Edit name details" => "Namen ändern", "Nickname" => "Spitzname", -"Enter nickname" => "Spitznamen angeben", -"Birthday" => "Geburtstag", -"dd-mm-yyyy" => "TT-MM-JJJJ", +"Enter nickname" => "Spitzname angeben", +"Web site" => "Webseite", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Webseite aufrufen", +"dd-mm-yyyy" => "dd.mm.yyyy", "Groups" => "Gruppen", -"Separate groups with commas" => "Gruppen mit Komma trennt", +"Separate groups with commas" => "Gruppen mit Komma getrennt", "Edit groups" => "Gruppen editieren", "Preferred" => "Bevorzugt", "Please specify a valid email address." => "Bitte eine gültige E-Mail-Adresse angeben.", @@ -94,24 +143,24 @@ "Edit address details" => "Adressinformationen ändern", "Add notes here." => "Füge hier Notizen ein.", "Add field" => "Feld hinzufügen", -"Profile picture" => "Profil Bild", "Phone" => "Telefon", "Note" => "Notiz", -"Delete current photo" => "Derzeitiges Foto löschen", -"Edit current photo" => "Foto ändern", -"Upload new photo" => "Neues Foto hochladen", -"Select photo from ownCloud" => "Foto aus ownCloud auswählen", +"Download contact" => "Kontakt herunterladen", +"Delete contact" => "Kontakt löschen", +"The temporary image has been removed from cache." => "Das temporäre Bild wurde aus dem Cache gelöscht.", "Edit address" => "Adresse ändern", "Type" => "Typ", "PO Box" => "Postfach", +"Street address" => "Straßenanschrift", +"Street and number" => "Straße und Nummer", "Extended" => "Erweitert", -"Street" => "Straße", +"Apartment number etc." => "Wohnungsnummer usw.", "City" => "Stadt", "Region" => "Region", +"E.g. state or province" => "Z.B. Staat oder Bezirk", "Zipcode" => "Postleitzahl", +"Postal code" => "PLZ", "Country" => "Land", -"Edit categories" => "Kategorie ändern", -"Add" => "Hinzufügen", "Addressbook" => "Adressbuch", "Hon. prefixes" => "Höflichkeitspräfixe", "Miss" => "Frau", @@ -132,26 +181,29 @@ "Esq." => "Hochwohlgeborenen", "Jr." => "Jr.", "Sn." => "Senior", -"New Addressbook" => "Neues Adressbuch", -"Edit Addressbook" => "Adressbuch editieren", -"Displayname" => "Anzeigename", -"Active" => "Aktiv", -"Save" => "Speichern", -"Submit" => "Eintragen", -"Cancel" => "Abbrechen", "Import a contacts file" => "Kontaktdatei importieren", "Please choose the addressbook" => "Bitte Adressbuch auswählen", "create a new addressbook" => "Neues Adressbuch erstellen", "Name of new addressbook" => "Name des neuen Adressbuchs", -"Import" => "Importieren", "Importing contacts" => "Kontakte werden importiert", -"Select address book to import to:" => "Adressbuch, in das importiert werden soll", -"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", +"Select Address Books" => "Wähle Adressbuch", +"Enter name" => "Name eingeben", +"Enter description" => "Beschreibung eingeben", "CardDAV syncing addresses" => "CardDAV Sync-Adressen", "more info" => "mehr Info", "Primary address (Kontact et al)" => "primäre Adresse (für Kontact o.ä. Programme)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "CardDav-Link anzeigen", +"Show read-only VCF link" => "Schreibgeschützten VCF-Link anzeigen", +"Download" => "Herunterladen", +"Edit" => "Bearbeiten", +"New Address Book" => "Neues Adressbuch", +"Name" => "Name", +"Description" => "Beschreibung", +"Save" => "Speichern", +"Cancel" => "Abbrechen", +"More..." => "Mehr..." ); diff --git a/apps/contacts/l10n/el.php b/apps/contacts/l10n/el.php index f015f0ca36..2f31bccbf2 100644 --- a/apps/contacts/l10n/el.php +++ b/apps/contacts/l10n/el.php @@ -1,39 +1,43 @@ "Σφάλμα (απ)ενεργοποίησης βιβλίου διευθύνσεων", -"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", +"id is not set." => "δεν ορίστηκε id", +"Cannot update addressbook with an empty name." => "Δε μπορεί να γίνει αλλαγή βιβλίου διευθύνσεων χωρίς όνομα", +"Error updating addressbook." => "Σφάλμα ενημέρωσης βιβλίου διευθύνσεων.", +"No ID provided" => "Δε δόθηκε ID", "Error setting checksum." => "Λάθος κατά τον ορισμό checksum ", "No categories selected for deletion." => "Δε επελέγησαν κατηγορίες για διαγραφή", "No address books found." => "Δε βρέθηκε βιβλίο διευθύνσεων", "No contacts found." => "Δεν βρέθηκαν επαφές", +"There was an error adding the contact." => "Σφάλμα κατά την προσθήκη επαφής.", +"element name is not set." => "δεν ορίστηκε όνομα στοιχείου", +"Could not parse 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: " => "Σφάλμα στη προσθήκη ιδιότητας επαφής", +"Information about vCard is incorrect. Please reload the page." => "Οι πληροφορίες σχετικά με vCard είναι εσφαλμένες. Παρακαλώ επαναφορτώστε τη σελίδα.", +"Error deleting contact property." => "Σφάλμα διαγραφής ιδιότητας επαφής.", "Missing ID" => "Λείπει ID", "Error parsing VCard for ID: \"" => "Σφάλμα κατά την ανάγνωση του VCard για το ID:\"", -"Cannot add addressbook with an empty name." => "Δε μπορεί να προστεθεί βιβλίο διευθύνσεων με κενό όνομα", -"Error adding addressbook." => "Σφάλμα προσθήκης βιβλίου διευθύνσεων.", -"Error activating addressbook." => "Σφάλμα ενεργοποίησης βιβλίου διευθύνσεων", +"checksum is not set." => "δε ορίστηκε checksum ", +"Information about vCard is incorrect. Please reload the page: " => "Οι πληροφορίες για τη vCard είναι λανθασμένες.Παρακαλώ ξαναφορτώστε τη σελίδα: ", +"Something went FUBAR. " => "Κάτι χάθηκε στο άγνωστο. ", +"Error updating contact property." => "Σφάλμα ενημέρωσης ιδιότητας επαφής.", "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." => "δε ορίστηκε checksum ", -"Information about vCard is incorrect. Please reload the page: " => "Οι πληροφορίες για τη vCard είναι λανθασμένες.Παρακαλώ ξαναφορτώστε τη σελίδα:", -"Something went FUBAR. " => "Κάτι χάθηκε στο άγνωστο", -"Error updating contact property." => "Σφάλμα ενημέρωσης ιδιότητας επαφής.", -"Cannot update addressbook with an empty name." => "Δε μπορεί να γίνει αλλαγή βιβλίου διευθύνσεων χωρίς όνομα", -"Error updating addressbook." => "Σφάλμα ενημέρωσης βιβλίου διευθύνσεων.", +"Error getting contact object." => "Σφάλμα κατά τη λήψη αντικειμένου επαφής", +"Error getting PHOTO property." => "Σφάλμα κατά τη λήψη ιδιοτήτων ΦΩΤΟΓΡΑΦΙΑΣ.", +"Error saving contact." => "Σφάλμα κατά την αποθήκευση επαφής.", +"Error resizing image" => "Σφάλμα κατά την αλλαγή μεγέθους εικόνας", +"Error cropping image" => "Σφάλμα κατά την περικοπή εικόνας", +"Error creating temporary image" => "Σφάλμα κατά την δημιουργία προσωρινής εικόνας", +"Error finding image: " => "Σφάλμα κατά την εύρεση της εικόνας: ", "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", @@ -41,9 +45,25 @@ "The uploaded file was only partially uploaded" => "Το αρχείο ανέβηκε μερικώς", "No file was uploaded" => "Δεν ανέβηκε κάποιο αρχείο", "Missing a temporary folder" => "Λείπει ο προσωρινός φάκελος", +"Couldn't save temporary image: " => "Δεν ήταν δυνατή η αποθήκευση της προσωρινής εικόνας: ", +"Couldn't load temporary image: " => "Δεν ήταν δυνατή η φόρτωση της προσωρινής εικόνας: ", +"No file was uploaded. Unknown error" => "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα", "Contacts" => "Επαφές", -"Drop a VCF file to import contacts." => "Εισάγεται ένα VCF αρχείο για εισαγωγή επαφών", -"Addressbook not found." => "Δε βρέθηκε βιβλίο διευθύνσεων", +"Sorry, this functionality has not been implemented yet" => "Λυπούμαστε, αυτή η λειτουργία δεν έχει υλοποιηθεί ακόμα", +"Not implemented" => "Δεν έχει υλοποιηθεί", +"Couldn't get a valid address." => "Αδυναμία λήψης έγκυρης διεύθυνσης", +"Error" => "Σφάλμα", +"This property has to be non-empty." => "Το πεδίο δεν πρέπει να είναι άδειο.", +"Couldn't serialize elements." => "Αδύνατο να μπουν σε σειρά τα στοιχεία", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "το 'deleteProperty' καλέστηκε χωρίς without type argument. Παρακαλώ αναφέρατε στο bugs.owncloud.org", +"Edit name" => "Αλλαγή ονόματος", +"No files selected for upload." => "Δεν επιλέχτηκαν αρχεία για μεταφόρτωση", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Το αρχείο που προσπαθείτε να ανεβάσετε υπερβαίνει το μέγιστο μέγεθος για τις προσθήκες αρχείων σε αυτόν τον server.", +"Select type" => "Επιλογή τύπου", +"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Κάποιες επαφές σημειώθηκαν προς διαγραφή,δεν έχουν διαγραφεί ακόμα. Παρακαλώ περιμένετε μέχρι να διαγραφούν.", +"Result: " => "Αποτέλεσμα: ", +" imported, " => " εισάγεται,", +" failed." => " απέτυχε.", "This is not your addressbook." => "Αυτό δεν είναι το βιβλίο διευθύνσεων σας.", "Contact could not be found." => "Η επαφή δεν μπόρεσε να βρεθεί.", "Address" => "Διεύθυνση", @@ -55,30 +75,55 @@ "Mobile" => "Κινητό", "Text" => "Κείμενο", "Voice" => "Ομιλία", -"Message" => "Μήνυμα ", +"Message" => "Μήνυμα", "Fax" => "Φαξ", "Video" => "Βίντεο", "Pager" => "Βομβητής", "Internet" => "Διαδίκτυο", +"Birthday" => "Γενέθλια", +"Business" => "Επιχείρηση", +"Call" => "Κάλεσε", +"Clients" => "Πελάτες", +"Deliverer" => "Προμηθευτής", +"Holidays" => "Διακοπές", +"Ideas" => "Ιδέες", +"Journey" => "Ταξίδι", +"Jubilee" => "Ιωβηλαίο", +"Meeting" => "Συνάντηση", +"Other" => "Άλλο", +"Personal" => "Προσωπικό", +"Projects" => "Έργα", +"Questions" => "Ερωτήσεις", "{name}'s Birthday" => "{name} έχει Γενέθλια", "Contact" => "Επαφή", "Add Contact" => "Προσθήκη επαφής", +"Import" => "Εισαγωγή", +"Settings" => "Ρυθμίσεις", "Addressbooks" => "Βιβλία διευθύνσεων", -"Configure Address Books" => "Ρυθμίστε το βιβλίο διευθύνσεων ", -"New Address Book" => "Νέο βιβλίο διευθύνσεων", -"Import from VCF" => "Εισαγωγή από VCF αρχείο", -"CardDav Link" => "Σύνδεσμος CardDav", -"Download" => "Λήψη", -"Edit" => "Επεξεργασία", -"Delete" => "Διαγραφή", -"Download contact" => "Λήψη επαφής", -"Delete contact" => "Διαγραφή επαφής", +"Close" => "Κλείσιμο ", +"Keyboard shortcuts" => "Συντομεύσεις πλητρολογίου", +"Navigation" => "Πλοήγηση", +"Next contact in list" => "Επόμενη επαφή στη λίστα", +"Previous contact in list" => "Προηγούμενη επαφή στη λίστα", +"Expand/collapse current addressbook" => "Ανάπτυξη/σύμπτυξη τρέχοντος βιβλίου διευθύνσεων", +"Actions" => "Ενέργειες", +"Refresh contacts list" => "Ανανέωσε τη λίστα επαφών", +"Add new contact" => "Προσθήκη νέας επαφής", +"Add new addressbook" => "Προσθήκη νέου βιβλίου επαφών", +"Delete current contact" => "Διαγραφή τρέχουσας επαφής", "Drop photo to upload" => "Ρίξε μια φωτογραφία για ανέβασμα", +"Delete current photo" => "Διαγραφή τρέχουσας φωτογραφίας", +"Edit current photo" => "Επεξεργασία τρέχουσας φωτογραφίας", +"Upload new photo" => "Ανέβασε νέα φωτογραφία", +"Select photo from ownCloud" => "Επέλεξε φωτογραφία από το ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format custom, Όνομα, Επώνυμο, Αντίστροφο ή Αντίστροφο με κόμμα", "Edit name details" => "Αλλάξτε τις λεπτομέρειες ονόματος", +"Delete" => "Διαγραφή", "Nickname" => "Παρατσούκλι", -"Enter nickname" => "Εισάγεται παρατσούκλι", -"Birthday" => "Γενέθλια", +"Enter nickname" => "Εισάγετε παρατσούκλι", +"Web site" => "Ιστότοπος", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Πήγαινε στον ιστότοπο", "dd-mm-yyyy" => "ΗΗ-ΜΜ-ΕΕΕΕ", "Groups" => "Ομάδες", "Separate groups with commas" => "Διαχώρισε τις ομάδες με κόμμα ", @@ -94,24 +139,24 @@ "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", +"Download contact" => "Λήψη επαφής", +"Delete contact" => "Διαγραφή επαφής", +"The temporary image has been removed from cache." => "Η προσωρινή εικόνα αφαιρέθηκε από την κρυφή μνήμη.", "Edit address" => "Επεξεργασία διεύθυνσης", "Type" => "Τύπος", "PO Box" => "Ταχ. Θυρίδα", +"Street address" => "Διεύθυνση οδού", +"Street and number" => "Οδός και αριθμός", "Extended" => "Εκτεταμένη", -"Street" => "Οδός", +"Apartment number etc." => "Αριθμός διαμερίσματος", "City" => "Πόλη", "Region" => "Περιοχή", +"E.g. state or province" => "Π.χ. Πολιτεία ή επαρχεία", "Zipcode" => "Τ.Κ.", +"Postal code" => "Ταχυδρομικός Κωδικός", "Country" => "Χώρα", -"Edit categories" => "Επεξεργασία κατηγορίας", -"Add" => "Προσθήκη", "Addressbook" => "Βιβλίο διευθύνσεων", "Hon. prefixes" => "προθέματα", "Miss" => "Δις", @@ -132,26 +177,27 @@ "Esq." => "Esq.", "Jr." => "Jr.", "Sn." => "Sn.", -"New Addressbook" => "Νέο βιβλίο διευθύνσεων", -"Edit Addressbook" => "Επεξεργασία βιβλίου διευθύνσεων", -"Displayname" => "Προβαλόμενο όνομα", -"Active" => "Ενεργό", -"Save" => "Αποθήκευση", -"Submit" => "Καταχώρηση", -"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" => "Ρύθμισε το βιβλίο διευθύνσεων", +"Select Address Books" => "Επέλεξε βιβλίο διευθύνσεων", +"Enter name" => "Εισαγωγή ονόματος", +"Enter description" => "Εισαγωγή περιγραφής", "CardDAV syncing addresses" => "συγχρονισμός διευθύνσεων μέσω CardDAV ", "more info" => "περισσότερες πληροφορίες", "Primary address (Kontact et al)" => "Κύρια διεύθυνση", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Λήψη", +"Edit" => "Επεξεργασία", +"New Address Book" => "Νέο βιβλίο διευθύνσεων", +"Name" => "Όνομα", +"Description" => "Περιγραφή", +"Save" => "Αποθήκευση", +"Cancel" => "Ακύρωση", +"More..." => "Περισσότερα..." ); diff --git a/apps/contacts/l10n/eo.php b/apps/contacts/l10n/eo.php index ffc885a41a..29ac52b1fe 100644 --- a/apps/contacts/l10n/eo.php +++ b/apps/contacts/l10n/eo.php @@ -1,46 +1,63 @@ "Eraro dum (mal)aktivigo de adresaro.", -"There was an error adding the contact." => "Eraro okazis dum aldono de kontakto.", -"Cannot add empty property." => "Ne eblas aldoni malplenan propraĵon.", -"At least one of the address fields has to be filled out." => "Almenaŭ unu el la adreskampoj necesas pleniĝi.", -"Trying to add duplicate property: " => "Provante aldoni duobligitan propraĵon:", -"Error adding contact property." => "Eraro dum aldono de kontaktopropraĵo.", +"id is not set." => "identigilo ne agordiĝis.", +"Cannot update addressbook with an empty name." => "Ne eblas ĝisdatigi adresaron kun malplena nomo.", +"Error updating addressbook." => "Eraro dum ĝisdatigo de adresaro.", "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.", -"Missing ID" => "Mankas identigilo", -"Error parsing VCard for ID: \"" => "Eraro dum analizo de VCard por identigilo:", -"Cannot add addressbook with an empty name." => "Ne eblas aldoni adresaron kun malplena nomo.", -"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 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.", -"id is not set." => "identigilo ne agordiĝis.", +"There was an error adding the contact." => "Eraro okazis dum aldono de kontakto.", +"element name is not set." => "eronomo ne agordiĝis.", +"Cannot add empty property." => "Ne eblas aldoni malplenan propraĵon.", +"At least one of the address fields has to be filled out." => "Almenaŭ unu el la adreskampoj necesas pleniĝi.", +"Trying to add duplicate property: " => "Provante aldoni duobligitan propraĵon:", +"Error adding contact property: " => "Eraro aldonante kontakta propraĵo:", "Information about vCard is incorrect. Please reload the page." => "Informo pri vCard estas malĝusta. Bonvolu reŝargi la paĝon.", "Error deleting contact property." => "Eraro dum forigo de kontaktopropraĵo.", -"Contact ID is missing." => "Kontaktidentigilo mankas.", -"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.", +"Missing ID" => "Mankas identigilo", +"Error parsing VCard for ID: \"" => "Eraro dum analizo de VCard por identigilo:", "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.", -"Error updating addressbook." => "Eraro dum ĝisdatigo de adresaro.", +"No contact ID was submitted." => "Neniu kontaktidentigilo sendiĝis.", +"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.", +"Contact ID is missing." => "Kontaktidentigilo mankas.", +"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.", +"Error getting contact object." => "Eraro dum ekhaviĝis kontakta objekto.", +"Error getting PHOTO property." => "Eraro dum ekhaviĝis la propraĵon PHOTO.", +"Error saving contact." => "Eraro dum konserviĝis kontakto.", +"Error resizing image" => "Eraro dum aligrandiĝis bildo", +"Error cropping image" => "Eraro dum stuciĝis bildo.", +"Error creating temporary image" => "Eraro dum kreiĝis provizora bildo.", +"Error finding image: " => "Eraro dum serĉo de bildo: ", +"Error uploading contacts to storage." => "Eraro dum alŝutiĝis kontaktoj al konservejo.", "There is no error, the file uploaded with success" => "Ne estas eraro, la dosiero alŝutiĝis sukcese.", "The uploaded file was only partially uploaded" => "la alŝutita dosiero nur parte alŝutiĝis", "No file was uploaded" => "Neniu dosiero alŝutiĝis.", "Missing a temporary folder" => "Mankas provizora dosierujo.", +"Couldn't save temporary image: " => "Ne eblis konservi provizoran bildon: ", +"Couldn't load temporary image: " => "Ne eblis ŝargi provizoran bildon: ", +"No file was uploaded. Unknown error" => "Neniu dosiero alŝutiĝis. Nekonata eraro.", "Contacts" => "Kontaktoj", -"Drop a VCF file to import contacts." => "Demetu VCF-dosieron por enporti kontaktojn.", -"Addressbook not found." => "Adresaro ne troviĝis.", +"Sorry, this functionality has not been implemented yet" => "Pardonu, ĉi tiu funkcio ankoraŭ ne estas realigita.", +"Not implemented" => "Ne disponebla", +"Couldn't get a valid address." => "Ne eblis ekhavi validan adreson.", +"Error" => "Eraro", +"This property has to be non-empty." => "Ĉi tiu propraĵo devas ne esti malplena.", +"Edit name" => "Redakti nomon", +"No files selected for upload." => "Neniu dosiero elektita por alŝuto.", +"Select type" => "Elektu tipon", +"Result: " => "Rezulto: ", +" imported, " => " enportoj, ", +" failed." => "malsukcesoj.", +"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.", "Address" => "Adreso", @@ -57,25 +74,43 @@ "Video" => "Videaĵo", "Pager" => "Televokilo", "Internet" => "Interreto", +"Birthday" => "Naskiĝotago", +"Business" => "Negoco", +"Clients" => "Klientoj", +"Ideas" => "Ideoj", +"Meeting" => "Kunveno", +"Other" => "Alia", +"Personal" => "Persona", +"Projects" => "Projektoj", +"Questions" => "Demandoj", "{name}'s Birthday" => "Naskiĝtago de {name}", "Contact" => "Kontakto", "Add Contact" => "Aldoni kontakton", +"Import" => "Enporti", +"Settings" => "Agordo", "Addressbooks" => "Adresaroj", -"Configure Address Books" => "Agordi adresarojn", -"New Address Book" => "Nova adresaro", -"Import from VCF" => "Enporti el VCF", -"CardDav Link" => "CardDav-ligilo", -"Download" => "Elŝuti", -"Edit" => "Redakti", -"Delete" => "Forigi", -"Download contact" => "Elŝuti kontakton", -"Delete contact" => "Forigi kontakton", +"Close" => "Fermi", +"Keyboard shortcuts" => "Fulmoklavoj", +"Navigation" => "Navigado", +"Next contact in list" => "Sekva kontakto en la listo", +"Previous contact in list" => "Malsekva kontakto en la listo", +"Actions" => "Agoj", +"Add new contact" => "Aldoni novan kontakton", +"Add new addressbook" => "Aldoni novan adresaron", +"Delete current contact" => "Forigi la nunan kontakton", "Drop photo to upload" => "Demeti foton por alŝuti", +"Delete current photo" => "Forigi nunan foton", +"Edit current photo" => "Redakti nunan foton", +"Upload new photo" => "Alŝuti novan foton", +"Select photo from ownCloud" => "Elekti foton el ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Propra formo, Mallonga nomo, Longa nomo, Inversa aŭ Inversa kun komo", "Edit name details" => "Redakti detalojn de nomo", +"Delete" => "Forigi", "Nickname" => "Kromnomo", "Enter nickname" => "Enigu kromnomon", -"Birthday" => "Naskiĝotago", +"Web site" => "TTT-ejo", +"http://www.somesite.com" => "http://www.iuejo.com", +"Go to web site" => "Iri al TTT-ejon", "dd-mm-yyyy" => "yyyy-mm-dd", "Groups" => "Grupoj", "Separate groups with commas" => "Disigi grupojn per komoj", @@ -91,24 +126,22 @@ "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", -"Edit current photo" => "Redakti nunan foton", -"Upload new photo" => "Alŝuti novan foton", -"Select photo from ownCloud" => "Elekti foton el ownCloud", +"Download contact" => "Elŝuti kontakton", +"Delete contact" => "Forigi kontakton", +"The temporary image has been removed from cache." => "La provizora bildo estas forigita de la kaŝmemoro.", "Edit address" => "Redakti adreson", "Type" => "Tipo", "PO Box" => "Abonkesto", +"Street address" => "Stratadreso", +"Street and number" => "Strato kaj numero", "Extended" => "Etendita", -"Street" => "Strato", "City" => "Urbo", "Region" => "Regiono", "Zipcode" => "Poŝtokodo", +"Postal code" => "Poŝtkodo", "Country" => "Lando", -"Edit categories" => "Redakti kategoriojn", -"Add" => "Aldoni", "Addressbook" => "Adresaro", "Hon. prefixes" => "Honoraj antaŭmetaĵoj", "Miss" => "f-ino", @@ -121,26 +154,29 @@ "Additional names" => "Pliaj nomoj", "Family name" => "Familia nomo", "Hon. suffixes" => "Honoraj postmetaĵoj", -"New Addressbook" => "Nova adresaro", -"Edit Addressbook" => "Redakti adresaron", -"Displayname" => "Montronomo", -"Active" => "Aktiva", -"Save" => "Konservi", -"Submit" => "Sendi", -"Cancel" => "Nuligi", "Import a contacts file" => "Enporti kontaktodosieron", "Please choose the addressbook" => "Bonvolu elekti adresaron", "create a new addressbook" => "krei novan adresaron", "Name of new addressbook" => "Nomo de nova adresaro", -"Import" => "Enporti", "Importing contacts" => "Enportante kontaktojn", -"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", +"Select Address Books" => "Elektu adresarojn", +"Enter name" => "Enigu nomon", +"Enter description" => "Enigu priskribon", "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" +"iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "Montri CardDav-ligilon", +"Show read-only VCF link" => "Montri nur legeblan VCF-ligilon", +"Download" => "Elŝuti", +"Edit" => "Redakti", +"New Address Book" => "Nova adresaro", +"Name" => "Nomo", +"Description" => "Priskribo", +"Save" => "Konservi", +"Cancel" => "Nuligi", +"More..." => "Pli..." ); diff --git a/apps/contacts/l10n/es.php b/apps/contacts/l10n/es.php index 2bdb300aa8..e9ee24d529 100644 --- a/apps/contacts/l10n/es.php +++ b/apps/contacts/l10n/es.php @@ -1,39 +1,41 @@ "Error al (des)activar libreta de direcciones.", -"There was an error adding the contact." => "Se ha producido un error al añadir el contacto.", -"Cannot add empty property." => "No se puede añadir una propiedad vacía.", -"At least one of the address fields has to be filled out." => "Al menos uno de los campos de direcciones se tiene que rellenar.", -"Trying to add duplicate property: " => "Intentando añadir una propiedad duplicada: ", -"Error adding contact property." => "Error al añadir una propiedad del contacto.", +"id is not set." => "no se ha puesto ninguna ID.", +"Cannot update addressbook with an empty name." => "No se puede actualizar una libreta de direcciones sin nombre.", +"Error updating addressbook." => "Error al actualizar la libreta de direcciones.", "No ID provided" => "No se ha proporcionado una ID", "Error setting checksum." => "Error al establecer la suma de verificación.", "No categories selected for deletion." => "No se seleccionaron categorías para borrar.", "No address books found." => "No se encontraron libretas de direcciones.", "No contacts found." => "No se encontraron contactos.", -"Missing ID" => "Falta la ID", -"Error parsing VCard for ID: \"" => "Error al analizar el VCard para la ID: \"", -"Cannot add addressbook with an empty name." => "No se puede añadir una libreta de direcciones sin nombre", -"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 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.", -"id is not set." => "no se ha puesto ninguna ID.", +"There was an error adding the contact." => "Se ha producido un error al añadir el contacto.", +"element name is not set." => "no se ha puesto ningún nombre de elemento.", +"Cannot add empty property." => "No se puede añadir una propiedad vacía.", +"At least one of the address fields has to be filled out." => "Al menos uno de los campos de direcciones se tiene que rellenar.", +"Trying to add duplicate property: " => "Intentando añadir una propiedad duplicada: ", "Information about vCard is incorrect. Please reload the page." => "La información sobre el vCard es incorrecta. Por favor vuelve a cargar la página.", "Error deleting contact property." => "Error al borrar una propiedad del contacto.", -"Contact ID is missing." => "Falta la ID del contacto.", -"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.", +"Missing ID" => "Falta la ID", +"Error parsing VCard for ID: \"" => "Error al analizar el VCard para la ID: \"", "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:", "Something went FUBAR. " => "Plof. Algo ha fallado.", "Error updating contact property." => "Error al actualizar una propiedad del contacto.", -"Cannot update addressbook with an empty name." => "No se puede actualizar una libreta de direcciones sin nombre.", -"Error updating addressbook." => "Error al actualizar la libreta de direcciones.", +"No contact ID was submitted." => "No se ha mandado ninguna ID de contacto.", +"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.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Fallo al coger el contacto.", +"Error getting PHOTO property." => "Fallo al coger las propiedades de la foto .", +"Error saving contact." => "Fallo al salvar un contacto", +"Error resizing image" => "Fallo al cambiar de tamaño una foto", +"Error cropping image" => "Fallo al cortar el tamaño de la foto", +"Error creating temporary image" => "Fallo al crear la foto temporal", +"Error finding image: " => "Fallo al encontrar la imagen", "Error uploading contacts to storage." => "Error al subir contactos al almacenamiento.", "There is no error, the file uploaded with success" => "No hay ningún error, el archivo se ha subido con éxito", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El archivo subido sobrepasa la directiva upload_max_filesize de php.ini", @@ -41,9 +43,24 @@ "The uploaded file was only partially uploaded" => "El archivo se ha subido parcialmente", "No file was uploaded" => "No se ha subido ningún archivo", "Missing a temporary folder" => "Falta la carpeta temporal", +"Couldn't save temporary image: " => "Fallo no pudo salvar a una imagen temporal", +"Couldn't load temporary image: " => "Fallo no pudo cargara de una imagen temporal", +"No file was uploaded. Unknown error" => "Fallo no se subió el fichero", "Contacts" => "Contactos", -"Drop a VCF file to import contacts." => "Suelta un archivo VCF para importar contactos.", -"Addressbook not found." => "Libreta de direcciones no encontrada.", +"Sorry, this functionality has not been implemented yet" => "Perdón esta función no esta aún implementada", +"Not implemented" => "No esta implementada", +"Couldn't get a valid address." => "Fallo : no hay dirección valida", +"Error" => "Fallo", +"This property has to be non-empty." => "Este campo no puede estar vacío.", +"Couldn't serialize elements." => "Fallo no podido ordenar los elementos", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "La propiedad de \"borrar\" se llamado sin argumentos envia fallos a\nbugs.owncloud.org", +"Edit name" => "Edita el Nombre", +"No files selected for upload." => "No hay ficheros seleccionados para subir", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "El fichero que quieres subir excede el tamaño máximo permitido en este servidor.", +"Select type" => "Selecciona el tipo", +"Result: " => "Resultado :", +" imported, " => "Importado.", +" failed." => "Fallo.", "This is not your addressbook." => "Esta no es tu agenda de contactos.", "Contact could not be found." => "No se ha podido encontrar el contacto.", "Address" => "Dirección", @@ -60,25 +77,23 @@ "Video" => "Vídeo", "Pager" => "Localizador", "Internet" => "Internet", +"Birthday" => "Cumpleaños", "{name}'s Birthday" => "Cumpleaños de {name}", "Contact" => "Contacto", "Add Contact" => "Añadir contacto", +"Import" => "Importar", "Addressbooks" => "Libretas de direcciones", -"Configure Address Books" => "Configurar libretas de direcciones", -"New Address Book" => "Nueva libreta de direcciones", -"Import from VCF" => "Importar desde VCF", -"CardDav Link" => "Enlace CardDav", -"Download" => "Descargar", -"Edit" => "Editar", -"Delete" => "Borrar", -"Download contact" => "Descargar contacto", -"Delete contact" => "Eliminar contacto", +"Close" => "Cierra.", "Drop photo to upload" => "Suelta una foto para subirla", +"Delete current photo" => "Eliminar fotografía actual", +"Edit current photo" => "Editar fotografía actual", +"Upload new photo" => "Subir nueva fotografía", +"Select photo from ownCloud" => "Seleccionar fotografía desde ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizado, nombre abreviado, nombre completo, al revés o al revés con coma", "Edit name details" => "Editar los detalles del nombre", +"Delete" => "Borrar", "Nickname" => "Alias", "Enter nickname" => "Introduce un alias", -"Birthday" => "Cumpleaños", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "Grupos", "Separate groups with commas" => "Separa los grupos con comas", @@ -94,24 +109,19 @@ "Edit address details" => "Editar detalles de la dirección", "Add notes here." => "Añade notas aquí.", "Add field" => "Añadir campo", -"Profile picture" => "Foto del perfil", "Phone" => "Teléfono", "Note" => "Nota", -"Delete current photo" => "Eliminar fotografía actual", -"Edit current photo" => "Editar fotografía actual", -"Upload new photo" => "Subir nueva fotografía", -"Select photo from ownCloud" => "Seleccionar fotografía desde ownCloud", +"Download contact" => "Descargar contacto", +"Delete contact" => "Eliminar contacto", +"The temporary image has been removed from cache." => "La foto temporal se ha borrado del cache.", "Edit address" => "Editar dirección", "Type" => "Tipo", "PO Box" => "Código postal", "Extended" => "Extendido", -"Street" => "Calle", "City" => "Ciudad", "Region" => "Región", "Zipcode" => "Código postal", "Country" => "País", -"Edit categories" => "Editar categorías", -"Add" => "Añadir", "Addressbook" => "Libreta de direcciones", "Hon. prefixes" => "Prefijos honoríficos", "Miss" => "Srta", @@ -132,26 +142,21 @@ "Esq." => "Don", "Jr." => "Jr.", "Sn." => "Sn.", -"New Addressbook" => "Nueva libreta de direcciones", -"Edit Addressbook" => "Editar libreta de direcciones", -"Displayname" => "Nombre a mostrar", -"Active" => "Activo", -"Save" => "Guardar", -"Submit" => "Aceptar", -"Cancel" => "Cancelar", "Import a contacts file" => "Importar archivo de contactos", "Please choose the addressbook" => "Por favor escoge la agenda", "create a new addressbook" => "crear una nueva agenda", "Name of new addressbook" => "Nombre de la nueva agenda", -"Import" => "Importar", "Importing contacts" => "Importando contactos", -"Select address book to import to:" => "Selecciona una agenda para importar a:", -"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", "Configure addressbooks" => "Configurar agenda", "CardDAV syncing addresses" => "Sincronizando direcciones", "more info" => "más información", "Primary address (Kontact et al)" => "Dirección primaria (Kontact et al)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Descargar", +"Edit" => "Editar", +"New Address Book" => "Nueva libreta de direcciones", +"Save" => "Guardar", +"Cancel" => "Cancelar" ); diff --git a/apps/contacts/l10n/et_EE.php b/apps/contacts/l10n/et_EE.php index 39a287c961..c11ea6d838 100644 --- a/apps/contacts/l10n/et_EE.php +++ b/apps/contacts/l10n/et_EE.php @@ -1,39 +1,41 @@ "Viga aadressiraamatu (de)aktiveerimisel.", -"There was an error adding the contact." => "Konktakti lisamisel tekkis viga.", -"Cannot add empty property." => "Tühja omadust ei saa lisada.", -"At least one of the address fields has to be filled out." => "Vähemalt üks aadressiväljadest peab olema täidetud.", -"Trying to add duplicate property: " => "Proovitakse lisada topeltomadust: ", -"Error adding contact property." => "Viga konktakti korralikul lisamisel.", +"id is not set." => "ID on määramata.", +"Cannot update addressbook with an empty name." => "Tühja nimega aadressiraamatut ei saa uuendada.", +"Error updating addressbook." => "Viga aadressiraamatu uuendamisel.", "No ID provided" => "ID-d pole sisestatud", "Error setting checksum." => "Viga kontrollsumma määramisel.", "No categories selected for deletion." => "Kustutamiseks pole valitud ühtegi kategooriat.", "No address books found." => "Ei leitud ühtegi aadressiraamatut.", "No contacts found." => "Ühtegi kontakti ei leitud.", -"Missing ID" => "Puudub ID", -"Error parsing VCard for ID: \"" => "Viga VCard-ist ID parsimisel: \"", -"Cannot add addressbook with an empty name." => "Tühja nimega aadressiraamatut ei saa lisada.", -"Error adding addressbook." => "Viga aadressiraamatu lisamisel.", -"Error activating addressbook." => "Viga aadressiraamatu aktiveerimisel.", -"No contact ID was submitted." => "Kontakti ID-d pole sisestatud.", -"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.", -"id is not set." => "ID on määramata.", +"There was an error adding the contact." => "Konktakti lisamisel tekkis viga.", +"element name is not set." => "elemendi nime pole määratud.", +"Cannot add empty property." => "Tühja omadust ei saa lisada.", +"At least one of the address fields has to be filled out." => "Vähemalt üks aadressiväljadest peab olema täidetud.", +"Trying to add duplicate property: " => "Proovitakse lisada topeltomadust: ", "Information about vCard is incorrect. Please reload the page." => "Visiitkaardi info pole korrektne. Palun lae leht uuesti.", "Error deleting contact property." => "Viga konktaki korralikul kustutamisel.", -"Contact ID is missing." => "Kontakti ID puudub.", -"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.", +"Missing ID" => "Puudub ID", +"Error parsing VCard for ID: \"" => "Viga VCard-ist ID parsimisel: \"", "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: ", "Something went FUBAR. " => "Midagi läks tõsiselt metsa.", "Error updating contact property." => "Viga konktaki korralikul uuendamisel.", -"Cannot update addressbook with an empty name." => "Tühja nimega aadressiraamatut ei saa uuendada.", -"Error updating addressbook." => "Viga aadressiraamatu uuendamisel.", +"No contact ID was submitted." => "Kontakti ID-d pole sisestatud.", +"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.", +"Contact ID is missing." => "Kontakti ID puudub.", +"No photo path was submitted." => "Foto asukohta pole määratud.", +"File doesn't exist:" => "Faili pole olemas:", +"Error loading image." => "Viga pildi laadimisel.", +"Error getting contact object." => "Viga kontakti objekti hankimisel.", +"Error getting PHOTO property." => "Viga PHOTO omaduse hankimisel.", +"Error saving contact." => "Viga kontakti salvestamisel.", +"Error resizing image" => "Viga pildi suuruse muutmisel", +"Error cropping image" => "Viga pildi lõikamisel", +"Error creating temporary image" => "Viga ajutise pildi loomisel", +"Error finding image: " => "Viga pildi leidmisel: ", "Error uploading contacts to storage." => "Viga kontaktide üleslaadimisel kettale.", "There is no error, the file uploaded with success" => "Ühtegi tõrget polnud, fail on üles laetud", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Üleslaetud fail ületab php.ini failis määratud upload_max_filesize suuruse", @@ -41,9 +43,21 @@ "The uploaded file was only partially uploaded" => "Fail laeti üles ainult osaliselt", "No file was uploaded" => "Ühtegi faili ei laetud üles", "Missing a temporary folder" => "Ajutiste failide kaust puudub", +"Couldn't save temporary image: " => "Ajutise pildi salvestamine ebaõnnestus: ", +"Couldn't load temporary image: " => "Ajutise pildi laadimine ebaõnnestus: ", +"No file was uploaded. Unknown error" => "Ühtegi faili ei laetud üles. Tundmatu viga", "Contacts" => "Kontaktid", -"Drop a VCF file to import contacts." => "Lohista siia VCF-fail, millest kontakte importida.", -"Addressbook not found." => "Aadressiraamatut ei leitud", +"Sorry, this functionality has not been implemented yet" => "Vabandust, aga see funktsioon pole veel valmis", +"Not implemented" => "Pole implementeeritud", +"Couldn't get a valid address." => "Kehtiva aadressi hankimine ebaõnnestus", +"Error" => "Viga", +"This property has to be non-empty." => "See omadus ei tohi olla tühi.", +"Edit name" => "Muuda nime", +"No files selected for upload." => "Üleslaadimiseks pole faile valitud.", +"Select type" => "Vali tüüp", +"Result: " => "Tulemus: ", +" imported, " => " imporditud, ", +" failed." => " ebaõnnestus.", "This is not your addressbook." => "See pole sinu aadressiraamat.", "Contact could not be found." => "Kontakti ei leitud.", "Address" => "Aadress", @@ -60,25 +74,23 @@ "Video" => "Video", "Pager" => "Piipar", "Internet" => "Internet", +"Birthday" => "Sünnipäev", "{name}'s Birthday" => "{name} sünnipäev", "Contact" => "Kontakt", "Add Contact" => "Lisa kontakt", +"Import" => "Impordi", "Addressbooks" => "Aadressiraamatud", -"Configure Address Books" => "Seadista aadressiraamatut", -"New Address Book" => "Uus aadressiraamat", -"Import from VCF" => "Impordi VCF-ist", -"CardDav Link" => "CardDav link", -"Download" => "Lae alla", -"Edit" => "Muuda", -"Delete" => "Kustuta", -"Download contact" => "Lae kontakt alla", -"Delete contact" => "Kustuta kontakt", +"Close" => "Sule", "Drop photo to upload" => "Lohista üleslaetav foto siia", +"Delete current photo" => "Kustuta praegune foto", +"Edit current photo" => "Muuda praegust pilti", +"Upload new photo" => "Lae üles uus foto", +"Select photo from ownCloud" => "Vali foto ownCloudist", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Kohandatud vorming, Lühike nimi, Täielik nimi, vastupidine või vastupidine komadega", "Edit name details" => "Muuda nime üksikasju", +"Delete" => "Kustuta", "Nickname" => "Hüüdnimi", "Enter nickname" => "Sisesta hüüdnimi", -"Birthday" => "Sünnipäev", "dd-mm-yyyy" => "dd.mm.yyyy", "Groups" => "Grupid", "Separate groups with commas" => "Eralda grupid komadega", @@ -94,24 +106,19 @@ "Edit address details" => "Muuda aaressi infot", "Add notes here." => "Lisa märkmed siia.", "Add field" => "Lisa väli", -"Profile picture" => "Profiili pilt", "Phone" => "Telefon", "Note" => "Märkus", -"Delete current photo" => "Kustuta praegune foto", -"Edit current photo" => "Muuda praegust pilti", -"Upload new photo" => "Lae üles uus foto", -"Select photo from ownCloud" => "Vali foto ownCloudist", +"Download contact" => "Lae kontakt alla", +"Delete contact" => "Kustuta kontakt", +"The temporary image has been removed from cache." => "Ajutine pilt on puhvrist eemaldatud.", "Edit address" => "Muuda aadressi", "Type" => "Tüüp", "PO Box" => "Postkontori postkast", "Extended" => "Laiendatud", -"Street" => "Tänav", "City" => "Linn", "Region" => "Piirkond", "Zipcode" => "Postiindeks", "Country" => "Riik", -"Edit categories" => "Muuda kategooriat", -"Add" => "Lisa", "Addressbook" => "Aadressiraamat", "Hon. prefixes" => "Eesliited", "Miss" => "Preili", @@ -132,26 +139,21 @@ "Esq." => "Esq.", "Jr." => "Jr.", "Sn." => "Senior.", -"New Addressbook" => "Uus aadressiraamat", -"Edit Addressbook" => "Muuda aadressiraamatut", -"Displayname" => "Näidatav nimi", -"Active" => "Aktiivne", -"Save" => "Salvesta", -"Submit" => "Saada", -"Cancel" => "Loobu", "Import a contacts file" => "Impordi kontaktifail", "Please choose the addressbook" => "Palun vali aadressiraamat", "create a new addressbook" => "loo uus aadressiraamat", "Name of new addressbook" => "Uue aadressiraamatu nimi", -"Import" => "Impordi", "Importing contacts" => "Kontaktide importimine", -"Select address book to import to:" => "Vali aadressiraamat, millesse importida:", -"Select from HD" => "Vali kõvakettalt", "You have no contacts in your addressbook." => "Sinu aadressiraamatus pole ühtegi kontakti.", "Add contact" => "Lisa kontakt", "Configure addressbooks" => "Seadista aadressiraamatuid", "CardDAV syncing addresses" => "CardDAV sünkroniseerimise aadressid", "more info" => "lisainfo", "Primary address (Kontact et al)" => "Peamine aadress", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Lae alla", +"Edit" => "Muuda", +"New Address Book" => "Uus aadressiraamat", +"Save" => "Salvesta", +"Cancel" => "Loobu" ); diff --git a/apps/contacts/l10n/eu.php b/apps/contacts/l10n/eu.php index 6dfbf0a7b2..7a0b2ce38b 100644 --- a/apps/contacts/l10n/eu.php +++ b/apps/contacts/l10n/eu.php @@ -1,36 +1,67 @@ "Errore bat egon da helbide-liburua (des)gaitzen", -"There was an error adding the contact." => "Errore bat egon da kontaktua gehitzerakoan", -"Cannot add empty property." => "Ezin da propieta hutsa gehitu.", -"At least one of the address fields has to be filled out." => "Behintzat helbide eremuetako bat bete behar da.", -"Error adding contact property." => "Errorea kontaktu propietatea gehitzean.", +"id is not set." => "IDa ez da ezarri.", +"Cannot update addressbook with an empty name." => "Ezin da helbide liburua eguneratu izen huts batekin.", +"Error updating addressbook." => "Errore bat egon da helbide liburua eguneratzen.", "No ID provided" => "Ez da IDrik eman", +"Error setting checksum." => "Errorea kontrol-batura ezartzean.", "No categories selected for deletion." => "Ez dira ezabatzeko kategoriak hautatu.", "No address books found." => "Ez da helbide libururik aurkitu.", "No contacts found." => "Ez da kontakturik aurkitu.", -"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 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.", +"There was an error adding the contact." => "Errore bat egon da kontaktua gehitzerakoan", +"element name is not set." => "elementuaren izena ez da ezarri.", +"Could not parse contact: " => "Ezin izan da kontaktua analizatu:", +"Cannot add empty property." => "Ezin da propieta hutsa gehitu.", +"At least one of the address fields has to be filled out." => "Behintzat helbide eremuetako bat bete behar da.", +"Trying to add duplicate property: " => "Propietate bikoiztuta gehitzen saiatzen ari zara:", +"Error adding contact property: " => "Errore bat egon da kontaktuaren propietatea gehitzean:", "Information about vCard is incorrect. Please reload the page." => "vCard-aren inguruko informazioa okerra da. Mesedez birkargatu orrialdea.", "Error deleting contact property." => "Errorea kontaktu propietatea ezabatzean.", +"Missing ID" => "ID falta da", +"Error parsing VCard for ID: \"" => "Errorea VCard analizatzean hurrengo IDrako: \"", +"checksum is not set." => "Kontrol-batura ezarri gabe dago.", +"Information about vCard is incorrect. Please reload the page: " => "vCard honen informazioa ez da zuzena.Mezedez birkargatu orria:", +"Error updating contact property." => "Errorea kontaktu propietatea eguneratzean.", +"No contact ID was submitted." => "Ez da kontaktuaren IDrik eman.", +"Error reading contact photo." => "Errore bat izan da kontaktuaren argazkia igotzerakoan.", +"Error saving temporary file." => "Errore bat izan da aldi bateko fitxategia gordetzerakoan.", +"The loading photo is not valid." => "Kargatzen ari den argazkia ez da egokia.", "Contact ID is missing." => "Kontaktuaren IDa falta da.", -"Missing contact id." => "Kontaktuaren IDa falta da.", +"No photo path was submitted." => "Ez da argazkiaren bide-izenik eman.", "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.", -"Error updating addressbook." => "Errore bat egon da helbide liburua eguneratzen.", +"Error getting contact object." => "Errore bat izan da kontaktu objetua lortzean.", +"Error getting PHOTO property." => "Errore bat izan da PHOTO propietatea lortzean.", +"Error saving contact." => "Errore bat izan da kontaktua gordetzean.", +"Error resizing image" => "Errore bat izan da irudiaren tamaina aldatzean", +"Error cropping image" => "Errore bat izan da irudia mozten", +"Error creating temporary image" => "Errore bat izan da aldi bateko irudia sortzen", +"Error finding image: " => "Ezin izan da irudia aurkitu:", "Error uploading contacts to storage." => "Errore bat egon da kontaktuak biltegira igotzerakoan.", "There is no error, the file uploaded with success" => "Ez da errorerik egon, fitxategia ongi igo da", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Igotako fitxategia php.ini fitxategiko upload_max_filesize direktiba baino handiagoa da", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Igotako fitxategia HTML formularioan zehaztutako MAX_FILE_SIZE direktiba baino handidagoa da.", "The uploaded file was only partially uploaded" => "Igotako fitxategiaren zati bat bakarrik igo da", "No file was uploaded" => "Ez da fitxategirik igo", +"Missing a temporary folder" => "Aldi bateko karpeta falta da", +"Couldn't save temporary image: " => "Ezin izan da aldi bateko irudia gorde:", +"Couldn't load temporary image: " => "Ezin izan da aldi bateko irudia kargatu:", +"No file was uploaded. Unknown error" => "Ez da fitxategirik igo. Errore ezezaguna", "Contacts" => "Kontaktuak", -"Drop a VCF file to import contacts." => "Askatu VCF fitxategia kontaktuak inportatzeko.", -"Addressbook not found." => "Helbide liburua ez da aurkitu", +"Sorry, this functionality has not been implemented yet" => "Barkatu, aukera hau ez da oriandik inplementatu", +"Not implemented" => "Inplementatu gabe", +"Couldn't get a valid address." => "Ezin izan da eposta baliagarri bat hartu.", +"Error" => "Errorea", +"This property has to be non-empty." => "Propietate hau ezin da hutsik egon.", +"Couldn't serialize elements." => "Ezin izan dira elementuak serializatu.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' argumenturik gabe deitu da. Mezedez abisatu bugs.owncloud.org-en", +"Edit name" => "Editatu izena", +"No files selected for upload." => "Ez duzu igotzeko fitxategirik hautatu.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Igo nahi duzun fitxategia zerbitzariak onartzen duen tamaina baino handiagoa da.", +"Select type" => "Hautatu mota", +"Result: " => "Emaitza:", +" imported, " => " inportatua, ", +" failed." => "huts egin du.", "This is not your addressbook." => "Hau ez da zure helbide liburua.", "Contact could not be found." => "Ezin izan da kontaktua aurkitu.", "Address" => "Helbidea", @@ -47,24 +78,46 @@ "Video" => "Bideoa", "Pager" => "Bilagailua", "Internet" => "Internet", +"Birthday" => "Jaioteguna", +"Call" => "Deia", +"Clients" => "Bezeroak", +"Holidays" => "Oporrak", +"Ideas" => "Ideiak", +"Journey" => "Bidaia", +"Meeting" => "Bilera", +"Other" => "Bestelakoa", +"Personal" => "Pertsonala", +"Projects" => "Proiektuak", +"Questions" => "Galderak", "{name}'s Birthday" => "{name}ren jaioteguna", "Contact" => "Kontaktua", "Add Contact" => "Gehitu kontaktua", +"Import" => "Inportatu", +"Settings" => "Ezarpenak", "Addressbooks" => "Helbide Liburuak", -"Configure Address Books" => "Konfiguratu Helbide Liburuak", -"New Address Book" => "Helbide-liburu berria", -"Import from VCF" => "VCFtik inportatu", -"CardDav Link" => "CardDav lotura", -"Download" => "Deskargatu", -"Edit" => "Editatu", -"Delete" => "Ezabatu", -"Download contact" => "Deskargatu kontaktua", -"Delete contact" => "Ezabatu kontaktua", +"Close" => "Itxi", +"Keyboard shortcuts" => "Teklatuaren lasterbideak", +"Navigation" => "Nabigazioa", +"Next contact in list" => "Hurrengoa kontaktua zerrendan", +"Previous contact in list" => "Aurreko kontaktua zerrendan", +"Expand/collapse current addressbook" => "Zabaldu/tolestu uneko helbide-liburua", +"Actions" => "Ekintzak", +"Refresh contacts list" => "Gaurkotu kontaktuen zerrenda", +"Add new contact" => "Gehitu kontaktu berria", +"Add new addressbook" => "Gehitu helbide-liburu berria", +"Delete current contact" => "Ezabatu uneko kontaktuak", "Drop photo to upload" => "Askatu argazkia igotzeko", +"Delete current photo" => "Ezabatu oraingo argazkia", +"Edit current photo" => "Editatu oraingo argazkia", +"Upload new photo" => "Igo argazki berria", +"Select photo from ownCloud" => "Hautatu argazki bat ownCloudetik", "Edit name details" => "Editatu izenaren zehaztasunak", +"Delete" => "Ezabatu", "Nickname" => "Ezizena", "Enter nickname" => "Sartu ezizena", -"Birthday" => "Jaioteguna", +"Web site" => "Web orria", +"http://www.somesite.com" => "http://www.webgunea.com", +"Go to web site" => "Web orrira joan", "dd-mm-yyyy" => "yyyy-mm-dd", "Groups" => "Taldeak", "Separate groups with commas" => "Banatu taldeak komekin", @@ -80,45 +133,42 @@ "Edit address details" => "Editatu helbidearen zehaztasunak", "Add notes here." => "Gehitu oharrak hemen.", "Add field" => "Gehitu eremua", -"Profile picture" => "Profilaren irudia", "Phone" => "Telefonoa", "Note" => "Oharra", -"Delete current photo" => "Ezabatu oraingo argazkia", -"Edit current photo" => "Editatu oraingo argazkia", -"Upload new photo" => "Igo argazki berria", -"Select photo from ownCloud" => "Hautatu argazki bat ownCloudetik", +"Download contact" => "Deskargatu kontaktua", +"Delete contact" => "Ezabatu kontaktua", +"The temporary image has been removed from cache." => "Aldi bateko irudia cachetik ezabatu da.", "Edit address" => "Editatu helbidea", "Type" => "Mota", "PO Box" => "Posta kutxa", +"Street address" => "Kalearen helbidea", +"Street and number" => "Kalea eta zenbakia", "Extended" => "Hedatua", -"Street" => "Kalea", +"Apartment number etc." => "Etxe zenbakia eab.", "City" => "Hiria", "Region" => "Eskualdea", "Zipcode" => "Posta kodea", +"Postal code" => "Posta kodea", "Country" => "Herrialdea", -"Edit categories" => "Editatu kategoriak", -"Add" => "Gehitu", "Addressbook" => "Helbide-liburua", -"New Addressbook" => "Helbide-liburu berria", -"Edit Addressbook" => "Editatu helbide-liburua", -"Displayname" => "Bistaratzeko izena", -"Active" => "Aktibo", -"Save" => "Gorde", -"Submit" => "Bidali", -"Cancel" => "Ezeztatu", "Import a contacts file" => "Inporatu kontaktuen fitxategia", "Please choose the addressbook" => "Mesedez, aukeratu helbide liburua", "create a new addressbook" => "sortu helbide liburu berria", "Name of new addressbook" => "Helbide liburuaren izena", -"Import" => "Inportatu", "Importing contacts" => "Kontaktuak inportatzen", -"Select address book to import to:" => "Hautau helburuko helbide liburua:", -"Select from HD" => "Hautatu disko gogorretik", "You have no contacts in your addressbook." => "Ez duzu kontakturik zure helbide liburuan.", "Add contact" => "Gehitu kontaktua", "Configure addressbooks" => "Konfiguratu helbide liburuak", +"Select Address Books" => "Hautatu helbide-liburuak", +"Enter name" => "Sartu izena", +"Enter description" => "Sartu deskribapena", "CardDAV syncing addresses" => "CardDAV sinkronizazio helbideak", "more info" => "informazio gehiago", "Primary address (Kontact et al)" => "Helbide nagusia", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Deskargatu", +"Edit" => "Editatu", +"New Address Book" => "Helbide-liburu berria", +"Save" => "Gorde", +"Cancel" => "Ezeztatu" ); diff --git a/apps/contacts/l10n/fa.php b/apps/contacts/l10n/fa.php index 9278975c40..c959979857 100644 --- a/apps/contacts/l10n/fa.php +++ b/apps/contacts/l10n/fa.php @@ -1,39 +1,41 @@ "خطا در (غیر) فعال سازی کتابچه نشانه ها", -"There was an error adding the contact." => "یک خطا در افزودن اطلاعات شخص مورد نظر", -"Cannot add empty property." => "نمیتوان یک خاصیت خالی ایجاد کرد", -"At least one of the address fields has to be filled out." => "At least one of the address fields has to be filled out. ", -"Trying to add duplicate property: " => "امتحان کردن برای وارد کردن مشخصات تکراری", -"Error adding contact property." => "خطا درهنگام افزودن ویژگی", +"id is not set." => "شناسه تعیین نشده", +"Cannot update addressbook with an empty name." => "نمی توانید کتابچه نشانی ها را با یک نام خالی بروزرسانی کنید", +"Error updating addressbook." => "خطا در هنگام بروزرسانی کتابچه نشانی ها", "No ID provided" => "هیچ شناسه ای ارائه نشده", "Error setting checksum." => "خطا در تنظیم checksum", "No categories selected for deletion." => "هیچ گروهی برای حذف شدن در نظر گرفته نشده", "No address books found." => "هیچ کتابچه نشانی پیدا نشد", "No contacts found." => "هیچ شخصی پیدا نشد", -"Missing ID" => "نشانی گم شده", -"Error parsing VCard for ID: \"" => "خطا در تجزیه کارت ویزا برای شناسه:", -"Cannot add addressbook with an empty name." => "نمیتوانید یک نام خالی را به کتابچه نشانی ها افزود", -"Error adding addressbook." => "خطا درهنگام افزودن کتابچه نشانی ها", -"Error activating addressbook." => "خطا درهنگام فعال سازیکتابچه نشانی ها", -"No contact ID was submitted." => "هیچ اطلاعاتی راجع به شناسه ارسال نشده", -"Error reading contact photo." => "خطا در خواندن اطلاعات تصویر", -"Error saving temporary file." => "خطا در ذخیره پرونده موقت", -"The loading photo is not valid." => "بارگزاری تصویر امکان پذیر نیست", -"id is not set." => "شناسه تعیین نشده", +"There was an error adding the contact." => "یک خطا در افزودن اطلاعات شخص مورد نظر", +"element name is not set." => "نام اصلی تنظیم نشده است", +"Cannot add empty property." => "نمیتوان یک خاصیت خالی ایجاد کرد", +"At least one of the address fields has to be filled out." => "At least one of the address fields has to be filled out. ", +"Trying to add duplicate property: " => "امتحان کردن برای وارد کردن مشخصات تکراری", "Information about vCard is incorrect. Please reload the page." => "اطلاعات درمورد vCard شما اشتباه است لطفا صفحه را دوباره بار گذاری کنید", "Error deleting contact property." => "خطا در هنگام پاک کرد ویژگی", -"Contact ID is missing." => "اطلاعات شناسه گم شده", -"Missing contact id." => "شما اطلاعات شناسه را فراموش کرده اید", -"No photo path was submitted." => "هیچ نشانی از تصویرارسال نشده", -"File doesn't exist:" => "پرونده وجود ندارد", -"Error loading image." => "خطا در بارگزاری تصویر", -"element name is not set." => "نام اصلی تنظیم نشده است", +"Missing ID" => "نشانی گم شده", +"Error parsing VCard for ID: \"" => "خطا در تجزیه کارت ویزا برای شناسه:", "checksum is not set." => "checksum تنظیم شده نیست", "Information about vCard is incorrect. Please reload the page: " => "اطلاعات کارت ویزا شما غلط است لطفا صفحه را دوباره بارگزاری کنید", "Something went FUBAR. " => "چند چیز به FUBAR رفتند", "Error updating contact property." => "خطا در هنگام بروزرسانی اطلاعات شخص مورد نظر", -"Cannot update addressbook with an empty name." => "نمی توانید کتابچه نشانی ها را با یک نام خالی بروزرسانی کنید", -"Error updating addressbook." => "خطا در هنگام بروزرسانی کتابچه نشانی ها", +"No contact ID was submitted." => "هیچ اطلاعاتی راجع به شناسه ارسال نشده", +"Error reading contact photo." => "خطا در خواندن اطلاعات تصویر", +"Error saving temporary file." => "خطا در ذخیره پرونده موقت", +"The loading photo is not valid." => "بارگزاری تصویر امکان پذیر نیست", +"Contact ID is missing." => "اطلاعات شناسه گم شده", +"No photo path was submitted." => "هیچ نشانی از تصویرارسال نشده", +"File doesn't exist:" => "پرونده وجود ندارد", +"Error loading image." => "خطا در بارگزاری تصویر", +"Error getting contact object." => "خطا در گرفتن اطلاعات شخص", +"Error getting PHOTO property." => "خطا در دربافت تصویر ویژگی شخصی", +"Error saving contact." => "خطا در ذخیره سازی اطلاعات", +"Error resizing image" => "خطا در تغییر دادن اندازه تصویر", +"Error cropping image" => "خطا در برداشت تصویر", +"Error creating temporary image" => "خطا در ساخت تصویر temporary", +"Error finding image: " => "خطا در پیدا کردن تصویر:", "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 تعیین می شود", @@ -41,9 +43,24 @@ "The uploaded file was only partially uploaded" => "پرونده بارگذاری شده فقط تاحدودی بارگذاری شده", "No file was uploaded" => "هیچ پروندهای بارگذاری نشده", "Missing a temporary folder" => "یک پوشه موقت گم شده", +"Couldn't save temporary image: " => "قابلیت ذخیره تصویر موقت وجود ندارد:", +"Couldn't load temporary image: " => "قابلیت بارگذاری تصویر موقت وجود ندارد:", +"No file was uploaded. Unknown error" => "هیچ فایلی آپلود نشد.خطای ناشناس", "Contacts" => "اشخاص", -"Drop a VCF file to import contacts." => "یک پرونده VCF را به اینجا بکشید تا اشخاص افزوده شوند", -"Addressbook not found." => "کتابچه نشانی ها یافت نشد", +"Sorry, this functionality has not been implemented yet" => "با عرض پوزش،این قابلیت هنوز اجرا نشده است", +"Not implemented" => "انجام نشد", +"Couldn't get a valid address." => "Couldn't get a valid address.", +"Error" => "خطا", +"This property has to be non-empty." => "این ویژگی باید به صورت غیر تهی عمل کند", +"Couldn't serialize elements." => "قابلیت مرتب سازی عناصر وجود ندارد", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "پاک کردن ویژگی بدون استدلال انجام شده.لطفا این مورد را گزارش دهید:bugs.owncloud.org", +"Edit name" => "نام تغییر", +"No files selected for upload." => "هیچ فایلی برای آپلود انتخاب نشده است", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "حجم فایل بسیار بیشتر از حجم تنظیم شده در تنظیمات سرور است", +"Select type" => "نوع را انتخاب کنید", +"Result: " => "نتیجه:", +" imported, " => "وارد شد،", +" failed." => "ناموفق", "This is not your addressbook." => "این کتابچه ی نشانه های شما نیست", "Contact could not be found." => "اتصال ویا تماسی یافت نشد", "Address" => "نشانی", @@ -60,25 +77,23 @@ "Video" => "رسانه تصویری", "Pager" => "صفحه", "Internet" => "اینترنت", +"Birthday" => "روزتولد", "{name}'s Birthday" => "روز تولد {name} است", "Contact" => "اشخاص", "Add Contact" => "افزودن اطلاعات شخص مورد نظر", +"Import" => "وارد کردن", "Addressbooks" => "کتابچه ی نشانی ها", -"Configure Address Books" => "پیکر بندی کتابچه نشانی ها", -"New Address Book" => "کتابچه نشانه های جدید", -"Import from VCF" => "وارد شده از VCF", -"CardDav Link" => "CardDav Link", -"Download" => "بارگیری", -"Edit" => "ویرایش", -"Delete" => "پاک کردن", -"Download contact" => "دانلود مشخصات اشخاص", -"Delete contact" => "پاک کردن اطلاعات شخص مورد نظر", +"Close" => "بستن", "Drop photo to upload" => "تصویر را به اینجا بکشید تا بار گذازی شود", +"Delete current photo" => "پاک کردن تصویر کنونی", +"Edit current photo" => "ویرایش تصویر کنونی", +"Upload new photo" => "بار گذاری یک تصویر جدید", +"Select photo from ownCloud" => "انتخاب یک تصویر از ابر های شما", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format custom, Short name, Full name, Reverse or Reverse with comma", "Edit name details" => "ویرایش نام جزئیات", +"Delete" => "پاک کردن", "Nickname" => "نام مستعار", "Enter nickname" => "یک نام مستعار وارد کنید", -"Birthday" => "روزتولد", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "گروه ها", "Separate groups with commas" => "جدا کردن گروه ها به وسیله درنگ نما", @@ -94,24 +109,19 @@ "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" => "انتخاب یک تصویر از ابر های شما", +"Download contact" => "دانلود مشخصات اشخاص", +"Delete contact" => "پاک کردن اطلاعات شخص مورد نظر", +"The temporary image has been removed from cache." => "تصویر موقت از کش پاک شد.", "Edit address" => "ویرایش نشانی", "Type" => "نوع", "PO Box" => "صندوق پستی", "Extended" => "تمدید شده", -"Street" => "خیابان", "City" => "شهر", "Region" => "ناحیه", "Zipcode" => "کد پستی", "Country" => "کشور", -"Edit categories" => "ویرایش گروه", -"Add" => "افزودن", "Addressbook" => "کتابچه ی نشانی ها", "Hon. prefixes" => "پیشوند های محترمانه", "Miss" => "خانم", @@ -132,26 +142,21 @@ "Esq." => "Esq.", "Jr." => "Jr.", "Sn." => "Sn.", -"New Addressbook" => "کتابچه نشانی جدید", -"Edit Addressbook" => "ویرایش کتابچه نشانی", -"Displayname" => "نام برای نمایش", -"Active" => "فعال", -"Save" => "ذخیره سازی", -"Submit" => "ارسال", -"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" => "انتخاب از دیسک سخت", "You have no contacts in your addressbook." => "شماهیچ شخصی در کتابچه نشانی خود ندارید", "Add contact" => "افزودن اطلاعات شخص مورد نظر", "Configure addressbooks" => "پیکربندی کتابچه ی نشانی ها", "CardDAV syncing addresses" => "CardDAV syncing addresses ", "more info" => "اطلاعات بیشتر", "Primary address (Kontact et al)" => "نشانی اولیه", -"iOS/OS X" => "iOS/OS X " +"iOS/OS X" => "iOS/OS X ", +"Download" => "بارگیری", +"Edit" => "ویرایش", +"New Address Book" => "کتابچه نشانه های جدید", +"Save" => "ذخیره سازی", +"Cancel" => "انصراف" ); diff --git a/apps/contacts/l10n/fi_FI.php b/apps/contacts/l10n/fi_FI.php index 2e3e91611b..6aab4ed347 100644 --- a/apps/contacts/l10n/fi_FI.php +++ b/apps/contacts/l10n/fi_FI.php @@ -1,28 +1,36 @@ "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.", +"Error updating addressbook." => "Virhe päivitettäessä osoitekirjaa.", "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.", +"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ää.", +"Information about vCard is incorrect. Please reload the page." => "vCardin tiedot eivät kelpaa. Lataa sivu uudelleen.", "Error deleting contact property." => "Virhe poistettaessa yhteystiedon ominaisuutta.", +"Error parsing VCard for ID: \"" => "Virhe jäsennettäessä vCardia tunnisteelle: \"", +"Error updating contact property." => "Virhe päivitettäessä yhteystiedon ominaisuutta.", +"Error saving temporary file." => "Virhe tallennettaessa tilapäistiedostoa.", "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.", +"Error saving contact." => "Virhe yhteystietoa tallennettaessa.", +"Error resizing image" => "Virhe asettaessa kuvaa uuteen kokoon", +"Error cropping image" => "Virhe rajatessa kuvaa", +"Error creating temporary image" => "Virhe luotaessa väliaikaista kuvaa", "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", +"No file was uploaded. Unknown error" => "Tiedostoa ei lähetetty. Tuntematon virhe", "Contacts" => "Yhteystiedot", -"Addressbook not found." => "Osoitekirjaa ei löytynyt.", +"Error" => "Virhe", +"Edit name" => "Muokkaa nimeä", +"No files selected for upload." => "Tiedostoja ei ole valittu lähetettäväksi.", +"Result: " => "Tulos: ", +" imported, " => " tuotu, ", +" failed." => " epäonnistui.", +"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", @@ -39,71 +47,91 @@ "Video" => "Video", "Pager" => "Hakulaite", "Internet" => "Internet", +"Birthday" => "Syntymäpäivä", +"Business" => "Työ", +"Other" => "Muu", +"Questions" => "Kysymykset", "{name}'s Birthday" => "Henkilön {name} syntymäpäivä", "Contact" => "Yhteystieto", "Add Contact" => "Lisää yhteystieto", +"Import" => "Tuo", +"Settings" => "Asetukset", "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", +"Close" => "Sulje", +"Keyboard shortcuts" => "Pikanäppäimet", +"Next contact in list" => "Seuraava yhteystieto luettelossa", +"Previous contact in list" => "Edellinen yhteystieto luettelossa", +"Actions" => "Toiminnot", +"Refresh contacts list" => "Päivitä yhteystietoluettelo", +"Add new contact" => "Lisää uusi yhteystieto", +"Add new addressbook" => "Lisää uusi osoitekirja", +"Delete current contact" => "Poista nykyinen yhteystieto", +"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 name details" => "Muokkaa nimitietoja", "Delete" => "Poista", -"Download contact" => "Lataa yhteystieto", -"Delete contact" => "Poista yhteystieto", "Nickname" => "Kutsumanimi", "Enter nickname" => "Anna kutsumanimi", -"Birthday" => "Syntymäpäivä", +"Web site" => "Verkkosivu", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Siirry verkkosivulle", "Groups" => "Ryhmät", "Separate groups with commas" => "Erota ryhmät pilkuilla", "Edit groups" => "Muokkaa ryhmiä", +"Preferred" => "Ensisijainen", "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", +"Edit address details" => "Muokkaa osoitetietoja", "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", +"Download contact" => "Lataa yhteystieto", +"Delete contact" => "Poista yhteystieto", +"The temporary image has been removed from cache." => "Väliaikainen kuva on poistettu välimuistista.", "Edit address" => "Muokkaa osoitetta", "Type" => "Tyyppi", "PO Box" => "Postilokero", +"Street address" => "Katuosoite", +"Street and number" => "Katu ja numero", "Extended" => "Laajennettu", -"Street" => "Katuosoite", +"Apartment number etc." => "Asunnon numero jne.", "City" => "Paikkakunta", "Region" => "Alue", "Zipcode" => "Postinumero", +"Postal code" => "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", +"Select Address Books" => "Valitse osoitekirjat", +"Enter name" => "Anna nimi", +"Enter description" => "Anna kuvaus", "CardDAV syncing addresses" => "CardDAV-synkronointiosoitteet", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "Näytä CardDav-linkki", +"Show read-only VCF link" => "Näytä vain luku -muodossa oleva VCF-linkki", +"Download" => "Lataa", +"Edit" => "Muokkaa", +"New Address Book" => "Uusi osoitekirja", +"Name" => "Nimi", +"Description" => "Kuvaus", +"Save" => "Tallenna", +"Cancel" => "Peru", +"More..." => "Lisää..." ); diff --git a/apps/contacts/l10n/fr.php b/apps/contacts/l10n/fr.php index 0a2a4e58b9..9b4822bd97 100644 --- a/apps/contacts/l10n/fr.php +++ b/apps/contacts/l10n/fr.php @@ -1,39 +1,43 @@ "Des erreurs se sont produites lors de l'activation/désactivation du carnet d'adresses.", -"There was an error adding the contact." => "Une erreur s'est produite lors de l'ajout du contact.", -"Cannot add empty property." => "Impossible d'ajouter un champ vide.", -"At least one of the address fields has to be filled out." => "Au moins un des champs d'adresses doit être complété.", -"Trying to add duplicate property: " => "Ajout d'une propriété en double:", -"Error adding contact property." => "Erreur lors de l'ajout du champ.", +"id is not set." => "L'ID n'est pas défini.", +"Cannot update addressbook with an empty name." => "Impossible de mettre à jour le carnet d'adresses avec un nom vide.", +"Error updating addressbook." => "Erreur lors de la mise à jour du carnet d'adresses.", "No ID provided" => "Aucun ID fourni", "Error setting checksum." => "Erreur lors du paramétrage du hachage.", "No categories selected for deletion." => "Pas de catégories sélectionnées pour la suppression.", "No address books found." => "Pas de carnet d'adresses trouvé.", "No contacts found." => "Aucun contact trouvé.", -"Missing ID" => "ID manquant", -"Error parsing VCard for ID: \"" => "Erreur lors de l'analyse du VCard pour l'ID: \"", -"Cannot add addressbook with an empty name." => "Ne peut être ajouté avec un nom vide.", -"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 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.", -"id is not set." => "L'ID n'est pas défini.", +"There was an error adding the contact." => "Une erreur s'est produite lors de l'ajout du contact.", +"element name is not set." => "Le champ Nom n'est pas défini.", +"Could not parse contact: " => "Impossible de lire le contact :", +"Cannot add empty property." => "Impossible d'ajouter un champ vide.", +"At least one of the address fields has to be filled out." => "Au moins un des champs d'adresses doit être complété.", +"Trying to add duplicate property: " => "Ajout d'une propriété en double:", +"Error adding contact property: " => "Erreur pendant l'ajout de la propriété du contact :", "Information about vCard is incorrect. Please reload the page." => "Les informations relatives à cette vCard sont incorrectes. Veuillez recharger la page.", "Error deleting contact property." => "Erreur lors de la suppression du champ.", -"Contact ID is missing." => "L'ID du contact est manquant.", -"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.", +"Missing ID" => "ID manquant", +"Error parsing VCard for ID: \"" => "Erreur lors de l'analyse du VCard pour l'ID: \"", "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:", "Something went FUBAR. " => "Quelque chose est FUBAR.", "Error updating contact property." => "Erreur lors de la mise à jour du champ.", -"Cannot update addressbook with an empty name." => "Impossible de mettre à jour le carnet d'adresses avec un nom vide.", -"Error updating addressbook." => "Erreur lors de la mise à jour du carnet d'adresses.", +"No contact ID was submitted." => "Aucun ID de contact envoyé", +"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.", +"Contact ID is missing." => "L'ID du contact est 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.", +"Error getting contact object." => "Erreur lors de l'obtention de l'objet contact", +"Error getting PHOTO property." => "Erreur lors de l'obtention des propriétés de la photo", +"Error saving contact." => "Erreur de sauvegarde du contact", +"Error resizing image" => "Erreur de redimensionnement de l'image", +"Error cropping image" => "Erreur lors du rognage de l'image", +"Error creating temporary image" => "Erreur de création de l'image temporaire", +"Error finding image: " => "Erreur pour trouver l'image :", "Error uploading contacts to storage." => "Erreur lors de l'envoi des contacts vers le stockage.", "There is no error, the file uploaded with success" => "Il n'y a pas d'erreur, le fichier a été envoyé avec succes.", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Le fichier envoyé dépasse la directive upload_max_filesize dans php.ini", @@ -41,9 +45,26 @@ "The uploaded file was only partially uploaded" => "Le fichier envoyé n'a été que partiellement envoyé.", "No file was uploaded" => "Pas de fichier envoyé.", "Missing a temporary folder" => "Absence de dossier temporaire.", +"Couldn't save temporary image: " => "Impossible de sauvegarder l'image temporaire :", +"Couldn't load temporary image: " => "Impossible de charger l'image temporaire :", +"No file was uploaded. Unknown error" => "Aucun fichier n'a été chargé. Erreur inconnue", "Contacts" => "Contacts", -"Drop a VCF file to import contacts." => "Glisser un fichier VCF pour importer des contacts.", -"Addressbook not found." => "Carnet d'adresses introuvable.", +"Sorry, this functionality has not been implemented yet" => "Désolé cette fonctionnalité n'a pas encore été implementée", +"Not implemented" => "Pas encore implémenté", +"Couldn't get a valid address." => "Impossible de trouver une adresse valide.", +"Error" => "Erreur", +"This property has to be non-empty." => "Cette valeur ne doit pas être vide", +"Couldn't serialize elements." => "Impossible de sérialiser les éléments", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' a été appelé sans type d'arguments. Merci de rapporter un bug à bugs.owncloud.org", +"Edit name" => "Éditer le nom", +"No files selected for upload." => "Aucun fichiers choisis pour être chargés", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Le fichier que vous tenter de charger dépasse la taille maximum de fichier autorisé sur ce serveur.", +"Select type" => "Sélectionner un type", +"Result: " => "Résultat :", +" imported, " => "importé,", +" failed." => "échoué.", +"Displayname cannot be empty." => "Le nom d'affichage ne peut pas être vide.", +"Addressbook not found: " => "Carnet d'adresse 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é.", "Address" => "Adresse", @@ -60,25 +81,52 @@ "Video" => "Vidéo", "Pager" => "Bipeur", "Internet" => "Internet", +"Birthday" => "Anniversaire", +"Business" => "Business", +"Call" => "Appel", +"Clients" => "Clients", +"Deliverer" => "Livreur", +"Holidays" => "Vacances", +"Ideas" => "Idées", +"Journey" => "Trajet", +"Jubilee" => "Jubilé", +"Meeting" => "Rendez-vous", +"Other" => "Autre", +"Personal" => "Personnel", +"Projects" => "Projets", +"Questions" => "Questions", "{name}'s Birthday" => "Anniversaire de {name}", "Contact" => "Contact", "Add Contact" => "Ajouter un Contact", +"Import" => "Importer", +"Settings" => "Paramètres", "Addressbooks" => "Carnets d'adresses", -"Configure Address Books" => "Paramétrer carnet d'adresses", -"New Address Book" => "Nouveau Carnet d'adresses", -"Import from VCF" => "Importer depuis VCF", -"CardDav Link" => "Lien CardDav", -"Download" => "Télécharger", -"Edit" => "Modifier", -"Delete" => "Supprimer", -"Download contact" => "Télécharger le contact", -"Delete contact" => "Supprimer le contact", +"Close" => "Fermer", +"Keyboard shortcuts" => "Raccourcis clavier", +"Navigation" => "Navigation", +"Next contact in list" => "Contact suivant dans la liste", +"Previous contact in list" => "Contact précédent dans la liste", +"Expand/collapse current addressbook" => "Dé/Replier le carnet d'adresses courant", +"Next addressbook" => "Carnet d'adresses suivant", +"Previous addressbook" => "Carnet d'adresses précédent", +"Actions" => "Actions", +"Refresh contacts list" => "Actualiser la liste des contacts", +"Add new contact" => "Ajouter un nouveau contact", +"Add new addressbook" => "Ajouter un nouveau carnet d'adresses", +"Delete current contact" => "Effacer le contact sélectionné", "Drop photo to upload" => "Glisser une photo pour l'envoi", +"Delete current photo" => "Supprimer la photo actuelle", +"Edit current photo" => "Editer la photo actuelle", +"Upload new photo" => "Envoyer une nouvelle photo", +"Select photo from ownCloud" => "Sélectionner une photo depuis ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formatage personnalisé, Nom court, Nom complet, Inversé, Inversé avec virgule", "Edit name details" => "Editer les noms", +"Delete" => "Supprimer", "Nickname" => "Surnom", "Enter nickname" => "Entrer un surnom", -"Birthday" => "Anniversaire", +"Web site" => "Page web", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Allez à la page web", "dd-mm-yyyy" => "jj-mm-aaaa", "Groups" => "Groupes", "Separate groups with commas" => "Séparer les groupes avec des virgules", @@ -86,6 +134,7 @@ "Preferred" => "Préféré", "Please specify a valid email address." => "Merci d'entrer une adresse e-mail valide.", "Enter email address" => "Entrer une adresse e-mail", +"Mail to address" => "Envoyer à l'adresse", "Delete email address" => "Supprimer l'adresse e-mail", "Enter phone number" => "Entrer un numéro de téléphone", "Delete phone number" => "Supprimer le numéro de téléphone", @@ -93,24 +142,24 @@ "Edit address details" => "Editer les adresses", "Add notes here." => "Ajouter des notes ici.", "Add field" => "Ajouter un champ.", -"Profile picture" => "Photo de profil", "Phone" => "Téléphone", "Note" => "Note", -"Delete current photo" => "Supprimer la photo actuelle", -"Edit current photo" => "Editer la photo actuelle", -"Upload new photo" => "Envoyer une nouvelle photo", -"Select photo from ownCloud" => "Sélectionner une photo depuis ownCloud", +"Download contact" => "Télécharger le contact", +"Delete contact" => "Supprimer le contact", +"The temporary image has been removed from cache." => "L'image temporaire a été supprimée du cache.", "Edit address" => "Editer l'adresse", "Type" => "Type", "PO Box" => "Boîte postale", +"Street address" => "Adresse postale", +"Street and number" => "Rue et numéro", "Extended" => "Étendu", -"Street" => "Rue", +"Apartment number etc." => "Numéro d'appartement, etc.", "City" => "Ville", "Region" => "Région", +"E.g. state or province" => "Ex: état ou province", "Zipcode" => "Code postal", +"Postal code" => "Code postal", "Country" => "Pays", -"Edit categories" => "Editer les catégories", -"Add" => "Ajouter", "Addressbook" => "Carnet d'adresses", "Hon. prefixes" => "Préfixe hon.", "Miss" => "Mlle", @@ -123,27 +172,36 @@ "Additional names" => "Nom supplémentaires", "Family name" => "Nom de famille", "Hon. suffixes" => "Suffixes hon.", +"J.D." => "J.D.", +"M.D." => "Dr.", +"D.O." => "D.O.", +"D.C." => "D.C.", "Ph.D." => "Dr", -"New Addressbook" => "Nouveau carnet d'adresses", -"Edit Addressbook" => "Éditer le carnet d'adresses", -"Displayname" => "Nom", -"Active" => "Carnet actif", -"Save" => "Sauvegarder", -"Submit" => "Envoyer", -"Cancel" => "Annuler", +"Esq." => "Esq.", +"Jr." => "Jr.", +"Sn." => "Sn.", "Import a contacts file" => "Importer un fichier de contacts", "Please choose the addressbook" => "Choisissez le carnet d'adresses SVP", "create a new addressbook" => "Créer un nouveau carnet d'adresses", "Name of new addressbook" => "Nom du nouveau carnet d'adresses", -"Import" => "Importer", "Importing contacts" => "Importation des contacts", -"Select address book to import to:" => "Selectionner le carnet d'adresses à importer vers:", -"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", "Configure addressbooks" => "Paramétrer carnet d'adresses", +"Select Address Books" => "Choix du carnet d'adresses", +"Enter name" => "Saisissez le nom", +"Enter description" => "Saisissez une description", "CardDAV syncing addresses" => "Synchronisation des contacts CardDAV", "more info" => "Plus d'infos", "Primary address (Kontact et al)" => "Adresse principale", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "Afficher le lien CardDav", +"Download" => "Télécharger", +"Edit" => "Modifier", +"New Address Book" => "Nouveau Carnet d'adresses", +"Name" => "Nom", +"Description" => "Description", +"Save" => "Sauvegarder", +"Cancel" => "Annuler", +"More..." => "Plus…" ); diff --git a/apps/contacts/l10n/gl.php b/apps/contacts/l10n/gl.php index bc3ec7449c..1b456fba01 100644 --- a/apps/contacts/l10n/gl.php +++ b/apps/contacts/l10n/gl.php @@ -1,16 +1,65 @@ "Produciuse un erro (des)activando a axenda.", +"id is not set." => "non se estableceu o id.", +"Cannot update addressbook with an empty name." => "Non se pode actualizar a libreta de enderezos sen completar o nome.", +"Error updating addressbook." => "Produciuse un erro actualizando a axenda.", +"No ID provided" => "Non se proveeu ID", +"Error setting checksum." => "Erro establecendo a suma de verificación", +"No categories selected for deletion." => "Non se seleccionaron categorías para borrado.", +"No address books found." => "Non se atoparon libretas de enderezos.", +"No contacts found." => "Non se atoparon contactos.", "There was an error adding the contact." => "Produciuse un erro engadindo o contacto.", +"element name is not set." => "non se nomeou o elemento.", "Cannot add empty property." => "Non se pode engadir unha propiedade baleira.", "At least one of the address fields has to be filled out." => "Polo menos un dos campos do enderezo ten que ser cuberto.", -"Error adding contact property." => "Produciuse un erro engadindo unha propiedade do contacto.", -"Error adding addressbook." => "Produciuse un erro engadindo a axenda.", -"Error activating addressbook." => "Produciuse un erro activando a axenda.", +"Trying to add duplicate property: " => "Tentando engadir propiedade duplicada: ", "Information about vCard is incorrect. Please reload the page." => "A información sobre a vCard é incorrecta. Por favor volva cargar a páxina.", "Error deleting contact property." => "Produciuse un erro borrando a propiedade do contacto.", +"Missing ID" => "ID perdido", +"Error parsing VCard for ID: \"" => "Erro procesando a VCard para o ID: \"", +"checksum is not set." => "non se estableceu a suma de verificación.", +"Information about vCard is incorrect. Please reload the page: " => "A información sobre a vCard é incorrecta. Por favor, recargue a páxina: ", "Error updating contact property." => "Produciuse un erro actualizando a propiedade do contacto.", -"Error updating addressbook." => "Produciuse un erro actualizando a axenda.", +"No contact ID was submitted." => "Non se enviou ningún ID de contacto.", +"Error reading contact photo." => "Erro lendo a fotografía do contacto.", +"Error saving temporary file." => "Erro gardando o ficheiro temporal.", +"The loading photo is not valid." => "A fotografía cargada non é válida.", +"Contact ID is missing." => "Falta o ID do contacto.", +"No photo path was submitted." => "Non se enviou a ruta a unha foto.", +"File doesn't exist:" => "O ficheiro non existe:", +"Error loading image." => "Erro cargando imaxe.", +"Error getting contact object." => "Erro obtendo o obxeto contacto.", +"Error getting PHOTO property." => "Erro obtendo a propiedade PHOTO.", +"Error saving contact." => "Erro gardando o contacto.", +"Error resizing image" => "Erro cambiando o tamaño da imaxe", +"Error cropping image" => "Erro recortando a imaxe", +"Error creating temporary image" => "Erro creando a imaxe temporal", +"Error finding image: " => "Erro buscando a imaxe: ", +"Error uploading contacts to storage." => "Erro subindo os contactos ao almacén.", +"There is no error, the file uploaded with success" => "Non houbo erros, o ficheiro subeuse con éxito", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O ficheiro subido supera a directiva upload_max_filesize no php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro subido supera a directiva MAX_FILE_SIZE especificada no formulario HTML", +"The uploaded file was only partially uploaded" => "O ficheiro so foi parcialmente subido", +"No file was uploaded" => "Non se subeu ningún ficheiro", +"Missing a temporary folder" => "Falta o cartafol temporal", +"Couldn't save temporary image: " => "Non se puido gardar a imaxe temporal: ", +"Couldn't load temporary image: " => "Non se puido cargar a imaxe temporal: ", +"No file was uploaded. Unknown error" => "Non se subeu ningún ficheiro. Erro descoñecido.", "Contacts" => "Contactos", +"Sorry, this functionality has not been implemented yet" => "Sentímolo, esta función aínda non foi implementada.", +"Not implemented" => "Non implementada.", +"Couldn't get a valid address." => "Non se puido obter un enderezo de correo válido.", +"Error" => "Erro", +"This property has to be non-empty." => "Esta propiedade non pode quedar baldeira.", +"Couldn't serialize elements." => "Non se puido serializar os elementos.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' chamado sen argumento. Por favor, informe en bugs.owncloud.org", +"Edit name" => "Editar nome", +"No files selected for upload." => "Sen ficheiros escollidos para subir.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "O ficheiro que tenta subir supera o tamaño máximo permitido neste servidor.", +"Select type" => "Seleccione tipo", +"Result: " => "Resultado: ", +" imported, " => " importado, ", +" failed." => " fallou.", "This is not your addressbook." => "Esta non é a súa axenda.", "Contact could not be found." => "Non se atopou o contacto.", "Address" => "Enderezo", @@ -22,37 +71,91 @@ "Mobile" => "Móbil", "Text" => "Texto", "Voice" => "Voz", +"Message" => "Mensaxe", "Fax" => "Fax", "Video" => "Vídeo", "Pager" => "Paxinador", +"Internet" => "Internet", +"Birthday" => "Aniversario", +"{name}'s Birthday" => "Cumpleanos de {name}", "Contact" => "Contacto", "Add Contact" => "Engadir contacto", +"Import" => "Importar", "Addressbooks" => "Axendas", -"New Address Book" => "Nova axenda", -"CardDav Link" => "Ligazón CardDav", -"Download" => "Descargar", -"Edit" => "Editar", +"Close" => "Pechar", +"Drop photo to upload" => "Solte a foto a subir", +"Delete current photo" => "Borrar foto actual", +"Edit current photo" => "Editar a foto actual", +"Upload new photo" => "Subir unha nova foto", +"Select photo from ownCloud" => "Escoller foto desde ownCloud", +"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizado, Nome corto, Nome completo, Inverso ou Inverso con coma", +"Edit name details" => "Editar detalles do nome", "Delete" => "Eliminar", +"Nickname" => "Apodo", +"Enter nickname" => "Introuza apodo", +"dd-mm-yyyy" => "dd-mm-yyyy", +"Groups" => "Grupos", +"Separate groups with commas" => "Separe grupos con comas", +"Edit groups" => "Editar grupos", +"Preferred" => "Preferido", +"Please specify a valid email address." => "Por favor indique un enderezo de correo electrónico válido.", +"Enter email address" => "Introduza enderezo de correo electrónico", +"Mail to address" => "Correo ao enderezo", +"Delete email address" => "Borrar enderezo de correo electrónico", +"Enter phone number" => "Introducir número de teléfono", +"Delete phone number" => "Borrar número de teléfono", +"View on map" => "Ver no mapa", +"Edit address details" => "Editar detalles do enderezo", +"Add notes here." => "Engadir aquí as notas.", +"Add field" => "Engadir campo", +"Phone" => "Teléfono", +"Note" => "Nota", "Download contact" => "Descargar contacto", "Delete contact" => "Borrar contacto", -"Birthday" => "Aniversario", -"Preferred" => "Preferido", -"Phone" => "Teléfono", +"The temporary image has been removed from cache." => "A imaxe temporal foi eliminada da caché.", +"Edit address" => "Editar enderezo", "Type" => "Escribir", "PO Box" => "Apartado de correos", "Extended" => "Ampliado", -"Street" => "Rúa", "City" => "Cidade", "Region" => "Autonomía", "Zipcode" => "Código postal", "Country" => "País", -"Add" => "Engadir", "Addressbook" => "Axenda", -"New Addressbook" => "Nova axenda", -"Edit Addressbook" => "Editar axenda", -"Displayname" => "Nome a mostrar", -"Active" => "Activo", +"Hon. prefixes" => "Prefixos honoríficos", +"Miss" => "Srta", +"Ms" => "Sra/Srta", +"Mr" => "Sr", +"Sir" => "Sir", +"Mrs" => "Sra", +"Dr" => "Dr", +"Given name" => "Apodo", +"Additional names" => "Nomes adicionais", +"Family name" => "Nome familiar", +"Hon. suffixes" => "Sufixos honorarios", +"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.", +"Import a contacts file" => "Importar un ficheiro de contactos", +"Please choose the addressbook" => "Por favor escolla unha libreta de enderezos", +"create a new addressbook" => "crear unha nova libreta de enderezos", +"Name of new addressbook" => "Nome da nova libreta de enderezos", +"Importing contacts" => "Importando contactos", +"You have no contacts in your addressbook." => "Non ten contactos na súa libreta de enderezos.", +"Add contact" => "Engadir contacto", +"Configure addressbooks" => "Configurar libretas de enderezos", +"CardDAV syncing addresses" => "Enderezos CardDAV a sincronizar", +"more info" => "máis información", +"Primary address (Kontact et al)" => "Enderezo primario (Kontact et al)", +"iOS/OS X" => "iOS/OS X", +"Download" => "Descargar", +"Edit" => "Editar", +"New Address Book" => "Nova axenda", "Save" => "Gardar", -"Submit" => "Enviar", "Cancel" => "Cancelar" ); diff --git a/apps/contacts/l10n/he.php b/apps/contacts/l10n/he.php index 6e40ad71e1..be67fe8ae8 100644 --- a/apps/contacts/l10n/he.php +++ b/apps/contacts/l10n/he.php @@ -1,22 +1,45 @@ "שגיאה בהפעלה או בנטרול פנקס הכתובות.", -"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." => "שגיאה בהוספת מאפיין לאיש הקשר.", +"id is not set." => "מספר מזהה לא נקבע.", +"Cannot update addressbook with an empty name." => "אי אפשר לעדכן ספר כתובות ללא שם", +"Error updating addressbook." => "שגיאה בעדכון פנקס הכתובות.", "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." => "שגיאה בהפעלת פנקס הכתובות.", +"There was an error adding the contact." => "אירעה שגיאה בעת הוספת איש הקשר.", +"element name is not set." => "שם האלמנט לא נקבע.", +"Cannot add empty property." => "לא ניתן להוסיף מאפיין ריק.", +"At least one of the address fields has to be filled out." => "יש למלא לפחות אחד משדות הכתובת.", +"Trying to add duplicate property: " => "ניסיון להוספת מאפיין כפול: ", "Information about vCard is incorrect. Please reload the page." => "המידע אודות vCard אינו נכון. נא לטעון מחדש את הדף.", "Error deleting contact property." => "שגיאה במחיקת מאפיין של איש הקשר.", +"Missing ID" => "מזהה חסר", +"Error parsing VCard for ID: \"" => "שגיאה בפענוח ה VCard עבור מספר המזהה: \"", +"checksum is not set." => "סיכום ביקורת לא נקבע.", +"Information about vCard is incorrect. Please reload the page: " => "המידע עבור ה vCard אינו נכון. אנא טען את העמוד: ", +"Something went FUBAR. " => "משהו לא התנהל כצפוי.", "Error updating contact property." => "שגיאה בעדכון המאפיין של איש הקשר.", -"Error updating addressbook." => "שגיאה בעדכון פנקס הכתובות.", +"No contact ID was submitted." => "מספר מזהה של אישר הקשר לא נשלח.", +"Error reading contact photo." => "שגיאה בקריאת תמונת איש הקשר.", +"Error saving temporary file." => "שגיאה בשמירת קובץ זמני.", +"The loading photo is not valid." => "התמונה הנטענת אינה תקנית.", +"Contact ID is missing." => "מספר מזהה של אישר הקשר חסר.", +"No photo path was submitted." => "כתובת התמונה לא נשלחה", +"File doesn't exist:" => "קובץ לא קיים:", +"Error loading image." => "שגיאה בטעינת התמונה.", +"Error getting contact object." => "שגיאה בקבלת אוביאקט איש הקשר", +"Error getting PHOTO property." => "שגיאה בקבלת מידע של תמונה", +"Error saving contact." => "שגיאה בשמירת איש הקשר", +"Error resizing image" => "שגיאה בשינוי גודל התמונה", +"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" => "אנשי קשר", "This is not your addressbook." => "זהו אינו ספר הכתובות שלך", "Contact could not be found." => "לא ניתן לאתר איש קשר", @@ -29,37 +52,88 @@ "Mobile" => "נייד", "Text" => "טקסט", "Voice" => "קולי", +"Message" => "הודעה", "Fax" => "פקס", "Video" => "וידאו", "Pager" => "זימונית", +"Internet" => "אינטרנט", +"Birthday" => "יום הולדת", +"{name}'s Birthday" => "יום ההולדת של {name}", "Contact" => "איש קשר", "Add Contact" => "הוספת איש קשר", +"Import" => "יבא", "Addressbooks" => "פנקסי כתובות", -"New Address Book" => "פנקס כתובות חדש", -"CardDav Link" => "קישור ", -"Download" => "הורדה", -"Edit" => "עריכה", +"Drop photo to upload" => "גרור ושחרר תמונה בשביל להעלות", +"Delete current photo" => "מחק תמונה נוכחית", +"Edit current photo" => "ערוך תמונה נוכחית", +"Upload new photo" => "העלה תמונה חדשה", +"Select photo from ownCloud" => "בחר תמונה מ ownCloud", +"Edit name details" => "ערוך פרטי שם", "Delete" => "מחיקה", +"Nickname" => "כינוי", +"Enter nickname" => "הכנס כינוי", +"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" => "מחק מספר טלפון", +"View on map" => "ראה במפה", +"Edit address details" => "ערוך פרטי כתובת", +"Add notes here." => "הוסף הערות כאן.", +"Add field" => "הוסף שדה", +"Phone" => "טלפון", +"Note" => "הערה", "Download contact" => "הורדת איש קשר", "Delete contact" => "מחיקת איש קשר", -"Birthday" => "יום הולדת", -"Preferred" => "מועדף", -"Phone" => "טלפון", +"Edit address" => "ערוך כתובת", "Type" => "סוג", "PO Box" => "תא דואר", "Extended" => "מורחב", -"Street" => "רחוב", "City" => "עיר", "Region" => "אזור", "Zipcode" => "מיקוד", "Country" => "מדינה", -"Add" => "הוספה", "Addressbook" => "פנקס כתובות", -"New Addressbook" => "פנקס כתובות חדש", -"Edit Addressbook" => "עריכת פנקס הכתובות", -"Displayname" => "שם התצוגה", -"Active" => "פעיל", +"Hon. prefixes" => "קידומות שם", +"Miss" => "גב'", +"Ms" => "גב'", +"Mr" => "מר'", +"Sir" => "אדון", +"Mrs" => "גב'", +"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.", +"Import a contacts file" => "יבא קובץ אנשי קשר", +"Please choose the addressbook" => "אנא בחר ספר כתובות", +"create a new addressbook" => "צור ספר כתובות חדש", +"Name of new addressbook" => "שם ספר כתובות החדש", +"Importing contacts" => "מיבא אנשי קשר", +"You have no contacts in your addressbook." => "איך לך אנשי קשר בספר הכתובות", +"Add contact" => "הוסף איש קשר", +"Configure addressbooks" => "הגדר ספרי כתובות", +"CardDAV syncing addresses" => "CardDAV מסנכרן כתובות", +"more info" => "מידע נוסף", +"Primary address (Kontact et al)" => "כתובת ראשית", +"iOS/OS X" => "iOS/OS X", +"Download" => "הורדה", +"Edit" => "עריכה", +"New Address Book" => "פנקס כתובות חדש", "Save" => "שמירה", -"Submit" => "ביצוע", "Cancel" => "ביטול" ); diff --git a/apps/contacts/l10n/hr.php b/apps/contacts/l10n/hr.php index d381bf4fa9..d29283f767 100644 --- a/apps/contacts/l10n/hr.php +++ b/apps/contacts/l10n/hr.php @@ -1,6 +1,41 @@ "Pogreška pri (de)aktivaciji adresara.", +"id is not set." => "id nije postavljen.", +"Cannot update addressbook with an empty name." => "Ne mogu ažurirati adresar sa praznim nazivom.", +"Error updating addressbook." => "Pogreška pri ažuriranju adresara.", +"No ID provided" => "Nema dodijeljenog ID identifikatora", +"Error setting checksum." => "Pogreška pri postavljanju checksuma.", +"No categories selected for deletion." => "Niti jedna kategorija nije odabrana za brisanje.", +"No address books found." => "Nema adresara.", +"No contacts found." => "Nema kontakata.", +"There was an error adding the contact." => "Dogodila se pogreška prilikom dodavanja kontakta.", +"element name is not set." => "naziv elementa nije postavljen.", +"Cannot add empty property." => "Prazno svojstvo se ne može dodati.", +"At least one of the address fields has to be filled out." => "Morate ispuniti barem jedno od adresnih polja.", +"Trying to add duplicate property: " => "Pokušali ste dodati duplo svojstvo:", "Information about vCard is incorrect. Please reload the page." => "Informacija o vCard je neispravna. Osvježite stranicu.", +"Error deleting contact property." => "Pogreška pri brisanju svojstva kontakta.", +"Missing ID" => "Nedostupan ID identifikator", +"Error parsing VCard for ID: \"" => "Pogreška pri raščlanjivanju VCard za ID:", +"checksum is not set." => "checksum nije postavljen.", +"Information about vCard is incorrect. Please reload the page: " => "Informacije o VCard su pogrešne. Molimo, učitajte ponovno stranicu:", +"Something went FUBAR. " => "Nešto je otišlo... krivo...", +"Error updating contact property." => "Pogreška pri ažuriranju svojstva kontakta.", +"No contact ID was submitted." => "ID kontakta nije podnešen.", +"Error reading contact photo." => "Pogreška pri čitanju kontakt fotografije.", +"Error saving temporary file." => "Pogreška pri spremanju privremene datoteke.", +"The loading photo is not valid." => "Fotografija nije valjana.", +"Contact ID is missing." => "ID kontakta nije dostupan.", +"No photo path was submitted." => "Putanja do fotografije nije podnešena.", "File doesn't exist:" => "Datoteka ne postoji:", +"Error loading image." => "Pogreška pri učitavanju slike.", +"Error uploading contacts to storage." => "Pogreška pri slanju kontakata.", +"There is no error, the file uploaded with success" => "Nema pogreške, datoteka je poslana uspješno.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Veličina poslane datoteke prelazi veličinu prikazanu u upload_max_filesize direktivi u konfiguracijskoj datoteci php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslana datoteka prelazi veličinu prikazanu u MAX_FILE_SIZE direktivi u HTML formi", +"The uploaded file was only partially uploaded" => "Poslana datoteka je parcijalno poslana", +"No file was uploaded" => "Datoteka nije poslana", +"Missing a temporary folder" => "Nedostaje privremeni direktorij", "Contacts" => "Kontakti", "This is not your addressbook." => "Ovo nije vaš adresar.", "Contact could not be found." => "Kontakt ne postoji.", @@ -13,26 +48,27 @@ "Mobile" => "Mobitel", "Text" => "Tekst", "Voice" => "Glasovno", +"Message" => "Poruka", "Fax" => "Fax", "Video" => "Video", "Pager" => "Pager", +"Internet" => "Internet", +"Birthday" => "Rođendan", +"{name}'s Birthday" => "{name} Rođendan", "Contact" => "Kontakt", "Add Contact" => "Dodaj kontakt", +"Import" => "Uvezi", "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", +"Drop photo to upload" => "Dovucite fotografiju za slanje", +"Edit current photo" => "Uredi trenutnu sliku", "Edit name details" => "Uredi detalje imena", +"Delete" => "Obriši", "Nickname" => "Nadimak", "Enter nickname" => "Unesi nadimank", -"Birthday" => "Rođendan", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "Grupe", "Edit groups" => "Uredi grupe", +"Preferred" => "Preferirano", "Enter email address" => "Unesi email adresu", "Enter phone number" => "Unesi broj telefona", "View on map" => "Prikaži na karti", @@ -41,23 +77,20 @@ "Add field" => "Dodaj polje", "Phone" => "Telefon", "Note" => "Bilješka", -"Edit current photo" => "Uredi trenutnu sliku", +"Download contact" => "Preuzmi kontakt", +"Delete contact" => "Izbriši kontakt", "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", -"Edit categories" => "Uredi kategorije", -"Add" => "Dodaj", "Addressbook" => "Adresar", -"New Addressbook" => "Novi adresar", -"Edit Addressbook" => "Uredi adresar", +"Download" => "Preuzimanje", +"Edit" => "Uredi", +"New Address Book" => "Novi adresar", "Save" => "Spremi", -"Submit" => "Pošalji", -"Cancel" => "Prekini", -"Import" => "Uvezi" +"Cancel" => "Prekini" ); diff --git a/apps/contacts/l10n/hu_HU.php b/apps/contacts/l10n/hu_HU.php index 68f7b2607e..b3f831ea8a 100644 --- a/apps/contacts/l10n/hu_HU.php +++ b/apps/contacts/l10n/hu_HU.php @@ -1,39 +1,41 @@ "Címlista (de)aktiválása sikertelen", -"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 kapcsolat-tulajdonság hozzáadásakor", +"id is not set." => "ID nincs beállítva", +"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", "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", "No address books found." => "Nem található címlista", "No contacts found." => "Nem található kontakt", -"Missing ID" => "Hiányzó ID", -"Error parsing VCard for ID: \"" => "VCard elemzése sikertelen a következő ID-hoz: \"", -"Cannot add addressbook with an empty name." => "Nem adható hozzá névtelen címlista", -"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 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", +"There was an error adding the contact." => "Hiba a kapcsolat hozzáadásakor", +"element name is not set." => "az elem neve nincs beállítva", +"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: ", "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 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", +"Missing ID" => "Hiányzó ID", +"Error parsing VCard for ID: \"" => "VCard elemzése sikertelen a következő ID-hoz: \"", "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 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", +"No contact ID was submitted." => "Nincs ID megadva a kontakthoz", +"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", +"Contact ID is missing." => "Hiányzik a kapcsolat 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", +"Error getting contact object." => "A kontakt-objektum feldolgozása sikertelen", +"Error getting PHOTO property." => "A PHOTO-tulajdonság feldolgozása sikertelen", +"Error saving contact." => "A kontakt mentése sikertelen", +"Error resizing image" => "Képméretezés sikertelen", +"Error cropping image" => "Képvágás sikertelen", +"Error creating temporary image" => "Ideiglenes kép létrehozása sikertelen", +"Error finding image: " => "A kép nem található", "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", @@ -41,9 +43,24 @@ "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", +"Couldn't save temporary image: " => "Ideiglenes kép létrehozása sikertelen", +"Couldn't load temporary image: " => "Ideiglenes kép betöltése sikertelen", +"No file was uploaded. Unknown error" => "Nem történt feltöltés. Ismeretlen hiba", "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ó", +"Sorry, this functionality has not been implemented yet" => "Sajnáljuk, ez a funkció még nem támogatott", +"Not implemented" => "Nem támogatott", +"Couldn't get a valid address." => "Érvényes cím lekérése sikertelen", +"Error" => "Hiba", +"This property has to be non-empty." => "Ezt a tulajdonságot muszáj kitölteni", +"Couldn't serialize elements." => "Sorbarakás sikertelen", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "A 'deleteProperty' argumentum nélkül lett meghívva. Kérjük, jelezze a hibát.", +"Edit name" => "Név szerkesztése", +"No files selected for upload." => "Nincs kiválasztva feltöltendő fájl", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "A feltöltendő fájl mérete meghaladja a megengedett mértéket", +"Select type" => "Típus kiválasztása", +"Result: " => "Eredmény: ", +" imported, " => " beimportálva, ", +" failed." => " sikertelen", "This is not your addressbook." => "Ez nem a te címjegyzéked.", "Contact could not be found." => "Kapcsolat nem található.", "Address" => "Cím", @@ -60,25 +77,23 @@ "Video" => "Video", "Pager" => "Személyhívó", "Internet" => "Internet", +"Birthday" => "Születésnap", "{name}'s Birthday" => "{name} születésnapja", "Contact" => "Kapcsolat", "Add Contact" => "Kapcsolat hozzáadása", +"Import" => "Import", "Addressbooks" => "Címlisták", -"Configure Address Books" => "Címlisták beállítása", -"New Address Book" => "Új címlista", -"Import from VCF" => "Importálás VCF-ből", -"CardDav Link" => "CardDav hivatkozás", -"Download" => "Letöltés", -"Edit" => "Szerkesztés", -"Delete" => "Törlés", -"Download contact" => "Kapcsolat letöltése", -"Delete contact" => "Kapcsolat törlése", +"Close" => "Bezár", "Drop photo to upload" => "Húzza ide a feltöltendő képet", +"Delete current photo" => "Aktuális kép törlése", +"Edit current photo" => "Aktuális kép szerkesztése", +"Upload new photo" => "Új kép feltöltése", +"Select photo from ownCloud" => "Kép kiválasztása ownCloud-ból", "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", +"Delete" => "Törlés", "Nickname" => "Becenév", "Enter nickname" => "Becenév megadása", -"Birthday" => "Születésnap", "dd-mm-yyyy" => "yyyy-mm-dd", "Groups" => "Csoportok", "Separate groups with commas" => "Vesszővel válassza el a csoportokat", @@ -94,24 +109,19 @@ "Edit address details" => "Cím részleteinek szerkesztése", "Add notes here." => "Megjegyzések", "Add field" => "Mező hozzáadása", -"Profile picture" => "Profilkép", "Phone" => "Telefonszám", "Note" => "Jegyzet", -"Delete current photo" => "Aktuális kép törlése", -"Edit current photo" => "Aktuális kép szerkesztése", -"Upload new photo" => "Új kép feltöltése", -"Select photo from ownCloud" => "Kép kiválasztása ownCloud-ból", +"Download contact" => "Kapcsolat letöltése", +"Delete contact" => "Kapcsolat törlése", +"The temporary image has been removed from cache." => "Az ideiglenes kép el lett távolítva a gyorsítótárból", "Edit address" => "Cím szerkesztése", "Type" => "Típus", "PO Box" => "Postafiók", "Extended" => "Kiterjesztett", -"Street" => "Utca", "City" => "Város", "Region" => "Megye", "Zipcode" => "Irányítószám", "Country" => "Ország", -"Edit categories" => "Kategóriák szerkesztése", -"Add" => "Hozzáad", "Addressbook" => "Címlista", "Hon. prefixes" => "Előtag", "Miss" => "Miss", @@ -132,26 +142,21 @@ "Esq." => "Esq.", "Jr." => "Ifj.", "Sn." => "Id.", -"New Addressbook" => "Új Címlista", -"Edit Addressbook" => "Címlista szerkesztése", -"Displayname" => "Megjelenített név", -"Active" => "Aktív", -"Save" => "Mentés", -"Submit" => "Elküld", -"Cancel" => "Mégsem", "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" => "Kapcsolatok importálása", -"Select address book to import to:" => "Melyik címlistába történjen az importálás:", -"Select from HD" => "Kiválasztás merevlemezről", "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 információ", "Primary address (Kontact et al)" => "Elsődleges cím", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Letöltés", +"Edit" => "Szerkesztés", +"New Address Book" => "Új címlista", +"Save" => "Mentés", +"Cancel" => "Mégsem" ); diff --git a/apps/contacts/l10n/ia.php b/apps/contacts/l10n/ia.php index f420b48d84..b3f9db539a 100644 --- a/apps/contacts/l10n/ia.php +++ b/apps/contacts/l10n/ia.php @@ -1,15 +1,12 @@ "Non pote adder proprietate vacue.", "No address books found." => "Nulle adressario trovate", "No contacts found." => "Nulle contactos trovate.", -"Error adding addressbook." => "Error durante que il addeva le adressario.", -"Error activating addressbook." => "Error in activar adressario", +"Cannot add empty property." => "Non pote adder proprietate vacue.", "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", -"Addressbook not found." => "Adressario non trovate.", "This is not your addressbook." => "Iste non es tu libro de adresses", "Contact could not be found." => "Contacto non poterea esser legite", "Address" => "Adresse", @@ -26,19 +23,18 @@ "Video" => "Video", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Anniversario", "Contact" => "Contacto", "Add Contact" => "Adder contacto", +"Import" => "Importar", "Addressbooks" => "Adressarios", -"New Address Book" => "Nove adressario", -"CardDav Link" => "Ligamine CardDav", -"Download" => "Discargar", -"Edit" => "Modificar", +"Delete current photo" => "Deler photo currente", +"Edit current photo" => "Modificar photo currente", +"Upload new photo" => "Incargar nove photo", +"Select photo from ownCloud" => "Seliger photo ex ownCloud", "Delete" => "Deler", -"Download contact" => "Discargar contacto", -"Delete contact" => "Deler contacto", "Nickname" => "Pseudonymo", "Enter nickname" => "Inserer pseudonymo", -"Birthday" => "Anniversario", "Groups" => "Gruppos", "Edit groups" => "Modificar gruppos", "Preferred" => "Preferite", @@ -49,24 +45,18 @@ "View on map" => "Vider in un carta", "Add notes here." => "Adder notas hic", "Add field" => "Adder campo", -"Profile picture" => "Imagine de profilo", "Phone" => "Phono", "Note" => "Nota", -"Delete current photo" => "Deler photo currente", -"Edit current photo" => "Modificar photo currente", -"Upload new photo" => "Incargar nove photo", -"Select photo from ownCloud" => "Seliger photo ex ownCloud", +"Download contact" => "Discargar contacto", +"Delete contact" => "Deler contacto", "Edit address" => "Modificar adresses", "Type" => "Typo", "PO Box" => "Cassa postal", "Extended" => "Extendite", -"Street" => "Strata", "City" => "Citate", "Region" => "Region", "Zipcode" => "Codice postal", "Country" => "Pais", -"Edit categories" => "Modificar categorias", -"Add" => "Adder", "Addressbook" => "Adressario", "Hon. prefixes" => "Prefixos honorific", "Miss" => "Senioretta", @@ -77,18 +67,16 @@ "Additional names" => "Nomines additional", "Family name" => "Nomine de familia", "Hon. suffixes" => "Suffixos honorific", -"New Addressbook" => "Nove adressario", -"Edit Addressbook" => "Modificar adressario", -"Active" => "Active", -"Save" => "Salveguardar", -"Submit" => "Submitter", -"Cancel" => "Cancellar", "Import a contacts file" => "Importar un file de contactos", "Please choose the addressbook" => "Per favor selige le adressario", "create a new addressbook" => "Crear un nove adressario", "Name of new addressbook" => "Nomine del nove gruppo:", -"Import" => "Importar", "Add contact" => "Adder adressario", "more info" => "plus info", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Discargar", +"Edit" => "Modificar", +"New Address Book" => "Nove adressario", +"Save" => "Salveguardar", +"Cancel" => "Cancellar" ); diff --git a/apps/contacts/l10n/it.php b/apps/contacts/l10n/it.php index 2a5478e6c4..31f950ff80 100644 --- a/apps/contacts/l10n/it.php +++ b/apps/contacts/l10n/it.php @@ -1,39 +1,43 @@ "Errore nel (dis)attivare la rubrica.", -"There was an error adding the contact." => "Si è verificato un errore nell'aggiunta del contatto.", -"Cannot add empty property." => "Impossibile aggiungere una proprietà vuota.", -"At least one of the address fields has to be filled out." => "Deve essere riempito almeno un indirizzo.", -"Trying to add duplicate property: " => "P", -"Error adding contact property." => "Errore durante l'aggiunta della proprietà del contatto.", +"id is not set." => "ID non impostato.", +"Cannot update addressbook with an empty name." => "Impossibile aggiornare una rubrica senza nome.", +"Error updating addressbook." => "Errore durante l'aggiornamento della rubrica.", "No ID provided" => "Nessun ID fornito", "Error setting checksum." => "Errore di impostazione del codice di controllo.", "No categories selected for deletion." => "Nessuna categoria selezionata per l'eliminazione.", "No address books found." => "Nessuna rubrica trovata.", "No contacts found." => "Nessun contatto trovato.", -"Missing ID" => "ID mancante", -"Error parsing VCard for ID: \"" => "Errore in fase di elaborazione del file VCard per l'ID: \"", -"Cannot add addressbook with an empty name." => "Impossibile aggiungere una rubrica senza nome.", -"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 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.", -"id is not set." => "ID non impostato.", +"There was an error adding the contact." => "Si è verificato un errore nell'aggiunta del contatto.", +"element name is not set." => "il nome dell'elemento non è impostato.", +"Could not parse contact: " => "Impossibile elaborare il contatto: ", +"Cannot add empty property." => "Impossibile aggiungere una proprietà vuota.", +"At least one of the address fields has to be filled out." => "Deve essere inserito almeno un indirizzo.", +"Trying to add duplicate property: " => "P", +"Error adding contact property: " => "Errore durante l'aggiunta della proprietà del contatto: ", "Information about vCard is incorrect. Please reload the page." => "Informazioni sulla vCard non corrette. Ricarica la pagina.", "Error deleting contact property." => "Errore durante l'eliminazione della proprietà del contatto.", -"Contact ID is missing." => "Manca l'ID del contatto.", -"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.", +"Missing ID" => "ID mancante", +"Error parsing VCard for ID: \"" => "Errore in fase di elaborazione del file VCard per l'ID: \"", "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: ", "Something went FUBAR. " => "Qualcosa è andato storto. ", "Error updating contact property." => "Errore durante l'aggiornamento della proprietà del contatto.", -"Cannot update addressbook with an empty name." => "Impossibile aggiornare una rubrica senza nome.", -"Error updating addressbook." => "Errore durante l'aggiornamento della rubrica.", +"No contact ID was submitted." => "Nessun ID di contatto inviato.", +"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.", +"Contact ID is missing." => "Manca l'ID del contatto.", +"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.", +"Error getting contact object." => "Errore di recupero dell'oggetto contatto.", +"Error getting PHOTO property." => "Errore di recupero della proprietà FOTO.", +"Error saving contact." => "Errore di salvataggio del contatto.", +"Error resizing image" => "Errore di ridimensionamento dell'immagine", +"Error cropping image" => "Errore di ritaglio dell'immagine", +"Error creating temporary image" => "Errore durante la creazione dell'immagine temporanea", +"Error finding image: " => "Errore durante la ricerca dell'immagine: ", "Error uploading contacts to storage." => "Errore di invio dei contatti in archivio.", "There is no error, the file uploaded with success" => "Non ci sono errori, il file è stato inviato correttamente", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Il file inviato supera la direttiva upload_max_filesize nel php.ini", @@ -41,9 +45,27 @@ "The uploaded file was only partially uploaded" => "Il file è stato inviato solo parzialmente", "No file was uploaded" => "Nessun file è stato inviato", "Missing a temporary folder" => "Manca una cartella temporanea", +"Couldn't save temporary image: " => "Impossibile salvare l'immagine temporanea: ", +"Couldn't load temporary image: " => "Impossibile caricare l'immagine temporanea: ", +"No file was uploaded. Unknown error" => "Nessun file è stato inviato. Errore sconosciuto", "Contacts" => "Contatti", -"Drop a VCF file to import contacts." => "Rilascia un file VCF per importare i contatti.", -"Addressbook not found." => "Rubrica non trovata.", +"Sorry, this functionality has not been implemented yet" => "Siamo spiacenti, questa funzionalità non è stata ancora implementata", +"Not implemented" => "Non implementata", +"Couldn't get a valid address." => "Impossibile ottenere un indirizzo valido.", +"Error" => "Errore", +"This property has to be non-empty." => "Questa proprietà non può essere vuota.", +"Couldn't serialize elements." => "Impossibile serializzare gli elementi.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' invocata senza l'argomento di tipo. Segnalalo a bugs.owncloud.org", +"Edit name" => "Modifica il nome", +"No files selected for upload." => "Nessun file selezionato per l'invio", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Il file che stai cercando di inviare supera la dimensione massima per l'invio dei file su questo server.", +"Select type" => "Seleziona il tipo", +"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Alcuni contatti sono marcati per l'eliminazione, ma non sono stati ancora rimossi. Attendi fino al completamento dell'operazione.", +"Result: " => "Risultato: ", +" imported, " => " importato, ", +" failed." => " non riuscito.", +"Displayname cannot be empty." => "Il nome visualizzato non può essere vuoto.", +"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.", "Address" => "Indirizzo", @@ -60,25 +82,50 @@ "Video" => "Video", "Pager" => "Cercapersone", "Internet" => "Internet", +"Birthday" => "Compleanno", +"Business" => "Lavoro", +"Call" => "Chiama", +"Clients" => "Client", +"Deliverer" => "Corriere", +"Holidays" => "Festività", +"Ideas" => "Idee", +"Journey" => "Viaggio", +"Jubilee" => "Anniversario", +"Meeting" => "Riunione", +"Other" => "Altro", +"Personal" => "Personale", +"Projects" => "Progetti", +"Questions" => "Domande", "{name}'s Birthday" => "Data di nascita di {name}", "Contact" => "Contatto", "Add Contact" => "Aggiungi contatto", +"Import" => "Importa", +"Settings" => "Impostazioni", "Addressbooks" => "Rubriche", -"Configure Address Books" => "Configura rubrica", -"New Address Book" => "Nuova rubrica", -"Import from VCF" => "Importa da VCF", -"CardDav Link" => "Link CardDav", -"Download" => "Scarica", -"Edit" => "Modifica", -"Delete" => "Elimina", -"Download contact" => "Scarica contatto", -"Delete contact" => "Elimina contatto", +"Close" => "Chiudi", +"Keyboard shortcuts" => "Scorciatoie da tastiera", +"Navigation" => "Navigazione", +"Next contact in list" => "Contatto successivo in elenco", +"Previous contact in list" => "Contatto precedente in elenco", +"Expand/collapse current addressbook" => "Espandi/Contrai la rubrica corrente", +"Actions" => "Azioni", +"Refresh contacts list" => "Aggiorna l'elenco dei contatti", +"Add new contact" => "Aggiungi un nuovo contatto", +"Add new addressbook" => "Aggiungi una nuova rubrica", +"Delete current contact" => "Elimina il contatto corrente", "Drop photo to upload" => "Rilascia una foto da inviare", +"Delete current photo" => "Elimina la foto corrente", +"Edit current photo" => "Modifica la foto corrente", +"Upload new photo" => "Invia una nuova foto", +"Select photo from ownCloud" => "Seleziona la foto da ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizzato, nome breve, nome completo, invertito o invertito con virgola", "Edit name details" => "Modifica dettagli del nome", +"Delete" => "Elimina", "Nickname" => "Pseudonimo", "Enter nickname" => "Inserisci pseudonimo", -"Birthday" => "Compleanno", +"Web site" => "Sito web", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Vai al sito web", "dd-mm-yyyy" => "gg-mm-aaaa", "Groups" => "Gruppi", "Separate groups with commas" => "Separa i gruppi con virgole", @@ -94,24 +141,24 @@ "Edit address details" => "Modifica dettagli dell'indirizzo", "Add notes here." => "Aggiungi qui le note.", "Add field" => "Aggiungi campo", -"Profile picture" => "Immagine del profilo", "Phone" => "Telefono", "Note" => "Nota", -"Delete current photo" => "Elimina la foto corrente", -"Edit current photo" => "Modifica la foto corrente", -"Upload new photo" => "Invia una nuova foto", -"Select photo from ownCloud" => "Seleziona la foto da ownCloud", +"Download contact" => "Scarica contatto", +"Delete contact" => "Elimina contatto", +"The temporary image has been removed from cache." => "L'immagine temporanea è stata rimossa dalla cache.", "Edit address" => "Modifica indirizzo", "Type" => "Tipo", "PO Box" => "Casella postale", +"Street address" => "Indirizzo", +"Street and number" => "Via e numero", "Extended" => "Esteso", -"Street" => "Via", +"Apartment number etc." => "Numero appartamento ecc.", "City" => "Città", "Region" => "Regione", +"E.g. state or province" => "Ad es. stato o provincia", "Zipcode" => "CAP", +"Postal code" => "CAP", "Country" => "Stato", -"Edit categories" => "Modifica categorie", -"Add" => "Aggiungi", "Addressbook" => "Rubrica", "Hon. prefixes" => "Prefissi onorifici", "Miss" => "Sig.na", @@ -132,26 +179,29 @@ "Esq." => "Esq.", "Jr." => "Jr.", "Sn." => "Sn.", -"New Addressbook" => "Nuova rubrica", -"Edit Addressbook" => "Modifica rubrica", -"Displayname" => "Nome visualizzato", -"Active" => "Attiva", -"Save" => "Salva", -"Submit" => "Invia", -"Cancel" => "Annulla", "Import a contacts file" => "Importa un file di contatti", "Please choose the addressbook" => "Scegli la rubrica", "create a new addressbook" => "crea una nuova rubrica", "Name of new addressbook" => "Nome della nuova rubrica", -"Import" => "Importa", "Importing contacts" => "Importazione contatti", -"Select address book to import to:" => "Seleziona la rubrica di destinazione:", -"Select from HD" => "Seleziona da disco", "You have no contacts in your addressbook." => "Non hai contatti nella rubrica.", "Add contact" => "Aggiungi contatto", "Configure addressbooks" => "Configura rubriche", +"Select Address Books" => "Seleziona rubriche", +"Enter name" => "Inserisci il nome", +"Enter description" => "Inserisci una descrizione", "CardDAV syncing addresses" => "Indirizzi di sincronizzazione CardDAV", "more info" => "altre informazioni", "Primary address (Kontact et al)" => "Indirizzo principale (Kontact e altri)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "Mostra collegamento CardDav", +"Show read-only VCF link" => "Mostra collegamento VCF in sola lettura", +"Download" => "Scarica", +"Edit" => "Modifica", +"New Address Book" => "Nuova rubrica", +"Name" => "Nome", +"Description" => "Descrizione", +"Save" => "Salva", +"Cancel" => "Annulla", +"More..." => "Altro..." ); diff --git a/apps/contacts/l10n/ja_JP.php b/apps/contacts/l10n/ja_JP.php index d98e58f94d..074a725b48 100644 --- a/apps/contacts/l10n/ja_JP.php +++ b/apps/contacts/l10n/ja_JP.php @@ -1,36 +1,40 @@ "アドレスブックの有効/無効化に失敗しました。", -"There was an error adding the contact." => "連絡先の追加でエラーが発生しました。", -"Cannot add empty property." => "項目の新規追加に失敗しました。", -"At least one of the address fields has to be filled out." => "住所の項目のうち1つは入力して下さい。", -"Error adding contact property." => "連絡先の追加に失敗しました。", +"id is not set." => "idが設定されていません。", +"Cannot update addressbook with an empty name." => "空白の名前でアドレスブックを更新することはできません。", +"Error updating addressbook." => "アドレスブックの更新に失敗しました。", "No ID provided" => "IDが提供されていません", "Error setting checksum." => "チェックサムの設定エラー。", "No categories selected for deletion." => "削除するカテゴリが選択されていません。", "No address books found." => "アドレスブックが見つかりません。", "No contacts found." => "連絡先が見つかりません。", +"There was an error adding the contact." => "連絡先の追加でエラーが発生しました。", +"element name is not set." => "要素名が設定されていません。", +"Cannot add empty property." => "項目の新規追加に失敗しました。", +"At least one of the address fields has to be filled out." => "住所の項目のうち1つは入力して下さい。", +"Trying to add duplicate property: " => "重複する属性を追加: ", +"Error adding contact property: " => "コンタクト属性の追加エラー: ", +"Information about vCard is incorrect. Please reload the page." => "vCardの情報に誤りがあります。ページをリロードして下さい。", +"Error deleting contact property." => "連絡先の削除に失敗しました。", "Error parsing VCard for ID: \"" => "VCardからIDの抽出エラー: \"", -"Cannot add addressbook with an empty name." => "名前を空白にしたままでアドレスブックを追加することはできません。", -"Error adding addressbook." => "アドレスブックの追加に失敗しました。", -"Error activating addressbook." => "アドレスブックの有効化に失敗しました。", +"checksum is not set." => "チェックサムが設定されていません。", +"Information about vCard is incorrect. Please reload the page: " => "vCardの情報が正しくありません。ページを再読み込みしてください: ", +"Error updating contact property." => "連絡先の更新に失敗しました。", "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." => "連絡先の更新に失敗しました。", -"Cannot update addressbook with an empty name." => "空白の名前でアドレスブックを更新することはできません。", -"Error updating addressbook." => "アドレスブックの更新に失敗しました。", +"Error getting contact object." => "コンタクトオブジェクトの取得エラー。", +"Error getting PHOTO property." => "写真属性の取得エラー。", +"Error saving contact." => "コンタクトの保存エラー。", +"Error resizing image" => "画像のリサイズエラー", +"Error cropping image" => "画像の切り抜きエラー", +"Error creating temporary image" => "一時画像の生成エラー", +"Error finding image: " => "画像検索エラー: ", "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 の制限を超えています", @@ -38,9 +42,24 @@ "The uploaded file was only partially uploaded" => "アップロードファイルは一部分だけアップロードされました", "No file was uploaded" => "ファイルはアップロードされませんでした", "Missing a temporary folder" => "一時保存フォルダが見つかりません", +"Couldn't save temporary image: " => "一時的な画像の保存ができませんでした: ", +"Couldn't load temporary image: " => "一時的な画像の読み込みができませんでした: ", +"No file was uploaded. Unknown error" => "ファイルは何もアップロードされていません。不明なエラー", "Contacts" => "連絡先", -"Drop a VCF file to import contacts." => "連絡先をインポートするVCFファイルをドロップしてください。", -"Addressbook not found." => "アドレスブックが見つかりませんでした。", +"Sorry, this functionality has not been implemented yet" => "申し訳ありません。この機能はまだ実装されていません", +"Not implemented" => "未実装", +"Couldn't get a valid address." => "有効なアドレスを取得できませんでした。", +"Error" => "エラー", +"This property has to be non-empty." => "この属性は空にできません。", +"Couldn't serialize elements." => "要素をシリアライズできませんでした。", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' は型の引数無しで呼び出されました。bugs.owncloud.org へ報告してください。", +"Edit name" => "名前を編集", +"No files selected for upload." => "アップロードするファイルが選択されていません。", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "アップロードしようとしているファイルは、このサーバの最大ファイルアップロードサイズを超えています。", +"Select type" => "タイプを選択", +"Result: " => "結果: ", +" imported, " => " をインポート、 ", +" failed." => " は失敗しました。", "This is not your addressbook." => "これはあなたの電話帳ではありません。", "Contact could not be found." => "連絡先を見つける事ができません。", "Address" => "住所", @@ -57,24 +76,44 @@ "Video" => "テレビ電話", "Pager" => "ポケベル", "Internet" => "インターネット", +"Birthday" => "誕生日", +"Business" => "ビジネス", +"Clients" => "顧客", +"Deliverer" => "運送会社", +"Holidays" => "休日", +"Ideas" => "アイデア", +"Journey" => "旅行", +"Jubilee" => "記念祭", +"Meeting" => "打ち合わせ", +"Other" => "その他", +"Personal" => "個人", +"Projects" => "プロジェクト", +"Questions" => "質問", "{name}'s Birthday" => "{name}の誕生日", "Contact" => "連絡先", "Add Contact" => "連絡先の追加", +"Import" => "インポート", +"Settings" => "設定", "Addressbooks" => "電話帳", -"Configure Address Books" => "アドレスブックを設定", -"New Address Book" => "新規電話帳", -"Import from VCF" => "VCFからインポート", -"CardDav Link" => "CardDAVリンク", -"Download" => "ダウンロード", -"Edit" => "編集", -"Delete" => "削除", -"Download contact" => "連絡先のダウンロード", -"Delete contact" => "連絡先の削除", +"Close" => "閉じる", +"Keyboard shortcuts" => "キーボードショートカット", +"Navigation" => "ナビゲーション", +"Next contact in list" => "リスト内の次のコンタクト", +"Previous contact in list" => "リスト内の前のコンタクト", +"Add new contact" => "新しいコンタクトを追加", +"Add new addressbook" => "新しいアドレスブックを追加", +"Delete current contact" => "現在のコンタクトを削除", "Drop photo to upload" => "写真をドロップしてアップロード", +"Delete current photo" => "現在の写真を削除", +"Edit current photo" => "現在の写真を編集", +"Upload new photo" => "新しい写真をアップロード", +"Select photo from ownCloud" => "ownCloudから写真を選択", "Edit name details" => "名前の詳細を編集", +"Delete" => "削除", "Nickname" => "ニックネーム", "Enter nickname" => "ニックネームを入力", -"Birthday" => "誕生日", +"Web site" => "ウェブサイト", +"http://www.somesite.com" => "http://www.somesite.com", "dd-mm-yyyy" => "yyyy-mm-dd", "Groups" => "グループ", "Separate groups with commas" => "コンマでグループを分割", @@ -90,24 +129,20 @@ "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から写真を選択", +"Download contact" => "連絡先のダウンロード", +"Delete contact" => "連絡先の削除", +"The temporary image has been removed from cache." => "一時画像はキャッシュから削除されました。", "Edit address" => "住所を編集", "Type" => "種類", "PO Box" => "私書箱", "Extended" => "番地2", -"Street" => "番地1", "City" => "都市", "Region" => "都道府県", "Zipcode" => "郵便番号", +"Postal code" => "郵便番号", "Country" => "国名", -"Edit categories" => "カテゴリを編集", -"Add" => "追加", "Addressbook" => "アドレスブック", "Miss" => "Miss", "Ms" => "Ms", @@ -127,26 +162,22 @@ "Esq." => "Esq.", "Jr." => "Jr.", "Sn." => "Sn.", -"New Addressbook" => "アドレスブックの新規作成", -"Edit Addressbook" => "アドレスブックを編集", -"Displayname" => "表示名", -"Active" => "アクティブ", -"Save" => "保存", -"Submit" => "送信", -"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" => "アドレス帳を設定", +"Enter name" => "名前を入力", "CardDAV syncing addresses" => "CardDAV同期アドレス", "more info" => "詳細情報", "Primary address (Kontact et al)" => "プライマリアドレス(Kontact 他)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "ダウンロード", +"Edit" => "編集", +"New Address Book" => "新規電話帳", +"Save" => "保存", +"Cancel" => "取り消し" ); diff --git a/apps/contacts/l10n/ko.php b/apps/contacts/l10n/ko.php index fcdc1d08c6..f060b419e0 100644 --- a/apps/contacts/l10n/ko.php +++ b/apps/contacts/l10n/ko.php @@ -1,35 +1,64 @@ "주소록을 (비)활성화하는 데 실패했습니다.", -"There was an error adding the contact." => "연락처를 추가하는 중 오류가 발생하였습니다.", -"Cannot add empty property." => "빈 속성을 추가할 수 없습니다.", -"At least one of the address fields has to be filled out." => "최소한 하나의 주소록 항목을 입력해야 합니다.", -"Error adding contact property." => "연락처 속성을 추가할 수 없습니다.", +"id is not set." => "아이디가 설정되어 있지 않습니다. ", +"Cannot update addressbook with an empty name." => "주소록에 이름란이 비어있으면 업데이트를 할 수 없습니다. ", +"Error updating addressbook." => "주소록을 업데이트할 수 없습니다.", "No ID provided" => "제공되는 아이디 없음", "Error setting checksum." => "오류 검사합계 설정", "No categories selected for deletion." => "삭제 카테고리를 선택하지 않았습니다. ", "No address books found." => "주소록을 찾을 수 없습니다.", "No contacts found." => "연락처를 찾을 수 없습니다.", +"There was an error adding the contact." => "연락처를 추가하는 중 오류가 발생하였습니다.", +"element name is not set." => "element 이름이 설정되지 않았습니다.", +"Cannot add empty property." => "빈 속성을 추가할 수 없습니다.", +"At least one of the address fields has to be filled out." => "최소한 하나의 주소록 항목을 입력해야 합니다.", +"Trying to add duplicate property: " => "중복 속성 추가 시도: ", +"Information about vCard is incorrect. Please reload the page." => "vCard 정보가 올바르지 않습니다. 페이지를 새로 고치십시오.", +"Error deleting contact property." => "연락처 속성을 삭제할 수 없습니다.", "Missing ID" => "아이디 분실", -"Cannot add addressbook with an empty name." => "성명란이 비어 주소록에 추가 할 수 없습니다.", -"Error adding addressbook." => "주소록을 추가할 수 없습니다.", -"Error activating addressbook." => "주소록을 활성화할 수 없습니다.", +"Error parsing VCard for ID: \"" => "아이디에 대한 VCard 분석 오류", +"checksum is not set." => "체크섬이 설정되지 않았습니다.", +"Information about vCard is incorrect. Please reload the page: " => " vCard에 대한 정보가 잘못되었습니다. 페이지를 다시 로드하세요:", +"Error updating contact property." => "연락처 속성을 업데이트할 수 없습니다.", "No contact ID was submitted." => "접속 아이디가 기입되지 않았습니다.", "Error reading contact photo." => "사진 읽기 오류", "Error saving temporary file." => "임시 파일을 저장하는 동안 오류가 발생했습니다. ", "The loading photo is not valid." => "로딩 사진이 유효하지 않습니다. ", -"id is not set." => "아이디가 설정되어 있지 않습니다. ", -"Information about vCard is incorrect. Please reload the page." => "vCard 정보가 올바르지 않습니다. 페이지를 새로 고치십시오.", -"Error deleting contact property." => "연락처 속성을 삭제할 수 없습니다.", "Contact ID is missing." => "접속 아이디가 없습니다. ", -"Missing contact id." => "접속 아이디 분실", +"No photo path was submitted." => "사진 경로가 제출되지 않았습니다. ", "File doesn't exist:" => "파일이 존재하지 않습니다. ", "Error loading image." => "로딩 이미지 오류입니다.", -"Error updating contact property." => "연락처 속성을 업데이트할 수 없습니다.", -"Error updating addressbook." => "주소록을 업데이트할 수 없습니다.", +"Error getting contact object." => "연락처 개체를 가져오는 중 오류가 발생했습니다. ", +"Error getting PHOTO property." => "사진 속성을 가져오는 중 오류가 발생했습니다. ", +"Error saving contact." => "연락처 저장 중 오류가 발생했습니다.", +"Error resizing image" => "이미지 크기 조정 중 오류가 발생했습니다.", +"Error cropping image" => "이미지를 자르던 중 오류가 발생했습니다.", +"Error creating temporary image" => "임시 이미지를 생성 중 오류가 발생했습니다.", +"Error finding image: " => "이미지를 찾던 중 오류가 발생했습니다:", +"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 형식으로 업로드 된 이 파일은 MAX_FILE_SIZE를 초과하였다.", +"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" => "임시 폴더 분실", +"Couldn't save temporary image: " => "임시 이미지를 저장할 수 없습니다:", +"Couldn't load temporary image: " => "임시 이미지를 불러올 수 없습니다. ", +"No file was uploaded. Unknown error" => "파일이 업로드 되지 않았습니다. 알 수 없는 오류.", "Contacts" => "연락처", -"Addressbook not found." => "주소록을 찾을 수 없습니다.", +"Sorry, this functionality has not been implemented yet" => "죄송합니다. 이 기능은 아직 구현되지 않았습니다. ", +"Not implemented" => "구현되지 않음", +"Couldn't get a valid address." => "유효한 주소를 얻을 수 없습니다.", +"Error" => "오류", +"Couldn't serialize elements." => "요소를 직렬화 할 수 없습니다.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty'가 문서형식이 없이 불려왔습니다. bugs.owncloud.org에 보고해주세요. ", +"Edit name" => "이름 편집", +"No files selected for upload." => "업로드를 위한 파일이 선택되지 않았습니다. ", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "이 파일은 이 서버 파일 업로드 최대 용량을 초과 합니다. ", +"Select type" => "유형 선택", +"Result: " => "결과:", +" imported, " => "불러오기,", +" failed." => "실패.", "This is not your addressbook." => "내 주소록이 아닙니다.", "Contact could not be found." => "연락처를 찾을 수 없습니다.", "Address" => "주소", @@ -46,24 +75,23 @@ "Video" => "영상 번호", "Pager" => "호출기", "Internet" => "인터넷", +"Birthday" => "생일", "{name}'s Birthday" => "{이름}의 생일", "Contact" => "연락처", "Add Contact" => "연락처 추가", +"Import" => "입력", "Addressbooks" => "주소록", -"Configure Address Books" => "주소록 구성", -"New Address Book" => "새 주소록", -"Import from VCF" => "VCF에서 가져오기", -"CardDav Link" => "CardDav 링크", -"Download" => "다운로드", -"Edit" => "편집", -"Delete" => "삭제", -"Download contact" => "연락처 다운로드", -"Delete contact" => "연락처 삭제", +"Close" => "닫기", "Drop photo to upload" => "Drop photo to upload", +"Delete current photo" => "현재 사진 삭제", +"Edit current photo" => "현재 사진 편집", +"Upload new photo" => "새로운 사진 업로드", +"Select photo from ownCloud" => "ownCloud에서 사진 선택", +"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format custom, Short name, Full name, Reverse or Reverse with comma", "Edit name details" => "이름 세부사항을 편집합니다. ", +"Delete" => "삭제", "Nickname" => "별명", "Enter nickname" => "별명 입력", -"Birthday" => "생일", "dd-mm-yyyy" => "일-월-년", "Groups" => "그룹", "Separate groups with commas" => "쉼표로 그룹 구분", @@ -71,22 +99,61 @@ "Preferred" => "선호함", "Please specify a valid email address." => "올바른 이메일 주소를 입력하세요.", "Enter email address" => "이메일 주소 입력", +"Delete email address" => "이메일 주소 삭제", +"Enter phone number" => "전화번호 입력", +"Delete phone number" => "전화번호 삭제", +"View on map" => "지도에서 보기", +"Edit address details" => "상세 주소 수정", +"Add notes here." => "여기에 노트 추가.", +"Add field" => "파일 추가", "Phone" => "전화 번호", +"Note" => "노트", +"Download contact" => "연락처 다운로드", +"Delete contact" => "연락처 삭제", +"The temporary image has been removed from cache." => "임시 이미지가 캐시에서 제거 되었습니다. ", +"Edit address" => "주소 수정", "Type" => "종류", "PO Box" => "사서함", "Extended" => "확장", -"Street" => "거리", "City" => "도시", "Region" => "지역", "Zipcode" => "우편 번호", "Country" => "국가", -"Add" => "추가", "Addressbook" => "주소록", -"New Addressbook" => "새 주소록", -"Edit Addressbook" => "주소록 편집", -"Displayname" => "표시 이름", -"Active" => "활성", +"Hon. prefixes" => "Hon. prefixes", +"Miss" => "Miss", +"Ms" => "Ms", +"Mr" => "Mr", +"Sir" => "Sir", +"Mrs" => "Mrs", +"Dr" => "Dr", +"Given name" => "Given name", +"Additional names" => "추가 이름", +"Family name" => "성", +"Hon. suffixes" => "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.", +"Import a contacts file" => "연락처 파일 입력", +"Please choose the addressbook" => "주소록을 선택해 주세요.", +"create a new addressbook" => "새 주소록 만들기", +"Name of new addressbook" => "새 주소록 이름", +"Importing contacts" => "연락처 입력", +"You have no contacts in your addressbook." => "당신의 주소록에는 연락처가 없습니다. ", +"Add contact" => "연락처 추가", +"Configure addressbooks" => "주소록 구성", +"CardDAV syncing addresses" => "CardDAV 주소 동기화", +"more info" => "더 많은 정보", +"Primary address (Kontact et al)" => "기본 주소 (Kontact et al)", +"iOS/OS X" => "iOS/OS X", +"Download" => "다운로드", +"Edit" => "편집", +"New Address Book" => "새 주소록", "Save" => "저장", -"Submit" => "보내기", "Cancel" => "취소" ); diff --git a/apps/contacts/l10n/lb.php b/apps/contacts/l10n/lb.php index 361e1cb93e..90ff22f122 100644 --- a/apps/contacts/l10n/lb.php +++ b/apps/contacts/l10n/lb.php @@ -1,5 +1,31 @@ "Fehler beim (de)aktivéieren vum Adressbuch.", +"id is not set." => "ID ass net gesat.", +"Error updating addressbook." => "Fehler beim updaten vum Adressbuch.", +"No ID provided" => "Keng ID uginn", +"Error setting checksum." => "Fehler beim setzen vun der Checksum.", +"No categories selected for deletion." => "Keng Kategorien fir ze läschen ausgewielt.", +"No address books found." => "Keen Adressbuch fonnt.", +"No contacts found." => "Keng Kontakter fonnt.", +"There was an error adding the contact." => "Fehler beim bäisetzen vun engem Kontakt.", +"Cannot add empty property." => "Ka keng eidel Proprietéit bäisetzen.", +"Trying to add duplicate property: " => "Probéieren duebel Proprietéit bäi ze setzen:", "Information about vCard is incorrect. Please reload the page." => "Informatioun iwwert vCard ass net richteg. Lued d'Säit wegl nei.", +"Error deleting contact property." => "Fehler beim läschen vun der Kontakt Proprietéit.", +"Missing ID" => "ID fehlt", +"Error updating contact property." => "Fehler beim updaten vun der Kontakt Proprietéit.", +"No contact ID was submitted." => "Kontakt ID ass net mat geschéckt ginn.", +"Error reading contact photo." => "Fehler beim liesen vun der Kontakt Photo.", +"Error saving temporary file." => "Fehler beim späicheren vum temporäre Fichier.", +"The loading photo is not valid." => "Déi geluede Photo ass net gülteg.", +"Contact ID is missing." => "Kontakt ID fehlt.", +"File doesn't exist:" => "Fichier existéiert net:", +"Error loading image." => "Fehler beim lueden vum Bild.", +"No file was uploaded" => "Et ass kee Fichier ropgeluede ginn", +"Contacts" => "Kontakter", +"Error" => "Fehler", +"Result: " => "Resultat: ", +" imported, " => " importéiert, ", "This is not your addressbook." => "Dat do ass net däin Adressbuch.", "Contact could not be found." => "Konnt den Kontakt net fannen.", "Address" => "Adress", @@ -11,34 +37,53 @@ "Mobile" => "GSM", "Text" => "SMS", "Voice" => "Voice", +"Message" => "Message", "Fax" => "Fax", "Video" => "Video", "Pager" => "Pager", +"Internet" => "Internet", +"Birthday" => "Gebuertsdag", +"{name}'s Birthday" => "{name} säi Gebuertsdag", "Contact" => "Kontakt", "Add Contact" => "Kontakt bäisetzen", "Addressbooks" => "Adressbicher ", -"New Address Book" => "Neit Adressbuch", -"CardDav Link" => "CardDav Link", -"Download" => "Download", -"Edit" => "Editéieren", +"Close" => "Zoumaachen", "Delete" => "Läschen", -"Delete contact" => "Kontakt läschen", -"Birthday" => "Gebuertsdag", +"Nickname" => "Spëtznumm", +"Enter nickname" => "Gëff e Spëtznumm an", +"dd-mm-yyyy" => "dd-mm-yyyy", +"Groups" => "Gruppen", +"Edit groups" => "Gruppen editéieren", +"Enter phone number" => "Telefonsnummer aginn", +"Delete phone number" => "Telefonsnummer läschen", +"View on map" => "Op da Kaart uweisen", +"Edit address details" => "Adress Detailer editéieren", "Phone" => "Telefon", +"Note" => "Note", +"Download contact" => "Kontakt eroflueden", +"Delete contact" => "Kontakt läschen", "Type" => "Typ", "PO Box" => "Postleetzuel", "Extended" => "Erweidert", -"Street" => "Strooss", "City" => "Staat", "Region" => "Regioun", "Zipcode" => "Postleetzuel", "Country" => "Land", -"Add" => "Dobäisetzen", "Addressbook" => "Adressbuch", -"New Addressbook" => "Neit Adressbuch", -"Edit Addressbook" => "Adressbuch editéieren", -"Displayname" => "Ugewisene Numm", +"Mr" => "M", +"Sir" => "Sir", +"Mrs" => "Mme", +"Dr" => "Dr", +"Given name" => "Virnumm", +"Additional names" => "Weider Nimm", +"Family name" => "Famillje Numm", +"Ph.D." => "Ph.D.", +"Jr." => "Jr.", +"Sn." => "Sn.", +"iOS/OS X" => "iOS/OS X", +"Download" => "Download", +"Edit" => "Editéieren", +"New Address Book" => "Neit Adressbuch", "Save" => "Späicheren", -"Submit" => "Fortschécken", "Cancel" => "Ofbriechen" ); diff --git a/apps/contacts/l10n/lt_LT.php b/apps/contacts/l10n/lt_LT.php index 435927a247..eece7fa67c 100644 --- a/apps/contacts/l10n/lt_LT.php +++ b/apps/contacts/l10n/lt_LT.php @@ -1,9 +1,17 @@ "Klaida (de)aktyvuojant adresų knygą.", +"No contacts found." => "Kontaktų nerasta.", "There was an error adding the contact." => "Pridedant kontaktą įvyko klaida.", -"Error adding addressbook." => "Klaida pridedant adresų knygą.", -"Error activating addressbook." => "Klaida aktyvuojant adresų knygą.", "Information about vCard is incorrect. Please reload the page." => "Informacija apie vCard yra neteisinga. ", +"Error reading contact photo." => "Klaida skaitant kontakto nuotrauką.", +"The loading photo is not valid." => "Netinkama įkeliama nuotrauka.", +"File doesn't exist:" => "Failas neegzistuoja:", +"Error loading image." => "Klaida įkeliant nuotrauką.", +"There is no error, the file uploaded with success" => "Failas įkeltas sėkmingai, be klaidų", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Įkeliamo failo dydis viršija upload_max_filesize nustatymą php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Įkeliamo failo dydis viršija MAX_FILE_SIZE nustatymą, kuris naudojamas HTML formoje.", +"The uploaded file was only partially uploaded" => "Failas buvo įkeltas tik dalinai", +"No file was uploaded" => "Nebuvo įkeltas joks failas", "Contacts" => "Kontaktai", "This is not your addressbook." => "Tai ne jūsų adresų knygelė.", "Contact could not be found." => "Kontaktas nerastas", @@ -16,34 +24,30 @@ "Mobile" => "Mobilusis", "Text" => "Žinučių", "Voice" => "Balso", +"Message" => "Žinutė", "Fax" => "Faksas", "Video" => "Vaizdo", "Pager" => "Pranešimų gaviklis", +"Internet" => "Internetas", +"Birthday" => "Gimtadienis", "Contact" => "Kontaktas", "Add Contact" => "Pridėti kontaktą", "Addressbooks" => "Adresų knygos", -"New Address Book" => "Nauja adresų knyga", -"CardDav Link" => "CardDAV nuoroda", -"Download" => "Atsisiųsti", -"Edit" => "Keisti", "Delete" => "Trinti", +"Nickname" => "Slapyvardis", +"Phone" => "Telefonas", "Download contact" => "Atsisųsti kontaktą", "Delete contact" => "Ištrinti kontaktą", -"Birthday" => "Gimtadienis", -"Phone" => "Telefonas", "Type" => "Tipas", "PO Box" => "Pašto dėžutė", -"Street" => "Gatvė", "City" => "Miestas", "Region" => "Regionas", "Zipcode" => "Pašto indeksas", "Country" => "Šalis", -"Add" => "Pridėti", "Addressbook" => "Adresų knyga", -"New Addressbook" => "Nauja adresų knyga", -"Edit Addressbook" => "Redaguoti adresų knygą", -"Displayname" => "Rodomas vardas", -"Active" => "Aktyvus", +"Download" => "Atsisiųsti", +"Edit" => "Keisti", +"New Address Book" => "Nauja adresų knyga", "Save" => "Išsaugoti", "Cancel" => "Atšaukti" ); diff --git a/apps/contacts/l10n/mk.php b/apps/contacts/l10n/mk.php index 2b81a5d877..bdc0e6681f 100644 --- a/apps/contacts/l10n/mk.php +++ b/apps/contacts/l10n/mk.php @@ -1,39 +1,41 @@ "Грешка (де)активирање на адресарот.", -"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." => "Грешка при додавање на вредност за контактот.", +"id is not set." => "ид не е поставено.", +"Cannot update addressbook with an empty name." => "Неможе да се ажурира адресар со празно име.", +"Error updating addressbook." => "Грешка при ажурирање на адресарот.", "No ID provided" => "Нема доставено ИД", "Error setting checksum." => "Грешка во поставување сума за проверка.", "No categories selected for deletion." => "Нема избрано категории за бришење.", "No address books found." => "Не се најдени адресари.", "No contacts found." => "Не се најдени контакти.", -"Missing ID" => "Недостасува ИД", -"Error parsing VCard for ID: \"" => "Грешка при парсирање VCard за ИД: \"", -"Cannot add addressbook with an empty name." => "Неможе да се внесе адресар со празно име.", -"Error adding addressbook." => "Грешки при додавање на адресарот.", -"Error activating addressbook." => "Грешка при активирање на адресарот.", -"No contact ID was submitted." => "Не беше доставено ИД за контакт.", -"Error reading contact photo." => "Грешка во читање на контакт фотографија.", -"Error saving temporary file." => "Грешка во снимање на привремена датотека.", -"The loading photo is not valid." => "Фотографијата која се вчитува е невалидна.", -"id is not set." => "ид не е поставено.", +"There was an error adding the contact." => "Имаше грешка при додавање на контактот.", +"element name is not set." => "име за елементот не е поставена.", +"Cannot add empty property." => "Неможе да се додаде празна вредност.", +"At least one of the address fields has to be filled out." => "Барем една од полињата за адреса треба да биде пополнето.", +"Trying to add duplicate property: " => "Се обидовте да внесете дупликат вредност:", "Information about vCard is incorrect. Please reload the page." => "Информацијата за vCard не е точна. Ве молам превчитајте ја страницава.", "Error deleting contact property." => "Греш при бришење на вредноста за контакт.", -"Contact ID is missing." => "ИД за контакт недостасува.", -"Missing contact id." => "Недостасува ид за контакт.", -"No photo path was submitted." => "Не беше поднесена патека за фотографија.", -"File doesn't exist:" => "Не постои датотеката:", -"Error loading image." => "Грешка во вчитување на слика.", -"element name is not set." => "име за елементот не е поставена.", +"Missing ID" => "Недостасува ИД", +"Error parsing VCard for ID: \"" => "Грешка при парсирање VCard за ИД: \"", "checksum is not set." => "сумата за проверка не е поставена.", "Information about vCard is incorrect. Please reload the page: " => "Информацијата за vCard не е точна. Ве молам превчитајте ја страницава:", "Something went FUBAR. " => "Нешто се расипа.", "Error updating contact property." => "Грешка при ажурирање на вредноста за контакт.", -"Cannot update addressbook with an empty name." => "Неможе да се ажурира адресар со празно име.", -"Error updating addressbook." => "Грешка при ажурирање на адресарот.", +"No contact ID was submitted." => "Не беше доставено ИД за контакт.", +"Error reading contact photo." => "Грешка во читање на контакт фотографија.", +"Error saving temporary file." => "Грешка во снимање на привремена датотека.", +"The loading photo is not valid." => "Фотографијата која се вчитува е невалидна.", +"Contact ID is missing." => "ИД за контакт недостасува.", +"No photo path was submitted." => "Не беше поднесена патека за фотографија.", +"File doesn't exist:" => "Не постои датотеката:", +"Error loading image." => "Грешка во вчитување на слика.", +"Error getting contact object." => "Грешка при преземањето на контакт објектот,", +"Error getting PHOTO property." => "Грешка при утврдувањето на карактеристиките на фотографијата.", +"Error saving contact." => "Грешка при снимање на контактите.", +"Error resizing image" => "Грешка при скалирање на фотографијата", +"Error cropping image" => "Грешка при сечење на фотографијата", +"Error creating temporary image" => "Грешка при креирањето на привремената фотографија", +"Error finding image: " => "Грешка при наоѓањето на фотографијата:", "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", @@ -41,9 +43,24 @@ "The uploaded file was only partially uploaded" => "Датотеката беше само делумно подигната.", "No file was uploaded" => "Не беше подигната датотека.", "Missing a temporary folder" => "Недостасува привремена папка", +"Couldn't save temporary image: " => "Не можеше да се сними привремената фотографија:", +"Couldn't load temporary image: " => "Не можеше да се вчита привремената фотографија:", +"No file was uploaded. Unknown error" => "Ниту еден фајл не се вчита. Непозната грешка", "Contacts" => "Контакти", -"Drop a VCF file to import contacts." => "Довлечкај VCF датотека да се внесат контакти.", -"Addressbook not found." => "Адресарот не е најден.", +"Sorry, this functionality has not been implemented yet" => "Жалам, оваа функционалност уште не е имплементирана", +"Not implemented" => "Не е имплементирано", +"Couldn't get a valid address." => "Не можев да добијам исправна адреса.", +"Error" => "Грешка", +"This property has to be non-empty." => "Својството не смее да биде празно.", +"Couldn't serialize elements." => "Не може да се серијализираат елементите.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' повикан без тип на аргументот. Пријавете грешка/проблем на bugs.owncloud.org", +"Edit name" => "Уреди го името", +"No files selected for upload." => "Ниту еден фајл не е избран за вчитување.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Датотеката која се обидувате да ја префрлите ја надминува максималната големина дефинирана за пренос на овој сервер.", +"Select type" => "Одбери тип", +"Result: " => "Резултат: ", +" imported, " => "увезено,", +" failed." => "неуспешно.", "This is not your addressbook." => "Ова не е во Вашиот адресар.", "Contact could not be found." => "Контактот неможе да биде најден.", "Address" => "Адреса", @@ -60,25 +77,23 @@ "Video" => "Видео", "Pager" => "Пејџер", "Internet" => "Интернет", +"Birthday" => "Роденден", "{name}'s Birthday" => "Роденден на {name}", "Contact" => "Контакт", "Add Contact" => "Додади контакт", +"Import" => "Внеси", "Addressbooks" => "Адресари", -"Configure Address Books" => "Конфигурирај адресар", -"New Address Book" => "Нов адресар", -"Import from VCF" => "Внеси од VCF", -"CardDav Link" => "Врска за CardDav", -"Download" => "Преземи", -"Edit" => "Уреди", -"Delete" => "Избриши", -"Download contact" => "Преземи го контактот", -"Delete contact" => "Избриши го контактот", +"Close" => "Затвои", "Drop photo to upload" => "Довлечкај фотографија за да се подигне", +"Delete current photo" => "Избриши моментална фотографија", +"Edit current photo" => "Уреди моментална фотографија", +"Upload new photo" => "Подигни нова фотографија", +"Select photo from ownCloud" => "Изберете фотографија од ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Прилагоден формат, кратко име, цело име, обратно или обратно со запирка", "Edit name details" => "Уреди детали за име", +"Delete" => "Избриши", "Nickname" => "Прекар", "Enter nickname" => "Внеси прекар", -"Birthday" => "Роденден", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "Групи", "Separate groups with commas" => "Одвоете ги групите со запирка", @@ -94,24 +109,19 @@ "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", +"Download contact" => "Преземи го контактот", +"Delete contact" => "Избриши го контактот", +"The temporary image has been removed from cache." => "Привремената слика е отстранета од кешот.", "Edit address" => "Уреди адреса", "Type" => "Тип", "PO Box" => "Поштенски фах", "Extended" => "Дополнително", -"Street" => "Улица", "City" => "Град", "Region" => "Регион", "Zipcode" => "Поштенски код", "Country" => "Држава", -"Edit categories" => "Уреди категории", -"Add" => "Додади", "Addressbook" => "Адресар", "Hon. prefixes" => "Префикси за титула", "Miss" => "Г-ца", @@ -132,26 +142,21 @@ "Esq." => "Esq.", "Jr." => "Помлад.", "Sn." => "Постар.", -"New Addressbook" => "Нов адресар", -"Edit Addressbook" => "Уреди адресар", -"Displayname" => "Прикажано име", -"Active" => "Активно", -"Save" => "Сними", -"Submit" => "Прати", -"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" => "Изберете од хард диск", "You have no contacts in your addressbook." => "Немате контакти во Вашиот адресар.", "Add contact" => "Додади контакт", "Configure addressbooks" => "Уреди адресари", "CardDAV syncing addresses" => "Адреса за синхронизација со CardDAV", "more info" => "повеќе информации", "Primary address (Kontact et al)" => "Примарна адреса", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Преземи", +"Edit" => "Уреди", +"New Address Book" => "Нов адресар", +"Save" => "Сними", +"Cancel" => "Откажи" ); diff --git a/apps/contacts/l10n/ms_MY.php b/apps/contacts/l10n/ms_MY.php index 7d8a4c7d12..2fd386f5a8 100644 --- a/apps/contacts/l10n/ms_MY.php +++ b/apps/contacts/l10n/ms_MY.php @@ -1,16 +1,66 @@ "Ralat nyahaktif buku alamat.", +"id is not set." => "ID tidak ditetapkan.", +"Cannot update addressbook with an empty name." => "Tidak boleh kemaskini buku alamat dengan nama yang kosong.", +"Error updating addressbook." => "Masalah mengemaskini buku alamat.", +"No ID provided" => "tiada ID diberi", +"Error setting checksum." => "Ralat menetapkan checksum.", +"No categories selected for deletion." => "Tiada kategori dipilih untuk dibuang.", +"No address books found." => "Tiada buku alamat dijumpai.", +"No contacts found." => "Tiada kenalan dijumpai.", "There was an error adding the contact." => "Terdapat masalah menambah maklumat.", +"element name is not set." => "nama elemen tidak ditetapkan.", "Cannot add empty property." => "Tidak boleh menambah ruang kosong.", "At least one of the address fields has to be filled out." => "Sekurangnya satu ruangan alamat perlu diisikan.", -"Error adding contact property." => "Terdapat masalah menambah maklumat.", -"Error adding addressbook." => "Masalah menambah buku alamat.", -"Error activating addressbook." => "Masalah mengaktifkan buku alamat.", +"Trying to add duplicate property: " => "Cuba untuk letak nilai duplikasi:", "Information about vCard is incorrect. Please reload the page." => "Maklumat vCard tidak tepat. Sila reload semula halaman ini.", "Error deleting contact property." => "Masalah memadam maklumat.", +"Missing ID" => "ID Hilang", +"Error parsing VCard for ID: \"" => "Ralat VCard untuk ID: \"", +"checksum is not set." => "checksum tidak ditetapkan.", +"Information about vCard is incorrect. Please reload the page: " => "Maklumat tentang vCard tidak betul.", +"Something went FUBAR. " => "Sesuatu tidak betul.", "Error updating contact property." => "Masalah mengemaskini maklumat.", -"Error updating addressbook." => "Masalah mengemaskini buku alamat.", +"No contact ID was submitted." => "Tiada ID kenalan yang diberi.", +"Error reading contact photo." => "Ralat pada foto kenalan.", +"Error saving temporary file." => "Ralat menyimpan fail sementara", +"The loading photo is not valid." => "Foto muatan tidak sah.", +"Contact ID is missing." => "ID Kenalan telah hilang.", +"No photo path was submitted." => "Tiada direktori gambar yang diberi.", +"File doesn't exist:" => "Fail tidak wujud:", +"Error loading image." => "Ralat pada muatan imej.", +"Error getting contact object." => "Ralat mendapatkan objek pada kenalan.", +"Error getting PHOTO property." => "Ralat mendapatkan maklumat gambar.", +"Error saving contact." => "Ralat menyimpan kenalan.", +"Error resizing image" => "Ralat mengubah saiz imej", +"Error cropping image" => "Ralat memotong imej", +"Error creating temporary image" => "Ralat mencipta imej sementara", +"Error finding image: " => "Ralat mencari imej: ", +"Error uploading contacts to storage." => "Ralat memuatnaik senarai kenalan.", +"There is no error, the file uploaded with success" => "Tiada ralat berlaku, fail berjaya dimuatnaik", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Saiz fail yang dimuatnaik melebihi upload_max_filesize yang ditetapkan dalam php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Saiz fail yang dimuatnaik melebihi MAX_FILE_SIZE yang ditetapkan dalam borang HTML", +"The uploaded file was only partially uploaded" => "Fail yang dimuatnaik tidak lengkap", +"No file was uploaded" => "Tiada fail dimuatnaik", +"Missing a temporary folder" => "Direktori sementara hilang", +"Couldn't save temporary image: " => "Tidak boleh menyimpan imej sementara: ", +"Couldn't load temporary image: " => "Tidak boleh membuka imej sementara: ", +"No file was uploaded. Unknown error" => "Tiada fail dimuatnaik. Ralat tidak diketahui.", "Contacts" => "Hubungan-hubungan", +"Sorry, this functionality has not been implemented yet" => "Maaf, fungsi ini masih belum boleh diguna lagi", +"Not implemented" => "Tidak digunakan", +"Couldn't get a valid address." => "Tidak boleh mendapat alamat yang sah.", +"Error" => "Ralat", +"This property has to be non-empty." => "Nilai ini tidak boleh kosong.", +"Couldn't serialize elements." => "Tidak boleh menggabungkan elemen.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' dipanggil tanpa argumen taip. Sila maklumkan di bugs.owncloud.org", +"Edit name" => "Ubah nama", +"No files selected for upload." => "Tiada fail dipilih untuk muatnaik.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Fail yang ingin dimuatnaik melebihi saiz yang dibenarkan.", +"Select type" => "PIlih jenis", +"Result: " => "Hasil: ", +" imported, " => " import, ", +" failed." => " gagal.", "This is not your addressbook." => "Ini bukan buku alamat anda.", "Contact could not be found." => "Hubungan tidak dapat ditemui", "Address" => "Alamat", @@ -22,37 +72,91 @@ "Mobile" => "Mudah alih", "Text" => "Teks", "Voice" => "Suara", +"Message" => "Mesej", "Fax" => "Fax", "Video" => "Video", "Pager" => "Alat Kelui", +"Internet" => "Internet", +"Birthday" => "Hari lahir", +"{name}'s Birthday" => "Hari Lahir {name}", "Contact" => "Hubungan", "Add Contact" => "Tambah kenalan", +"Import" => "Import", "Addressbooks" => "Senarai Buku Alamat", -"New Address Book" => "Buku Alamat Baru", -"CardDav Link" => "Sambungan CardDav", -"Download" => "Muat naik", -"Edit" => "Sunting", +"Close" => "Tutup", +"Drop photo to upload" => "Letak foto disini untuk muatnaik", +"Delete current photo" => "Padam foto semasa", +"Edit current photo" => "Ubah foto semasa", +"Upload new photo" => "Muatnaik foto baru", +"Select photo from ownCloud" => "Pilih foto dari ownCloud", +"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format bebas, Nama pendek, Nama penuh, Unduran dengan koma", +"Edit name details" => "Ubah butiran nama", "Delete" => "Padam", +"Nickname" => "Nama Samaran", +"Enter nickname" => "Masukkan nama samaran", +"dd-mm-yyyy" => "dd-mm-yyyy", +"Groups" => "Kumpulan", +"Separate groups with commas" => "Asingkan kumpulan dengan koma", +"Edit groups" => "Ubah kumpulan", +"Preferred" => "Pilihan", +"Please specify a valid email address." => "Berikan alamat emel yang sah.", +"Enter email address" => "Masukkan alamat emel", +"Mail to address" => "Hantar ke alamat", +"Delete email address" => "Padam alamat emel", +"Enter phone number" => "Masukkan nombor telefon", +"Delete phone number" => "Padam nombor telefon", +"View on map" => "Lihat pada peta", +"Edit address details" => "Ubah butiran alamat", +"Add notes here." => "Letak nota disini.", +"Add field" => "Letak ruangan", +"Phone" => "Telefon", +"Note" => "Nota", "Download contact" => "Muat turun hubungan", "Delete contact" => "Padam hubungan", -"Birthday" => "Hari lahir", -"Preferred" => "Pilihan", -"Phone" => "Telefon", +"The temporary image has been removed from cache." => "Imej sementara telah dibuang dari cache.", +"Edit address" => "Ubah alamat", "Type" => "Jenis", "PO Box" => "Peti surat", "Extended" => "Sambungan", -"Street" => "Jalan", "City" => "bandar", "Region" => "Wilayah", "Zipcode" => "Poskod", "Country" => "Negara", -"Add" => "Tambah", "Addressbook" => "Buku alamat", -"New Addressbook" => "Buku Alamat Baru", -"Edit Addressbook" => "Kemaskini Buku Alamat", -"Displayname" => "Paparan nama", -"Active" => "Aktif", +"Hon. prefixes" => "Awalan nama", +"Miss" => "Cik", +"Ms" => "Cik", +"Mr" => "Encik", +"Sir" => "Tuan", +"Mrs" => "Puan", +"Dr" => "Dr", +"Given name" => "Nama diberi", +"Additional names" => "Nama tambahan", +"Family name" => "Nama keluarga", +"Hon. suffixes" => "Awalan nama", +"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.", +"Import a contacts file" => "Import fail kenalan", +"Please choose the addressbook" => "Sila pilih buku alamat", +"create a new addressbook" => "Cipta buku alamat baru", +"Name of new addressbook" => "Nama buku alamat", +"Importing contacts" => "Import senarai kenalan", +"You have no contacts in your addressbook." => "Anda tidak mempunyai sebarang kenalan didalam buku alamat.", +"Add contact" => "Letak kenalan", +"Configure addressbooks" => "Konfigurasi buku alamat", +"CardDAV syncing addresses" => "alamat selarian CardDAV", +"more info" => "maklumat lanjut", +"Primary address (Kontact et al)" => "Alamat utama", +"iOS/OS X" => "iOS/OS X", +"Download" => "Muat naik", +"Edit" => "Sunting", +"New Address Book" => "Buku Alamat Baru", "Save" => "Simpan", -"Submit" => "Hantar", "Cancel" => "Batal" ); diff --git a/apps/contacts/l10n/nb_NO.php b/apps/contacts/l10n/nb_NO.php index 3f7731bede..4066d670e4 100644 --- a/apps/contacts/l10n/nb_NO.php +++ b/apps/contacts/l10n/nb_NO.php @@ -1,39 +1,51 @@ "Et problem oppsto med å (de)aktivere adresseboken.", -"There was an error adding the contact." => "Et problem oppsto med å legge til kontakten.", -"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.", +"id is not set." => "id er ikke satt.", +"Cannot update addressbook with an empty name." => "Kan ikke oppdatere adressebøker uten navn.", +"Error updating addressbook." => "Et problem oppsto med å oppdatere adresseboken.", "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.", +"There was an error adding the contact." => "Et problem oppsto med å legge til kontakten.", +"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.", +"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 ID" => "Manglende ID", -"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.", +"Something went FUBAR. " => "Noe gikk fryktelig galt.", +"Error updating contact property." => "Et problem oppsto med å legge til kontaktfeltet.", "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.", +"Contact ID is missing." => "Kontakt-ID mangler.", "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.", -"Error updating addressbook." => "Et problem oppsto med å oppdatere adresseboken.", +"Error saving contact." => "Klarte ikke å lagre kontakt.", +"Error resizing image" => "Klarte ikke å endre størrelse på bildet", +"Error cropping image" => "Klarte ikke å beskjære bildet", +"Error creating temporary image" => "Klarte ikke å lage et midlertidig bilde", +"Error finding image: " => "Kunne ikke finne bilde:", +"Error uploading contacts to storage." => "Klarte ikke å laste opp kontakter til lagringsplassen", "There is no error, the file uploaded with success" => "Pust ut, ingen feil. Filen ble lastet opp problemfritt", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Filen du prøvde å laste opp var større enn grensen upload_max_filesize i php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Filen du prøvde å laste opp var større enn grensen satt i MAX_FILE_SIZE i HTML-skjemaet.", "The uploaded file was only partially uploaded" => "Filen du prøvde å laste opp ble kun delvis lastet opp", "No file was uploaded" => "Ingen filer ble lastet opp", "Missing a temporary folder" => "Mangler midlertidig mappe", +"Couldn't save temporary image: " => "Kunne ikke lagre midlertidig bilde:", +"Couldn't load temporary image: " => "Kunne ikke laste midlertidig bilde:", +"No file was uploaded. Unknown error" => "Ingen filer ble lastet opp. Ukjent feil.", "Contacts" => "Kontakter", -"Addressbook not found." => "Adresseboken ble ikke funnet.", +"Error" => "Feil", +"Edit name" => "Endre navn", +"No files selected for upload." => "Ingen filer valgt for opplasting.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Filen du prøver å laste opp er for stor.", +"Select type" => "Velg type", +"Result: " => "Resultat:", +" imported, " => "importert,", +" failed." => "feilet.", "This is not your addressbook." => "Dette er ikke dine adressebok.", "Contact could not be found." => "Kontakten ble ikke funnet.", "Address" => "Adresse", @@ -50,24 +62,22 @@ "Video" => "Video", "Pager" => "Pager", "Internet" => "Internett", -"{name}'s Birthday" => "bursdagen til {name}", +"Birthday" => "Bursdag", +"{name}'s Birthday" => "{name}s bursdag", "Contact" => "Kontakt", "Add Contact" => "Ny kontakt", +"Import" => "Importer", "Addressbooks" => "Adressebøker", -"Configure Address Books" => "Konfigurer adressebok", -"New Address Book" => "Ny adressebok", -"Import from VCF" => "Importer fra VDF", -"CardDav Link" => "CardDAV-lenke", -"Download" => "Hent ned", -"Edit" => "Rediger", -"Delete" => "Slett", -"Download contact" => "Hend ned kontakten", -"Delete contact" => "Slett kontakt", +"Close" => "Lukk", "Drop photo to upload" => "Dra bilder hit for å laste opp", +"Delete current photo" => "Fjern nåværende bilde", +"Edit current photo" => "Rediger nåværende bilde", +"Upload new photo" => "Last opp nytt bilde", +"Select photo from ownCloud" => "Velg bilde fra ownCloud", "Edit name details" => "Endre detaljer rundt navn", +"Delete" => "Slett", "Nickname" => "Kallenavn", "Enter nickname" => "Skriv inn kallenavn", -"Birthday" => "Bursdag", "dd-mm-yyyy" => "dd-mm-åååå", "Groups" => "Grupper", "Separate groups with commas" => "Skill gruppene med komma", @@ -83,25 +93,21 @@ "Edit address details" => "Endre detaljer rundt adresse", "Add notes here." => "Legg inn notater her.", "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", -"Select photo from ownCloud" => "Velg bilde fra ownCloud", +"Download contact" => "Hend ned kontakten", +"Delete contact" => "Slett kontakt", +"The temporary image has been removed from cache." => "Det midlertidige bildet er fjernet fra cache.", "Edit address" => "Endre adresse", "Type" => "Type", "PO Box" => "Postboks", "Extended" => "Utvidet", -"Street" => "Gate", "City" => "By", "Region" => "Området", "Zipcode" => "Postnummer", "Country" => "Land", -"Edit categories" => "Endre kategorier", -"Add" => "Ny", "Addressbook" => "Adressebok", +"Hon. prefixes" => "Ærestitler", "Miss" => "Frøken", "Mr" => "Herr", "Mrs" => "Fru", @@ -113,23 +119,20 @@ "Ph.D." => "Stipendiat", "Jr." => "Jr.", "Sn." => "Sr.", -"New Addressbook" => "Ny adressebok", -"Edit Addressbook" => "Endre adressebok", -"Displayname" => "Visningsnavn", -"Active" => "Aktiv", -"Save" => "Lagre", -"Submit" => "Lagre", -"Cancel" => "Avbryt", "Import a contacts file" => "Importer en fil med kontakter.", "Please choose the addressbook" => "Vennligst velg adressebok", "create a new addressbook" => "Lag ny adressebok", "Name of new addressbook" => "Navn på ny adressebok", -"Import" => "Importer", "Importing contacts" => "Importerer kontakter", "You have no contacts in your addressbook." => "Du har ingen kontakter i din adressebok", "Add contact" => "Ny kontakt", "Configure addressbooks" => "Konfigurer adressebøker", "CardDAV syncing addresses" => "Synkroniseringsadresse for CardDAV", "more info" => "mer info", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Hent ned", +"Edit" => "Rediger", +"New Address Book" => "Ny adressebok", +"Save" => "Lagre", +"Cancel" => "Avbryt" ); diff --git a/apps/contacts/l10n/nl.php b/apps/contacts/l10n/nl.php index fd7e50ba4d..4a621eec25 100644 --- a/apps/contacts/l10n/nl.php +++ b/apps/contacts/l10n/nl.php @@ -1,39 +1,34 @@ "Fout bij het (de)activeren van het adresboek.", -"There was an error adding the contact." => "Er was een fout bij het toevoegen van het contact.", -"Cannot add empty property." => "Kan geen lege eigenschap toevoegen.", -"At least one of the address fields has to be filled out." => "Minstens één van de adresvelden moet ingevuld worden.", -"Trying to add duplicate property: " => "Eigenschap bestaat al: ", -"Error adding contact property." => "Fout bij het toevoegen van de contacteigenschap.", +"id is not set." => "id is niet ingesteld.", +"Cannot update addressbook with an empty name." => "Kan adresboek zonder naam niet wijzigen", +"Error updating addressbook." => "Fout bij het updaten van het adresboek.", "No ID provided" => "Geen ID opgegeven", "Error setting checksum." => "Instellen controlegetal mislukt", "No categories selected for deletion." => "Geen categorieën geselecteerd om te verwijderen.", "No address books found." => "Geen adresboek gevonden", "No contacts found." => "Geen contracten gevonden", -"Missing ID" => "Ontbrekend ID", -"Error parsing VCard for ID: \"" => "Fout bij inlezen VCard voor ID: \"", -"Cannot add addressbook with an empty name." => "Kan geen adresboek toevoegen zonder naam.", -"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 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.", -"id is not set." => "id is niet ingesteld.", +"There was an error adding the contact." => "Er was een fout bij het toevoegen van het contact.", +"element name is not set." => "onderdeel naam is niet opgegeven.", +"Cannot add empty property." => "Kan geen lege eigenschap toevoegen.", +"At least one of the address fields has to be filled out." => "Minstens één van de adresvelden moet ingevuld worden.", +"Trying to add duplicate property: " => "Eigenschap bestaat al: ", "Information about vCard is incorrect. Please reload the page." => "Informatie over de vCard is onjuist. Herlaad de pagina.", "Error deleting contact property." => "Fout bij het verwijderen van de contacteigenschap.", -"Contact ID is missing." => "Contact ID ontbreekt.", -"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.", +"Missing ID" => "Ontbrekend ID", +"Error parsing VCard for ID: \"" => "Fout bij inlezen VCard voor ID: \"", "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: ", "Something went FUBAR. " => "Er ging iets totaal verkeerd. ", "Error updating contact property." => "Fout bij het updaten van de contacteigenschap.", -"Cannot update addressbook with an empty name." => "Kan adresboek zonder naam niet wijzigen", -"Error updating addressbook." => "Fout bij het updaten van het adresboek.", +"No contact ID was submitted." => "Geen contact ID opgestuurd.", +"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.", +"Contact ID is missing." => "Contact ID ontbreekt.", +"No photo path was submitted." => "Geen fotopad opgestuurd.", +"File doesn't exist:" => "Bestand bestaat niet:", +"Error loading image." => "Fout bij laden plaatje.", "Error uploading contacts to storage." => "Fout bij opslaan van contacten.", "There is no error, the file uploaded with success" => "De upload van het bestand is goedgegaan.", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Het bestand overschrijdt de upload_max_filesize instelling in php.ini", @@ -42,8 +37,6 @@ "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.", "Address" => "Adres", @@ -60,25 +53,22 @@ "Video" => "Video", "Pager" => "Pieper", "Internet" => "Internet", +"Birthday" => "Verjaardag", "{name}'s Birthday" => "{name}'s verjaardag", "Contact" => "Contact", "Add Contact" => "Contact toevoegen", +"Import" => "Importeer", "Addressbooks" => "Adresboeken", -"Configure Address Books" => "Instellen adresboeken", -"New Address Book" => "Nieuw Adresboek", -"Import from VCF" => "Importeer uit VCF", -"CardDav Link" => "CardDav Link", -"Download" => "Download", -"Edit" => "Bewerken", -"Delete" => "Verwijderen", -"Download contact" => "Download contact", -"Delete contact" => "Verwijder contact", "Drop photo to upload" => "Verwijder foto uit upload", +"Delete current photo" => "Verwijdere huidige foto", +"Edit current photo" => "Wijzig huidige foto", +"Upload new photo" => "Upload nieuwe foto", +"Select photo from ownCloud" => "Selecteer foto uit ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formateer aangepast, Korte naam, Volledige naam, Achteruit of Achteruit met komma", "Edit name details" => "Wijzig naam gegevens", +"Delete" => "Verwijderen", "Nickname" => "Roepnaam", "Enter nickname" => "Voer roepnaam in", -"Birthday" => "Verjaardag", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "Groepen", "Separate groups with commas" => "Gebruik komma bij meerder groepen", @@ -94,49 +84,38 @@ "Edit address details" => "Wijzig adres gegevens", "Add notes here." => "Voeg notitie toe", "Add field" => "Voeg veld toe", -"Profile picture" => "Profiel foto", "Phone" => "Telefoon", "Note" => "Notitie", -"Delete current photo" => "Verwijdere huidige foto", -"Edit current photo" => "Wijzig huidige foto", -"Upload new photo" => "Upload nieuwe foto", -"Select photo from ownCloud" => "Selecteer foto uit ownCloud", +"Download contact" => "Download contact", +"Delete contact" => "Verwijder contact", "Edit address" => "Wijzig adres", "Type" => "Type", "PO Box" => "Postbus", "Extended" => "Uitgebreide", -"Street" => "Straat", "City" => "Stad", "Region" => "Regio", "Zipcode" => "Postcode", "Country" => "Land", -"Edit categories" => "Wijzig categorieën", -"Add" => "Voeg toe", "Addressbook" => "Adresboek", "Hon. prefixes" => "Hon. prefixes", "Given name" => "Voornaam", "Additional names" => "Extra namen", "Family name" => "Achternaam", -"New Addressbook" => "Nieuw adresboek", -"Edit Addressbook" => "Wijzig adresboek", -"Displayname" => "Weergavenaam", -"Active" => "Actief", -"Save" => "Opslaan", -"Submit" => "Opslaan", -"Cancel" => "Anuleren", "Import a contacts file" => "Importeer een contacten bestand", "Please choose the addressbook" => "Kies een adresboek", "create a new addressbook" => "Maak een nieuw adresboek", "Name of new addressbook" => "Naam van nieuw adresboek", -"Import" => "Importeer", "Importing contacts" => "Importeren van contacten", -"Select address book to import to:" => "Selecteer adresboek voor import:", -"Select from HD" => "Selecteer van schijf", "You have no contacts in your addressbook." => "Je hebt geen contacten in je adresboek", "Add contact" => "Contactpersoon toevoegen", "Configure addressbooks" => "Bewerken adresboeken", "CardDAV syncing addresses" => "CardDAV synchroniseert de adressen", "more info" => "meer informatie", "Primary address (Kontact et al)" => "Standaardadres", -"iOS/OS X" => "IOS/OS X" +"iOS/OS X" => "IOS/OS X", +"Download" => "Download", +"Edit" => "Bewerken", +"New Address Book" => "Nieuw Adresboek", +"Save" => "Opslaan", +"Cancel" => "Anuleren" ); diff --git a/apps/contacts/l10n/nn_NO.php b/apps/contacts/l10n/nn_NO.php index 5b3fc5b1ab..0a4778283e 100644 --- a/apps/contacts/l10n/nn_NO.php +++ b/apps/contacts/l10n/nn_NO.php @@ -1,15 +1,12 @@ "Ein feil oppstod ved (de)aktivering av adressebok.", +"Error updating addressbook." => "Eit problem oppstod ved å oppdatere adresseboka.", "There was an error adding the contact." => "Det kom ei feilmelding då kontakta vart lagt til.", "Cannot add empty property." => "Kan ikkje leggja til tomt felt.", "At least one of the address fields has to be filled out." => "Minst eit av adressefelta må fyllast ut.", -"Error adding contact property." => "Eit problem oppstod ved å leggja til kontakteltet.", -"Error adding addressbook." => "Eit problem oppstod ved å leggja til adresseboka.", -"Error activating addressbook." => "Eit problem oppstod ved aktivering av adresseboka.", "Information about vCard is incorrect. Please reload the page." => "Informasjonen om vCard-et er feil, ver venleg og last sida på nytt.", "Error deleting contact property." => "Eit problem oppstod ved å slette kontaktfeltet.", "Error updating contact property." => "Eit problem oppstod ved å endre kontaktfeltet.", -"Error updating addressbook." => "Eit problem oppstod ved å oppdatere adresseboka.", "Contacts" => "Kotaktar", "This is not your addressbook." => "Dette er ikkje di adressebok.", "Contact could not be found." => "Fann ikkje kontakten.", @@ -25,34 +22,26 @@ "Fax" => "Faks", "Video" => "Video", "Pager" => "Personsøkjar", +"Birthday" => "Bursdag", "Contact" => "Kontakt", "Add Contact" => "Legg til kontakt", "Addressbooks" => "Adressebøker", -"New Address Book" => "Ny adressebok", -"CardDav Link" => "CardDav lenkje", -"Download" => "Last ned", -"Edit" => "Endra", "Delete" => "Slett", -"Download contact" => "Last ned kontakt", -"Delete contact" => "Slett kontakt", -"Birthday" => "Bursdag", "Preferred" => "Føretrekt", "Phone" => "Telefonnummer", +"Download contact" => "Last ned kontakt", +"Delete contact" => "Slett kontakt", "Type" => "Skriv", "PO Box" => "Postboks", "Extended" => "Utvida", -"Street" => "Gate", "City" => "Stad", "Region" => "Region/fylke", "Zipcode" => "Postnummer", "Country" => "Land", -"Add" => "Legg til", "Addressbook" => "Adressebok", -"New Addressbook" => "Ny adressebok", -"Edit Addressbook" => "Endre adressebok", -"Displayname" => "Visningsnamn", -"Active" => "Aktiv", +"Download" => "Last ned", +"Edit" => "Endra", +"New Address Book" => "Ny adressebok", "Save" => "Lagre", -"Submit" => "Send", "Cancel" => "Kanseller" ); diff --git a/apps/contacts/l10n/pl.php b/apps/contacts/l10n/pl.php index a99f190695..5b26324007 100644 --- a/apps/contacts/l10n/pl.php +++ b/apps/contacts/l10n/pl.php @@ -1,39 +1,43 @@ "Błąd (de)aktywowania książki adresowej.", -"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.", +"id is not set." => "id nie ustawione.", +"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.", "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.", +"There was an error adding the contact." => "Wystąpił błąd podczas dodawania kontaktu.", +"element name is not set." => "nazwa elementu nie jest ustawiona.", +"Could not parse contact: " => "Nie można parsować 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 przy dodawaniu właściwości kontaktu:", "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.", +"Missing ID" => "Brak ID", +"Error parsing VCard for ID: \"" => "Wystąpił błąd podczas przetwarzania VCard ID: \"", "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.", +"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.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Błąd pobrania kontaktu.", +"Error getting PHOTO property." => "Błąd uzyskiwania właściwości ZDJĘCIA.", +"Error saving contact." => "Błąd zapisu kontaktu.", +"Error resizing image" => "Błąd zmiany rozmiaru obrazu", +"Error cropping image" => "Błąd przycinania obrazu", +"Error creating temporary image" => "Błąd utworzenia obrazu tymczasowego", +"Error finding image: " => "Błąd znajdowanie obrazu: ", "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 ", @@ -41,9 +45,24 @@ "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", +"Couldn't save temporary image: " => "Nie można zapisać obrazu tymczasowego: ", +"Couldn't load temporary image: " => "Nie można wczytać obrazu tymczasowego: ", +"No file was uploaded. Unknown error" => "Plik nie został załadowany. Nieznany błąd", "Contacts" => "Kontakty", -"Drop a VCF file to import contacts." => "Upuść plik VCF do importu kontaktów.", -"Addressbook not found." => "Nie znaleziono książki adresowej", +"Sorry, this functionality has not been implemented yet" => "Niestety, ta funkcja nie została jeszcze zaimplementowana", +"Not implemented" => "Nie wdrożono", +"Couldn't get a valid address." => "Nie można pobrać prawidłowego adresu.", +"Error" => "Błąd", +"This property has to be non-empty." => "Ta właściwość nie może być pusta.", +"Couldn't serialize elements." => "Nie można serializować elementów.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty' wywołana bez argumentu typu. Proszę raportuj na bugs.owncloud.org", +"Edit name" => "Zmień nazwę", +"No files selected for upload." => "Żadne pliki nie zostały zaznaczone do wysłania.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Plik, który próbujesz wysłać przekracza maksymalny rozmiar pliku przekazywania na tym serwerze.", +"Select type" => "Wybierz typ", +"Result: " => "Wynik: ", +" imported, " => " importowane, ", +" failed." => " nie powiodło się.", "This is not your addressbook." => "To nie jest Twoja książka adresowa.", "Contact could not be found." => "Nie można odnaleźć kontaktu.", "Address" => "Adres", @@ -60,25 +79,46 @@ "Video" => "Połączenie wideo", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Urodziny", +"Business" => "Biznesowe", +"Clients" => "Klienci", +"Holidays" => "Święta", +"Ideas" => "Pomysły", +"Journey" => "Podróż", +"Meeting" => "Spotkanie", +"Other" => "Inne", +"Personal" => "Osobiste", +"Projects" => "Projekty", +"Questions" => "Pytania", "{name}'s Birthday" => "{name} Urodzony", "Contact" => "Kontakt", "Add Contact" => "Dodaj kontakt", +"Import" => "Import", +"Settings" => "Ustawienia", "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", +"Close" => "Zamknij", +"Keyboard shortcuts" => "Skróty klawiatury", +"Navigation" => "Nawigacja", +"Next contact in list" => "Następny kontakt na liście", +"Previous contact in list" => "Poprzedni kontakt na liście", +"Actions" => "Akcje", +"Refresh contacts list" => "Odśwież listę kontaktów", +"Add new contact" => "Dodaj nowy kontakt", +"Add new addressbook" => "Dodaj nowa książkę adresową", +"Delete current contact" => "Usuń obecny kontakt", "Drop photo to upload" => "Upuść fotografię aby załadować", +"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", "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", +"Delete" => "Usuwa książkę adresową", "Nickname" => "Nazwa", "Enter nickname" => "Wpisz nazwę", -"Birthday" => "Urodziny", +"Web site" => "Strona www", +"http://www.somesite.com" => "http://www.jakasstrona.pl", +"Go to web site" => "Idż do strony www", "dd-mm-yyyy" => "dd-mm-rrrr", "Groups" => "Grupy", "Separate groups with commas" => "Oddziel grupy przecinkami", @@ -94,24 +134,21 @@ "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", +"Download contact" => "Pobiera kontakt", +"Delete contact" => "Usuwa kontakt", +"The temporary image has been removed from cache." => "Tymczasowy obraz został usunięty z pamięci podręcznej.", "Edit address" => "Edytuj adres", "Type" => "Typ", "PO Box" => "Skrzynka pocztowa", +"Street and number" => "Ulica i numer", "Extended" => "Rozszerzony", -"Street" => "Ulica", "City" => "Miasto", "Region" => "Region", "Zipcode" => "Kod pocztowy", +"Postal code" => "Kod pocztowy", "Country" => "Kraj", -"Edit categories" => "Edytuj kategorie", -"Add" => "Dodaj", "Addressbook" => "Książka adresowa", "Hon. prefixes" => "Prefiksy Hon.", "Miss" => "Panna", @@ -132,26 +169,24 @@ "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", "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ą", +"Select Address Books" => "Wybierz książki adresowe", +"Enter name" => "Wpisz nazwę", +"Enter description" => "Wprowadź opis", "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" +"iOS/OS X" => "iOS/OS X", +"Download" => "Pobiera książkę adresową", +"Edit" => "Edytuje książkę adresową", +"New Address Book" => "Nowa książka adresowa", +"Save" => "Zapisz", +"Cancel" => "Anuluj" ); diff --git a/apps/contacts/l10n/pt_BR.php b/apps/contacts/l10n/pt_BR.php index e0da0a771a..74b8650c6c 100644 --- a/apps/contacts/l10n/pt_BR.php +++ b/apps/contacts/l10n/pt_BR.php @@ -1,39 +1,41 @@ "Erro ao (des)ativar agenda.", -"There was an error adding the contact." => "Ocorreu um erro ao adicionar o contato.", -"Cannot add empty property." => "Não é possível adicionar propriedade vazia.", -"At least one of the address fields has to be filled out." => "Pelo menos um dos campos de endereço tem que ser preenchido.", -"Trying to add duplicate property: " => "Tentando adiciona propriedade duplicada:", -"Error adding contact property." => "Erro ao adicionar propriedade de contato.", +"id is not set." => "ID não definido.", +"Cannot update addressbook with an empty name." => "Não é possível atualizar sua agenda com um nome em branco.", +"Error updating addressbook." => "Erro ao atualizar agenda.", "No ID provided" => "Nenhum ID fornecido", "Error setting checksum." => "Erro ajustando checksum.", "No categories selected for deletion." => "Nenhum categoria selecionada para remoção.", "No address books found." => "Nenhuma agenda de endereços encontrada.", "No contacts found." => "Nenhum contato encontrado.", -"Missing ID" => "Faltando ID", -"Error parsing VCard for ID: \"" => "Erro de identificação VCard para ID:", -"Cannot add addressbook with an empty name." => "Não é possivel adicionar uma agenda de endereços com o nome em branco.", -"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 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.", -"id is not set." => "ID não definido.", +"There was an error adding the contact." => "Ocorreu um erro ao adicionar o contato.", +"element name is not set." => "nome do elemento não definido.", +"Cannot add empty property." => "Não é possível adicionar propriedade vazia.", +"At least one of the address fields has to be filled out." => "Pelo menos um dos campos de endereço tem que ser preenchido.", +"Trying to add duplicate property: " => "Tentando adiciona propriedade duplicada:", "Information about vCard is incorrect. Please reload the page." => "Informações sobre vCard é incorreta. Por favor, recarregue a página.", "Error deleting contact property." => "Erro ao excluir propriedade de contato.", -"Contact ID is missing." => "ID do contato está faltando.", -"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.", +"Missing ID" => "Faltando ID", +"Error parsing VCard for ID: \"" => "Erro de identificação VCard para ID:", "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:", "Something went FUBAR. " => "Something went FUBAR. ", "Error updating contact property." => "Erro ao atualizar propriedades do contato.", -"Cannot update addressbook with an empty name." => "Não é possível atualizar sua agenda com um nome em branco.", -"Error updating addressbook." => "Erro ao atualizar agenda.", +"No contact ID was submitted." => "Nenhum ID do contato foi submetido.", +"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.", +"Contact ID is missing." => "ID do contato está faltando.", +"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.", +"Error getting contact object." => "Erro ao obter propriedade de contato.", +"Error getting PHOTO property." => "Erro ao obter propriedade da FOTO.", +"Error saving contact." => "Erro ao salvar contato.", +"Error resizing image" => "Erro ao modificar tamanho da imagem", +"Error cropping image" => "Erro ao recortar imagem", +"Error creating temporary image" => "Erro ao criar imagem temporária", +"Error finding image: " => "Erro ao localizar imagem:", "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", @@ -41,9 +43,24 @@ "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", +"Couldn't save temporary image: " => "Não foi possível salvar a imagem temporária:", +"Couldn't load temporary image: " => "Não foi possível carregar a imagem temporária:", +"No file was uploaded. Unknown error" => "Nenhum arquivo foi transferido. Erro desconhecido", "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.", +"Sorry, this functionality has not been implemented yet" => "Desculpe, esta funcionalidade não foi implementada ainda", +"Not implemented" => "não implementado", +"Couldn't get a valid address." => "Não foi possível obter um endereço válido.", +"Error" => "Erro", +"This property has to be non-empty." => "Esta propriedade não pode estar vazia.", +"Couldn't serialize elements." => "Não foi possível serializar elementos.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty\" chamado sem argumento de tipo. Por favor, informe a bugs.owncloud.org", +"Edit name" => "Editar nome", +"No files selected for upload." => "Nenhum arquivo selecionado para carregar.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "O arquivo que você está tentando carregar excede o tamanho máximo para este servidor.", +"Select type" => "Selecione o tipo", +"Result: " => "Resultado:", +" imported, " => "importado,", +" failed." => "falhou.", "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", @@ -60,25 +77,23 @@ "Video" => "Vídeo", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Aniversário", "{name}'s Birthday" => "Aniversário de {name}", "Contact" => "Contato", "Add Contact" => "Adicionar Contato", +"Import" => "Importar", "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", +"Close" => "Fechar.", "Drop photo to upload" => "Arraste a foto para ser carregada", +"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", "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", +"Delete" => "Excluir", "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", @@ -94,24 +109,19 @@ "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", +"Download contact" => "Baixar contato", +"Delete contact" => "Apagar contato", +"The temporary image has been removed from cache." => "A imagem temporária foi removida cache.", "Edit address" => "Editar endereço", "Type" => "Digite", "PO Box" => "Caixa Postal", "Extended" => "Estendido", -"Street" => "Rua", "City" => "Cidade", "Region" => "Região", "Zipcode" => "CEP", "Country" => "País", -"Edit categories" => "Editar categorias", -"Add" => "Adicionar", "Addressbook" => "Agenda de Endereço", "Hon. prefixes" => "Exmo. Prefixos ", "Miss" => "Senhorita", @@ -132,26 +142,21 @@ "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", "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" +"iOS/OS X" => "iOS/OS X", +"Download" => "Baixar", +"Edit" => "Editar", +"New Address Book" => "Nova agenda", +"Save" => "Salvar", +"Cancel" => "Cancelar" ); diff --git a/apps/contacts/l10n/pt_PT.php b/apps/contacts/l10n/pt_PT.php index 7a4861abf9..269e63583f 100644 --- a/apps/contacts/l10n/pt_PT.php +++ b/apps/contacts/l10n/pt_PT.php @@ -1,44 +1,66 @@ "Erro a (des)ativar o livro de endereços", -"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", +"id is not set." => "id não está definido", +"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", "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", +"There was an error adding the contact." => "Erro ao adicionar contato", +"element name is not set." => "o nome do elemento não está definido.", +"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: ", "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.", +"Missing ID" => "Falta ID", +"Error parsing VCard for ID: \"" => "Erro a analisar VCard para o ID: \"", "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", +"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.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Erro a obter o objecto dos contactos", +"Error getting PHOTO property." => "Erro a obter a propriedade Foto", +"Error saving contact." => "Erro a guardar o contacto.", +"Error resizing image" => "Erro a redimensionar a imagem", +"Error cropping image" => "Erro a recorar a imagem", +"Error creating temporary image" => "Erro a criar a imagem temporária", +"Error finding image: " => "Erro enquanto pesquisava pela imagem: ", "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", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O tamanho do ficheiro carregado excede o parametro upload_max_filesize em php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O tamanho do ficheiro carregado ultrapassa o valor MAX_FILE_SIZE definido no formulário HTML", +"The uploaded file was only partially uploaded" => "O ficheiro seleccionado foi apenas carregado parcialmente", "No file was uploaded" => "Nenhum ficheiro foi submetido", +"Missing a temporary folder" => "Está a faltar a pasta temporária", +"Couldn't save temporary image: " => "Não foi possível guardar a imagem temporária: ", +"Couldn't load temporary image: " => "Não é possível carregar a imagem temporária: ", +"No file was uploaded. Unknown error" => "Nenhum ficheiro foi carregado. Erro desconhecido", "Contacts" => "Contactos", -"Addressbook not found." => "Livro de endereços não encontrado.", +"Sorry, this functionality has not been implemented yet" => "Desculpe, esta funcionalidade ainda não está implementada", +"Not implemented" => "Não implementado", +"Couldn't get a valid address." => "Não foi possível obter um endereço válido.", +"Error" => "Erro", +"This property has to be non-empty." => "Esta propriedade não pode estar vazia.", +"Couldn't serialize elements." => "Não foi possivel serializar os elementos", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' chamada sem argumento definido. Por favor report o problema em bugs.owncloud.org", +"Edit name" => "Editar nome", +"No files selected for upload." => "Nenhum ficheiro seleccionado para enviar.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "O tamanho do ficheiro que está a tentar carregar ultrapassa o limite máximo definido para ficheiros no servidor.", +"Select type" => "Seleccionar tipo", +"Result: " => "Resultado: ", +" imported, " => " importado, ", +" failed." => " falhou.", "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", @@ -55,23 +77,23 @@ "Video" => "Vídeo", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Aniversário", "{name}'s Birthday" => "Aniversário de {name}", "Contact" => "Contacto", "Add Contact" => "Adicionar Contacto", +"Import" => "Importar", "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", +"Close" => "Fechar", +"Drop photo to upload" => "Arraste e solte fotos para carregar", +"Delete current photo" => "Eliminar a foto actual", +"Edit current photo" => "Editar a foto actual", +"Upload new photo" => "Carregar nova foto", +"Select photo from ownCloud" => "Selecionar uma foto da ownCloud", +"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formate personalizado, Nome curto, Nome completo, Reverso ou Reverso com virgula", "Edit name details" => "Editar detalhes do nome", +"Delete" => "Apagar", "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", @@ -87,43 +109,54 @@ "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", +"Download contact" => "Transferir contacto", +"Delete contact" => "Apagar contato", +"The temporary image has been removed from cache." => "A imagem temporária foi retirada do cache.", "Edit address" => "Editar endereço", "Type" => "Tipo", "PO Box" => "Apartado", "Extended" => "Extendido", -"Street" => "Rua", "City" => "Cidade", "Region" => "Região", "Zipcode" => "Código Postal", "Country" => "País", -"Edit categories" => "Editar categorias", -"Add" => "Adicionar", "Addressbook" => "Livro de endereços", +"Hon. prefixes" => "Prefixos honoráveis", +"Miss" => "Menina", "Ms" => "Sra", "Mr" => "Sr", "Sir" => "Sr", +"Mrs" => "Senhora", "Dr" => "Dr", +"Given name" => "Nome introduzido", "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", +"Hon. suffixes" => "Sufixos Honoráveis", +"J.D." => "D.J.", +"M.D." => "D.M.", +"D.O." => "Dr.", +"D.C." => "Dr.", +"Ph.D." => "Dr.", +"Esq." => "Esq.", +"Jr." => "Jr.", +"Sn." => "r.", "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", +"Name of new addressbook" => "Nome do novo livro de endereços", "Importing contacts" => "A importar os contactos", +"You have no contacts in your addressbook." => "Não tem contactos no seu livro de endereços.", "Add contact" => "Adicionar contacto", +"Configure addressbooks" => "Configurar livros de endereços", +"CardDAV syncing addresses" => "CardDAV a sincronizar endereços", "more info" => "mais informação", -"iOS/OS X" => "iOS/OS X" +"Primary address (Kontact et al)" => "Endereço primario (Kontact et al)", +"iOS/OS X" => "iOS/OS X", +"Download" => "Transferir", +"Edit" => "Editar", +"New Address Book" => "Novo livro de endereços", +"Save" => "Guardar", +"Cancel" => "Cancelar" ); diff --git a/apps/contacts/l10n/ro.php b/apps/contacts/l10n/ro.php index 0160975671..15a34db7d7 100644 --- a/apps/contacts/l10n/ro.php +++ b/apps/contacts/l10n/ro.php @@ -1,35 +1,30 @@ "(Dez)activarea agendei a întâmpinat o eroare.", -"There was an error adding the contact." => "O eroare a împiedicat adăugarea contactului.", -"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.", +"id is not set." => "ID-ul nu este stabilit", +"Error updating addressbook." => "Eroare la actualizarea agendei.", "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", +"There was an error adding the contact." => "O eroare a împiedicat adăugarea contactului.", +"element name is not set." => "numele elementului nu este stabilit.", +"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.", +"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.", "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.", +"checksum is not set." => "suma de control nu este stabilită.", +"Error updating contact property." => "Eroare la actualizarea proprietăților contactului.", "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", "This is not your addressbook." => "Nu se găsește în agendă.", "Contact could not be found." => "Contactul nu a putut fi găsit.", @@ -47,21 +42,15 @@ "Video" => "Video", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Zi de naștere", "{name}'s Birthday" => "Ziua de naștere a {name}", "Contact" => "Contact", "Add Contact" => "Adaugă contact", "Addressbooks" => "Agende", -"New Address Book" => "Agendă nouă", -"CardDav Link" => "Legătură CardDev", -"Download" => "Descarcă", -"Edit" => "Editează", -"Delete" => "Șterge", -"Download contact" => "Descarcă acest contact", -"Delete contact" => "Șterge contact", "Edit name details" => "Introdu detalii despre nume", +"Delete" => "Șterge", "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", @@ -72,21 +61,19 @@ "Mail to address" => "Trimite mesaj la e-mail", "Delete email address" => "Șterge e-mail", "Phone" => "Telefon", +"Download contact" => "Descarcă acest contact", +"Delete contact" => "Șterge contact", "Type" => "Tip", "PO Box" => "CP", "Extended" => "Extins", -"Street" => "Stradă", "City" => "Oraș", "Region" => "Regiune", "Zipcode" => "Cod poștal", "Country" => "Țară", -"Add" => "Adaugă", "Addressbook" => "Agendă", -"New Addressbook" => "Agendă nouă", -"Edit Addressbook" => "Modifică agenda", -"Displayname" => "Nume afișat", -"Active" => "Activ", +"Download" => "Descarcă", +"Edit" => "Editează", +"New Address Book" => "Agendă nouă", "Save" => "Salvează", -"Submit" => "Trimite", "Cancel" => "Anulează" ); diff --git a/apps/contacts/l10n/ru.php b/apps/contacts/l10n/ru.php index 01a0e2642b..308325cb53 100644 --- a/apps/contacts/l10n/ru.php +++ b/apps/contacts/l10n/ru.php @@ -1,34 +1,41 @@ "Ошибка (де)активации адресной книги.", -"There was an error adding the contact." => "Произошла ошибка при добавлении контакта.", -"Cannot add empty property." => "Невозможно добавить пустой параметр.", -"At least one of the address fields has to be filled out." => "Как минимум одно поле адреса должно быть заполнено.", -"Error adding contact property." => "Ошибка добавления информации к контакту.", +"id is not set." => "id не установлен.", +"Cannot update addressbook with an empty name." => "Нельзя обновить адресную книгу с пустым именем.", +"Error updating addressbook." => "Ошибка обновления адресной книги.", "No ID provided" => "ID не предоставлен", "Error setting checksum." => "Ошибка установки контрольной суммы.", "No categories selected for deletion." => "Категории для удаления не установлены.", "No address books found." => "Адресные книги не найдены.", "No contacts found." => "Контакты не найдены.", +"There was an error adding the contact." => "Произошла ошибка при добавлении контакта.", +"element name is not set." => "имя элемента не установлено.", +"Cannot add empty property." => "Невозможно добавить пустой параметр.", +"At least one of the address fields has to be filled out." => "Как минимум одно поле адреса должно быть заполнено.", +"Trying to add duplicate property: " => "При попытке добавить дубликат:", +"Information about vCard is incorrect. Please reload the page." => "Информация о vCard некорректна. Пожалуйста, обновите страницу.", +"Error deleting contact property." => "Ошибка удаления информации из контакта.", "Missing ID" => "Отсутствует ID", "Error parsing VCard for ID: \"" => "Ошибка обработки VCard для ID: \"", -"Cannot add addressbook with an empty name." => "Нельзя добавить адресную книгу без имени.", -"Error adding addressbook." => "Ошибка добавления адресной книги.", -"Error activating addressbook." => "Ошибка активации адресной книги.", +"checksum is not set." => "контрольная сумма не установлена.", +"Information about vCard is incorrect. Please reload the page: " => "Информация о vCard не корректна. Перезагрузите страницу: ", +"Something went FUBAR. " => "Что-то пошло FUBAR.", +"Error updating contact property." => "Ошибка обновления информации контакта.", +"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 контакта отсутствует.", +"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." => "Ошибка обновления информации контакта.", -"Cannot update addressbook with an empty name." => "Нельзя обновить адресную книгу с пустым именем.", -"Error updating addressbook." => "Ошибка обновления адресной книги.", +"Error getting contact object." => "Ошибка при получении контактов", +"Error getting PHOTO property." => "Ошибка при получении ФОТО.", +"Error saving contact." => "Ошибка при сохранении контактов.", +"Error resizing image" => "Ошибка изменения размера изображений", +"Error cropping image" => "Ошибка обрезки изображений", +"Error creating temporary image" => "Ошибка создания временных изображений", +"Error finding image: " => "Ошибка поиска изображений:", "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", @@ -36,8 +43,24 @@ "The uploaded file was only partially uploaded" => "Файл загружен частично", "No file was uploaded" => "Файл не был загружен", "Missing a temporary folder" => "Отсутствует временная папка", +"Couldn't save temporary image: " => "Не удалось сохранить временное изображение:", +"Couldn't load temporary image: " => "Не удалось загрузить временное изображение:", +"No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка", "Contacts" => "Контакты", -"Addressbook not found." => "Адресная книга не найдена.", +"Sorry, this functionality has not been implemented yet" => "К сожалению, эта функция не была реализована", +"Not implemented" => "Не реализовано", +"Couldn't get a valid address." => "Не удалось получить адрес.", +"Error" => "Ошибка", +"This property has to be non-empty." => "Это свойство должно быть не пустым.", +"Couldn't serialize elements." => "Не удалось сериализовать элементы.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' called without type argument. Please report at bugs.owncloud.org", +"Edit name" => "Изменить имя", +"No files selected for upload." => "Нет выбранных файлов для загрузки.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Файл, который вы пытаетесь загрузить превышать максимальный размер загружаемых файлов на этом сервере.", +"Select type" => "Выберите тип", +"Result: " => "Результат:", +" imported, " => "импортировано, ", +" failed." => "не удалось.", "This is not your addressbook." => "Это не ваша адресная книга.", "Contact could not be found." => "Контакт не найден.", "Address" => "Адрес", @@ -54,25 +77,26 @@ "Video" => "Видео", "Pager" => "Пейджер", "Internet" => "Интернет", +"Birthday" => "День рождения", "{name}'s Birthday" => "День рождения {name}", "Contact" => "Контакт", "Add Contact" => "Добавить Контакт", +"Import" => "Импорт", "Addressbooks" => "Адресные книги", -"Configure Address Books" => "Настроить Адресную книгу", -"New Address Book" => "Новая адресная книга", -"Import from VCF" => "Импортировать из VCF", -"CardDav Link" => "Ссылка CardDAV", -"Download" => "Скачать", -"Edit" => "Редактировать", -"Delete" => "Удалить", -"Download contact" => "Скачать контакт", -"Delete contact" => "Удалить контакт", +"Close" => "Закрыть", "Drop photo to upload" => "Перетяните фотографии для загрузки", +"Delete current photo" => "Удалить текущую фотографию", +"Edit current photo" => "Редактировать текущую фотографию", +"Upload new photo" => "Загрузить новую фотографию", +"Select photo from ownCloud" => "Выбрать фотографию из ownCloud", +"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Формат Краткое имя, Полное имя", +"Edit name details" => "Изменить детали имени", +"Delete" => "Удалить", "Nickname" => "Псевдоним", "Enter nickname" => "Введите псевдоним", -"Birthday" => "День рождения", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "Группы", +"Separate groups with commas" => "Разделить группы запятыми", "Edit groups" => "Редактировать группы", "Preferred" => "Предпочитаемый", "Please specify a valid email address." => "Укажите действительный адрес электронной почты.", @@ -85,43 +109,54 @@ "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", +"Download contact" => "Скачать контакт", +"Delete contact" => "Удалить контакт", +"The temporary image has been removed from cache." => "Временный образ был удален из кэша.", "Edit address" => "Редактировать адрес", "Type" => "Тип", "PO Box" => "АО", "Extended" => "Расширенный", -"Street" => "Улица", "City" => "Город", "Region" => "Область", "Zipcode" => "Почтовый индекс", "Country" => "Страна", -"Edit categories" => "Редактировать категрии", -"Add" => "Добавить", "Addressbook" => "Адресная книга", +"Hon. prefixes" => "Уважительные префиксы", +"Miss" => "Мисс", +"Ms" => "Г-жа", +"Mr" => "Г-н", +"Sir" => "Сэр", +"Mrs" => "Г-жа", +"Dr" => "Доктор", "Given name" => "Имя", "Additional names" => "Дополнительные имена (отчество)", "Family name" => "Фамилия", -"New Addressbook" => "Новая адресная книга", -"Edit Addressbook" => "Редактировать адресную книгу", -"Displayname" => "Отображаемое имя", -"Active" => "Активно", -"Save" => "Сохранить", -"Submit" => "Отправить", -"Cancel" => "Отменить", +"Hon. suffixes" => "Hon. suffixes", +"J.D." => "Уважительные суффиксы", +"M.D." => "M.D.", +"D.O." => "D.O.", +"D.C." => "D.C.", +"Ph.D." => "Ph.D.", +"Esq." => "Esq.", +"Jr." => "Jr.", +"Sn." => "Sn.", "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." => "В адресной книге есть контакты.", +"You have no contacts in your addressbook." => "В адресной книге нет контактов.", "Add contact" => "Добавить контакт", "Configure addressbooks" => "Настроить адресную книгу", -"more info" => "дополнительная информация" +"CardDAV syncing addresses" => "CardDAV синхронизации адресов", +"more info" => "дополнительная информация", +"Primary address (Kontact et al)" => "Первичный адрес (Kontact и др.)", +"iOS/OS X" => "iOS/OS X", +"Download" => "Скачать", +"Edit" => "Редактировать", +"New Address Book" => "Новая адресная книга", +"Save" => "Сохранить", +"Cancel" => "Отменить" ); diff --git a/apps/contacts/l10n/sk_SK.php b/apps/contacts/l10n/sk_SK.php index 6e5ebe3bd3..2afbd62091 100644 --- a/apps/contacts/l10n/sk_SK.php +++ b/apps/contacts/l10n/sk_SK.php @@ -1,39 +1,41 @@ "Chyba (de)aktivácie adresára.", -"There was an error adding the contact." => "Vyskytla sa chyba pri pridávaní kontaktu.", -"Cannot add empty property." => "Nemôžem pridať prázdny údaj.", -"At least one of the address fields has to be filled out." => "Musí byť uvedený aspoň jeden adresný údaj.", -"Trying to add duplicate property: " => "Pokúšate sa pridať rovnaký atribút:", -"Error adding contact property." => "Chyba pridania údaju kontaktu", +"id is not set." => "ID nie je nastavené.", +"Cannot update addressbook with an empty name." => "Nedá sa upraviť adresár s prázdnym menom.", +"Error updating addressbook." => "Chyba aktualizácie adresára.", "No ID provided" => "ID nezadané", "Error setting checksum." => "Chyba pri nastavovaní kontrolného súčtu.", "No categories selected for deletion." => "Žiadne kategórie neboli vybraté na odstránenie.", "No address books found." => "Žiadny adresár nenájdený.", "No contacts found." => "Žiadne kontakty nenájdené.", -"Missing ID" => "Chýba ID", -"Error parsing VCard for ID: \"" => "Chyba pri vyňatí ID z VCard:", -"Cannot add addressbook with an empty name." => "Nedá sa pridať adresár s prázdnym menom.", -"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 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á.", -"id is not set." => "ID nie je nastavené.", +"There was an error adding the contact." => "Vyskytla sa chyba pri pridávaní kontaktu.", +"element name is not set." => "meno elementu nie je nastavené.", +"Cannot add empty property." => "Nemôžem pridať prázdny údaj.", +"At least one of the address fields has to be filled out." => "Musí byť uvedený aspoň jeden adresný údaj.", +"Trying to add duplicate property: " => "Pokúšate sa pridať rovnaký atribút:", "Information about vCard is incorrect. Please reload the page." => "Informácie o vCard sú neplatné. Prosím obnovte stránku.", "Error deleting contact property." => "Chyba odstránenia údaju kontaktu.", -"Contact ID is missing." => "Chýba ID kontaktu.", -"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é.", +"Missing ID" => "Chýba ID", +"Error parsing VCard for ID: \"" => "Chyba pri vyňatí ID z VCard:", "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.", "Something went FUBAR. " => "Niečo sa pokazilo.", "Error updating contact property." => "Chyba aktualizovania údaju kontaktu.", -"Cannot update addressbook with an empty name." => "Nedá sa upraviť adresár s prázdnym menom.", -"Error updating addressbook." => "Chyba aktualizácie adresára.", +"No contact ID was submitted." => "Nebolo nastavené ID kontaktu.", +"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á.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Chyba počas prevzatia objektu kontakt.", +"Error getting PHOTO property." => "Chyba počas získavania fotky.", +"Error saving contact." => "Chyba počas ukladania kontaktu.", +"Error resizing image" => "Chyba počas zmeny obrázku.", +"Error cropping image" => "Chyba počas orezania obrázku.", +"Error creating temporary image" => "Chyba počas vytvárania dočasného obrázku.", +"Error finding image: " => "Chyba vyhľadania obrázku: ", "Error uploading contacts to storage." => "Chyba pri ukladaní kontaktov na úložisko.", "There is no error, the file uploaded with success" => "Nevyskytla sa žiadna chyba, súbor úspešne uložené.", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Ukladaný súbor prekračuje nastavenie upload_max_filesize v php.ini", @@ -41,9 +43,24 @@ "The uploaded file was only partially uploaded" => "Ukladaný súbor sa nahral len čiastočne", "No file was uploaded" => "Žiadny súbor nebol uložený", "Missing a temporary folder" => "Chýba dočasný priečinok", +"Couldn't save temporary image: " => "Nemôžem uložiť dočasný obrázok: ", +"Couldn't load temporary image: " => "Nemôžem načítať dočasný obrázok: ", +"No file was uploaded. Unknown error" => "Žiaden súbor nebol odoslaný. Neznáma chyba", "Contacts" => "Kontakty", -"Drop a VCF file to import contacts." => "Pretiahnite VCF súbor pre import kontaktov.", -"Addressbook not found." => "Adresár sa nenašiel.", +"Sorry, this functionality has not been implemented yet" => "Bohužiaľ, táto funkcia ešte nebola implementovaná", +"Not implemented" => "Neimplementované", +"Couldn't get a valid address." => "Nemôžem získať platnú adresu.", +"Error" => "Chyba", +"This property has to be non-empty." => "Tento parameter nemôže byť prázdny.", +"Couldn't serialize elements." => "Nemôžem previesť prvky.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' zavolané bez argument. Prosím oznámte chybu na bugs.owncloud.org", +"Edit name" => "Upraviť meno", +"No files selected for upload." => "Žiadne súbory neboli vybrané k nahratiu", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Súbor, ktorý sa pokúšate nahrať, presahuje maximálnu povolenú veľkosť.", +"Select type" => "Vybrať typ", +"Result: " => "Výsledok: ", +" imported, " => " importovaných, ", +" failed." => " zlyhaných.", "This is not your addressbook." => "Toto nie je váš adresár.", "Contact could not be found." => "Kontakt nebol nájdený.", "Address" => "Adresa", @@ -60,25 +77,39 @@ "Video" => "Video", "Pager" => "Pager", "Internet" => "Internet", +"Birthday" => "Narodeniny", +"Business" => "Biznis", +"Clients" => "Klienti", +"Holidays" => "Prázdniny", +"Meeting" => "Stretnutie", +"Other" => "Iné", +"Projects" => "Projekty", +"Questions" => "Otázky", "{name}'s Birthday" => "Narodeniny {name}", "Contact" => "Kontakt", "Add Contact" => "Pridať Kontakt.", +"Import" => "Importovať", "Addressbooks" => "Adresáre", -"Configure Address Books" => "Nastaviť adresáre", -"New Address Book" => "Nový adresár", -"Import from VCF" => "Importovať z VCF", -"CardDav Link" => "CardDav odkaz", -"Download" => "Stiahnuť", -"Edit" => "Upraviť", -"Delete" => "Odstrániť", -"Download contact" => "Stiahnuť kontakt", -"Delete contact" => "Odstrániť kontakt", +"Close" => "Zatvoriť", +"Keyboard shortcuts" => "Klávesové skratky", +"Navigation" => "Navigácia", +"Next contact in list" => "Ďalší kontakt v zozname", +"Previous contact in list" => "Predchádzajúci kontakt v zozname", +"Actions" => "Akcie", +"Refresh contacts list" => "Obnov zoznam kontaktov", +"Add new contact" => "Pridaj nový kontakt", +"Add new addressbook" => "Pridaj nový adresár", +"Delete current contact" => "Vymaž súčasný kontakt", "Drop photo to upload" => "Pretiahnite sem fotku pre nahratie", +"Delete current photo" => "Odstrániť súčasnú fotku", +"Edit current photo" => "Upraviť súčasnú fotku", +"Upload new photo" => "Nahrať novú fotku", +"Select photo from ownCloud" => "Vybrať fotku z ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formát vlastný, krátke meno, celé meno, obrátené alebo obrátené s čiarkami", "Edit name details" => "Upraviť podrobnosti mena", +"Delete" => "Odstrániť", "Nickname" => "Prezývka", "Enter nickname" => "Zadajte prezývku", -"Birthday" => "Narodeniny", "dd-mm-yyyy" => "dd. mm. yyyy", "Groups" => "Skupiny", "Separate groups with commas" => "Oddelte skupiny čiarkami", @@ -94,24 +125,22 @@ "Edit address details" => "Upraviť podrobnosti adresy", "Add notes here." => "Tu môžete pridať poznámky.", "Add field" => "Pridať pole", -"Profile picture" => "Profilová fotka", "Phone" => "Telefón", "Note" => "Poznámka", -"Delete current photo" => "Odstrániť súčasnú fotku", -"Edit current photo" => "Upraviť súčasnú fotku", -"Upload new photo" => "Nahrať novú fotku", -"Select photo from ownCloud" => "Vybrať fotku z ownCloud", +"Download contact" => "Stiahnuť kontakt", +"Delete contact" => "Odstrániť kontakt", +"The temporary image has been removed from cache." => "Dočasný obrázok bol odstránený z cache.", "Edit address" => "Upraviť adresu", "Type" => "Typ", "PO Box" => "PO Box", +"Street address" => "Ulica", +"Street and number" => "Ulica a číslo", "Extended" => "Rozšírené", -"Street" => "Ulica", "City" => "Mesto", "Region" => "Región", "Zipcode" => "PSČ", +"Postal code" => "PSČ", "Country" => "Krajina", -"Edit categories" => "Upraviť kategórie", -"Add" => "Pridať", "Addressbook" => "Adresár", "Hon. prefixes" => "Tituly pred", "Miss" => "Slečna", @@ -126,30 +155,28 @@ "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.", "Sn." => "st.", -"New Addressbook" => "Nový Adresár", -"Edit Addressbook" => "Upraviť Adresár", -"Displayname" => "Zobrazené meno", -"Active" => "Aktívny", -"Save" => "Uložiť", -"Submit" => "Odoslať", -"Cancel" => "Zrušiť", "Import a contacts file" => "Importovať súbor kontaktu", "Please choose the addressbook" => "Prosím zvolte adresár", "create a new addressbook" => "vytvoriť nový adresár", "Name of new addressbook" => "Meno nového adresára", -"Import" => "Importovať", "Importing contacts" => "Importovanie kontaktov", -"Select address book to import to:" => "Vyberte adresár, do ktorého chcete importovať:", -"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", "Configure addressbooks" => "Nastaviť adresáre", +"Enter name" => "Zadaj meno", "CardDAV syncing addresses" => "Adresy pre synchronizáciu s CardDAV", "more info" => "viac informácií", "Primary address (Kontact et al)" => "Predvolená adresa (Kontakt etc)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Stiahnuť", +"Edit" => "Upraviť", +"New Address Book" => "Nový adresár", +"Save" => "Uložiť", +"Cancel" => "Zrušiť" ); diff --git a/apps/contacts/l10n/sl.php b/apps/contacts/l10n/sl.php index bfba23fabc..1dc0cef74b 100644 --- a/apps/contacts/l10n/sl.php +++ b/apps/contacts/l10n/sl.php @@ -1,39 +1,41 @@ "Napaka med (de)aktivacijo imenika.", -"There was an error adding the contact." => "Med dodajanjem stika je prišlo do napake", -"Cannot add empty property." => "Ne morem dodati prazne lastnosti.", -"At least one of the address fields has to be filled out." => "Vsaj eno izmed polj je še potrebno izpolniti.", -"Trying to add duplicate property: " => "Poskušam dodati podvojeno lastnost:", -"Error adding contact property." => "Napaka pri dodajanju informacije o stiku.", +"id is not set." => "id ni nastavljen.", +"Cannot update addressbook with an empty name." => "Ne morem posodobiti imenika s praznim imenom.", +"Error updating addressbook." => "Napaka pri posodabljanju imenika.", "No ID provided" => "ID ni bil podan", "Error setting checksum." => "Napaka pri nastavljanju nadzorne vsote.", "No categories selected for deletion." => "Nobena kategorija ni bila izbrana za izbris.", "No address books found." => "Ni bilo najdenih imenikov.", "No contacts found." => "Ni bilo najdenih stikov.", -"Missing ID" => "Manjkajoč ID", -"Error parsing VCard for ID: \"" => "Napaka pri razčlenjevanju VCard za ID: \"", -"Cannot add addressbook with an empty name." => "Ne morem dodati imenika s praznim imenom.", -"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 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.", -"id is not set." => "id ni nastavljen.", +"There was an error adding the contact." => "Med dodajanjem stika je prišlo do napake", +"element name is not set." => "ime elementa ni nastavljeno.", +"Cannot add empty property." => "Ne morem dodati prazne lastnosti.", +"At least one of the address fields has to be filled out." => "Vsaj eno izmed polj je še potrebno izpolniti.", +"Trying to add duplicate property: " => "Poskušam dodati podvojeno lastnost:", "Information about vCard is incorrect. Please reload the page." => "Informacije o vCard niso pravilne. Prosimo, če ponovno naložite stran.", "Error deleting contact property." => "Napaka pri brisanju lastnosti stika.", -"Contact ID is missing." => "Manjka ID stika.", -"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.", +"Missing ID" => "Manjkajoč ID", +"Error parsing VCard for ID: \"" => "Napaka pri razčlenjevanju VCard za ID: \"", "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: ", "Something went FUBAR. " => "Nekaj je šlo v franže. ", "Error updating contact property." => "Napaka pri posodabljanju lastnosti stika.", -"Cannot update addressbook with an empty name." => "Ne morem posodobiti imenika s praznim imenom.", -"Error updating addressbook." => "Napaka pri posodabljanju imenika.", +"No contact ID was submitted." => "ID stika ni bil poslan.", +"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.", +"Contact ID is missing." => "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.", +"Error getting contact object." => "Napaka pri pridobivanju kontakta predmeta.", +"Error getting PHOTO property." => "Napaka pri pridobivanju lastnosti fotografije.", +"Error saving contact." => "Napaka pri shranjevanju stika.", +"Error resizing image" => "Napaka pri spreminjanju velikosti slike", +"Error cropping image" => "Napaka pri obrezovanju slike", +"Error creating temporary image" => "Napaka pri ustvarjanju začasne slike", +"Error finding image: " => "Napaka pri iskanju datoteke: ", "Error uploading contacts to storage." => "Napaka pri nalaganju stikov v hrambo.", "There is no error, the file uploaded with success" => "Datoteka je bila uspešno naložena.", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Naložena datoteka presega velikost, ki jo določa parameter upload_max_filesize v datoteki php.ini", @@ -41,9 +43,24 @@ "The uploaded file was only partially uploaded" => "Datoteka je bila le delno naložena", "No file was uploaded" => "Nobena datoteka ni bila naložena", "Missing a temporary folder" => "Manjka začasna mapa", +"Couldn't save temporary image: " => "Začasne slike ni bilo mogoče shraniti: ", +"Couldn't load temporary image: " => "Začasne slike ni bilo mogoče naložiti: ", +"No file was uploaded. Unknown error" => "Nobena datoteka ni bila naložena. Neznana napaka", "Contacts" => "Stiki", -"Drop a VCF file to import contacts." => "Za uvoz stikov spustite VCF datoteko tukaj.", -"Addressbook not found." => "Imenik ni bil najden.", +"Sorry, this functionality has not been implemented yet" => "Žal ta funkcionalnost še ni podprta", +"Not implemented" => "Ni podprto", +"Couldn't get a valid address." => "Ne morem dobiti veljavnega naslova.", +"Error" => "Napaka", +"This property has to be non-empty." => "Ta lastnost ne sme biti prazna", +"Couldn't serialize elements." => "Predmetov ni bilo mogoče dati v zaporedje.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty\" je bila klicana brez vrste argumenta. Prosimo, če oddate poročilo o napaki na bugs.owncloud.org", +"Edit name" => "Uredi ime", +"No files selected for upload." => "Nobena datoteka ni bila izbrana za nalaganje.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteka, ki jo poskušate naložiti, presega največjo dovoljeno velikost za nalaganje na tem strežniku.", +"Select type" => "Izberite vrsto", +"Result: " => "Rezultati: ", +" imported, " => " uvoženih, ", +" failed." => " je spodletelo.", "This is not your addressbook." => "To ni vaš imenik.", "Contact could not be found." => "Stika ni bilo mogoče najti.", "Address" => "Naslov", @@ -60,25 +77,23 @@ "Video" => "Video", "Pager" => "Pozivnik", "Internet" => "Internet", +"Birthday" => "Rojstni dan", "{name}'s Birthday" => "{name} - rojstni dan", "Contact" => "Stik", "Add Contact" => "Dodaj stik", +"Import" => "Uvozi", "Addressbooks" => "Imeniki", -"Configure Address Books" => "Nastavi imenike", -"New Address Book" => "Nov imenik", -"Import from VCF" => "Uvozi iz VCF", -"CardDav Link" => "CardDav povezava", -"Download" => "Prenesi", -"Edit" => "Uredi", -"Delete" => "Izbriši", -"Download contact" => "Prenesi stik", -"Delete contact" => "Izbriši stik", +"Close" => "Zapri", "Drop photo to upload" => "Spustite sliko tukaj, da bi jo naložili", +"Delete current photo" => "Izbriši trenutno sliko", +"Edit current photo" => "Uredi trenutno sliko", +"Upload new photo" => "Naloži novo sliko", +"Select photo from ownCloud" => "Izberi sliko iz ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format po meri, Kratko ime, Polno ime, Obratno ali Obratno z vejico", "Edit name details" => "Uredite podrobnosti imena", +"Delete" => "Izbriši", "Nickname" => "Vzdevek", "Enter nickname" => "Vnesite vzdevek", -"Birthday" => "Rojstni dan", "dd-mm-yyyy" => "dd. mm. yyyy", "Groups" => "Skupine", "Separate groups with commas" => "Skupine ločite z vejicami", @@ -94,24 +109,19 @@ "Edit address details" => "Uredi podrobnosti", "Add notes here." => "Opombe dodajte tukaj.", "Add field" => "Dodaj polje", -"Profile picture" => "Slika profila", "Phone" => "Telefon", "Note" => "Opomba", -"Delete current photo" => "Izbriši trenutno sliko", -"Edit current photo" => "Uredi trenutno sliko", -"Upload new photo" => "Naloži novo sliko", -"Select photo from ownCloud" => "Izberi sliko iz ownCloud", +"Download contact" => "Prenesi stik", +"Delete contact" => "Izbriši stik", +"The temporary image has been removed from cache." => "Začasna slika je bila odstranjena iz predpomnilnika.", "Edit address" => "Uredi naslov", "Type" => "Vrsta", "PO Box" => "Poštni predal", "Extended" => "Razširjeno", -"Street" => "Ulica", "City" => "Mesto", "Region" => "Regija", "Zipcode" => "Poštna št.", "Country" => "Dežela", -"Edit categories" => "Uredi kategorije", -"Add" => "Dodaj", "Addressbook" => "Imenik", "Hon. prefixes" => "Predpone", "Miss" => "gdč.", @@ -132,26 +142,21 @@ "Esq." => "Esq.", "Jr." => "mlajši", "Sn." => "starejši", -"New Addressbook" => "Nov imenik", -"Edit Addressbook" => "Uredi imenik", -"Displayname" => "Ime za prikaz", -"Active" => "Aktiven", -"Save" => "Shrani", -"Submit" => "Potrdi", -"Cancel" => "Prekliči", "Import a contacts file" => "Uvozi datoteko s stiki", "Please choose the addressbook" => "Prosimo, če izberete imenik", "create a new addressbook" => "Ustvari nov imenik", "Name of new addressbook" => "Ime novega imenika", -"Import" => "Uvozi", "Importing contacts" => "Uvažam stike", -"Select address book to import to:" => "Izberite imenik v katerega boste uvažali:", -"Select from HD" => "Izberi iz HD", "You have no contacts in your addressbook." => "V vašem imeniku ni stikov.", "Add contact" => "Dodaj stik", "Configure addressbooks" => "Nastavi imenike", "CardDAV syncing addresses" => "CardDAV naslovi za sinhronizacijo", "more info" => "več informacij", "Primary address (Kontact et al)" => "Primarni naslov (za kontakt et al)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "Prenesi", +"Edit" => "Uredi", +"New Address Book" => "Nov imenik", +"Save" => "Shrani", +"Cancel" => "Prekliči" ); diff --git a/apps/contacts/l10n/sr.php b/apps/contacts/l10n/sr.php index aad88f3603..ad8e1c28fb 100644 --- a/apps/contacts/l10n/sr.php +++ b/apps/contacts/l10n/sr.php @@ -15,33 +15,26 @@ "Fax" => "Факс", "Video" => "Видео", "Pager" => "Пејџер", +"Birthday" => "Рођендан", "Contact" => "Контакт", "Add Contact" => "Додај контакт", "Addressbooks" => "Адресар", -"New Address Book" => "Нови адресар", -"Download" => "Преузимање", -"Edit" => "Уреди", "Delete" => "Обриши", -"Download contact" => "Преузми контакт", -"Delete contact" => "Обриши контакт", -"Birthday" => "Рођендан", "Preferred" => "Пожељан", "Phone" => "Телефон", +"Download contact" => "Преузми контакт", +"Delete contact" => "Обриши контакт", "Type" => "Тип", "PO Box" => "Поштански број", "Extended" => "Прошири", -"Street" => "Улица", "City" => "Град", "Region" => "Регија", "Zipcode" => "Зип код", "Country" => "Земља", -"Add" => "Додај", "Addressbook" => "Адресар", -"New Addressbook" => "Нови адресар", -"Edit Addressbook" => "Уреди адресар", -"Displayname" => "Приказано име", -"Active" => "Активан", +"Download" => "Преузимање", +"Edit" => "Уреди", +"New Address Book" => "Нови адресар", "Save" => "Сними", -"Submit" => "Пошаљи", "Cancel" => "Откажи" ); diff --git a/apps/contacts/l10n/sr@latin.php b/apps/contacts/l10n/sr@latin.php index a76c104790..3d0c0d2b8f 100644 --- a/apps/contacts/l10n/sr@latin.php +++ b/apps/contacts/l10n/sr@latin.php @@ -14,16 +14,15 @@ "Fax" => "Faks", "Video" => "Video", "Pager" => "Pejdžer", -"Add Contact" => "Dodaj kontakt", -"Edit" => "Uredi", -"Delete" => "Obriši", "Birthday" => "Rođendan", +"Add Contact" => "Dodaj kontakt", +"Delete" => "Obriši", "Phone" => "Telefon", "PO Box" => "Poštanski broj", "Extended" => "Proširi", -"Street" => "Ulica", "City" => "Grad", "Region" => "Regija", "Zipcode" => "Zip kod", -"Country" => "Zemlja" +"Country" => "Zemlja", +"Edit" => "Uredi" ); diff --git a/apps/contacts/l10n/sv.php b/apps/contacts/l10n/sv.php index 8d5d37d248..f470a338b6 100644 --- a/apps/contacts/l10n/sv.php +++ b/apps/contacts/l10n/sv.php @@ -1,35 +1,42 @@ "Fel när (av)aktivera adressbok", -"There was an error adding the contact." => "Det uppstod ett fel när kontakt skulle läggas till", -"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", +"Error (de)activating addressbook." => "Fel (av)aktivera adressbok.", +"id is not set." => "ID är inte satt.", +"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.", "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.", +"There was an error adding the contact." => "Det uppstod ett fel när kontakten skulle läggas till.", +"element name is not set." => "elementnamn ej angett.", +"Could not parse contact: " => "Kunde inte läsa kontakt:", +"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: " => "Kunde inte lägga till egenskap för kontakt:", +"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.", "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", +"Error parsing VCard for ID: \"" => "Fel vid läsning av VCard för ID: \"", +"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:", +"Something went FUBAR. " => "Något gick fel.", +"Error updating contact property." => "Fel uppstod när kontaktegenskap skulle uppdateras.", "No contact ID was submitted." => "Inget kontakt-ID angavs.", -"Error reading contact photo." => "Fel uppstod när ", +"Error reading contact photo." => "Fel uppstod vid läsning av kontaktfoto.", "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 getting contact object." => "Fel vid hämtning av kontakt.", +"Error getting PHOTO property." => "Fel vid hämtning av egenskaper för FOTO.", +"Error saving contact." => "Fel vid sparande av kontakt.", +"Error resizing image" => "Fel vid storleksförändring av bilden", +"Error cropping image" => "Fel vid beskärning av bilden", +"Error creating temporary image" => "Fel vid skapande av tillfällig bild", +"Error finding image: " => "Kunde inte hitta bild:", "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", @@ -37,9 +44,27 @@ "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", +"Couldn't save temporary image: " => "Kunde inte spara tillfällig bild:", +"Couldn't load temporary image: " => "Kunde inte ladda tillfällig bild:", +"No file was uploaded. Unknown error" => "Ingen fil uppladdad. Okänt fel", "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", +"Sorry, this functionality has not been implemented yet" => "Tyvärr är denna funktion inte införd än", +"Not implemented" => "Inte införd", +"Couldn't get a valid address." => "Kunde inte hitta en giltig adress.", +"Error" => "Fel", +"This property has to be non-empty." => "Denna egenskap får inte vara tom.", +"Couldn't serialize elements." => "Kunde inte serialisera element.", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty\" anropades utan typargument. Vänligen rapportera till bugs.owncloud.org", +"Edit name" => "Ändra namn", +"No files selected for upload." => "Inga filer valda för uppladdning", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Filen du försöker ladda upp är större än den maximala storleken för filuppladdning på denna server.", +"Select type" => "Välj typ", +"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Vissa kontakter är markerade för radering, men är inte raderade än. Vänta tills dom är raderade.", +"Result: " => "Resultat:", +" imported, " => "importerad,", +" failed." => "misslyckades.", +"Displayname cannot be empty." => "Visningsnamn får inte vara tomt.", +"Addressbook not found: " => "Adressboken hittades inte:", "This is not your addressbook." => "Det här är inte din adressbok.", "Contact could not be found." => "Kontakt kunde inte hittas.", "Address" => "Adress", @@ -56,88 +81,118 @@ "Video" => "Video", "Pager" => "Personsökare", "Internet" => "Internet", +"Birthday" => "Födelsedag", +"Business" => "Företag", +"Call" => "Ring", +"Clients" => "Kunder", +"Deliverer" => "Leverera", +"Holidays" => "Helgdagar", +"Ideas" => "Idéer", +"Journey" => "Resa", +"Jubilee" => "Jubileum", +"Meeting" => "Möte", +"Other" => "Annat", +"Personal" => "Privat", +"Projects" => "Projekt", +"Questions" => "Frågor", "{name}'s Birthday" => "{name}'s födelsedag", "Contact" => "Kontakt", "Add Contact" => "Lägg till kontakt", +"Import" => "Importera", +"Settings" => "Inställningar", "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", +"Close" => "Stäng", +"Keyboard shortcuts" => "Kortkommandon", +"Navigation" => "Navigering", +"Next contact in list" => "Nästa kontakt i listan", +"Previous contact in list" => "Föregående kontakt i listan", +"Expand/collapse current addressbook" => "Visa/dölj aktuell adressbok", +"Next addressbook" => "Nästa adressbok", +"Previous addressbook" => "Föregående adressbok", +"Actions" => "Åtgärder", +"Refresh contacts list" => "Uppdatera kontaktlistan", +"Add new contact" => "Lägg till ny kontakt", +"Add new addressbook" => "Lägg till ny adressbok", +"Delete current contact" => "Radera denna kontakt", "Drop photo to upload" => "Släpp foto för att ladda upp", +"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", "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", +"Delete" => "Radera", "Nickname" => "Smeknamn", "Enter nickname" => "Ange smeknamn", -"Birthday" => "Födelsedag", +"Web site" => "Webbplats", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Gå till webbplats", "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", +"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", +"Enter phone number" => "Ange 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", +"Download contact" => "Ladda ner kontakt", +"Delete contact" => "Radera kontakt", +"The temporary image has been removed from cache." => "Den tillfälliga bilden har raderats från cache.", "Edit address" => "Editera adress", "Type" => "Typ", "PO Box" => "Postbox", +"Street address" => "Gatuadress", +"Street and number" => "Gata och nummer", "Extended" => "Utökad", -"Street" => "Gata", +"Apartment number etc." => "Lägenhetsnummer", "City" => "Stad", "Region" => "Län", +"E.g. state or province" => "T.ex. stat eller provins", "Zipcode" => "Postnummer", +"Postal code" => "Postnummer", "Country" => "Land", -"Edit categories" => "Editera kategorier", -"Add" => "Ny", "Addressbook" => "Adressbok", -"Miss" => "Herr", -"Ms" => "Ingen adressbok funnen.", -"Mr" => "Fru", +"Miss" => "Fröken", +"Mr" => "Herr", +"Sir" => "Herr", "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", "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", +"Configure addressbooks" => "Anpassa adressböcker.", +"Select Address Books" => "Välj adressböcker", +"Enter name" => "Ange namn", +"Enter description" => "Ange beskrivning", "CardDAV syncing addresses" => "CardDAV synkningsadresser", -"more info" => "mera information", +"more info" => "mer information", "Primary address (Kontact et al)" => "Primär adress (Kontakt o.a.)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "Visa CardDav-länk", +"Show read-only VCF link" => "Visa skrivskyddad VCF-länk", +"Download" => "Nedladdning", +"Edit" => "Redigera", +"New Address Book" => "Ny adressbok", +"Name" => "Namn", +"Description" => "Beskrivning", +"Save" => "Spara", +"Cancel" => "Avbryt", +"More..." => "Mer..." ); diff --git a/apps/contacts/l10n/th_TH.php b/apps/contacts/l10n/th_TH.php index acf382c6a4..553271d88f 100644 --- a/apps/contacts/l10n/th_TH.php +++ b/apps/contacts/l10n/th_TH.php @@ -1,39 +1,41 @@ "เกิดข้อผิดพลาดใน (ยกเลิก)การเปิดใช้งานสมุดบันทึกที่อยู่", -"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." => "เกิดข้อผิดพลาดในการเพิ่มรายละเอียดการติดต่อ", +"id is not set." => "ยังไม่ได้กำหนดรหัส", +"Cannot update addressbook with an empty name." => "ไม่สามารถอัพเดทสมุดบันทึกที่อยู่โดยไม่มีชื่อได้", +"Error updating addressbook." => "เกิดข้อผิดพลาดในการอัพเดทสมุดบันทึกที่อยู่", "No ID provided" => "ยังไม่ได้ใส่รหัส", "Error setting checksum." => "เกิดข้อผิดพลาดในการตั้งค่า checksum", "No categories selected for deletion." => "ยังไม่ได้เลือกหมวดหมู่ที่ต้องการลบ", "No address books found." => "ไม่พบสมุดบันทึกที่อยู่ที่ต้องการ", "No contacts found." => "ไม่พบข้อมูลการติดต่อที่ต้องการ", -"Missing ID" => "รหัสสูญหาย", -"Error parsing VCard for ID: \"" => "พบข้อผิดพลาดในการแยกรหัส VCard:\"", -"Cannot add addressbook with an empty name." => "ไม่สามารถเพิ่มสมุดบันทึกที่อยู่โดยไม่มีชื่อได้", -"Error adding addressbook." => "เกิดข้อผิดพลาดในการเพิ่มสมุดบันทึกที่อยู่ใหม่", -"Error activating addressbook." => "เกิดข้อผิดพลาดในการเปิดใช้งานสมุดบันทึกที่อยู่", -"No contact ID was submitted." => "ไม่มีรหัสข้อมูลการติดต่อถูกส่งมา", -"Error reading contact photo." => "เกิดข้อผิดพลาดในการอ่านรูปภาพของข้อมูลการติดต่อ", -"Error saving temporary file." => "เกิดข้อผิดพลาดในการบันทึกไฟล์ชั่วคราว", -"The loading photo is not valid." => "โหลดรูปภาพไม่ถูกต้อง", -"id is not set." => "ยังไม่ได้กำหนดรหัส", +"There was an error adding the contact." => "เกิดข้อผิดพลาดในการเพิ่มรายชื่อผู้ติดต่อใหม่", +"element name is not set." => "ยังไม่ได้กำหนดชื่อ", +"Cannot add empty property." => "ไม่สามารถเพิ่มรายละเอียดที่ไม่มีข้อมูลได้", +"At least one of the address fields has to be filled out." => "อย่างน้อยที่สุดช่องข้อมูลที่อยู่จะต้องถูกกรอกลงไป", +"Trying to add duplicate property: " => "พยายามที่จะเพิ่มทรัพยากรที่ซ้ำซ้อนกัน: ", "Information about vCard is incorrect. Please reload the page." => "ข้อมูลเกี่ยวกับ vCard ไม่ถูกต้อง กรุณาโหลดหน้าเวปใหม่อีกครั้ง", "Error deleting contact property." => "เกิดข้อผิดพลาดในการลบรายละเอียดการติดต่อ", -"Contact ID is missing." => "รหัสข้อมูลการติดต่อเกิดการสูญหาย", -"Missing contact id." => "รหัสข้อมูลการติดต่อเกิดการสูญหาย", -"No photo path was submitted." => "ไม่พบตำแหน่งพาธของรูปภาพ", -"File doesn't exist:" => "ไม่มีไฟล์ดังกล่าว", -"Error loading image." => "เกิดข้อผิดพลาดในการโหลดรูปภาพ", -"element name is not set." => "ยังไม่ได้กำหนดชื่อ", +"Missing ID" => "รหัสสูญหาย", +"Error parsing VCard for ID: \"" => "พบข้อผิดพลาดในการแยกรหัส VCard:\"", "checksum is not set." => "ยังไม่ได้กำหนดค่า checksum", "Information about vCard is incorrect. Please reload the page: " => "ข้อมูล vCard ไม่ถูกต้อง กรุณาโหลดหน้าเว็บใหม่อีกครั้ง: ", "Something went FUBAR. " => "มีบางอย่างเกิดการ FUBAR. ", "Error updating contact property." => "เกิดข้อผิดพลาดในการอัพเดทข้อมูลการติดต่อ", -"Cannot update addressbook with an empty name." => "ไม่สามารถอัพเดทสมุดบันทึกที่อยู่โดยไม่มีชื่อได้", -"Error updating addressbook." => "เกิดข้อผิดพลาดในการอัพเดทสมุดบันทึกที่อยู่", +"No contact ID was submitted." => "ไม่มีรหัสข้อมูลการติดต่อถูกส่งมา", +"Error reading contact photo." => "เกิดข้อผิดพลาดในการอ่านรูปภาพของข้อมูลการติดต่อ", +"Error saving temporary file." => "เกิดข้อผิดพลาดในการบันทึกไฟล์ชั่วคราว", +"The loading photo is not valid." => "โหลดรูปภาพไม่ถูกต้อง", +"Contact ID is missing." => "รหัสข้อมูลการติดต่อเกิดการสูญหาย", +"No photo path was submitted." => "ไม่พบตำแหน่งพาธของรูปภาพ", +"File doesn't exist:" => "ไม่มีไฟล์ดังกล่าว", +"Error loading image." => "เกิดข้อผิดพลาดในการโหลดรูปภาพ", +"Error getting contact object." => "เกิดข้อผิดพลาดในการดึงข้อมูลติดต่อ", +"Error getting PHOTO property." => "เกิดข้อผิดพลาดในการดึงคุณสมบัติของรูปภาพ", +"Error saving contact." => "เกิดข้อผิดพลาดในการบันทึกข้อมูลผู้ติดต่อ", +"Error resizing image" => "เกิดข้อผิดพลาดในการปรับขนาดรูปภาพ", +"Error cropping image" => "เกิดข้อผิดพลาดในการครอบตัดภาพ", +"Error creating temporary image" => "เกิดข้อผิดพลาดในการสร้างรูปภาพชั่วคราว", +"Error finding image: " => "เกิดข้อผิดพลาดในการค้นหารูปภาพ: ", "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", @@ -41,9 +43,24 @@ "The uploaded file was only partially uploaded" => "ไฟล์ถูกอัพโหลดได้เพียงบางส่วนเท่านั้น", "No file was uploaded" => "ไม่มีไฟล์ที่ถูกอัพโหลด", "Missing a temporary folder" => "โฟลเดอร์ชั่วคราวเกิดการสูญหาย", +"Couldn't save temporary image: " => "ไม่สามารถบันทึกรูปภาพชั่วคราวได้: ", +"Couldn't load temporary image: " => "ไม่สามารถโหลดรูปภาพชั่วคราวได้: ", +"No file was uploaded. Unknown error" => "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ", "Contacts" => "ข้อมูลการติดต่อ", -"Drop a VCF file to import contacts." => "วางไฟล์ VCF ที่ต้องการนำเข้าข้อมูลการติดต่อ", -"Addressbook not found." => "ไม่พบสมุดบันทึกที่อยู่ที่ต้องการ", +"Sorry, this functionality has not been implemented yet" => "ขออภัย, ฟังก์ชั่นการทำงานนี้ยังไม่ได้ถูกดำเนินการ", +"Not implemented" => "ยังไม่ได้ถูกดำเนินการ", +"Couldn't get a valid address." => "ไม่สามารถดึงที่อยู่ที่ถูกต้องได้", +"Error" => "พบข้อผิดพลาด", +"This property has to be non-empty." => "คุณสมบัตินี้ต้องไม่มีข้อมูลว่างอยู่", +"Couldn't serialize elements." => "ไม่สามารถทำสัญลักษณ์องค์ประกอบต่างๆให้เป็นตัวเลขตามลำดับได้", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' ถูกเรียกใช้โดยไม่มีอาร์กิวเมนต์ กรุณาแจ้งได้ที่ bugs.owncloud.org", +"Edit name" => "แก้ไขชื่อ", +"No files selected for upload." => "ยังไม่ได้เลือกไฟล์ำสำหรับอัพโหลด", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "ไฟล์ที่คุณกำลังพยายามที่จะอัพโหลดมีขนาดเกินจำนวนสูงสุดที่สามารถอัพโหลดได้สำหรับเซิร์ฟเวอร์นี้", +"Select type" => "เลือกชนิด", +"Result: " => "ผลลัพธ์: ", +" imported, " => " นำเข้าข้อมูลแล้ว, ", +" failed." => " ล้มเหลว.", "This is not your addressbook." => "นี่ไม่ใช่สมุดบันทึกที่อยู่ของคุณ", "Contact could not be found." => "ไม่พบข้อมูลการติดต่อ", "Address" => "ที่อยู่", @@ -60,25 +77,23 @@ "Video" => "วีดีโอ", "Pager" => "เพจเจอร์", "Internet" => "อินเทอร์เน็ต", +"Birthday" => "วันเกิด", "{name}'s Birthday" => "วันเกิดของ {name}", "Contact" => "ข้อมูลการติดต่อ", "Add Contact" => "เพิ่มรายชื่อผู้ติดต่อใหม่", +"Import" => "นำเข้า", "Addressbooks" => "สมุดบันทึกที่อยู่", -"Configure Address Books" => "กำหนดค่าสมุดบันทึกที่อยู่", -"New Address Book" => "สร้างสมุดบันทึกข้อมูลการติดต่อใหม่", -"Import from VCF" => "นำเข้าจาก VCF", -"CardDav Link" => "ลิงค์ CardDav", -"Download" => "ดาวน์โหลด", -"Edit" => "แก้ไข", -"Delete" => "ลบ", -"Download contact" => "ดาวน์โหลดข้อมูลการติดต่อ", -"Delete contact" => "ลบข้อมูลการติดต่อ", +"Close" => "ปิด", "Drop photo to upload" => "วางรูปภาพที่ต้องการอัพโหลด", +"Delete current photo" => "ลบรูปภาพปัจจุบัน", +"Edit current photo" => "แก้ไขรูปภาพปัจจุบัน", +"Upload new photo" => "อัพโหลดรูปภาพใหม่", +"Select photo from ownCloud" => "เลือกรูปภาพจาก ownCloud", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "กำหนดรูปแบบของชื่อย่อ, ชื่อจริง, ย้อนค่ากลัีบด้วยคอมม่าเอง", "Edit name details" => "แก้ไขรายละเอียดของชื่อ", +"Delete" => "ลบ", "Nickname" => "ชื่อเล่น", "Enter nickname" => "กรอกชื่อเล่น", -"Birthday" => "วันเกิด", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "กลุ่ม", "Separate groups with commas" => "คั่นระหว่างรายชื่อกลุ่มด้วยเครื่องหมายจุลภาีคหรือคอมม่า", @@ -94,24 +109,19 @@ "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", +"Download contact" => "ดาวน์โหลดข้อมูลการติดต่อ", +"Delete contact" => "ลบข้อมูลการติดต่อ", +"The temporary image has been removed from cache." => "รูปภาพชั่วคราวดังกล่าวได้ถูกลบออกจากหน่วยความจำแคชแล้ว", "Edit address" => "แก้ไขที่อยู่", "Type" => "ประเภท", "PO Box" => "ตู้ ปณ.", "Extended" => "เพิ่ม", -"Street" => "ถนน", "City" => "เมือง", "Region" => "ภูมิภาค", "Zipcode" => "รหัสไปรษณีย์", "Country" => "ประเทศ", -"Edit categories" => "แก้ไขหมวดหมู่", -"Add" => "เพิ่ม", "Addressbook" => "สมุดบันทึกที่อยู่", "Hon. prefixes" => "คำนำหน้าชื่อคนรัก", "Miss" => "นางสาว", @@ -132,26 +142,21 @@ "Esq." => "Esq.", "Jr." => "จูเนียร์", "Sn." => "ซีเนียร์", -"New Addressbook" => "สร้างสมุดบันทึกที่อยู่ใหม่", -"Edit Addressbook" => "แก้ไขสมุดบันทึกที่อยู่", -"Displayname" => "ชื่อที่ต้องการให้แสดง", -"Active" => "เปิดใช้", -"Save" => "บันทึก", -"Submit" => "ส่งข้อมูล", -"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" => "เลือกจากฮาร์ดดิส", "You have no contacts in your addressbook." => "คุณยังไม่มีข้อมูลการติดต่อใดๆในสมุดบันทึกที่อยู่ของคุณ", "Add contact" => "เพิ่มชื่อผู้ติดต่อ", "Configure addressbooks" => "กำหนดค่าสมุดบันทึกที่อยู่", "CardDAV syncing addresses" => "ที่อยู่ที่ใช้เชื่อมข้อมูลกับ CardDAV", "more info" => "ข้อมูลเพิ่มเติม", "Primary address (Kontact et al)" => "ที่อยู่หลัก (สำหรับติดต่อ)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "ดาวน์โหลด", +"Edit" => "แก้ไข", +"New Address Book" => "สร้างสมุดบันทึกข้อมูลการติดต่อใหม่", +"Save" => "บันทึก", +"Cancel" => "ยกเลิก" ); diff --git a/apps/contacts/l10n/tr.php b/apps/contacts/l10n/tr.php index 65e8e34c30..dc4ec06c93 100644 --- a/apps/contacts/l10n/tr.php +++ b/apps/contacts/l10n/tr.php @@ -1,39 +1,43 @@ "Adres defteri etkisizleştirilirken hata oluştu.", -"There was an error adding the contact." => "Kişi eklenirken hata oluştu.", -"Cannot add empty property." => "Boş özellik eklenemiyor.", -"At least one of the address fields has to be filled out." => "En az bir adres alanı doldurulmalı.", -"Trying to add duplicate property: " => "Yinelenen özellik eklenmeye çalışılıyor: ", -"Error adding contact property." => "Kişi özelliği eklenirken hata oluştu.", +"id is not set." => "id atanmamış.", +"Cannot update addressbook with an empty name." => "Adres defterini boş bir isimle güncelleyemezsiniz.", +"Error updating addressbook." => "Adres defteri güncellenirken hata oluştu.", "No ID provided" => "ID verilmedi", "Error setting checksum." => "İmza oluşturulurken hata.", "No categories selected for deletion." => "Silmek için bir kategori seçilmedi.", "No address books found." => "Adres defteri bulunamadı.", "No contacts found." => "Bağlantı bulunamadı.", -"Missing ID" => "Eksik ID", -"Error parsing VCard for ID: \"" => "ID için VCard ayrıştırılamadı:\"", -"Cannot add addressbook with an empty name." => "Adres defterini isimsiz ekleyemezsiniz.", -"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 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.", -"id is not set." => "id atanmamış.", +"There was an error adding the contact." => "Kişi eklenirken hata oluştu.", +"element name is not set." => "eleman ismi atanmamış.", +"Could not parse contact: " => "Kişi bilgisi ayrıştırılamadı.", +"Cannot add empty property." => "Boş özellik eklenemiyor.", +"At least one of the address fields has to be filled out." => "En az bir adres alanı doldurulmalı.", +"Trying to add duplicate property: " => "Yinelenen özellik eklenmeye çalışılıyor: ", +"Error adding contact property: " => "Kişi özelliği eklenirken hata oluştu.", "Information about vCard is incorrect. Please reload the page." => "vCard bilgileri doğru değil. Lütfen sayfayı yenileyin.", "Error deleting contact property." => "Kişi özelliği silinirken hata oluştu.", -"Contact ID is missing." => "Bağlantı ID'si eksik.", -"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ış.", +"Missing ID" => "Eksik ID", +"Error parsing VCard for ID: \"" => "ID için VCard ayrıştırılamadı:\"", "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: ", "Something went FUBAR. " => "Bir şey FUBAR gitti.", "Error updating contact property." => "Kişi özelliği güncellenirken hata oluştu.", -"Cannot update addressbook with an empty name." => "Adres defterini boş bir isimle güncelleyemezsiniz.", -"Error updating addressbook." => "Adres defteri güncellenirken hata oluştu.", +"No contact ID was submitted." => "Bağlantı ID'si girilmedi.", +"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.", +"Contact ID is missing." => "Bağlantı ID'si eksik.", +"No photo path was submitted." => "Fotoğraf girilmedi.", +"File doesn't exist:" => "Dosya mevcut değil:", +"Error loading image." => "İmaj yükleme hatası.", +"Error getting contact object." => "Bağlantı nesnesini kaydederken hata.", +"Error getting PHOTO property." => "Resim özelleğini alırken hata oluştu.", +"Error saving contact." => "Bağlantıyı kaydederken hata", +"Error resizing image" => "Görüntü yeniden boyutlandırılamadı.", +"Error cropping image" => "Görüntü kırpılamadı.", +"Error creating temporary image" => "Geçici resim oluştururken hata oluştu", +"Error finding image: " => "Resim ararken hata oluştu:", "Error uploading contacts to storage." => "Bağlantıları depoya yükleme hatası", "There is no error, the file uploaded with success" => "Dosya başarıyla yüklendi, hata oluşmadı", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Dosyanın boyutu php.ini dosyasındaki upload_max_filesize limitini aşıyor", @@ -41,9 +45,24 @@ "The uploaded file was only partially uploaded" => "Dosya kısmen karşıya yüklenebildi", "No file was uploaded" => "Hiç dosya gönderilmedi", "Missing a temporary folder" => "Geçici dizin eksik", +"Couldn't save temporary image: " => "Geçici resmi saklayamadı : ", +"Couldn't load temporary image: " => "Geçici resmi yükleyemedi :", +"No file was uploaded. Unknown error" => "Dosya yüklenmedi. Bilinmeyen hata", "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ı.", +"Sorry, this functionality has not been implemented yet" => "Üzgünüz, bu özellik henüz tamamlanmadı.", +"Not implemented" => "Tamamlanmadı.", +"Couldn't get a valid address." => "Geçerli bir adres alınamadı.", +"Error" => "Hata", +"This property has to be non-empty." => "Bu özellik boş bırakılmamalı.", +"Couldn't serialize elements." => "Öğeler seri hale getiremedi", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' tip argümanı olmadan çağrıldı. Lütfen bugs.owncloud.org a rapor ediniz.", +"Edit name" => "İsmi düzenle", +"No files selected for upload." => "Yükleme için dosya seçilmedi.", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Yüklemeye çalıştığınız dosya sunucudaki dosya yükleme maksimum boyutunu aşmaktadır. ", +"Select type" => "Tür seç", +"Result: " => "Sonuç: ", +" imported, " => " içe aktarıldı, ", +" failed." => " hatalı.", "This is not your addressbook." => "Bu sizin adres defteriniz değil.", "Contact could not be found." => "Kişi bulunamadı.", "Address" => "Adres", @@ -60,25 +79,49 @@ "Video" => "Video", "Pager" => "Sayfalayıcı", "Internet" => "İnternet", +"Birthday" => "Doğum günü", +"Business" => "İş", +"Call" => "Çağrı", +"Clients" => "Müşteriler", +"Deliverer" => "Dağıtıcı", +"Holidays" => "Tatiller", +"Ideas" => "Fikirler", +"Journey" => "Seyahat", +"Jubilee" => "Yıl Dönümü", +"Meeting" => "Toplantı", +"Other" => "Diğer", +"Personal" => "Kişisel", +"Projects" => "Projeler", +"Questions" => "Sorular", "{name}'s Birthday" => "{name}'nin Doğumgünü", "Contact" => "Kişi", "Add Contact" => "Kişi Ekle", +"Import" => "İçe aktar", "Addressbooks" => "Adres defterleri", -"Configure Address Books" => "Adres Defterlerini Yapılandır", -"New Address Book" => "Yeni Adres Defteri", -"Import from VCF" => "VCF'den içeri aktar", -"CardDav Link" => "CardDav Bağlantısı", -"Download" => "İndir", -"Edit" => "Düzenle", -"Delete" => "Sil", -"Download contact" => "Kişiyi indir", -"Delete contact" => "Kişiyi sil", +"Close" => "Kapat", +"Keyboard shortcuts" => "Klavye kısayolları", +"Navigation" => "Dolaşım", +"Next contact in list" => "Listedeki sonraki kişi", +"Previous contact in list" => "Listedeki önceki kişi", +"Expand/collapse current addressbook" => "Şuanki adres defterini genişlet/daralt", +"Actions" => "Eylemler", +"Refresh contacts list" => "Kişi listesini tazele", +"Add new contact" => "Yeni kişi ekle", +"Add new addressbook" => "Yeni adres defteri ekle", +"Delete current contact" => "Şuanki kişiyi sil", "Drop photo to upload" => "Fotoğrafı yüklenmesi için bırakın", +"Delete current photo" => "Mevcut fotoğrafı sil", +"Edit current photo" => "Mevcut fotoğrafı düzenle", +"Upload new photo" => "Yeni fotoğraf yükle", +"Select photo from ownCloud" => "ownCloud'dan bir fotoğraf seç", "Format custom, Short name, Full name, Reverse or Reverse with comma" => "Biçin özel, Kısa isim, Tam isim, Ters veya noktalı ters", "Edit name details" => "İsim detaylarını düzenle", +"Delete" => "Sil", "Nickname" => "Takma ad", "Enter nickname" => "Takma adı girin", -"Birthday" => "Doğum günü", +"Web site" => "Web sitesi", +"http://www.somesite.com" => "http://www.somesite.com", +"Go to web site" => "Web sitesine git", "dd-mm-yyyy" => "gg-aa-yyyy", "Groups" => "Gruplar", "Separate groups with commas" => "Grupları birbirinden virgülle ayırın", @@ -94,24 +137,24 @@ "Edit address details" => "Adres detaylarını düzenle", "Add notes here." => "Notları buraya ekleyin.", "Add field" => "Alan ekle", -"Profile picture" => "Profil resmi", "Phone" => "Telefon", "Note" => "Not", -"Delete current photo" => "Mevcut fotoğrafı sil", -"Edit current photo" => "Mevcut fotoğrafı düzenle", -"Upload new photo" => "Yeni fotoğraf yükle", -"Select photo from ownCloud" => "ownCloud'dan bir fotoğraf seç", +"Download contact" => "Kişiyi indir", +"Delete contact" => "Kişiyi sil", +"The temporary image has been removed from cache." => "Geçici resim ön bellekten silinmiştir.", "Edit address" => "Adresi düzenle", "Type" => "Tür", "PO Box" => "Posta Kutusu", +"Street address" => "Sokak adresi", +"Street and number" => "Sokak ve Numara", "Extended" => "Uzatılmış", -"Street" => "Sokak", +"Apartment number etc." => "Apartman numarası vb.", "City" => "Şehir", "Region" => "Bölge", +"E.g. state or province" => "Örn. eyalet veya il", "Zipcode" => "Posta kodu", +"Postal code" => "Posta kodu", "Country" => "Ülke", -"Edit categories" => "Kategorileri düzenle", -"Add" => "Ekle", "Addressbook" => "Adres defteri", "Hon. prefixes" => "Kısaltmalar", "Miss" => "Bayan", @@ -132,26 +175,24 @@ "Esq." => "Esq.", "Jr." => "Jr.", "Sn." => "Sn.", -"New Addressbook" => "Yeni Adres defteri", -"Edit Addressbook" => "Adres Defterini Düzenle", -"Displayname" => "Görünen adı", -"Active" => "Aktif", -"Save" => "Kaydet", -"Submit" => "Gönder", -"Cancel" => "İptal", "Import a contacts file" => "Bağlantı dosyasını içeri aktar", "Please choose the addressbook" => "Yeni adres defterini seç", "create a new addressbook" => "Yeni adres defteri oluştur", "Name of new addressbook" => "Yeni adres defteri için isim", -"Import" => "İçe aktar", "Importing contacts" => "Bağlantıları içe aktar", -"Select address book to import to:" => "İçe aktarılacak adres defterini seçin:", -"Select from HD" => "HD'den seç", "You have no contacts in your addressbook." => "Adres defterinizde hiç bağlantı yok.", "Add contact" => "Bağlatı ekle", "Configure addressbooks" => "Adres defterini yapılandır", +"Select Address Books" => "Adres deftelerini seçiniz", +"Enter name" => "İsim giriniz", +"Enter description" => "Tanım giriniz", "CardDAV syncing addresses" => "CardDAV adresleri eşzamanlıyor", "more info" => "daha fazla bilgi", "Primary address (Kontact et al)" => "Birincil adres (Bağlantı ve arkadaşları)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "İndir", +"Edit" => "Düzenle", +"New Address Book" => "Yeni Adres Defteri", +"Save" => "Kaydet", +"Cancel" => "İptal" ); diff --git a/apps/contacts/l10n/uk.php b/apps/contacts/l10n/uk.php index 4c27acf543..cc09651065 100644 --- a/apps/contacts/l10n/uk.php +++ b/apps/contacts/l10n/uk.php @@ -1,6 +1,5 @@ "Має бути заповнено щонайменше одне поле.", -"Error adding addressbook." => "Помилка при додаванні адресної книги.", "This is not your addressbook." => "Це не ваша адресна книга.", "Address" => "Адреса", "Telephone" => "Телефон", @@ -12,18 +11,15 @@ "Fax" => "Факс", "Video" => "Відео", "Pager" => "Пейджер", -"Add Contact" => "Додати контакт", -"New Address Book" => "Нова адресна книга", -"Download" => "Завантажити", -"Delete" => "Видалити", -"Delete contact" => "Видалити контакт", "Birthday" => "День народження", +"Add Contact" => "Додати контакт", +"Delete" => "Видалити", "Phone" => "Телефон", +"Delete contact" => "Видалити контакт", "Extended" => "Розширено", -"Street" => "Вулиця", "City" => "Місто", "Zipcode" => "Поштовий індекс", "Country" => "Країна", -"Add" => "Додати", -"Displayname" => "Відображуване ім'я" +"Download" => "Завантажити", +"New Address Book" => "Нова адресна книга" ); diff --git a/apps/contacts/l10n/vi.php b/apps/contacts/l10n/vi.php new file mode 100644 index 0000000000..0c650586a2 --- /dev/null +++ b/apps/contacts/l10n/vi.php @@ -0,0 +1,42 @@ + "id không được thiết lập.", +"No ID provided" => "Không có ID được cung cấp", +"No address books found." => "Không tìm thấy sổ địa chỉ.", +"No contacts found." => "Không tìm thấy danh sách", +"element name is not set." => "tên phần tử không được thiết lập.", +"Missing ID" => "Missing ID", +"Error reading contact photo." => "Lỗi đọc liên lạc hình ảnh.", +"The loading photo is not valid." => "Các hình ảnh tải không hợp lệ.", +"File doesn't exist:" => "Tập tin không tồn tại", +"Error loading image." => "Lỗi khi tải hình ảnh.", +"Error uploading contacts to storage." => "Lỗi tải lên danh sách địa chỉ để lưu trữ.", +"There is no error, the file uploaded with success" => "Không có lỗi, các tập tin tải lên thành công", +"Contacts" => "Liên lạc", +"Address" => "Địa chỉ", +"Telephone" => "Điện thoại bàn", +"Email" => "Email", +"Organization" => "Tổ chức", +"Work" => "Công việc", +"Home" => "Nhà", +"Mobile" => "Di động", +"Fax" => "Fax", +"Video" => "Video", +"Pager" => "số trang", +"Birthday" => "Ngày sinh nhật", +"Contact" => "Danh sách", +"Add Contact" => "Thêm liên lạc", +"Addressbooks" => "Sổ địa chỉ", +"Delete" => "Xóa", +"Phone" => "Điện thoại", +"Delete contact" => "Xóa liên lạc", +"PO Box" => "Hòm thư bưu điện", +"City" => "Thành phố", +"Region" => "Vùng/miền", +"Zipcode" => "Mã bưu điện", +"Country" => "Quốc gia", +"Addressbook" => "Sổ địa chỉ", +"Download" => "Tải về", +"Edit" => "Sửa", +"Save" => "Lưu", +"Cancel" => "Hủy" +); diff --git a/apps/contacts/l10n/zh_CN.php b/apps/contacts/l10n/zh_CN.php index dcf9b99bc8..bb4188314d 100644 --- a/apps/contacts/l10n/zh_CN.php +++ b/apps/contacts/l10n/zh_CN.php @@ -1,40 +1,66 @@ "(取消)激活地址簿错误。", -"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." => "添加联系人属性错误。", +"id is not set." => "没有设置 id。", +"Cannot update addressbook with an empty name." => "无法使用一个空名称更新地址簿", +"Error updating addressbook." => "更新地址簿错误", "No ID provided" => "未提供 ID", "Error setting checksum." => "设置校验值错误。", "No categories selected for deletion." => "未选中要删除的分类。", "No address books found." => "找不到地址簿。", "No contacts found." => "找不到联系人。", +"There was an error adding the contact." => "添加联系人时出错。", +"element name is not set." => "元素名称未设置", +"Cannot add empty property." => "无法添加空属性。", +"At least one of the address fields has to be filled out." => "至少需要填写一项地址。", +"Trying to add duplicate property: " => "试图添加重复属性: ", +"Information about vCard is incorrect. Please reload the page." => "vCard 的信息不正确。请重新加载页面。", +"Error deleting contact property." => "删除联系人属性错误。", "Missing ID" => "缺少 ID", "Error parsing VCard for ID: \"" => "无法解析如下ID的 VCard:“", -"Cannot add addressbook with an empty name." => "无法无姓名的地址簿。", -"Error adding addressbook." => "添加地址簿错误。", -"Error activating addressbook." => "激活地址簿错误。", +"checksum is not set." => "未设置校验值。", +"Information about vCard is incorrect. Please reload the page: " => "vCard 信息不正确。请刷新页面: ", +"Something went FUBAR. " => "有一些信息无法被处理。", +"Error updating contact property." => "更新联系人属性错误。", "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." => "更新地址簿错误", +"Error getting contact object." => "获取联系人目标时出错。", +"Error getting PHOTO property." => "获取照片属性时出错。", +"Error saving contact." => "保存联系人时出错。", +"Error resizing image" => "缩放图像时出错", +"Error cropping image" => "裁切图像时出错", +"Error creating temporary image" => "创建临时图像时出错", +"Error finding image: " => "查找图像时出错: ", +"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" => "缺少临时目录", +"Couldn't save temporary image: " => "无法保存临时图像: ", +"Couldn't load temporary image: " => "无法加载临时图像: ", +"No file was uploaded. Unknown error" => "没有文件被上传。未知错误", "Contacts" => "联系人", -"Addressbook not found." => "未找到地址簿。", +"Sorry, this functionality has not been implemented yet" => "抱歉,这个功能暂时还没有被实现", +"Not implemented" => "未实现", +"Couldn't get a valid address." => "无法获取一个合法的地址。", +"Error" => "错误", +"This property has to be non-empty." => "这个属性必须是非空的", +"Couldn't serialize elements." => "无法序列化元素", +"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' 调用时没有类型声明。请到 bugs.owncloud.org 汇报错误", +"Edit name" => "编辑名称", +"No files selected for upload." => "没有选择文件以上传", +"The file you are trying to upload exceed the maximum size for file uploads on this server." => "您试图上传的文件超出了该服务器的最大文件限制", +"Select type" => "选择类型", +"Result: " => "结果: ", +" imported, " => " 已导入, ", +" failed." => " 失败。", "This is not your addressbook." => "这不是您的地址簿。", "Contact could not be found." => "无法找到联系人。", "Address" => "地址", @@ -51,24 +77,23 @@ "Video" => "视频", "Pager" => "传呼机", "Internet" => "互联网", +"Birthday" => "生日", "{name}'s Birthday" => "{name} 的生日", "Contact" => "联系人", "Add Contact" => "添加联系人", +"Import" => "导入", "Addressbooks" => "地址簿", -"Configure Address Books" => "配置地址簿", -"New Address Book" => "新建地址簿", -"Import from VCF" => "从 VCF 导入", -"CardDav Link" => "CardDav 链接", -"Download" => "下载", -"Edit" => "编辑", -"Delete" => "删除", -"Download contact" => "下载联系人", -"Delete contact" => "删除联系人", +"Close" => "关闭", "Drop photo to upload" => "拖拽图片进行上传", +"Delete current photo" => "删除当前照片", +"Edit current photo" => "编辑当前照片", +"Upload new photo" => "上传新照片", +"Select photo from ownCloud" => "从 ownCloud 选择照片", +"Format custom, Short name, Full name, Reverse or Reverse with comma" => "自定义格式,简称,全名,姓在前,姓在前并用逗号分割", "Edit name details" => "编辑名称详情", +"Delete" => "删除", "Nickname" => "昵称", "Enter nickname" => "输入昵称", -"Birthday" => "生日", "dd-mm-yyyy" => "yyyy-mm-dd", "Groups" => "分组", "Separate groups with commas" => "用逗号隔开分组", @@ -84,44 +109,54 @@ "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 选择照片", +"Download contact" => "下载联系人", +"Delete contact" => "删除联系人", +"The temporary image has been removed from cache." => "临时图像文件已从缓存中删除", "Edit address" => "编辑地址", "Type" => "类型", "PO Box" => "邮箱", "Extended" => "扩展", -"Street" => "街道", "City" => "城市", "Region" => "地区", "Zipcode" => "邮编", "Country" => "国家", -"Edit categories" => "编辑分类", -"Add" => "添加", "Addressbook" => "地址簿", +"Hon. prefixes" => "名誉字首", +"Miss" => "小姐", +"Ms" => "女士", +"Mr" => "先生", +"Sir" => "先生", +"Mrs" => "夫人", +"Dr" => "博士", "Given name" => "名", +"Additional names" => "其他名称", "Family name" => "姓", -"New Addressbook" => "新建地址簿", -"Edit Addressbook" => "编辑地址簿", -"Displayname" => "显示名称", -"Active" => "激活", -"Save" => "保存", -"Submit" => "提交", -"Cancel" => "取消", +"Hon. suffixes" => "名誉后缀", +"J.D." => "法律博士", +"M.D." => "医学博士", +"D.O." => "骨科医学博士", +"D.C." => "教育学博士", +"Ph.D." => "哲学博士", +"Esq." => "先生", +"Jr." => "小", +"Sn." => "老", "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" => "配置地址簿", "CardDAV syncing addresses" => "CardDAV 同步地址", "more info" => "更多信息", "Primary address (Kontact et al)" => "首选地址 (Kontact 等)", -"iOS/OS X" => "iOS/OS X" +"iOS/OS X" => "iOS/OS X", +"Download" => "下载", +"Edit" => "编辑", +"New Address Book" => "新建地址簿", +"Save" => "保存", +"Cancel" => "取消" ); diff --git a/apps/contacts/l10n/zh_TW.php b/apps/contacts/l10n/zh_TW.php index d4c2efc47a..db0a1dbf21 100644 --- a/apps/contacts/l10n/zh_TW.php +++ b/apps/contacts/l10n/zh_TW.php @@ -1,21 +1,17 @@ "在啟用或關閉電話簿時發生錯誤", +"Error updating addressbook." => "電話簿更新中發生錯誤", +"No ID provided" => "未提供 ID", +"No contacts found." => "沒有找到聯絡人", "There was an error adding the contact." => "添加通訊錄發生錯誤", "Cannot add empty property." => "不可添加空白內容", "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." => "刪除通訊錄內容中發生錯誤", +"Missing ID" => "遺失ID", "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" => "地址", @@ -32,23 +28,15 @@ "Video" => "影片", "Pager" => "呼叫器", "Internet" => "網際網路", +"Birthday" => "生日", "{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" => "編輯姓名詳細資訊", +"Delete" => "刪除", "Nickname" => "綽號", "Enter nickname" => "輸入綽號", -"Birthday" => "生日", "dd-mm-yyyy" => "dd-mm-yyyy", "Groups" => "群組", "Separate groups with commas" => "用逗號分隔群組", @@ -63,18 +51,17 @@ "Edit address details" => "電子郵件住址詳細資訊", "Add notes here." => "在這裡新增註解", "Add field" => "新增欄位", -"Profile picture" => "個人資料照片", "Phone" => "電話", "Note" => "註解", +"Download contact" => "下載通訊錄", +"Delete contact" => "刪除通訊錄", "Type" => "類型", "PO Box" => "通訊地址", "Extended" => "分機", -"Street" => "街道", "City" => "城市", "Region" => "地區", "Zipcode" => "郵遞區號", "Country" => "國家", -"Add" => "添加", "Addressbook" => "電話簿", "Mr" => "先生", "Sir" => "先生", @@ -83,11 +70,9 @@ "Given name" => "給定名(名)", "Additional names" => "額外名", "Family name" => "家族名(姓)", -"New Addressbook" => "新電話簿", -"Edit Addressbook" => "編輯電話簿", -"Displayname" => "顯示名稱", -"Active" => "作用中", +"Download" => "下載", +"Edit" => "編輯", +"New Address Book" => "新電話簿", "Save" => "儲存", -"Submit" => "提出", "Cancel" => "取消" ); diff --git a/apps/contacts/lib/app.php b/apps/contacts/lib/app.php index 689149367f..b59a8372b7 100644 --- a/apps/contacts/lib/app.php +++ b/apps/contacts/lib/app.php @@ -22,15 +22,34 @@ class OC_Contacts_App { public static $categories = null; public static function getAddressbook($id) { + // TODO: Throw an exception instead of returning json. $addressbook = OC_Contacts_Addressbook::find( $id ); - if( $addressbook === false || $addressbook['userid'] != OCP\USER::getUser()) { + if($addressbook === false || $addressbook['userid'] != OCP\USER::getUser()) { if ($addressbook === false) { - OCP\Util::writeLog('contacts', 'Addressbook not found: '. $id, OCP\Util::ERROR); - OCP\JSON::error(array('data' => array( 'message' => self::$l10n->t('Addressbook not found.')))); + OCP\Util::writeLog('contacts', + 'Addressbook not found: '. $id, + OCP\Util::ERROR); + //throw new Exception('Addressbook not found: '. $id); + OCP\JSON::error( + array( + 'data' => array( + 'message' => self::$l10n->t('Addressbook not found: ' . $id) + ) + ) + ); } else { - OCP\Util::writeLog('contacts', 'Addressbook('.$id.') is not from '.OCP\USER::getUser(), OCP\Util::ERROR); - OCP\JSON::error(array('data' => array( 'message' => self::$l10n->t('This is not your addressbook.')))); + OCP\Util::writeLog('contacts', + 'Addressbook('.$id.') is not from '.OCP\USER::getUser(), + OCP\Util::ERROR); + //throw new Exception('This is not your addressbook.'); + OCP\JSON::error( + array( + 'data' => array( + 'message' => self::$l10n->t('This is not your addressbook.') + ) + ) + ); } exit(); } @@ -40,8 +59,17 @@ class OC_Contacts_App { public static function getContactObject($id) { $card = OC_Contacts_VCard::find( $id ); if( $card === false ) { - OCP\Util::writeLog('contacts', 'Contact could not be found: '.$id, OCP\Util::ERROR); - OCP\JSON::error(array('data' => array( 'message' => self::$l10n->t('Contact could not be found.').' '.print_r($id, true)))); + OCP\Util::writeLog('contacts', + 'Contact could not be found: '.$id, + OCP\Util::ERROR); + OCP\JSON::error( + array( + 'data' => array( + 'message' => self::$l10n->t('Contact could not be found.') + .' '.print_r($id, true) + ) + ) + ); exit(); } @@ -57,22 +85,6 @@ class OC_Contacts_App { $card = self::getContactObject( $id ); $vcard = OC_VObject::parse($card['carddata']); - // Try to fix cards with missing 'N' field from pre ownCloud 4. Hot damn, this is ugly... - if(!is_null($vcard) && !$vcard->__isset('N')) { - $version = OCP\App::getAppVersion('contacts'); - if($version >= 5) { - OCP\Util::writeLog('contacts', 'OC_Contacts_App::getContactVCard. Deprecated check for missing N field', OCP\Util::DEBUG); - } - OCP\Util::writeLog('contacts', 'getContactVCard, Missing N field', OCP\Util::DEBUG); - if($vcard->__isset('FN')) { - OCP\Util::writeLog('contacts', 'getContactVCard, found FN field: '.$vcard->__get('FN'), OCP\Util::DEBUG); - $n = implode(';', array_reverse(array_slice(explode(' ', $vcard->__get('FN')), 0, 2))).';;;'; - $vcard->setString('N', $n); - OC_Contacts_VCard::edit( $id, $vcard); - } else { // Else just add an empty 'N' field :-P - $vcard->setString('N', 'Unknown;Name;;;'); - } - } if (!is_null($vcard) && !isset($vcard->REV)) { $rev = new DateTime('@'.$card['lastmodified']); $vcard->setString('REV', $rev->format(DateTime::W3C)); @@ -110,29 +122,29 @@ class OC_Contacts_App { public static function getTypesOfProperty($prop) { $l = self::$l10n; switch($prop) { - case 'ADR': - return array( - 'WORK' => $l->t('Work'), - 'HOME' => $l->t('Home'), - ); - case 'TEL': - return array( - 'HOME' => $l->t('Home'), - 'CELL' => $l->t('Mobile'), - 'WORK' => $l->t('Work'), - 'TEXT' => $l->t('Text'), - 'VOICE' => $l->t('Voice'), - 'MSG' => $l->t('Message'), - 'FAX' => $l->t('Fax'), - 'VIDEO' => $l->t('Video'), - 'PAGER' => $l->t('Pager'), - ); - case 'EMAIL': - return array( - 'WORK' => $l->t('Work'), - 'HOME' => $l->t('Home'), - 'INTERNET' => $l->t('Internet'), - ); + case 'ADR': + return array( + 'WORK' => $l->t('Work'), + 'HOME' => $l->t('Home'), + ); + case 'TEL': + return array( + 'HOME' => $l->t('Home'), + 'CELL' => $l->t('Mobile'), + 'WORK' => $l->t('Work'), + 'TEXT' => $l->t('Text'), + 'VOICE' => $l->t('Voice'), + 'MSG' => $l->t('Message'), + 'FAX' => $l->t('Fax'), + 'VIDEO' => $l->t('Video'), + 'PAGER' => $l->t('Pager'), + ); + case 'EMAIL': + return array( + 'WORK' => $l->t('Work'), + 'HOME' => $l->t('Home'), + 'INTERNET' => $l->t('Internet'), + ); } } @@ -142,11 +154,13 @@ class OC_Contacts_App { */ protected static function getVCategories() { if (is_null(self::$categories)) { - self::$categories = new OC_VCategories('contacts', null, self::getDefaultCategories()); + self::$categories = new OC_VCategories('contacts', + null, + self::getDefaultCategories()); } return self::$categories; } - + /** * @brief returns the categories for the user * @return (Array) $categories @@ -183,7 +197,7 @@ class OC_Contacts_App { (string)self::$l10n->t('Work'), ); } - + /** * scan vcards for categories. * @param $vccontacts VCards to scan. null to check all vcards for the current user. @@ -198,14 +212,20 @@ class OC_Contacts_App { } $start = 0; $batchsize = 10; - while($vccontacts = OC_Contacts_VCard::all($vcaddressbookids, $start, $batchsize)){ + while($vccontacts = + OC_Contacts_VCard::all($vcaddressbookids, $start, $batchsize)) { $cards = array(); foreach($vccontacts as $vccontact) { $cards[] = $vccontact['carddata']; } - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', scanning: '.$batchsize.' starting from '.$start, OCP\Util::DEBUG); + OCP\Util::writeLog('contacts', + __CLASS__.'::'.__METHOD__ + .', scanning: '.$batchsize.' starting from '.$start, + OCP\Util::DEBUG); // only reset on first batch. - self::getVCategories()->rescan($cards, true, ($start == 0 ? true : false)); + self::getVCategories()->rescan($cards, + true, + ($start == 0 ? true : false)); $start += $batchsize; } } @@ -220,6 +240,18 @@ class OC_Contacts_App { self::getVCategories()->loadFromVObject($contact, true); } + /** + * @brief Get the last modification time. + * @param $vcard OC_VObject + * $return DateTime | null + */ + public static function lastModified($vcard) { + $rev = $vcard->getAsString('REV'); + if ($rev) { + return DateTime::createFromFormat(DateTime::W3C, $rev); + } + } + public static function setLastModifiedHeader($contact) { $rev = $contact->getAsString('REV'); if ($rev) { diff --git a/apps/contacts/lib/connector_sabre.php b/apps/contacts/lib/connector_sabre.php index 9fcfff08fa..2bc6c9a28c 100644 --- a/apps/contacts/lib/connector_sabre.php +++ b/apps/contacts/lib/connector_sabre.php @@ -40,7 +40,8 @@ class OC_Connector_Sabre_CardDAV extends Sabre_CardDAV_Backend_Abstract { 'uri' => $i['uri'], 'principaluri' => 'principals/'.$i['userid'], '{DAV:}displayname' => $i['displayname'], - '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' => $i['description'], + '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' + => $i['description'], '{http://calendarserver.org/ns/}getctag' => $i['ctag'], ); } @@ -69,7 +70,8 @@ class OC_Connector_Sabre_CardDAV extends Sabre_CardDAV_Backend_Abstract { case '{DAV:}displayname' : $name = $newvalue; break; - case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' : + case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV + . '}addressbook-description' : $description = $newvalue; break; default : @@ -104,16 +106,23 @@ class OC_Connector_Sabre_CardDAV extends Sabre_CardDAV_Backend_Abstract { case '{DAV:}displayname' : $displayname = $newvalue; break; - case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' : + case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV + . '}addressbook-description' : $description = $newvalue; break; default : - throw new Sabre_DAV_Exception_BadRequest('Unknown property: ' . $property); + throw new Sabre_DAV_Exception_BadRequest('Unknown property: ' + . $property); } } - OC_Contacts_Addressbook::addFromDAVData($principaluri, $url, $name, $description); + OC_Contacts_Addressbook::addFromDAVData( + $principaluri, + $url, + $name, + $description + ); } /** @@ -182,7 +191,9 @@ class OC_Connector_Sabre_CardDAV extends Sabre_CardDAV_Backend_Abstract { * @return bool */ public function updateCard($addressbookid, $carduri, $carddata) { - return OC_Contacts_VCard::editFromDAVData($addressbookid, $carduri, $carddata); + return OC_Contacts_VCard::editFromDAVData( + $addressbookid, $carduri, $carddata + ); } /** diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php index ca171e792f..b213bcd762 100644 --- a/apps/contacts/lib/vcard.php +++ b/apps/contacts/lib/vcard.php @@ -79,7 +79,7 @@ class OC_Contacts_VCard{ return false; } } else { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.'. Addressbook id(s) argument is empty: '. $id, OCP\Util::DEBUG); + OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.'. Addressbook id(s) argument is empty: '. print_r($id, true), OCP\Util::DEBUG); return false; } $cards = array(); @@ -129,7 +129,7 @@ class OC_Contacts_VCard{ return $result->fetchRow(); } - /** + /** * @brief Format property TYPE parameters for upgrading from v. 2.1 * @param $property Reference to a Sabre_VObject_Property. * In version 2.1 e.g. a phone can be formatted like: TEL;HOME;CELL:123456789 @@ -145,7 +145,7 @@ class OC_Contacts_VCard{ } } - /** + /** * @brief Decode properties for upgrading from v. 2.1 * @param $property Reference to a Sabre_VObject_Property. * The only encoding allowed in version 3.0 is 'b' for binary. All encoded strings @@ -282,18 +282,19 @@ class OC_Contacts_VCard{ /** * @brief Adds a card - * @param integer $aid Addressbook id - * @param OC_VObject $card vCard file - * @param string $uri the uri of the card, default based on the UID + * @param $aid integer Addressbook id + * @param $card OC_VObject vCard file + * @param $uri string the uri of the card, default based on the UID + * @param $isChecked boolean If the vCard should be checked for validity and version. * @return insertid on success or false. */ - public static function add($aid, OC_VObject $card, $uri=null, $isnew=false){ + public static function add($aid, OC_VObject $card, $uri=null, $isChecked=false){ if(is_null($card)) { OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::add. No vCard supplied', OCP\Util::ERROR); return null; }; - if(!$isnew) { + if(!$isChecked) { OC_Contacts_App::loadCategoriesFromVCard($card); self::updateValuesFromAdd($aid, $card); } diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php index efdf157cd9..f5c8e6fe4b 100644 --- a/apps/contacts/photo.php +++ b/apps/contacts/photo.php @@ -20,14 +20,15 @@ function getStandardImage() { } $id = isset($_GET['id']) ? $_GET['id'] : null; -$caching = isset($_GET['refresh']) ? 0 : null; +$etag = null; +$caching = null; if(is_null($id)) { getStandardImage(); } if(!extension_loaded('gd') || !function_exists('gd_info')) { - OCP\Util::writeLog('contacts', + OCP\Util::writeLog('contacts', 'photo.php. GD module not installed', OCP\Util::DEBUG); getStandardImage(); } @@ -39,25 +40,34 @@ if (!$image) { } // invalid vcard if (is_null($contact)) { - OCP\Util::writeLog('contacts', - 'photo.php. The VCard for ID ' . $id . ' is not RFC compatible', + OCP\Util::writeLog('contacts', + 'photo.php. The VCard for ID ' . $id . ' is not RFC compatible', OCP\Util::ERROR); } else { - OCP\Response::enableCaching($caching); - OC_Contacts_App::setLastModifiedHeader($contact); - // Photo :-) if ($image->loadFromBase64($contact->getAsString('PHOTO'))) { // OK - OCP\Response::setETagHeader(md5($contact->getAsString('PHOTO'))); + $etag = md5($contact->getAsString('PHOTO')); } else // Logo :-/ if ($image->loadFromBase64($contact->getAsString('LOGO'))) { // OK - OCP\Response::setETagHeader(md5($contact->getAsString('LOGO'))); + $etag = md5($contact->getAsString('LOGO')); } if ($image->valid()) { + $modified = OC_Contacts_App::lastModified($contact); + // Force refresh if modified within the last minute. + if(!is_null($modified)) { + $caching = (time() - $modified->format('U') > 60) ? null : 0; + } + OCP\Response::enableCaching($caching); + if(!is_null($modified)) { + OCP\Response::setLastModifiedHeader($modified); + } + if($etag) { + OCP\Response::setETagHeader($etag); + } $max_size = 200; if ($image->width() > $max_size || $image->height() > $max_size) { $image->resize($max_size); diff --git a/apps/contacts/settings.php b/apps/contacts/settings.php index a079499381..5f639399c9 100644 --- a/apps/contacts/settings.php +++ b/apps/contacts/settings.php @@ -3,4 +3,4 @@ $tmpl = new OCP\Template( 'contacts', 'settings'); $tmpl->assign('addressbooks', OC_Contacts_Addressbook::all(OCP\USER::getUser()), false); -return $tmpl->fetchPage(); +$tmpl->printPage(); diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index b2dde12684..024b1d150f 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -11,13 +11,13 @@
    -
    - - + + + + + @@ -32,22 +32,22 @@ echo $this->inc('part.no_contacts'); } ?> -