Moved iTip functionality to libcalendaring for common use + improved inline UI for iTip messages and the options a user can select there

This commit is contained in:
Thomas Bruederli 2014-03-19 15:32:37 +01:00
parent 532662802b
commit 5d49b4850d
36 changed files with 2884 additions and 647 deletions

View file

@ -137,10 +137,12 @@ class calendar extends rcube_plugin
$this->register_action('freebusy-times', array($this, 'freebusy_times'));
$this->register_action('randomdata', array($this, 'generate_randomdata'));
$this->register_action('print', array($this,'print_view'));
$this->register_action('mailimportevent', array($this, 'mail_import_event'));
$this->register_action('mailimportitip', array($this, 'mail_import_event'));
$this->register_action('mailtoevent', array($this, 'mail_message2event'));
$this->register_action('inlineui', array($this, 'get_inline_ui'));
$this->register_action('check-recent', array($this, 'check_recent'));
$this->register_action('itip-status', array($this, 'event_itip_status'));
$this->register_action('itip-remove', array($this, 'event_itip_remove'));
$this->add_hook('refresh', array($this, 'refresh'));
// remove undo information...
@ -227,11 +229,7 @@ class calendar extends rcube_plugin
{
if (!$this->itip) {
require_once($this->home . '/lib/calendar_itip.php');
$plugin = $this->rc->plugins->exec_hook('calendar_load_itip',
array('identity' => null));
$this->itip = new calendar_itip($this, $plugin['identity']);
$this->itip = new calendar_itip($this);
}
return $this->itip;
@ -858,63 +856,6 @@ class calendar extends rcube_plugin
break;
case "rsvp-status":
$action = 'rsvp';
$status = $event['fallback'];
$latest = false;
$html = html::div('rsvp-status', $status != 'CANCELLED' ? $this->gettext('acceptinvitation') : '');
if (is_numeric($event['changed']))
$event['changed'] = new DateTime('@'.$event['changed']);
$this->load_driver();
if ($existing = $this->driver->get_event($event, true, false, true)) {
$latest = ($event['sequence'] && $existing['sequence'] == $event['sequence']) || (!$event['sequence'] && $existing['changed'] && $existing['changed'] >= $event['changed']);
$emails = $this->get_user_emails();
foreach ($existing['attendees'] as $i => $attendee) {
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
$status = $attendee['status'];
break;
}
}
}
else {
// get a list of writeable calendars
$calendars = $this->driver->list_calendars(false, true);
$calendar_select = new html_select(array('name' => 'calendar', 'id' => 'calendar-saveto', 'is_escaped' => true));
$numcals = 0;
foreach ($calendars as $calendar) {
if (!$calendar['readonly']) {
$calendar_select->add($calendar['name'], $calendar['id']);
$numcals++;
}
}
if ($numcals <= 1)
$calendar_select = null;
}
if ($status == 'unknown' && !$this->rc->config->get('calendar_allow_itip_uninvited', true)) {
$html = html::div('rsvp-status', $this->gettext('notanattendee'));
$action = 'import';
}
else if (in_array($status, array('ACCEPTED','TENTATIVE','DECLINED'))) {
$html = html::div('rsvp-status ' . strtolower($status), $this->gettext('youhave'.strtolower($status)));
if ($existing['sequence'] > $event['sequence'] || (!$event['sequence'] && $existing['changed'] && $existing['changed'] > $event['changed'])) {
$action = ''; // nothing to do here, outdated invitation
}
}
$default_calendar = $calendar_select ? $this->get_default_calendar(true) : null;
$this->rc->output->command('plugin.update_event_rsvp_status', array(
'uid' => $event['uid'],
'id' => asciiwords($event['uid'], true),
'saved' => $existing ? true : false,
'latest' => $latest,
'status' => $status,
'action' => $action,
'html' => $html,
'select' => $calendar_select ? html::span('calendar-select', $this->gettext('saveincalendar') . '&nbsp;' . $calendar_select->show($this->rc->config->get('calendar_default_calendar', $default_calendar['id']))) : '',
));
return;
case "rsvp":
$ev = $this->driver->get_event($event);
$ev['attendees'] = $event['attendees'];
@ -1749,6 +1690,8 @@ class calendar extends rcube_plugin
$sent = -100;
}
// TODO: send CANCEL message to remove attendees
return $sent;
}
@ -1966,7 +1909,65 @@ class calendar extends rcube_plugin
/**** Event invitation plugin hooks ****/
/**
* Handler for calendar/itip-status requests
*/
function event_itip_status()
{
$data = get_input_value('data', RCUBE_INPUT_POST, true);
// find local copy of the referenced event
$this->load_driver();
$existing = $this->driver->get_event($data, true, false, true);
$itip = $this->load_itip();
$response = $itip->get_itip_status($data, $existing);
// get a list of writeable calendars to save new events to
if (!$existing && $response['action'] == 'rsvp' || $response['action'] == 'import') {
$calendars = $this->driver->list_calendars(false, true);
$calendar_select = new html_select(array('name' => 'calendar', 'id' => 'itip-saveto', 'is_escaped' => true));
$numcals = 0;
foreach ($calendars as $calendar) {
if (!$calendar['readonly']) {
$calendar_select->add($calendar['name'], $calendar['id']);
$numcals++;
}
}
if ($numcals <= 1)
$calendar_select = null;
}
if ($calendar_select) {
$default_calendar = $this->get_default_calendar(true);
$response['select'] = html::span('folder-select', $this->gettext('saveincalendar') . '&nbsp;' .
$calendar_select->show($this->rc->config->get('calendar_default_calendar', $default_calendar['id'])));
}
$this->rc->output->command('plugin.update_itip_object_status', $response);
}
/**
* Handler for calendar/itip-remove requests
*/
function event_itip_remove()
{
$success = false;
// search for event if only UID is given
if ($event = $this->driver->get_event(array('uid' => get_input_value('uid', RCUBE_INPUT_POST)), true)) {
$success = $this->driver->remove_event($event, true);
}
if ($success) {
$this->rc->output->show_message('calendar.successremoval', 'confirmation');
}
else {
$this->rc->output->show_message('calendar.errorsaving', 'error');
}
}
/**
* Handler for URLs that allow an invitee to respond on his invitation mail
*/
@ -2079,13 +2080,13 @@ class calendar extends rcube_plugin
$this->get_ical();
}
$this->load_itip();
$html = '';
foreach ($this->ics_parts as $mime_id) {
$part = $this->message->mime_parts[$mime_id];
$charset = $part->ctype_parameters['charset'] ? $part->ctype_parameters['charset'] : RCMAIL_CHARSET;
$events = $this->ical->import($this->message->get_part_content($mime_id), $charset);
$title = $this->gettext('title');
$date = rcube_utils::anytodatetime($this->message->headers->date);
// successfully parsed events?
if (empty($events))
@ -2096,104 +2097,17 @@ class calendar extends rcube_plugin
if ($event['_type'] != 'event') // skip non-event objects (#2928)
continue;
// define buttons according to method
if ($this->ical->method == 'REPLY') {
$title = $this->gettext('itipreply');
$buttons = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_calendar.add_event_from_mail('" . JQ($mime_id.':'.$idx) . "')",
'value' => $this->gettext('updateattendeestatus'),
));
}
else if ($this->ical->method == 'REQUEST') {
$emails = $this->get_user_emails();
$title = $event['sequence'] > 0 ? $this->gettext('itipupdate') : $this->gettext('itipinvitation');
// add (hidden) buttons and activate them from asyncronous request
foreach (array('accepted','tentative','declined') as $method) {
$rsvp_buttons .= html::tag('input', array(
'type' => 'button',
'class' => "button $method",
'onclick' => "rcube_calendar.add_event_from_mail('" . JQ($mime_id.':'.$idx) . "', '$method')",
'value' => $this->gettext('itip' . $method),
));
}
$import_button = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_calendar.add_event_from_mail('" . JQ($mime_id.':'.$idx) . "')",
'value' => $this->gettext('importtocalendar'),
));
// check my status
$status = 'unknown';
foreach ($event['attendees'] as $attendee) {
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
$status = strtoupper($attendee['status']);
break;
}
}
// get prepared inline UI for this event object
$html .= html::div('calendar-invitebox',
$this->itip->mail_itip_inline_ui(
$event,
$this->ical->method,
$mime_id.':'.$idx,
'calendar',
rcube_utils::anytodatetime($this->message->headers->date)
)
);
$dom_id = asciiwords($event['uid'], true);
$buttons = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $rsvp_buttons);
$buttons .= html::div(array('id' => 'import-'.$dom_id, 'style' => 'display:none'), $import_button);
$buttons_pre = html::div(array('id' => 'loading-'.$dom_id, 'class' => 'rsvp-status loading'), $this->gettext('loading'));
$changed = is_object($event['changed']) ? $event['changed'] : $date;
$script = json_serialize(array(
'uid' => $event['uid'],
'changed' => $changed ? $changed->format('U') : 0,
'sequence' => intval($event['sequence']),
'fallback' => $status,
));
$this->rc->output->add_script("rcube_calendar.fetch_event_rsvp_status($script)", 'docready');
}
else if ($this->ical->method == 'CANCEL') {
$title = $this->gettext('itipcancellation');
// create buttons to be activated from async request checking existence of this event in local calendars
$button_import = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_calendar.add_event_from_mail('" . JQ($mime_id.':'.$idx) . "')",
'value' => $this->gettext('importtocalendar'),
));
$button_remove = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_calendar.remove_event_from_mail('" . JQ($event['uid']) . "', '" . JQ($event['title']) . "')",
'value' => $this->gettext('removefromcalendar'),
));
$dom_id = asciiwords($event['uid'], true);
$buttons = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $button_remove);
$buttons .= html::div(array('id' => 'import-'.$dom_id, 'style' => 'display:none'), $button_import);
$buttons_pre = html::div(array('id' => 'loading-'.$dom_id, 'class' => 'rsvp-status loading'), $this->gettext('loading'));
$changed = is_object($event['changed']) ? $event['changed'] : $date;
$script = json_serialize(array(
'uid' => $event['uid'],
'changed' => $changed ? $changed->format('U') : 0,
'sequence' => intval($event['sequence']),
'fallback' => 'CANCELLED',
));
$this->rc->output->add_script("rcube_calendar.fetch_event_rsvp_status($script)", 'docready');
}
else {
$buttons = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_calendar.add_event_from_mail('" . JQ($mime_id.':'.$idx) . "')",
'value' => $this->gettext('importtocalendar'),
));
}
// show event details with buttons
$html .= html::div('calendar-invitebox', $this->ui->event_details_table($event, $title) . $buttons_pre . html::div('rsvp-buttons', $buttons));
// limit listing
if ($idx >= 3)
break;
@ -2243,10 +2157,19 @@ class calendar extends rcube_plugin
// successfully parsed events?
if (!empty($events) && ($event = $events[$index])) {
// find writeable calendar to store event
$cal_id = !empty($_REQUEST['_calendar']) ? get_input_value('_calendar', RCUBE_INPUT_POST) : null;
$cal_id = !empty($_REQUEST['_folder']) ? get_input_value('_folder', RCUBE_INPUT_POST) : null;
$calendars = $this->driver->list_calendars(false, true);
$calendar = $calendars[$cal_id] ?: $this->get_default_calendar(true);
$metadata = array(
'uid' => $event['uid'],
'changed' => is_object($event['changed']) ? $event['changed']->format('U') : 0,
'sequence' => intval($event['sequence']),
'fallback' => strtoupper($status),
'method' => $this->ical->method,
'task' => 'calendar',
);
// update my attendee status according to submitted method
if (!empty($status)) {
$organizer = null;
@ -2257,6 +2180,8 @@ class calendar extends rcube_plugin
}
else if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
$event['attendees'][$i]['status'] = strtoupper($status);
$metadata['attendee'] = $attendee['email'];
$metadata['rsvp'] = $attendee['rsvp'] || $attendee['role'] != 'NON-PARTICIPANT';
$reply_sender = $attendee['email'];
}
}
@ -2270,6 +2195,7 @@ class calendar extends rcube_plugin
'role' => 'OPT-PARTICIPANT',
'status' => strtoupper($status),
);
$metadata['attendee'] = $sender_identity['email'];
}
}
@ -2298,6 +2224,9 @@ class calendar extends rcube_plugin
foreach ($event['attendees'] as $attendee) {
if ($sender && ($attendee['email'] == $sender || $attendee['email'] == $sender_utf)) {
$event_attendee = $attendee;
$metadata['fallback'] = $attendee['status'];
$metadata['attendee'] = $attendee['email'];
$metadata['rsvp'] = $attendee['rsvp'] || $attendee['role'] != 'NON-PARTICIPANT';
break;
}
}
@ -2325,7 +2254,7 @@ class calendar extends rcube_plugin
else if ($event['sequence'] >= $existing['sequence'] || $event['changed'] >= $existing['changed']) {
$event['id'] = $existing['id'];
$event['calendar'] = $existing['calendar'];
if ($status == 'declined') // show me as free when declined (#1670)
if ($status == 'declined' || $event['status'] == 'CANCELLED') // show me as free when declined (#1670)
$event['free_busy'] = 'free';
$success = $this->driver->edit_event($event);
}
@ -2353,12 +2282,9 @@ class calendar extends rcube_plugin
if ($success) {
$message = $this->ical->method == 'REPLY' ? 'attendeupdateesuccess' : ($deleted ? 'successremoval' : 'importedsuccessfully');
$this->rc->output->command('display_message', $this->gettext(array('name' => $message, 'vars' => array('calendar' => $calendar['name']))), 'confirmation');
$this->rc->output->command('plugin.fetch_event_rsvp_status', array(
'uid' => $event['uid'],
'changed' => is_object($event['changed']) ? $event['changed']->format('U') : 0,
'sequence' => intval($event['sequence']),
'fallback' => strtoupper($status),
));
$metadata['rsvp'] = intval($metadata['rsvp']);
$this->rc->output->command('plugin.fetch_itip_object_status', $metadata);
$error_msg = null;
}
else if ($error_msg)
@ -2462,19 +2388,7 @@ class calendar extends rcube_plugin
*/
private function get_user_emails()
{
$emails = array();
$plugin = $this->rc->plugins->exec_hook('calendar_user_emails', array('emails' => $emails));
$emails = array_map('strtolower', $plugin['emails']);
if ($plugin['abort']) {
return $emails;
}
$emails[] = $this->rc->user->get_username();
foreach ($this->rc->user->list_identities() as $identity)
$emails[] = strtolower($identity['email']);
return array_unique($emails);
return $this->lib->get_user_emails();
}

View file

@ -77,82 +77,12 @@ function rcube_calendar(settings)
};
}
// static methods
rcube_calendar.add_event_from_mail = function(mime_id, status)
{
// ask user to delete the declined event from the local calendar (#1670)
var del = false;
if (rcmail.env.rsvp_saved && status == 'declined') {
del = confirm(rcmail.gettext('calendar.declinedeleteconfirm'));
}
var lock = rcmail.set_busy(true, 'calendar.savingdata');
rcmail.http_post('calendar/mailimportevent', {
'_uid': rcmail.env.uid,
'_mbox': rcmail.env.mailbox,
'_part': mime_id,
'_calendar': $('#calendar-saveto').val(),
'_status': status,
'_del': del?1:0
}, lock);
return false;
};
rcube_calendar.remove_event_from_mail = function(uid, title)
{
if (confirm(rcmail.gettext('calendar.deleteventconfirm'))) {
var lock = rcmail.set_busy(true, 'calendar.savingdata');
rcmail.http_post('calendar/event', {
e:{ uid:uid },
action: 'remove'
}, lock);
}
};
rcube_calendar.fetch_event_rsvp_status = function(event)
{
/*
var id = event.uid.replace(rcmail.identifier_expr, '');
$('#import-'+id+', #rsvp-'+id+', div.rsvp-status').hide();
$('#loading-'+id).show();
*/
rcmail.http_post('calendar/event', {
e:event,
action:'rsvp-status'
});
};
/* calendar plugin initialization (for non-calendar tasks) */
window.rcmail && rcmail.addEventListener('init', function(evt) {
if (rcmail.task != 'calendar') {
var cal = new rcube_calendar($.extend(rcmail.env.calendar_settings, rcmail.env.libcal_settings));
rcmail.addEventListener('plugin.update_event_rsvp_status', function(p){
rcmail.env.rsvp_saved = p.saved;
if (p.html) {
// append/replace rsvp status display
$('#loading-'+p.id).next('.rsvp-status').remove();
$('#loading-'+p.id).hide().after(p.html);
}
else {
$('#loading-'+p.id).hide();
}
// enable/disable rsvp buttons
$('.rsvp-buttons input.button').prop('disabled', false)
.filter('.'+String(p.status).toLowerCase()).prop('disabled', p.latest);
// show rsvp/import buttons with or without calendar selector
if (!p.select)
$('#rsvp-'+p.id+' .calendar-select').remove();
$('#'+p.action+'-'+p.id).show().append(p.select);
});
rcmail.addEventListener('plugin.fetch_event_rsvp_status', rcube_calendar.fetch_event_rsvp_status);
// register create-from-mail command to message_commands array
if (rcmail.env.task == 'mail') {
rcmail.register_command('calendar-create-from-mail', function() { cal.create_from_mail() });

View file

@ -1,5 +1,7 @@
<?php
require_once realpath(__DIR__ . '/../../libcalendaring/lib/libcalendaring_itip.php');
/**
* iTIP functions for the Calendar plugin
*
@ -24,188 +26,16 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class calendar_itip
class calendar_itip extends libcalendaring_itip
{
private $rc;
private $cal;
private $sender;
private $itip_send = false;
function __construct($cal, $identity = null)
{
$this->cal = $cal;
$this->rc = $cal->rc;
$this->sender = $identity ? $identity : $this->rc->user->get_identity();
$this->cal->add_hook('message_before_send', array($this, 'before_send_hook'));
$this->cal->add_hook('smtp_connect', array($this, 'smtp_connect_hook'));
}
function set_sender_email($email)
{
if (!empty($email))
$this->sender['email'] = $email;
}
/**
* Send an iTip mail message
*
* @param array Event object to send
* @param string iTip method (REQUEST|REPLY|CANCEL)
* @param array Hash array with recipient data (name, email)
* @param string Mail subject
* @param string Mail body text label
* @param object Mail_mime object with message data
* @return boolean True on success, false on failure
* Constructor to set text domain to calendar
*/
public function send_itip_message($event, $method, $recipient, $subject, $bodytext, $message = null)
function __construct($plugin, $domain = 'calendar')
{
if (!$this->sender['name'])
$this->sender['name'] = $this->sender['email'];
if (!$message)
$message = $this->compose_itip_message($event, $method);
$mailto = rcube_idn_to_ascii($recipient['email']);
$headers = $message->headers();
$headers['To'] = format_email_recipient($mailto, $recipient['name']);
$headers['Subject'] = $this->cal->gettext(array(
'name' => $subject,
'vars' => array('title' => $event['title'], 'name' => $this->sender['name'])
));
// compose a list of all event attendees
$attendees_list = array();
foreach ((array)$event['attendees'] as $attendee) {
$attendees_list[] = ($attendee['name'] && $attendee['email']) ?
$attendee['name'] . ' <' . $attendee['email'] . '>' :
($attendee['name'] ? $attendee['name'] : $attendee['email']);
}
$mailbody = $this->cal->gettext(array(
'name' => $bodytext,
'vars' => array(
'title' => $event['title'],
'date' => $this->cal->lib->event_date_text($event, true),
'attendees' => join(', ', $attendees_list),
'sender' => $this->sender['name'],
'organizer' => $this->sender['name'],
)
));
// append links for direct invitation replies
if ($method == 'REQUEST' && ($token = $this->store_invitation($event, $recipient['email']))) {
$mailbody .= "\n\n" . $this->cal->gettext(array(
'name' => 'invitationattendlinks',
'vars' => array('url' => $this->cal->get_url(array('action' => 'attend', 't' => $token))),
));
}
else if ($method == 'CANCEL') {
$this->cancel_itip_invitation($event);
}
$message->headers($headers, true);
$message->setTXTBody(rcube_mime::format_flowed($mailbody, 79));
// finally send the message
$this->itip_send = true;
$sent = $this->rc->deliver_message($message, $headers['X-Sender'], $mailto, $smtp_error);
$this->itip_send = false;
return $sent;
parent::__construct($plugin, $domain);
}
/**
* Plugin hook triggered by rcube::deliver_message() before delivering a message.
* Here we can set the 'smtp_server' config option to '' in order to use
* PHP's mail() function for unauthenticated email sending.
*/
public function before_send_hook($p)
{
if ($this->itip_send && !$this->rc->user->ID && $this->rc->config->get('calendar_itip_smtp_server', null) === '') {
$this->rc->config->set('smtp_server', '');
}
return $p;
}
/**
* Plugin hook to alter SMTP authentication.
* This is used if iTip messages are to be sent from an unauthenticated session
*/
public function smtp_connect_hook($p)
{
// replace smtp auth settings if we're not in an authenticated session
if ($this->itip_send && !$this->rc->user->ID) {
foreach (array('smtp_server', 'smtp_user', 'smtp_pass') as $prop) {
$p[$prop] = $this->rc->config->get("calendar_itip_$prop", $p[$prop]);
}
}
return $p;
}
/**
* Helper function to build a Mail_mime object to send an iTip message
*
* @param array Event object to send
* @param string iTip method (REQUEST|REPLY|CANCEL)
* @return object Mail_mime object with message data
*/
public function compose_itip_message($event, $method)
{
$from = rcube_idn_to_ascii($this->sender['email']);
$from_utf = rcube_idn_to_utf8($from);
$sender = format_email_recipient($from, $this->sender['name']);
// truncate list attendees down to the recipient of the iTip Reply.
// constraints for a METHOD:REPLY according to RFC 5546
if ($method == 'REPLY') {
$replying_attendee = null; $reply_attendees = array();
foreach ($event['attendees'] as $attendee) {
if ($attendee['role'] == 'ORGANIZER') {
$reply_attendees[] = $attendee;
}
else if (strcasecmp($attedee['email'], $from) == 0 || strcasecmp($attendee['email'], $from_utf) == 0) {
$replying_attendee = $attendee;
}
}
if ($replying_attendee) {
$reply_attendees[] = $replying_attendee;
$event['attendees'] = $reply_attendees;
}
}
// compose multipart message using PEAR:Mail_Mime
$message = new Mail_mime("\r\n");
$message->setParam('text_encoding', 'quoted-printable');
$message->setParam('head_encoding', 'quoted-printable');
$message->setParam('head_charset', RCMAIL_CHARSET);
$message->setParam('text_charset', RCMAIL_CHARSET . ";\r\n format=flowed");
$message->setContentType('multipart/alternative');
// compose common headers array
$headers = array(
'From' => $sender,
'Date' => $this->rc->user_date(),
'Message-ID' => $this->rc->gen_message_id(),
'X-Sender' => $from,
);
if ($agent = $this->rc->config->get('useragent'))
$headers['User-Agent'] = $agent;
$message->headers($headers);
// attach ics file for this event
$ical = $this->cal->get_ical();
$ics = $ical->export(array($event), $method, false, $method == 'REQUEST' ? array($this->cal->driver, 'get_attachment_body') : false);
$message->addAttachment($ics, 'text/calendar', 'event.ics', false, '8bit', '', RCMAIL_CHARSET . "; method=" . $method);
return $message;
}
/**
* Find invitation record by token
*
@ -259,9 +89,9 @@ class calendar_itip
if ($organizer) {
$status = strtolower($newstatus);
if ($this->send_itip_message($invitation['event'], 'REPLY', $organizer, 'itipsubject' . $status, 'itipmailbody' . $status))
$this->rc->output->command('display_message', $this->cal->gettext(array('name' => 'sentresponseto', 'vars' => array('mailto' => $organizer['name'] ? $organizer['name'] : $organizer['email']))), 'confirmation');
$this->rc->output->command('display_message', $this->plugin->gettext(array('name' => 'sentresponseto', 'vars' => array('mailto' => $organizer['name'] ? $organizer['name'] : $organizer['email']))), 'confirmation');
else
$this->rc->output->command('display_message', $this->cal->gettext('itipresponseerror'), 'error');
$this->rc->output->command('display_message', $this->plugin->gettext('itipresponseerror'), 'error');
}
// update record in DB

View file

@ -785,24 +785,6 @@ class calendar_ui
return $table->show($attrib);
}
/**
* Render event details in a table
*/
function event_details_table($event, $title)
{
$table = new html_table(array('cols' => 2, 'border' => 0, 'class' => 'calendar-eventdetails'));
$table->add('ititle', $title);
$table->add('title', Q($event['title']));
$table->add('label', $this->cal->gettext('date'));
$table->add('location', Q($this->cal->lib->event_date_text($event)));
if ($event['location']) {
$table->add('label', $this->cal->gettext('location'));
$table->add('location', Q($event['location']));
}
return $table->show();
}
/**
*
*/
@ -810,7 +792,7 @@ class calendar_ui
{
if ($this->cal->event) {
return html::div($attrib,
$this->event_details_table($this->cal->event, $this->cal->gettext('itipinvitation')) .
$this->cal->load_itip()->itip_object_details_table($this->cal->event, $this->cal->gettext('itipinvitation')) .
$this->cal->invitestatus
);
}

View file

@ -1,7 +1,11 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Изглед по подразбиране';
$labels['time_format'] = 'Формат на часовете';
$labels['timeslots'] = 'Полета на час';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Първи ден от седмицата';
$labels['first_hour'] = 'Първи час при показване';
$labels['workinghours'] = 'Работни часове';
@ -13,6 +17,8 @@ $labels['coloringmode0'] = 'Според календара';
$labels['coloringmode1'] = 'Относно категорията';
$labels['coloringmode2'] = 'Календар за очертание, категория за съдържание';
$labels['coloringmode3'] = 'Категория за очертание, календар за съдържание';
// calendar
$labels['calendar'] = 'Календар';
$labels['calendars'] = 'Календари';
$labels['category'] = 'Категория';
@ -40,7 +46,11 @@ $labels['description'] = 'Описание';
$labels['all-day'] = 'цял ден';
$labels['export'] = 'Извличане';
$labels['exporttitle'] = 'Извличане към iCalendar';
$labels['exportrange'] = 'Събития от';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Местоположение';
$labels['url'] = 'URL';
$labels['date'] = 'Дата';
$labels['start'] = 'Начало';
$labels['end'] = 'Край';
@ -62,6 +72,7 @@ $labels['parentcalendar'] = 'Внасяне вътре';
$labels['searchearlierdates'] = '« Търсене за по- стари събития';
$labels['searchlaterdates'] = 'Търсене за по- нови събития »';
$labels['andnmore'] = '$nr повече...';
$labels['togglerole'] = 'Click to toggle role';
$labels['createfrommail'] = 'Запазване като събитие';
$labels['importevents'] = 'Внасяне на събития';
$labels['importrange'] = 'Събития от';
@ -69,6 +80,9 @@ $labels['onemonthback'] = '1 месец назад';
$labels['nmonthsback'] = '$nr месеца назад';
$labels['showurl'] = 'Показване на URL на календара';
$labels['showurldescription'] = 'Използвайте следния адрес, за да достъпвате (само за четене) вашия календар от други приложения. Можете да копирате и поставяте това във всеки календарен софтуер, поддържащ форматът iCal';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Оразмеряване към екран:';
$labels['listsections'] = 'Разделяне на:';
$labels['smartsections'] = 'Интелигентни секции';
@ -82,26 +96,140 @@ $labels['nextmonth'] = 'Следващия месец';
$labels['weekofyear'] = 'Седмица';
$labels['pastevents'] = 'Минали';
$labels['futureevents'] = 'Бъдещи';
$labels['showalarms'] = 'Показване на аларми';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Настройка за напомняне по подразбиране';
$labels['defaultalarmoffset'] = 'Време за напомняне по подразбиране';
// attendees
$labels['attendee'] = 'Участник';
$labels['role'] = 'Роля';
$labels['availability'] = 'Avail.';
$labels['confirmstate'] = 'Статус';
$labels['addattendee'] = 'Добавяне на участник';
$labels['roleorganizer'] = 'Организатор';
$labels['rolerequired'] = 'Задължителен';
$labels['roleoptional'] = 'По избор';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Group';
$labels['cutyperesource'] = 'Resource';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Свободно';
$labels['availbusy'] = 'Заето';
$labels['availunknown'] = 'Неизвестно';
$labels['availtentative'] = 'Предварително';
$labels['availoutofoffice'] = 'Извън офиса';
$labels['scheduletime'] = 'Find availability';
$labels['sendinvitations'] = 'Изпращане на покани';
$labels['sendnotifications'] = 'Известяване на участниците относно промените';
$labels['sendcancellation'] = 'Известяване на участниците относно отмяна на събития';
$labels['onlyworkinghours'] = 'Find availability within my working hours';
$labels['reqallattendees'] = 'Required/all participants';
$labels['prevslot'] = 'Previous Slot';
$labels['nextslot'] = 'Next Slot';
$labels['noslotfound'] = 'Unable to find a free time slot';
$labels['invitationsubject'] = 'You\'ve been invited to "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with all the event details which you can import to your calendar application.";
$labels['invitationattendlinks'] = "In case your email client doesn't support iTip requests you can use the following link to either accept or decline this invitation:\n\$url";
$labels['eventupdatesubject'] = '"$title" has been updated';
$labels['eventupdatesubjectempty'] = 'An event that concerns you has been updated';
$labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with the updated event details which you can import to your calendar application.";
$labels['eventcancelsubject'] = '"$title" has been canceled';
$labels['eventcancelmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nThe event has been cancelled by \$organizer.\n\nPlease find attached an iCalendar file with the updated event details.";
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender has accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender has tentatively accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender has declined the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipdeclineevent'] = 'Искате ли да отхвърлите поканата за това събитие?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'запазване в';
// event dialog tabs
$labels['tabsummary'] = 'Заглавие';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Участници';
$labels['tabattachments'] = 'Прикрепени файлове';
$labels['tabsharing'] = 'Споделяне';
// messages
$labels['deleteventconfirm'] = 'Наистина ли искате да премахнете това събитие?';
$labels['deletecalendarconfirm'] = 'Наистина ли искате да премахнете този календар с всичките му събития?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Запазване на данни...';
$labels['errorsaving'] = 'Неуспешно записването на промените.';
$labels['operationfailed'] = 'The requested operation failed.';
$labels['invalideventdates'] = 'Invalid dates entered! Please check your input.';
$labels['invalidcalendarproperties'] = 'Invalid calendar properties! Please set a valid name.';
$labels['searchnoresults'] = 'No events found in the selected calendars.';
$labels['successremoval'] = 'The event has been deleted successfully.';
$labels['successrestore'] = 'The event has been restored successfully.';
$labels['errornotifying'] = 'Failed to send notifications to event participants';
$labels['errorimportingevent'] = 'Failed to import the event';
$labels['newerversionexists'] = 'A newer version of this event already exists! Aborted.';
$labels['nowritecalendarfound'] = 'No calendar found to save the event';
$labels['importedsuccessfully'] = 'The event was successfully added to \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Successfully updated the participant\'s status';
$labels['itipsendsuccess'] = 'Invitation sent to participants.';
$labels['itipresponseerror'] = 'Failed to send the response to this event invitation';
$labels['itipinvalidrequest'] = 'This invitation is no longer valid';
$labels['sentresponseto'] = 'Successfully sent invitation response to $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Successfully imported $nr events';
$labels['importnone'] = 'No events found to be imported';
$labels['importerror'] = 'An error occured while importing';
$labels['aclnorights'] = 'You do not have administrator rights on this calendar.';
// recurrence form
$labels['repeat'] = 'Repeat';
$labels['frequency'] = 'Repeat';
$labels['never'] = 'never';
$labels['daily'] = 'daily';
$labels['weekly'] = 'weekly';
$labels['monthly'] = 'monthly';
$labels['yearly'] = 'annually';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Every';
$labels['days'] = 'day(s)';
$labels['weeks'] = 'week(s)';
$labels['months'] = 'month(s)';
$labels['years'] = 'year(s) in:';
$labels['bydays'] = 'On';
$labels['untildate'] = 'the';
$labels['each'] = 'Each';
$labels['onevery'] = 'On every';
$labels['onsamedate'] = 'On the same date';
$labels['forever'] = 'forever';
$labels['recurrencend'] = 'до';
$labels['forntimes'] = 'for $nr time(s)';
$labels['first'] = 'first';
$labels['second'] = 'second';
$labels['third'] = 'third';
$labels['fourth'] = 'fourth';
$labels['last'] = 'last';
$labels['dayofmonth'] = 'Day of month';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Remove event';
$labels['changerecurringeventwarning'] = 'This is a recurring event. Would you like to edit the current event only, this and all future occurences, all occurences or save it as a new event?';
$labels['removerecurringeventwarning'] = 'This is a recurring event. Would you like to remove the current event only, this and all future occurences or all occurences of this event?';
$labels['currentevent'] = 'Current';
$labels['futurevents'] = 'Бъдещи';
$labels['allevents'] = 'All';
$labels['saveasnew'] = 'Save as new';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,7 +1,11 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Výchozí pohled';
$labels['time_format'] = 'Formát data';
$labels['timeslots'] = 'Slotů na hodinu';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'První den v týdnu';
$labels['first_hour'] = 'První hodina k zobrazení';
$labels['workinghours'] = 'Pracovní hodiny';
@ -13,6 +17,8 @@ $labels['coloringmode0'] = 'Podle kalendáře';
$labels['coloringmode1'] = 'Podle kategorie';
$labels['coloringmode2'] = 'Kalendář pro orámování, kategorie pro obsah';
$labels['coloringmode3'] = 'Kategorie pro orámování, kalendář pro obsah';
// calendar
$labels['calendar'] = 'Kalendář';
$labels['calendars'] = 'Kalendáře';
$labels['category'] = 'Kategorie';
@ -40,7 +46,11 @@ $labels['description'] = 'Popis';
$labels['all-day'] = 'celý den';
$labels['export'] = 'Exportovat do ICS';
$labels['exporttitle'] = 'Exportovat souhrn do ICS';
$labels['exportrange'] = 'Události od';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Místo';
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Začátek';
$labels['end'] = 'Konec';
@ -70,6 +80,9 @@ $labels['onemonthback'] = '1 měsíc nazpátek';
$labels['nmonthsback'] = '$nr měsíců nazpátek';
$labels['showurl'] = 'Ukázat URL kalendáře';
$labels['showurldescription'] = 'Tuto adresu použijte pro přístup (jen ke čtení) ke kalendáři z jiných aplikací. Můžete ji zkopírovat a vložit do jakéhokoli kalendářového softwaru, který podporuje formát iCal.';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Rozsah k zobrazení:';
$labels['listsections'] = 'Rozdělit na:';
$labels['smartsections'] = 'Chytré sekce';
@ -83,9 +96,13 @@ $labels['nextmonth'] = 'Příští měsíc';
$labels['weekofyear'] = 'Týden';
$labels['pastevents'] = 'Minulost';
$labels['futureevents'] = 'Budoucnost';
$labels['showalarms'] = 'Zobrazit upozornění';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Výchozí nastavení připomenutí';
$labels['defaultalarmoffset'] = 'Výchozí čas připomenutí';
// attendees
$labels['attendee'] = 'Účastník';
$labels['role'] = 'Role';
$labels['availability'] = 'Dost.';
@ -94,6 +111,12 @@ $labels['addattendee'] = 'Přidat účastníka';
$labels['roleorganizer'] = 'Organizátor';
$labels['rolerequired'] = 'Povinný';
$labels['roleoptional'] = 'Nepovinný';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Group';
$labels['cutyperesource'] = 'Prostředek';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'volno';
$labels['availbusy'] = 'obsazeno';
$labels['availunknown'] = 'neznámý';
@ -116,37 +139,28 @@ $labels['eventupdatesubjectempty'] = 'Událost, která se vás týká, byla aktu
$labels['eventupdatemailbody'] = "*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees\n\nPodrobnosti o aktualizované události najdete v přiloženém souboru typu iCalendar. Můžete si ho naimportovat do kalendářového programu.";
$labels['eventcancelsubject'] = 'Událost "$title" byla zrušena';
$labels['eventcancelmailbody'] = "*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees\n\nUdálost byla zrušena organizátorem (\$organizer).\n\nPodrobnosti najdete v přiloženém souboru ve formátu iCalendar.";
$labels['itipinvitation'] = 'Pozvání na událost';
$labels['itipupdate'] = 'Aktualizace události';
$labels['itipcancellation'] = 'Zrušeno:';
$labels['itipreply'] = 'Odpověď na';
$labels['itipaccepted'] = 'Potvrdit';
$labels['itiptentative'] = 'Možná';
$labels['itipdeclined'] = 'Odmítnout';
$labels['itipsubjectaccepted'] = '$name potvrdil(a) účas na události "$title"';
$labels['itipsubjecttentative'] = '$name nezávazně potvrdil(a) účast na události "$title"';
$labels['itipsubjectdeclined'] = '$name odmítl(a) účast na události "$title"';
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender přijal(a) pozvání na tuto událost:\n\n*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees";
$labels['itipmailbodytentative'] = "\$sender nezávazně přijal(a) pozvání na tuto událost:\n\n*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender odmítl(a) pozvání na tuto událost:\n\n*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees";
$labels['itipdeclineevent'] = 'Opravdu chcete odmítnout pozvání na tuto událost?';
$labels['importtocalendar'] = 'Uložit do kalendáře';
$labels['removefromcalendar'] = 'Odstranit z kalendáře';
$labels['updateattendeestatus'] = 'Aktualizovat stav účastníka';
$labels['acceptinvitation'] = 'Chcete přijmout toto pozvání (potvrdit účast)?';
$labels['youhaveaccepted'] = 'Přijal(a) jste toto pozvání';
$labels['youhavetentative'] = 'Nezávazně jste přijal(a) toto pozvání';
$labels['youhavedeclined'] = 'Odmítl(a) jste toto pozvání';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['notanattendee'] = 'Nejste na seznamu účastníků této události';
$labels['eventcancelled'] = 'Tato událost byla zrušena';
$labels['saveincalendar'] = 'uložit do';
// event dialog tabs
$labels['tabsummary'] = 'Souhrn';
$labels['tabrecurrence'] = 'Opakování';
$labels['tabattendees'] = 'Účastníci';
$labels['tabattachments'] = 'Přílohy';
$labels['tabsharing'] = 'Sdílení';
// messages
$labels['deleteventconfirm'] = 'Opravdu chcete smazat tuto událost?';
$labels['deletecalendarconfirm'] = 'Opravdu chcete smazat tento kalendář se všemi událostmi?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Ukládám data...';
$labels['errorsaving'] = 'Nelze uložit změny.';
$labels['operationfailed'] = 'Požavovaná operace selhala.';
@ -165,10 +179,13 @@ $labels['itipsendsuccess'] = 'Pozvánky byly rozeslány účastníkům.';
$labels['itipresponseerror'] = 'Nelze odeslat odpověď na tuto pozvánku';
$labels['itipinvalidrequest'] = 'Tato pozvánka již není platná';
$labels['sentresponseto'] = 'Odpověď na pozvánku byla úspěšně odeslána na adresu $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Úspěšně importováno $nr událostí';
$labels['importnone'] = 'Nebyly nalezeny žádné události k importu';
$labels['importerror'] = 'Při importu došlo k chybě';
$labels['aclnorights'] = 'Nemáte administrátorská práva k tomuto kalendáři.';
// recurrence form
$labels['repeat'] = 'Opakování';
$labels['frequency'] = 'Opakovat';
$labels['never'] = 'nikdy';
@ -176,11 +193,13 @@ $labels['daily'] = 'denně';
$labels['weekly'] = 'týdně';
$labels['monthly'] = 'měsíčně';
$labels['yearly'] = 'ročně';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Každý';
$labels['days'] = 'den (dny)';
$labels['weeks'] = 'týden (týdny)';
$labels['months'] = 'měsíc(e/ů)';
$labels['years'] = 'rok(y/ů) v:';
$labels['bydays'] = 'On';
$labels['untildate'] = 'do';
$labels['each'] = 'Každý';
$labels['onevery'] = 'Vždy v';
@ -194,6 +213,8 @@ $labels['third'] = 'třetí';
$labels['fourth'] = 'čtvrtý';
$labels['last'] = 'poslední';
$labels['dayofmonth'] = 'Den v měsíci';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Změnit událost';
$labels['removeeventconfirm'] = 'Odstranit událost';
$labels['changerecurringeventwarning'] = 'Toto je opakovaná událost. Chcete upravit jen toto konání, toto a všechna následující konání, úplně všechna konání nebo uložit událost jako novou?';
@ -202,4 +223,13 @@ $labels['currentevent'] = 'Aktuální';
$labels['futurevents'] = 'Budoucí';
$labels['allevents'] = 'Všechny';
$labels['saveasnew'] = 'Uložit jako novou';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,7 +1,11 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Ansicht';
$labels['time_format'] = 'Zeitformatierung';
$labels['timeslots'] = 'Zeitraster pro Stunde';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Erster Wochentag';
$labels['first_hour'] = 'Erste angezeigte Stunde';
$labels['workinghours'] = 'Arbeitszeiten';
@ -13,6 +17,8 @@ $labels['coloringmode0'] = 'Farbe des Kalenders';
$labels['coloringmode1'] = 'Farbe der Kategorie';
$labels['coloringmode2'] = 'Kalenderfarbe aussen, Kategoriefarbe innen';
$labels['coloringmode3'] = 'Kategoriefarbe aussen, Kalenderfarbe innen';
// calendar
$labels['calendar'] = 'Kalender';
$labels['calendars'] = 'Kalender';
$labels['category'] = 'Kategorie';
@ -41,9 +47,10 @@ $labels['all-day'] = 'ganztägig';
$labels['export'] = 'Exportieren';
$labels['exporttitle'] = 'Kalender als iCalendar exportieren';
$labels['exportrange'] = 'Termine ab';
$labels['exportattachments'] = 'Mit Anhängen';
$labels['customdate'] = 'Eigenes Datum';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Ort';
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Beginn';
$labels['end'] = 'Ende';
@ -73,6 +80,9 @@ $labels['onemonthback'] = '1 Monat zurück';
$labels['nmonthsback'] = '$nr Monate zurück';
$labels['showurl'] = 'URL anzeigen';
$labels['showurldescription'] = 'Über die folgende Adresse können Sie mit einem beliebigen Kalenderprogramm Ihren Kalender abrufen (nur lesend), sofern dieses das iCal-Format unterstützt.';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Angezeigter Bereich:';
$labels['listsections'] = 'Unterteilung:';
$labels['smartsections'] = 'Intelligent';
@ -86,9 +96,13 @@ $labels['nextmonth'] = 'Nächsten Monat';
$labels['weekofyear'] = 'KW';
$labels['pastevents'] = 'Vergangene';
$labels['futureevents'] = 'Zukünftige';
$labels['showalarms'] = 'Erinnerungen anzeigen';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Standard-Erinnerungseinstellung';
$labels['defaultalarmoffset'] = 'Standard-Erinnerungszeit';
// attendees
$labels['attendee'] = 'Teilnehmer';
$labels['role'] = 'Rolle';
$labels['availability'] = 'Verfüg.';
@ -97,6 +111,12 @@ $labels['addattendee'] = 'Hinzufügen';
$labels['roleorganizer'] = 'Organisator';
$labels['rolerequired'] = 'Erforderlich';
$labels['roleoptional'] = 'Optional';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Group';
$labels['cutyperesource'] = 'Ressource';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Frei';
$labels['availbusy'] = 'Gebucht';
$labels['availunknown'] = 'Unbekannt';
@ -119,37 +139,29 @@ $labels['eventupdatesubjectempty'] = 'Termin wurde aktualisiert';
$labels['eventupdatemailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nIm Anhang finden Sie eine iCalendar-Datei mit den aktualisiereten Termindaten. Diese können Sie in Ihre Kalenderanwendung importieren.";
$labels['eventcancelsubject'] = '"$title" wurde abgesagt';
$labels['eventcancelmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nDer Termin wurde von \$organizer abgesagt.\n\nIm Anhang finden Sie eine iCalendar-Datei mit den Termindaten.";
$labels['itipinvitation'] = 'Einladung zu';
$labels['itipupdate'] = 'Aktialisiert:';
$labels['itipcancellation'] = 'Abgesagt:';
$labels['itipreply'] = 'Antwort zu';
$labels['itipaccepted'] = 'Akzeptieren';
$labels['itiptentative'] = 'Mit Vorbehalt';
$labels['itipdeclined'] = 'Ablehnen';
$labels['itipsubjectaccepted'] = 'Einladung zu "$title" wurde von $name angenommen';
$labels['itipsubjecttentative'] = 'Einladung zu "$title" wurde von $name mit Vorbehalt angenommen';
$labels['itipsubjectdeclined'] = 'Einladung zu "$title" wurde von $name abgelehnt';
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender hat die Einladung zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
$labels['itipmailbodytentative'] = "\$sender hat die Einladung mit Vorbehalt zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender hat die Einladung zum folgenden Termin abgelehnt:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
$labels['itipdeclineevent'] = 'Möchten Sie die Einladung zu diesem Termin ablehnen?';
$labels['importtocalendar'] = 'In Kalender übernehmen';
$labels['removefromcalendar'] = 'Aus meinem Kalender löschen';
$labels['updateattendeestatus'] = 'Teilnehmerstatus aktualisieren';
$labels['acceptinvitation'] = 'Möchten Sie die Einladung zu diesem Termin annehmen?';
$labels['youhaveaccepted'] = 'Sie haben die Einladung angenommen';
$labels['youhavetentative'] = 'Sie haben die Einladung mit Vorbehalt angenommen';
$labels['youhavedeclined'] = 'Sie haben die Einladung abgelehnt';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['notanattendee'] = 'Sie sind nicht in der Liste der Teilnehmer aufgeführt';
$labels['eventcancelled'] = 'Der Termin wurde vom Organisator abgesagt';
$labels['saveincalendar'] = 'speichern in';
// event dialog tabs
$labels['tabsummary'] = 'Übersicht';
$labels['tabrecurrence'] = 'Wiederholung';
$labels['tabattendees'] = 'Teilnehmer';
$labels['tabattachments'] = 'Anhänge';
$labels['tabsharing'] = 'Freigabe';
// messages
$labels['deleteventconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
$labels['deletecalendarconfirm'] = 'Möchten Sie diesen Kalender mit allen Terminen wirklich löschen?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Speichere Daten...';
$labels['errorsaving'] = 'Fehler beim Speichern.';
$labels['operationfailed'] = 'Die Aktion ist fehlgeschlagen.';
@ -168,10 +180,13 @@ $labels['itipsendsuccess'] = 'Einladung an Teilnehmer versendet.';
$labels['itipresponseerror'] = 'Die Antwort auf diese Einladung konnte nicht versendet werden';
$labels['itipinvalidrequest'] = 'Diese Einladung ist nicht mehr gültig';
$labels['sentresponseto'] = 'Antwort auf diese Einladung erfolgreich an $mailto gesendet';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Es wurden $nr Termine erfolgreich importiert';
$labels['importnone'] = 'Keine Termine zum Importieren gefunden';
$labels['importerror'] = 'Fehler beim Importieren';
$labels['aclnorights'] = 'Sie haben keine Administrator-Rechte für diesen Kalender.';
// recurrence form
$labels['repeat'] = 'Wiederholung';
$labels['frequency'] = 'Wiederholung';
$labels['never'] = 'nie';
@ -179,7 +194,7 @@ $labels['daily'] = 'täglich';
$labels['weekly'] = 'wöchentlich';
$labels['monthly'] = 'monatlich';
$labels['yearly'] = 'jährlich';
$labels['rdate'] = 'per Datum';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Alle';
$labels['days'] = 'Tag(e)';
$labels['weeks'] = 'Woche(n)';
@ -199,7 +214,8 @@ $labels['third'] = 'dritter';
$labels['fourth'] = 'vierter';
$labels['last'] = 'letzter';
$labels['dayofmonth'] = 'Tag des Montats';
$labels['addrdate'] = 'Datum hinzufügen';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Termin ändern';
$labels['removeeventconfirm'] = 'Termin löschen';
$labels['changerecurringeventwarning'] = 'Dies ist eine Terminreihe. Möchten Sie nur den aktuellen, diesen und alle zukünftigen oder alle Termine bearbeiten oder die Änderungen als neuen Termin speichern?';
@ -208,4 +224,13 @@ $labels['currentevent'] = 'Aktuellen';
$labels['futurevents'] = 'Zukünftige';
$labels['allevents'] = 'Alle';
$labels['saveasnew'] = 'Als neu speichern';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,18 +1,24 @@
<?php
$labels['default_view'] = 'Ansicht';
$labels = array();
// preferences
$labels['default_view'] = 'Standardansicht';
$labels['time_format'] = 'Zeitformatierung';
$labels['timeslots'] = 'Zeitraster pro Stunde';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Erster Wochentag';
$labels['first_hour'] = 'Erste angezeigte Stunde';
$labels['workinghours'] = 'Arbeitszeiten';
$labels['add_category'] = 'Katgorie hinzufügen';
$labels['remove_category'] = 'Katgorie entfernen';
$labels['add_category'] = 'Kategorie hinzufügen';
$labels['remove_category'] = 'Kategorie entfernen';
$labels['defaultcalendar'] = 'Neue Termine erstellen in';
$labels['eventcoloring'] = 'Färbung der Termine';
$labels['coloringmode0'] = 'Farbe des Kalenders';
$labels['coloringmode1'] = 'Farbe der Kategorie';
$labels['coloringmode2'] = 'Kalenderfarbe außen, Kategoriefarbe innen';
$labels['coloringmode3'] = 'Kategoriefarbe außen, Kalenderfarbe innen';
// calendar
$labels['calendar'] = 'Kalender';
$labels['calendars'] = 'Kalender';
$labels['category'] = 'Kategorie';
@ -42,8 +48,9 @@ $labels['export'] = 'Exportieren';
$labels['exporttitle'] = 'Kalender als iCalendar exportieren';
$labels['exportrange'] = 'Termine ab';
$labels['exportattachments'] = 'Mit Anhängen';
$labels['customdate'] = 'Eigenes Datum';
$labels['customdate'] = 'Benutzerdefiniertes Datum';
$labels['location'] = 'Ort';
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Beginn';
$labels['end'] = 'Ende';
@ -73,6 +80,9 @@ $labels['onemonthback'] = '1 Monat zurück';
$labels['nmonthsback'] = '$nr Monate zurück';
$labels['showurl'] = 'URL anzeigen';
$labels['showurldescription'] = 'Über die folgende Adresse können Sie mit einem beliebigen Kalenderprogramm Ihren Kalender abrufen (nur lesend), sofern dieses das iCal-Format unterstützt.';
$labels['caldavurldescription'] = 'Diese Adresse in einen <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a>-Klienten (z.B. Evolution oder Mozilla Thunderbird) kopieren, um den Kalender in Gänze mit einem mobilen Gerät zu synchronisieren.';
// agenda view
$labels['listrange'] = 'Angezeigter Bereich:';
$labels['listsections'] = 'Unterteilung:';
$labels['smartsections'] = 'Intelligent';
@ -86,9 +96,13 @@ $labels['nextmonth'] = 'Nächsten Monat';
$labels['weekofyear'] = 'Woche';
$labels['pastevents'] = 'Vergangene';
$labels['futureevents'] = 'Zukünftige';
$labels['showalarms'] = 'Erinnerungen anzeigen';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Standard-Erinnerungseinstellung';
$labels['defaultalarmoffset'] = 'Standard-Erinnerungszeit';
// attendees
$labels['attendee'] = 'Teilnehmer';
$labels['role'] = 'Rolle';
$labels['availability'] = 'Verfüg.';
@ -97,6 +111,12 @@ $labels['addattendee'] = 'Hinzufügen';
$labels['roleorganizer'] = 'Organisator';
$labels['rolerequired'] = 'Erforderlich';
$labels['roleoptional'] = 'Optional';
$labels['rolechair'] = 'Stuhl';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Person';
$labels['cutypegroup'] = 'Gruppe';
$labels['cutyperesource'] = 'Ressource';
$labels['cutyperoom'] = 'Raum';
$labels['availfree'] = 'Frei';
$labels['availbusy'] = 'Gebucht';
$labels['availunknown'] = 'Unbekannt';
@ -119,37 +139,28 @@ $labels['eventupdatesubjectempty'] = 'Termin wurde aktualisiert';
$labels['eventupdatemailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nIm Anhang finden Sie eine iCalendar-Datei mit den aktualisiereten Termindaten. Diese können Sie in Ihre Kalenderanwendung importieren.";
$labels['eventcancelsubject'] = '"$title" wurde abgesagt';
$labels['eventcancelmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nDer Termin wurde von \$organizer abgesagt.\n\nIm Anhang finden Sie eine iCalendar-Datei mit den Termindaten.";
$labels['itipinvitation'] = 'Einladung zu';
$labels['itipupdate'] = 'Aktialisiert:';
$labels['itipcancellation'] = 'Abgesagt:';
$labels['itipreply'] = 'Antwort zu';
$labels['itipaccepted'] = 'Akzeptieren';
$labels['itiptentative'] = 'Mit Vorbehalt';
$labels['itipdeclined'] = 'Ablehnen';
$labels['itipsubjectaccepted'] = 'Einladung zu "$title" wurde von $name angenommen';
$labels['itipsubjecttentative'] = 'Einladung zu "$title" wurde von $name mit Vorbehalt angenommen';
$labels['itipsubjectdeclined'] = 'Einladung zu "$title" wurde von $name abgelehnt';
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender hat die Einladung zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
$labels['itipmailbodytentative'] = "\$sender hat die Einladung mit Vorbehalt zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender hat die Einladung zum folgenden Termin abgelehnt:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
$labels['itipdeclineevent'] = 'Möchten Sie die Einladung zu diesem Termin ablehnen?';
$labels['importtocalendar'] = 'In Kalender übernehmen';
$labels['removefromcalendar'] = 'Aus meinem Kalender löschen';
$labels['updateattendeestatus'] = 'Teilnehmerstatus aktualisieren';
$labels['acceptinvitation'] = 'Möchten Sie die Einladung zu diesem Termin annehmen?';
$labels['youhaveaccepted'] = 'Sie haben die Einladung angenommen';
$labels['youhavetentative'] = 'Sie haben die Einladung mit Vorbehalt angenommen';
$labels['youhavedeclined'] = 'Sie haben die Einladung abgelehnt';
$labels['declinedeleteconfirm'] = 'Soll der abgelehnte Termin zusätzlich aus dem Kalender gelöscht werden?';
$labels['notanattendee'] = 'Sie sind nicht in der Liste der Teilnehmer aufgeführt';
$labels['eventcancelled'] = 'Der Termin wurde vom Organisator abgesagt';
$labels['saveincalendar'] = 'speichern in';
// event dialog tabs
$labels['tabsummary'] = 'Übersicht';
$labels['tabrecurrence'] = 'Wiederholung';
$labels['tabattendees'] = 'Teilnehmer';
$labels['tabattachments'] = 'Anhänge';
$labels['tabsharing'] = 'Freigabe';
// messages
$labels['deleteventconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
$labels['deletecalendarconfirm'] = 'Möchten Sie diesen Kalender mit allen Terminen wirklich löschen?';
$labels['deletecalendarconfirmrecursive'] = 'Soll dieser Kalender wirklich mit allen Terminen und Unterkalendern gelöscht werden?';
$labels['savingdata'] = 'Speichere Daten...';
$labels['errorsaving'] = 'Fehler beim Speichern.';
$labels['operationfailed'] = 'Die Aktion ist fehlgeschlagen.';
@ -168,10 +179,13 @@ $labels['itipsendsuccess'] = 'Einladung an Teilnehmer versendet.';
$labels['itipresponseerror'] = 'Die Antwort auf diese Einladung konnte nicht versendet werden';
$labels['itipinvalidrequest'] = 'Diese Einladung ist nicht mehr gültig.';
$labels['sentresponseto'] = 'Antwort auf diese Einladung erfolgreich an $mailto gesendet';
$labels['localchangeswarning'] = 'Die auszuführenden Änderungen werden sich nur auf den persönlichen Kalender auswirken und nicht an den Organisator des Termins weitergeleitet.';
$labels['importsuccess'] = 'Es wurden $nr Termine erfolgreich importiert';
$labels['importnone'] = 'Keine Termine zum Importieren gefunden';
$labels['importerror'] = 'Fehler beim Importieren';
$labels['aclnorights'] = 'Der Zugriff auf diesen Kalender erfordert Administrator-Rechte.';
// recurrence form
$labels['repeat'] = 'Wiederholung';
$labels['frequency'] = 'Wiederholung';
$labels['never'] = 'nie';
@ -179,7 +193,7 @@ $labels['daily'] = 'täglich';
$labels['weekly'] = 'wöchentlich';
$labels['monthly'] = 'monatlich';
$labels['yearly'] = 'jährlich';
$labels['rdate'] = 'per Datum';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Alle';
$labels['days'] = 'Tag(e)';
$labels['weeks'] = 'Woche(n)';
@ -199,7 +213,8 @@ $labels['third'] = 'dritter';
$labels['fourth'] = 'vierter';
$labels['last'] = 'letzter';
$labels['dayofmonth'] = 'Tag des Montats';
$labels['addrdate'] = 'Datum hinzufügen';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Termin ändern';
$labels['removeeventconfirm'] = 'Termin löschen';
$labels['changerecurringeventwarning'] = 'Dies ist eine Terminreihe. Möchten Sie nur den aktuellen, diesen und alle zukünftigen oder alle Termine bearbeiten oder die Änderungen als neuen Termin speichern?';
@ -208,4 +223,13 @@ $labels['currentevent'] = 'Aktuellen';
$labels['futurevents'] = 'Zukünftige';
$labels['allevents'] = 'Alle';
$labels['saveasnew'] = 'Als neu speichern';
// birthdays calendar
$labels['birthdays'] = 'Geburtstage';
$labels['birthdayscalendar'] = 'Geburtstags-Kalender';
$labels['displaybirthdayscalendar'] = 'Geburtstags-Kalender anzeigen';
$labels['birthdayscalendarsources'] = 'Für diese Adressbücher';
$labels['birthdayeventtitle'] = '$names Geburtstag';
$labels['birthdayage'] = 'Alter $age';
?>

View file

@ -66,6 +66,7 @@ $labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comment';
$labels['generated'] = 'generated at';
$labels['printdescriptions'] = 'Print descriptions';
$labels['parentcalendar'] = 'Insert inside';
@ -140,32 +141,19 @@ $labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$atten
$labels['eventcancelsubject'] = '"$title" has been canceled';
$labels['eventcancelmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nThe event has been cancelled by \$organizer.\n\nPlease find attached an iCalendar file with the updated event details.";
// invitation handling
$labels['itipinvitation'] = 'Invitation to';
$labels['itipupdate'] = 'Update of';
$labels['itipcancellation'] = 'Cancelled:';
$labels['itipreply'] = 'Reply to';
$labels['itipaccepted'] = 'Accept';
$labels['itiptentative'] = 'Maybe';
$labels['itipdeclined'] = 'Decline';
$labels['itipsubjectaccepted'] = '"$title" has been accepted by $name';
$labels['itipsubjecttentative'] = '"$title" has been tentatively accepted by $name';
$labels['itipsubjectdeclined'] = '"$title" has been declined by $name';
// invitation handling (overrides labels from libcalendaring)
$labels['itipobjectnotfound'] = 'The event referred by this message was not found in your calendar.';
$labels['itipmailbodyaccepted'] = "\$sender has accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender has tentatively accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender has declined the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipdeclineevent'] = 'Do you want to decline your invitation to this event?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['importtocalendar'] = 'Save to my calendar';
$labels['removefromcalendar'] = 'Remove from my calendar';
$labels['updateattendeestatus'] = 'Update the participant\'s status';
$labels['acceptinvitation'] = 'Do you accept this invitation?';
$labels['youhaveaccepted'] = 'You have accepted this invitation';
$labels['youhavetentative'] = 'You have tentatively accepted this invitation';
$labels['youhavedeclined'] = 'You have declined this invitation';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'save in';
$labels['updatemycopy'] = 'Update in my calendar';
// event dialog tabs
$labels['tabsummary'] = 'Summary';
@ -175,6 +163,7 @@ $labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
// messages
$labels['deleteobjectconfirm'] = 'Do you really want to delete this event?';
$labels['deleteventconfirm'] = 'Do you really want to delete this event?';
$labels['deletecalendarconfirm'] = 'Do you really want to delete this calendar with all its events?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';

View file

@ -1,12 +1,252 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Default view';
$labels['time_format'] = 'Time format';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'First weekday';
$labels['first_hour'] = 'First hour to show';
$labels['workinghours'] = 'Working hours';
$labels['add_category'] = 'Add category';
$labels['remove_category'] = 'Remove category';
$labels['defaultcalendar'] = 'Create new events in';
$labels['eventcoloring'] = 'Event coloring';
$labels['coloringmode0'] = 'According to calendar';
$labels['coloringmode1'] = 'According to category';
$labels['coloringmode2'] = 'Calendar for outline, category for content';
$labels['coloringmode3'] = 'Category for outline, calendar for content';
// calendar
$labels['calendar'] = 'Calendar';
$labels['calendars'] = 'Calendarios';
$labels['category'] = 'Category';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Nombre';
$labels['color'] = 'Color';
$labels['day'] = 'Day';
$labels['week'] = 'Week';
$labels['month'] = 'Month';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'New';
$labels['new_event'] = 'New event';
$labels['edit_event'] = 'Edit event';
$labels['edit'] = 'Editar';
$labels['save'] = 'Guardar';
$labels['remove'] = 'Remove';
$labels['cancel'] = 'Cancelar';
$labels['select'] = 'Select';
$labels['print'] = 'Print';
$labels['printtitle'] = 'Print calendars';
$labels['title'] = 'Summary';
$labels['description'] = 'Descripción';
$labels['all-day'] = 'all-day';
$labels['export'] = 'Export';
$labels['exporttitle'] = 'Export to iCalendar';
$labels['exportrange'] = 'Events from';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Location';
$labels['url'] = 'URL';
$labels['date'] = 'Date';
$labels['start'] = 'Start';
$labels['end'] = 'End';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['generated'] = 'generated at';
$labels['printdescriptions'] = 'Print descriptions';
$labels['parentcalendar'] = 'Insert inside';
$labels['searchearlierdates'] = '« Search for earlier events';
$labels['searchlaterdates'] = 'Search for later events »';
$labels['andnmore'] = '$nr more...';
$labels['togglerole'] = 'Click to toggle role';
$labels['createfrommail'] = 'Save as event';
$labels['importevents'] = 'Import events';
$labels['importrange'] = 'Events from';
$labels['onemonthback'] = '1 month back';
$labels['nmonthsback'] = '$nr months back';
$labels['showurl'] = 'Show calendar URL';
$labels['showurldescription'] = 'Use the following address to access (read only) your calendar from other applications. You can copy and paste this into any calendar software that supports the iCal format.';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Range to display:';
$labels['listsections'] = 'Divide into:';
$labels['smartsections'] = 'Smart sections';
$labels['until'] = 'until';
$labels['today'] = 'Today';
$labels['tomorrow'] = 'Tomorrow';
$labels['thisweek'] = 'This week';
$labels['nextweek'] = 'Next week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
// attendees
$labels['attendee'] = 'Participant';
$labels['role'] = 'Rol';
$labels['availability'] = 'Avail.';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Add participant';
$labels['roleorganizer'] = 'Organizer';
$labels['rolerequired'] = 'Requerido';
$labels['roleoptional'] = 'Opcional';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Grupo';
$labels['cutyperesource'] = 'Recurso';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Free';
$labels['availbusy'] = 'Busy';
$labels['availunknown'] = 'Unknown';
$labels['availtentative'] = 'Tentative';
$labels['availoutofoffice'] = 'Out of Office';
$labels['scheduletime'] = 'Find availability';
$labels['sendinvitations'] = 'Send invitations';
$labels['sendnotifications'] = 'Notify participants about modifications';
$labels['sendcancellation'] = 'Notify participants about event cancellation';
$labels['onlyworkinghours'] = 'Find availability within my working hours';
$labels['reqallattendees'] = 'Required/all participants';
$labels['prevslot'] = 'Previous Slot';
$labels['nextslot'] = 'Next Slot';
$labels['noslotfound'] = 'Unable to find a free time slot';
$labels['invitationsubject'] = 'You\'ve been invited to "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with all the event details which you can import to your calendar application.";
$labels['invitationattendlinks'] = "In case your email client doesn't support iTip requests you can use the following link to either accept or decline this invitation:\n\$url";
$labels['eventupdatesubject'] = '"$title" has been updated';
$labels['eventupdatesubjectempty'] = 'An event that concerns you has been updated';
$labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with the updated event details which you can import to your calendar application.";
$labels['eventcancelsubject'] = '"$title" has been canceled';
$labels['eventcancelmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nThe event has been cancelled by \$organizer.\n\nPlease find attached an iCalendar file with the updated event details.";
// invitation handling
$labels['itipinvitation'] = 'Invitation to';
$labels['itipupdate'] = 'Update of';
$labels['itipcancellation'] = 'Cancelled:';
$labels['itipreply'] = 'Reply to';
$labels['itipaccepted'] = 'Accept';
$labels['itiptentative'] = 'Maybe';
$labels['itipdeclined'] = 'Decline';
$labels['itipsubjectaccepted'] = '"$title" has been accepted by $name';
$labels['itipsubjecttentative'] = '"$title" has been tentatively accepted by $name';
$labels['itipsubjectdeclined'] = '"$title" has been declined by $name';
$labels['itipmailbodyaccepted'] = "\$sender has accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender has tentatively accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender has declined the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipdeclineevent'] = 'Do you want to decline your invitation to this event?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['importtocalendar'] = 'Save to my calendar';
$labels['removefromcalendar'] = 'Remove from my calendar';
$labels['updateattendeestatus'] = 'Update the participant\'s status';
$labels['acceptinvitation'] = 'Do you accept this invitation?';
$labels['youhaveaccepted'] = 'You have accepted this invitation';
$labels['youhavetentative'] = 'You have tentatively accepted this invitation';
$labels['youhavedeclined'] = 'You have declined this invitation';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'save in';
// event dialog tabs
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
// messages
$labels['deleteventconfirm'] = 'Do you really want to delete this event?';
$labels['deletecalendarconfirm'] = 'Do you really want to delete this calendar with all its events?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Guardando datos...';
$labels['errorsaving'] = 'Failed to save changes.';
$labels['operationfailed'] = 'The requested operation failed.';
$labels['invalideventdates'] = 'Invalid dates entered! Please check your input.';
$labels['invalidcalendarproperties'] = 'Invalid calendar properties! Please set a valid name.';
$labels['searchnoresults'] = 'No events found in the selected calendars.';
$labels['successremoval'] = 'The event has been deleted successfully.';
$labels['successrestore'] = 'The event has been restored successfully.';
$labels['errornotifying'] = 'Failed to send notifications to event participants';
$labels['errorimportingevent'] = 'Failed to import the event';
$labels['newerversionexists'] = 'A newer version of this event already exists! Aborted.';
$labels['nowritecalendarfound'] = 'No calendar found to save the event';
$labels['importedsuccessfully'] = 'The event was successfully added to \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Successfully updated the participant\'s status';
$labels['itipsendsuccess'] = 'Invitation sent to participants.';
$labels['itipresponseerror'] = 'Failed to send the response to this event invitation';
$labels['itipinvalidrequest'] = 'This invitation is no longer valid';
$labels['sentresponseto'] = 'Successfully sent invitation response to $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Successfully imported $nr events';
$labels['importnone'] = 'No events found to be imported';
$labels['importerror'] = 'An error occured while importing';
$labels['aclnorights'] = 'You do not have administrator rights on this calendar.';
// recurrence form
$labels['repeat'] = 'Repeat';
$labels['frequency'] = 'Repeat';
$labels['never'] = 'never';
$labels['daily'] = 'daily';
$labels['weekly'] = 'weekly';
$labels['monthly'] = 'monthly';
$labels['yearly'] = 'annually';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Every';
$labels['days'] = 'day(s)';
$labels['weeks'] = 'week(s)';
$labels['months'] = 'month(s)';
$labels['years'] = 'year(s) in:';
$labels['bydays'] = 'On';
$labels['untildate'] = 'the';
$labels['each'] = 'Each';
$labels['onevery'] = 'On every';
$labels['onsamedate'] = 'On the same date';
$labels['forever'] = 'forever';
$labels['recurrencend'] = 'until';
$labels['forntimes'] = 'for $nr time(s)';
$labels['first'] = 'first';
$labels['second'] = 'second';
$labels['third'] = 'third';
$labels['fourth'] = 'fourth';
$labels['last'] = 'last';
$labels['dayofmonth'] = 'Day of month';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Remove event';
$labels['changerecurringeventwarning'] = 'This is a recurring event. Would you like to edit the current event only, this and all future occurences, all occurences or save it as a new event?';
$labels['removerecurringeventwarning'] = 'This is a recurring event. Would you like to remove the current event only, this and all future occurences or all occurences of this event?';
$labels['currentevent'] = 'Current';
$labels['futurevents'] = 'Future';
$labels['allevents'] = 'All';
$labels['saveasnew'] = 'Save as new';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,5 +1,252 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Default view';
$labels['time_format'] = 'Time format';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'First weekday';
$labels['first_hour'] = 'First hour to show';
$labels['workinghours'] = 'Working hours';
$labels['add_category'] = 'Add category';
$labels['remove_category'] = 'Remove category';
$labels['defaultcalendar'] = 'Create new events in';
$labels['eventcoloring'] = 'Event coloring';
$labels['coloringmode0'] = 'According to calendar';
$labels['coloringmode1'] = 'According to category';
$labels['coloringmode2'] = 'Calendar for outline, category for content';
$labels['coloringmode3'] = 'Category for outline, calendar for content';
// calendar
$labels['calendar'] = 'Calendar';
$labels['calendars'] = 'Calendars';
$labels['category'] = 'Category';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Nimi';
$labels['color'] = 'Color';
$labels['day'] = 'Day';
$labels['week'] = 'Week';
$labels['month'] = 'Month';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'New';
$labels['new_event'] = 'New event';
$labels['edit_event'] = 'Edit event';
$labels['edit'] = 'Edit';
$labels['save'] = 'Salvesta';
$labels['remove'] = 'Remove';
$labels['cancel'] = 'Cancel';
$labels['select'] = 'Select';
$labels['print'] = 'Print';
$labels['printtitle'] = 'Print calendars';
$labels['title'] = 'Summary';
$labels['description'] = 'Description';
$labels['all-day'] = 'all-day';
$labels['export'] = 'Export';
$labels['exporttitle'] = 'Export to iCalendar';
$labels['exportrange'] = 'Events from';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Location';
$labels['url'] = 'URL';
$labels['date'] = 'Date';
$labels['start'] = 'Start';
$labels['end'] = 'End';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['generated'] = 'generated at';
$labels['printdescriptions'] = 'Print descriptions';
$labels['parentcalendar'] = 'Insert inside';
$labels['searchearlierdates'] = '« Search for earlier events';
$labels['searchlaterdates'] = 'Search for later events »';
$labels['andnmore'] = '$nr more...';
$labels['togglerole'] = 'Click to toggle role';
$labels['createfrommail'] = 'Save as event';
$labels['importevents'] = 'Import events';
$labels['importrange'] = 'Events from';
$labels['onemonthback'] = '1 month back';
$labels['nmonthsback'] = '$nr months back';
$labels['showurl'] = 'Show calendar URL';
$labels['showurldescription'] = 'Use the following address to access (read only) your calendar from other applications. You can copy and paste this into any calendar software that supports the iCal format.';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Range to display:';
$labels['listsections'] = 'Divide into:';
$labels['smartsections'] = 'Smart sections';
$labels['until'] = 'until';
$labels['today'] = 'Today';
$labels['tomorrow'] = 'Tomorrow';
$labels['thisweek'] = 'This week';
$labels['nextweek'] = 'Next week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
// attendees
$labels['attendee'] = 'Participant';
$labels['role'] = 'Role';
$labels['availability'] = 'Avail.';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Add participant';
$labels['roleorganizer'] = 'Organizer';
$labels['rolerequired'] = 'Kohustuslik';
$labels['roleoptional'] = 'Optional';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Group';
$labels['cutyperesource'] = 'Resource';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Free';
$labels['availbusy'] = 'Busy';
$labels['availunknown'] = 'Unknown';
$labels['availtentative'] = 'Tentative';
$labels['availoutofoffice'] = 'Out of Office';
$labels['scheduletime'] = 'Find availability';
$labels['sendinvitations'] = 'Send invitations';
$labels['sendnotifications'] = 'Notify participants about modifications';
$labels['sendcancellation'] = 'Notify participants about event cancellation';
$labels['onlyworkinghours'] = 'Find availability within my working hours';
$labels['reqallattendees'] = 'Required/all participants';
$labels['prevslot'] = 'Previous Slot';
$labels['nextslot'] = 'Next Slot';
$labels['noslotfound'] = 'Unable to find a free time slot';
$labels['invitationsubject'] = 'You\'ve been invited to "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with all the event details which you can import to your calendar application.";
$labels['invitationattendlinks'] = "In case your email client doesn't support iTip requests you can use the following link to either accept or decline this invitation:\n\$url";
$labels['eventupdatesubject'] = '"$title" has been updated';
$labels['eventupdatesubjectempty'] = 'An event that concerns you has been updated';
$labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with the updated event details which you can import to your calendar application.";
$labels['eventcancelsubject'] = '"$title" has been canceled';
$labels['eventcancelmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nThe event has been cancelled by \$organizer.\n\nPlease find attached an iCalendar file with the updated event details.";
// invitation handling
$labels['itipinvitation'] = 'Invitation to';
$labels['itipupdate'] = 'Update of';
$labels['itipcancellation'] = 'Cancelled:';
$labels['itipreply'] = 'Reply to';
$labels['itipaccepted'] = 'Accept';
$labels['itiptentative'] = 'Maybe';
$labels['itipdeclined'] = 'Decline';
$labels['itipsubjectaccepted'] = '"$title" has been accepted by $name';
$labels['itipsubjecttentative'] = '"$title" has been tentatively accepted by $name';
$labels['itipsubjectdeclined'] = '"$title" has been declined by $name';
$labels['itipmailbodyaccepted'] = "\$sender has accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender has tentatively accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender has declined the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipdeclineevent'] = 'Do you want to decline your invitation to this event?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['importtocalendar'] = 'Save to my calendar';
$labels['removefromcalendar'] = 'Remove from my calendar';
$labels['updateattendeestatus'] = 'Update the participant\'s status';
$labels['acceptinvitation'] = 'Do you accept this invitation?';
$labels['youhaveaccepted'] = 'You have accepted this invitation';
$labels['youhavetentative'] = 'You have tentatively accepted this invitation';
$labels['youhavedeclined'] = 'You have declined this invitation';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'save in';
// event dialog tabs
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
// messages
$labels['deleteventconfirm'] = 'Do you really want to delete this event?';
$labels['deletecalendarconfirm'] = 'Do you really want to delete this calendar with all its events?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Saving data...';
$labels['errorsaving'] = 'Failed to save changes.';
$labels['operationfailed'] = 'The requested operation failed.';
$labels['invalideventdates'] = 'Invalid dates entered! Please check your input.';
$labels['invalidcalendarproperties'] = 'Invalid calendar properties! Please set a valid name.';
$labels['searchnoresults'] = 'No events found in the selected calendars.';
$labels['successremoval'] = 'The event has been deleted successfully.';
$labels['successrestore'] = 'The event has been restored successfully.';
$labels['errornotifying'] = 'Failed to send notifications to event participants';
$labels['errorimportingevent'] = 'Failed to import the event';
$labels['newerversionexists'] = 'A newer version of this event already exists! Aborted.';
$labels['nowritecalendarfound'] = 'No calendar found to save the event';
$labels['importedsuccessfully'] = 'The event was successfully added to \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Successfully updated the participant\'s status';
$labels['itipsendsuccess'] = 'Invitation sent to participants.';
$labels['itipresponseerror'] = 'Failed to send the response to this event invitation';
$labels['itipinvalidrequest'] = 'This invitation is no longer valid';
$labels['sentresponseto'] = 'Successfully sent invitation response to $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Successfully imported $nr events';
$labels['importnone'] = 'No events found to be imported';
$labels['importerror'] = 'An error occured while importing';
$labels['aclnorights'] = 'You do not have administrator rights on this calendar.';
// recurrence form
$labels['repeat'] = 'Repeat';
$labels['frequency'] = 'Repeat';
$labels['never'] = 'never';
$labels['daily'] = 'daily';
$labels['weekly'] = 'weekly';
$labels['monthly'] = 'monthly';
$labels['yearly'] = 'annually';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Every';
$labels['days'] = 'day(s)';
$labels['weeks'] = 'week(s)';
$labels['months'] = 'month(s)';
$labels['years'] = 'year(s) in:';
$labels['bydays'] = 'On';
$labels['untildate'] = 'the';
$labels['each'] = 'Each';
$labels['onevery'] = 'On every';
$labels['onsamedate'] = 'On the same date';
$labels['forever'] = 'forever';
$labels['recurrencend'] = 'until';
$labels['forntimes'] = 'for $nr time(s)';
$labels['first'] = 'first';
$labels['second'] = 'second';
$labels['third'] = 'third';
$labels['fourth'] = 'fourth';
$labels['last'] = 'last';
$labels['dayofmonth'] = 'Day of month';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Remove event';
$labels['changerecurringeventwarning'] = 'This is a recurring event. Would you like to edit the current event only, this and all future occurences, all occurences or save it as a new event?';
$labels['removerecurringeventwarning'] = 'This is a recurring event. Would you like to remove the current event only, this and all future occurences or all occurences of this event?';
$labels['currentevent'] = 'Current';
$labels['futurevents'] = 'Future';
$labels['allevents'] = 'All';
$labels['saveasnew'] = 'Save as new';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,7 +1,11 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Vue par défaut';
$labels['time_format'] = 'Format de l\'heure';
$labels['timeslots'] = 'Nombre d\'intervalle par heure';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Premier jour de la semaine';
$labels['first_hour'] = 'Première heure à afficher';
$labels['workinghours'] = 'Heures de travail';
@ -13,6 +17,8 @@ $labels['coloringmode0'] = 'Selon l\'agenda';
$labels['coloringmode1'] = 'Selon la catégorie';
$labels['coloringmode2'] = 'Calendrier en contour, catégorie en contenu';
$labels['coloringmode3'] = 'Catégorie en contour, calendrier en contenu';
// calendar
$labels['calendar'] = 'Agenda';
$labels['calendars'] = 'Agendas';
$labels['category'] = 'Catégorie';
@ -40,7 +46,11 @@ $labels['description'] = 'Description';
$labels['all-day'] = 'Toute la journée';
$labels['export'] = 'Exporter';
$labels['exporttitle'] = 'Exporter vers iCalendar';
$labels['exportrange'] = 'Évènements depuis';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Lieu';
$labels['url'] = 'URL';
$labels['date'] = 'Date';
$labels['start'] = 'Début';
$labels['end'] = 'Fin';
@ -70,6 +80,9 @@ $labels['onemonthback'] = '1 mois précédent';
$labels['nmonthsback'] = '$nr mois précédents';
$labels['showurl'] = 'Afficher l\'URL de l\'agenda';
$labels['showurldescription'] = 'Utilisez l\'adresse suivante pour accéder(lecture seule) à votre agenda depuis une autre application. Vous pouvez copier/coller celle-ci dans n\'importe quel agenda électronique gérant le format iCal.';
$labels['caldavurldescription'] = 'Copiez cette adresse vers une application client (comme Evolution ou Mozilla Thunderbird) compatible <a href="http://fr.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> pour synchroniser ce calendrier avec votre ordinateur ou votre smartphone.';
// agenda view
$labels['listrange'] = 'Intervalle à afficher :';
$labels['listsections'] = 'Diviser en :';
$labels['smartsections'] = 'Section intelligente';
@ -83,9 +96,13 @@ $labels['nextmonth'] = 'Mois prochain';
$labels['weekofyear'] = 'Semaine';
$labels['pastevents'] = 'Passé';
$labels['futureevents'] = 'Futur';
$labels['showalarms'] = 'Afficher les alarmes';
// alarm/reminder settings
$labels['showalarms'] = 'Afficher les rappels';
$labels['defaultalarmtype'] = 'Paramètre de rappel par défaut';
$labels['defaultalarmoffset'] = 'Durée de rappel par défaut';
// attendees
$labels['attendee'] = 'Participant';
$labels['role'] = 'Rôle';
$labels['availability'] = 'Dispo.';
@ -94,6 +111,12 @@ $labels['addattendee'] = 'Ajouter participant';
$labels['roleorganizer'] = 'Organisateur';
$labels['rolerequired'] = 'Requis';
$labels['roleoptional'] = 'Optionel';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Groupe';
$labels['cutyperesource'] = 'Ressource';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Disponible';
$labels['availbusy'] = 'Occupé';
$labels['availunknown'] = 'Inconnu';
@ -108,7 +131,7 @@ $labels['reqallattendees'] = 'Demandé/tous';
$labels['prevslot'] = 'Créneau précédent';
$labels['nextslot'] = 'Créneau suivant';
$labels['noslotfound'] = 'Impossible de trouver un créneau disponible';
$labels['invitationsubject'] = 'Vous avez invité à "$title"';
$labels['invitationsubject'] = 'Vous avez été invité à "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nQuand: \$date\n\nParticipants: \$attendees\n\nVous trouverez ci-joint un fichier iCalendar avec tous les détails de l'évènement que vous pourrez importer dans votre agenda électronique.";
$labels['invitationattendlinks'] = "Dans le cas où votre application de messagerie ne gère pas les demandes \"iTip\". Vous pouvez utiliser ce lien pour accepter ou refuser l'invitation : \n\$url";
$labels['eventupdatesubject'] = '"$title" a été modifié';
@ -116,37 +139,28 @@ $labels['eventupdatesubjectempty'] = 'Un évènement vous concernant a été mod
$labels['eventupdatemailbody'] = "*\$title*\n\nQuand: \$date\n\nParticipants: \$attendees\n\nVous trouverez ci-joint un fichier iCalendar avec tous les modifications de l'évènement que vous pourrez importer dans votre agenda électronique.";
$labels['eventcancelsubject'] = '"$title" a été annulé';
$labels['eventcancelmailbody'] = "*\$title*\n\nQuand: \$date\n\nParticipants: \$attendees\n\nL'évènement a été annulé par \$organizer.\n\nVous trouverez en pièce jointe un fichier iCalendar avec les modifications de l'évènement que vous pourrez importer dans votre agenda électronique.";
$labels['itipinvitation'] = 'Invitation à';
$labels['itipupdate'] = 'Mise à jour de';
$labels['itipcancellation'] = 'Annulation:';
$labels['itipreply'] = 'Répondre à';
$labels['itipaccepted'] = 'Accepter';
$labels['itiptentative'] = 'Peut-être';
$labels['itipdeclined'] = 'Refuser';
$labels['itipsubjectaccepted'] = '"$title" a été accepté par $name';
$labels['itipsubjecttentative'] = '"$title" a été accepté provisoirement par $name';
$labels['itipsubjectdeclined'] = '"$title" a été refusé par $name';
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender a accepté l'invitation à l'évènement suivant :\n\n*\$title*\n\nQuand: \$date\n\nParticipants: \$attendees";
$labels['itipmailbodytentative'] = "\$sender a accepté provisoirement l'invitation à l'évènement suivant :\n\n*\$title*\n\nQuand: \$date\n\nParticipants: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender a refusé l'invitation à l'évènement suivant :\n\n*\$title*\n\nQuand: \$date\n\nParticipants: \$attendees";
$labels['itipdeclineevent'] = 'Voulez-vous refuser l\'invitation à cet évènement?';
$labels['importtocalendar'] = 'Enregistrer mon agenda';
$labels['removefromcalendar'] = 'Supprimer de mon agenda';
$labels['updateattendeestatus'] = 'Modifier le statut des participants';
$labels['acceptinvitation'] = 'Acceptez-vous cette invitation?';
$labels['youhaveaccepted'] = 'Vous avez accepté cette invitation';
$labels['youhavetentative'] = 'Vous avez accepté provisoirement cette invitation';
$labels['youhavedeclined'] = 'Vous avez refusé cette invitation';
$labels['declinedeleteconfirm'] = 'Voulez-vous aussi supprimer cet évènement annulé, de votre calendrier ?';
$labels['notanattendee'] = 'Vous n\'êtes pas dans la liste des participants à cet évènement';
$labels['eventcancelled'] = 'L\'évènement a été annulé';
$labels['saveincalendar'] = 'Enregistrer sous';
// event dialog tabs
$labels['tabsummary'] = 'Résumé';
$labels['tabrecurrence'] = 'Récurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabattachments'] = 'Pièces jointes';
$labels['tabsharing'] = 'Partage';
// messages
$labels['deleteventconfirm'] = 'Voulez-vous vraiment supprimer cet évènement?';
$labels['deletecalendarconfirm'] = 'Voulez-vous vraiment supprimer cet agenda et tous ses évènements?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Enregistrer...';
$labels['errorsaving'] = 'Échec lors de l\'enregistrement des changements';
$labels['operationfailed'] = 'L\'opération demandée a échoué';
@ -165,10 +179,13 @@ $labels['itipsendsuccess'] = 'Invitation envoyé aux participants.';
$labels['itipresponseerror'] = 'Échec de l\'envoi d\'une réponse à cette invitation.';
$labels['itipinvalidrequest'] = 'C\'est invitation n\'est plus valide.';
$labels['sentresponseto'] = 'La réponse à l\'invitation a été envoyé à $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = '$nr évènements importés.';
$labels['importnone'] = 'Pas d\'évènements à importer';
$labels['importerror'] = 'Une erreur est arrivée lors de l\'import';
$labels['aclnorights'] = 'Vous n\'avez pas les droits d\'administration sur cet agenda.';
// recurrence form
$labels['repeat'] = 'Répéter';
$labels['frequency'] = 'Répéter';
$labels['never'] = 'Jamais';
@ -176,6 +193,7 @@ $labels['daily'] = 'Quotidienne';
$labels['weekly'] = 'Hebdomadaire';
$labels['monthly'] = 'Mensuelle';
$labels['yearly'] = 'Annuelle';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Tous les';
$labels['days'] = 'jour(s)';
$labels['weeks'] = 'semaine(s)';
@ -195,6 +213,8 @@ $labels['third'] = 'troisième';
$labels['fourth'] = 'quatrième';
$labels['last'] = 'dernier';
$labels['dayofmonth'] = 'Jour du mois';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Modifier l\'évènement';
$labels['removeeventconfirm'] = 'Supprimer l\'évènement';
$labels['changerecurringeventwarning'] = 'Ceci est un évènement récurant. Voulez vous éditer seulement cette occurrence, celle-ci et toutes les suivantes, toutes les occurrences ou l\'enregistrer comme un nouvel évènement? ';
@ -203,4 +223,13 @@ $labels['currentevent'] = 'Cette occurrence';
$labels['futurevents'] = 'Cette occurrence et toutes les suivantes';
$labels['allevents'] = 'Toutes les occurrences';
$labels['saveasnew'] = 'Enregistrer comme un nouvel évènement';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,21 +1,252 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Alap nézet';
$labels['time_format'] = 'Idõ formátum';
$labels['timeslots'] = 'Idõrés óránként';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'A hét elsõ napja';
$labels['first_hour'] = 'First hour to show';
$labels['workinghours'] = 'Working hours';
$labels['add_category'] = 'Add category';
$labels['remove_category'] = 'Remove category';
$labels['defaultcalendar'] = 'Create new events in';
$labels['eventcoloring'] = 'Event coloring';
$labels['coloringmode0'] = 'According to calendar';
$labels['coloringmode1'] = 'According to category';
$labels['coloringmode2'] = 'Calendar for outline, category for content';
$labels['coloringmode3'] = 'Category for outline, calendar for content';
// calendar
$labels['calendar'] = 'Naptár';
$labels['calendars'] = 'Calendars';
$labels['category'] = 'Kategória';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Name';
$labels['color'] = 'Color';
$labels['day'] = 'Nap';
$labels['week'] = 'Hét';
$labels['month'] = 'Hónap';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'New';
$labels['new_event'] = 'Új bejegyzés';
$labels['edit_event'] = 'Bejegyzés szerkesztése';
$labels['edit'] = 'Edit';
$labels['save'] = 'Mentés';
$labels['remove'] = 'Törlés';
$labels['cancel'] = 'Mégse';
$labels['select'] = 'Select';
$labels['print'] = 'Print';
$labels['printtitle'] = 'Print calendars';
$labels['title'] = 'Tárgy';
$labels['description'] = 'Leírás';
$labels['all-day'] = 'Egész nap';
$labels['export'] = 'Exportálás ICS formátumba';
$labels['exporttitle'] = 'Export to iCalendar';
$labels['exportrange'] = 'Events from';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Location';
$labels['url'] = 'URL';
$labels['date'] = 'Date';
$labels['start'] = 'Start';
$labels['end'] = 'End';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['generated'] = 'generated at';
$labels['printdescriptions'] = 'Print descriptions';
$labels['parentcalendar'] = 'Insert inside';
$labels['searchearlierdates'] = '« Search for earlier events';
$labels['searchlaterdates'] = 'Search for later events »';
$labels['andnmore'] = '$nr more...';
$labels['togglerole'] = 'Click to toggle role';
$labels['createfrommail'] = 'Save as event';
$labels['importevents'] = 'Import events';
$labels['importrange'] = 'Events from';
$labels['onemonthback'] = '1 month back';
$labels['nmonthsback'] = '$nr months back';
$labels['showurl'] = 'Show calendar URL';
$labels['showurldescription'] = 'Use the following address to access (read only) your calendar from other applications. You can copy and paste this into any calendar software that supports the iCal format.';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Range to display:';
$labels['listsections'] = 'Divide into:';
$labels['smartsections'] = 'Smart sections';
$labels['until'] = 'until';
$labels['today'] = 'Today';
$labels['tomorrow'] = 'Tomorrow';
$labels['thisweek'] = 'This week';
$labels['nextweek'] = 'Next week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
// attendees
$labels['attendee'] = 'Participant';
$labels['role'] = 'Role';
$labels['availability'] = 'Avail.';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Add participant';
$labels['roleorganizer'] = 'Organizer';
$labels['rolerequired'] = 'Required';
$labels['roleoptional'] = 'Optional';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Group';
$labels['cutyperesource'] = 'Resource';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Free';
$labels['availbusy'] = 'Busy';
$labels['availunknown'] = 'Unknown';
$labels['availtentative'] = 'Tentative';
$labels['availoutofoffice'] = 'Out of Office';
$labels['scheduletime'] = 'Find availability';
$labels['sendinvitations'] = 'Send invitations';
$labels['sendnotifications'] = 'Notify participants about modifications';
$labels['sendcancellation'] = 'Notify participants about event cancellation';
$labels['onlyworkinghours'] = 'Find availability within my working hours';
$labels['reqallattendees'] = 'Required/all participants';
$labels['prevslot'] = 'Previous Slot';
$labels['nextslot'] = 'Next Slot';
$labels['noslotfound'] = 'Unable to find a free time slot';
$labels['invitationsubject'] = 'You\'ve been invited to "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with all the event details which you can import to your calendar application.";
$labels['invitationattendlinks'] = "In case your email client doesn't support iTip requests you can use the following link to either accept or decline this invitation:\n\$url";
$labels['eventupdatesubject'] = '"$title" has been updated';
$labels['eventupdatesubjectempty'] = 'An event that concerns you has been updated';
$labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with the updated event details which you can import to your calendar application.";
$labels['eventcancelsubject'] = '"$title" has been canceled';
$labels['eventcancelmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nThe event has been cancelled by \$organizer.\n\nPlease find attached an iCalendar file with the updated event details.";
// invitation handling
$labels['itipinvitation'] = 'Invitation to';
$labels['itipupdate'] = 'Update of';
$labels['itipcancellation'] = 'Cancelled:';
$labels['itipreply'] = 'Reply to';
$labels['itipaccepted'] = 'Accept';
$labels['itiptentative'] = 'Maybe';
$labels['itipdeclined'] = 'Decline';
$labels['itipsubjectaccepted'] = '"$title" has been accepted by $name';
$labels['itipsubjecttentative'] = '"$title" has been tentatively accepted by $name';
$labels['itipsubjectdeclined'] = '"$title" has been declined by $name';
$labels['itipmailbodyaccepted'] = "\$sender has accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender has tentatively accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender has declined the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipdeclineevent'] = 'Do you want to decline your invitation to this event?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['importtocalendar'] = 'Save to my calendar';
$labels['removefromcalendar'] = 'Remove from my calendar';
$labels['updateattendeestatus'] = 'Update the participant\'s status';
$labels['acceptinvitation'] = 'Do you accept this invitation?';
$labels['youhaveaccepted'] = 'You have accepted this invitation';
$labels['youhavetentative'] = 'You have tentatively accepted this invitation';
$labels['youhavedeclined'] = 'You have declined this invitation';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'save in';
// event dialog tabs
$labels['tabsummary'] = 'Tárgy';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
// messages
$labels['deleteventconfirm'] = 'Do you really want to delete this event?';
$labels['deletecalendarconfirm'] = 'Do you really want to delete this calendar with all its events?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Saving data...';
$labels['errorsaving'] = 'Failed to save changes.';
$labels['operationfailed'] = 'The requested operation failed.';
$labels['invalideventdates'] = 'Invalid dates entered! Please check your input.';
$labels['invalidcalendarproperties'] = 'Invalid calendar properties! Please set a valid name.';
$labels['searchnoresults'] = 'No events found in the selected calendars.';
$labels['successremoval'] = 'The event has been deleted successfully.';
$labels['successrestore'] = 'The event has been restored successfully.';
$labels['errornotifying'] = 'Failed to send notifications to event participants';
$labels['errorimportingevent'] = 'Failed to import the event';
$labels['newerversionexists'] = 'A newer version of this event already exists! Aborted.';
$labels['nowritecalendarfound'] = 'No calendar found to save the event';
$labels['importedsuccessfully'] = 'The event was successfully added to \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Successfully updated the participant\'s status';
$labels['itipsendsuccess'] = 'Invitation sent to participants.';
$labels['itipresponseerror'] = 'Failed to send the response to this event invitation';
$labels['itipinvalidrequest'] = 'This invitation is no longer valid';
$labels['sentresponseto'] = 'Successfully sent invitation response to $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Successfully imported $nr events';
$labels['importnone'] = 'No events found to be imported';
$labels['importerror'] = 'An error occured while importing';
$labels['aclnorights'] = 'You do not have administrator rights on this calendar.';
// recurrence form
$labels['repeat'] = 'Repeat';
$labels['frequency'] = 'Repeat';
$labels['never'] = 'never';
$labels['daily'] = 'daily';
$labels['weekly'] = 'weekly';
$labels['monthly'] = 'monthly';
$labels['yearly'] = 'annually';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Every';
$labels['days'] = 'day(s)';
$labels['weeks'] = 'week(s)';
$labels['months'] = 'month(s)';
$labels['years'] = 'year(s) in:';
$labels['bydays'] = 'On';
$labels['untildate'] = 'the';
$labels['each'] = 'Each';
$labels['onevery'] = 'On every';
$labels['onsamedate'] = 'On the same date';
$labels['forever'] = 'forever';
$labels['recurrencend'] = 'until';
$labels['forntimes'] = 'for $nr time(s)';
$labels['first'] = 'first';
$labels['second'] = 'second';
$labels['third'] = 'third';
$labels['fourth'] = 'fourth';
$labels['last'] = 'last';
$labels['dayofmonth'] = 'Day of month';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Remove event';
$labels['changerecurringeventwarning'] = 'This is a recurring event. Would you like to edit the current event only, this and all future occurences, all occurences or save it as a new event?';
$labels['removerecurringeventwarning'] = 'This is a recurring event. Would you like to remove the current event only, this and all future occurences or all occurences of this event?';
$labels['currentevent'] = 'Current';
$labels['futurevents'] = 'Future';
$labels['allevents'] = 'All';
$labels['saveasnew'] = 'Save as new';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,21 +1,235 @@
<?php
$labels['default_view'] = 'Visualizzazine di default';
$labels = array();
// preferences
$labels['default_view'] = 'Visualizzazione predefinita';
$labels['time_format'] = 'Formato ora';
$labels['timeslots'] = 'Timeslots per ora';
$labels['first_day'] = 'Inizio settimana';
$labels['first_hour'] = 'Prima ora da mostrare';
$labels['workinghours'] = 'Orario lavorativo';
$labels['add_category'] = 'Aggiungi categoria';
$labels['remove_category'] = 'Rimuovi categoria';
$labels['defaultcalendar'] = 'Crea nuovi eventi in';
$labels['eventcoloring'] = 'Colorazione evento';
$labels['coloringmode0'] = 'Secondo il calendario';
$labels['coloringmode1'] = 'Secondo la categoria';
$labels['coloringmode2'] = 'Calendar for outline, category for content';
$labels['coloringmode3'] = 'Category for outline, calendar for content';
// calendar
$labels['calendar'] = 'Calendario';
$labels['calendars'] = 'Calendari';
$labels['category'] = 'Categoria';
$labels['categories'] = 'Categorie';
$labels['createcalendar'] = 'Crea nuovo calendario';
$labels['editcalendar'] = 'Modifica proprietà calendario';
$labels['name'] = 'Nome';
$labels['color'] = 'Colore';
$labels['day'] = 'Giorno';
$labels['week'] = 'Settimana';
$labels['month'] = 'Mese';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Nuovo';
$labels['new_event'] = 'Nuovo evento';
$labels['edit_event'] = 'Modifica evento';
$labels['edit'] = 'Modifica';
$labels['save'] = 'Salva';
$labels['remove'] = 'Elimina';
$labels['cancel'] = 'Annulla';
$labels['select'] = 'Seleziona';
$labels['print'] = 'Stampa';
$labels['printtitle'] = 'Stampa calendari';
$labels['title'] = 'Oggetto';
$labels['description'] = 'Descrizione';
$labels['all-day'] = 'Giorno intero';
$labels['export'] = 'Esporta in ICS';
$labels['tabsummary'] = 'Oggetto';
$labels['all-day'] = 'Tutto il giorno';
$labels['export'] = 'Esporta';
$labels['exporttitle'] = 'Esporta come iCalendar';
$labels['exportrange'] = 'Eventi di';
$labels['exportattachments'] = 'Con allegati';
$labels['customdate'] = 'Data personalizzata';
$labels['location'] = 'Luogo';
$labels['url'] = 'URL';
$labels['date'] = 'Data';
$labels['start'] = 'Inizio';
$labels['end'] = 'Fine';
$labels['selectdate'] = 'Scegliere la data';
$labels['freebusy'] = 'Mostrami come';
$labels['free'] = 'Libero';
$labels['busy'] = 'Occupato';
$labels['outofoffice'] = 'Fuori Ufficio';
$labels['tentative'] = 'Provvisorio';
$labels['priority'] = 'Priorità';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'pubblico';
$labels['private'] = 'privato';
$labels['confidential'] = 'confidenziale';
$labels['alarms'] = 'Promemoria';
$labels['generated'] = 'generato il';
$labels['printdescriptions'] = 'Stampa descrizioni';
$labels['parentcalendar'] = 'Inserisci dentro';
$labels['searchearlierdates'] = '« Cerca eventi precedenti';
$labels['searchlaterdates'] = 'Cerca eventi successivi »';
$labels['andnmore'] = 'Altri $nr...';
$labels['togglerole'] = 'Fare clic per cambiare il ruolo';
$labels['createfrommail'] = 'Salva come evento';
$labels['importevents'] = 'Importa eventi';
$labels['importrange'] = 'Eventi di';
$labels['onemonthback'] = '1 mese prima';
$labels['nmonthsback'] = '$nr mesi prima';
$labels['showurl'] = 'Mostra URL calendario';
$labels['showurldescription'] = 'Usare il seguente indirizzo per accedere (in sola lettura) al calendario da altre applicazioni. È possibile copiarlo e incollarlo in qualsiasi software che supporta il formato iCal.';
$labels['caldavurldescription'] = 'Copiare questo indirizzo in un\'applicazione client <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (es. Evolution o Mozilla Thunderbird) per sincronizzare completamente questo specifico calendario con il proprio computer o dispositivo mobile.';
// agenda view
$labels['listrange'] = 'Intervallo da visualizzare:';
$labels['listsections'] = 'Dividi in:';
$labels['smartsections'] = 'Sezioni intelligenti';
$labels['until'] = 'fino a';
$labels['today'] = 'Oggi';
$labels['tomorrow'] = 'Domani';
$labels['thisweek'] = 'Questa settimana';
$labels['nextweek'] = 'Prossima settimana';
$labels['thismonth'] = 'Questo mese';
$labels['nextmonth'] = 'Prossimo mese';
$labels['weekofyear'] = 'Settimana';
$labels['pastevents'] = 'Passato';
$labels['futureevents'] = 'Futuro';
// alarm/reminder settings
$labels['showalarms'] = 'Mostra promemoria';
$labels['defaultalarmtype'] = 'Impostazioni predefinite dei promemoria';
$labels['defaultalarmoffset'] = 'Tempo predefinito per i promemoria';
// attendees
$labels['attendee'] = 'Partecipante';
$labels['role'] = 'Ruolo';
$labels['availability'] = 'Dispon.';
$labels['confirmstate'] = 'Stato';
$labels['addattendee'] = 'Aggiungi partecipante';
$labels['roleorganizer'] = 'Organizzatore';
$labels['rolerequired'] = 'Necessario';
$labels['roleoptional'] = 'Facoltativo';
$labels['rolechair'] = 'Presidente';
$labels['rolenonparticipant'] = 'Assente';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Gruppo';
$labels['cutyperesource'] = 'Risorsa';
$labels['cutyperoom'] = 'Stanza';
$labels['availfree'] = 'Libero';
$labels['availbusy'] = 'Occupato';
$labels['availunknown'] = 'Sconosciuto';
$labels['availtentative'] = 'Provvisorio';
$labels['availoutofoffice'] = 'Fuori sede';
$labels['scheduletime'] = 'Trova disponibilità';
$labels['sendinvitations'] = 'Manda inviti';
$labels['sendnotifications'] = 'Notifica le modifiche ai partecipanti';
$labels['sendcancellation'] = 'Notifica ai partecipanti la cancellazione dell\'evento';
$labels['onlyworkinghours'] = 'Trova disponibilità durante le ore lavorative';
$labels['reqallattendees'] = 'Necessario/tutti i partecipanti';
$labels['prevslot'] = 'Spazio precedente';
$labels['nextslot'] = 'Spazio successivo';
$labels['noslotfound'] = 'Impossibile trovare uno spazio di tempo libero';
$labels['invitationsubject'] = 'Sei stato invitato a "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nQuando: \$date\n\nInvitati: \$attendees\n\nIn allegato un file iCalendar con tutti i dettagli dell'evento, che puoi importare nella tua applicazione calendario.";
$labels['invitationattendlinks'] = "Se il tuo client di posta elettronica non supporta le richieste iTip, puoi seguire il seguente collegamento per accettare o rifiutare l'invito:\n\$url";
$labels['eventupdatesubject'] = '"$title" è stato aggiornato';
$labels['eventupdatesubjectempty'] = 'Un evento che ti riguarda è stato aggiornato';
$labels['eventupdatemailbody'] = "*\$title*\n\nQuando: \$date\n\nInvitati: \$attendees\n\nIn allegato un file iCalendar con i dettagli aggiornati dell'evento che puoi importare nella tua applicazione calendario.";
$labels['eventcancelsubject'] = '"$title" è stato annullato';
$labels['eventcancelmailbody'] = "*\$title*\n\nQuando: \$date\n\nInvitati: \$attendees\n\nL'evento è stato cancellato da \$organizer.\n\nIn allegato un file iCalendar con i dettagli aggiornati dell'evento .";
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender ha accettato l'invito al seguente evento:\n\n*\$title*\n\nQuando: \$date\n\nInvitati: \$attendees";
$labels['itipmailbodytentative'] = "\$sender ha accettato con riserva l'invito al seguente evento:\n\n*\$title*\n\nQuando: \$date\n\nInvitati: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender ha rifiutato l'invito al seguente evento:\n\n*\$title*\n\nQuando: \$date\n\nInvitati: \$attendees";
$labels['itipdeclineevent'] = 'Vuoi rifiutare l\'invito a questo evento?';
$labels['declinedeleteconfirm'] = 'Vuoi anche cancellare dal calendario l\'evento rifiutato?';
$labels['notanattendee'] = 'Non sei elencato tra i partecipanti a questo evento';
$labels['eventcancelled'] = 'L\'evento è stato annullato';
$labels['saveincalendar'] = 'salva in';
// event dialog tabs
$labels['tabsummary'] = 'Riepilogo';
$labels['tabrecurrence'] = 'Ricorrenza';
$labels['tabattendees'] = 'Partecipanti';
$labels['tabattachments'] = 'Allegati';
$labels['tabsharing'] = 'Condivisione';
// messages
$labels['deleteventconfirm'] = 'Cancellare davvero questo evento?';
$labels['deletecalendarconfirm'] = 'Cancellare davvero questo calendario con tutti i suoi eventi?';
$labels['deletecalendarconfirmrecursive'] = 'Vuoi veramente eliminare questo calendario con tutti i suoi eventi e i suoi sotto-calendari?';
$labels['savingdata'] = 'Salvataggio dati...';
$labels['errorsaving'] = 'Impossibile salvare le modifiche.';
$labels['operationfailed'] = 'L\'operazione richiesta è fallita.';
$labels['invalideventdates'] = 'Le date inserite non sono valide. Controllare l\'inserimento.';
$labels['invalidcalendarproperties'] = 'Proprietà del calendario non valide. Impostare un nome valido.';
$labels['searchnoresults'] = 'Nessun evento trovato nel calendario selezionato.';
$labels['successremoval'] = 'L\'evento è stato cancellato correttamente.';
$labels['successrestore'] = 'L\'evento è stato ripristinato correttamente.';
$labels['errornotifying'] = 'Spedizione delle notifiche ai partecipanti dell\'evento fallita';
$labels['errorimportingevent'] = 'Importazione evento fallita';
$labels['newerversionexists'] = 'Esiste già una versione più recente di questo evento. Abortito.';
$labels['nowritecalendarfound'] = 'Non c\'è nessun calendario dove salvare l\'evento';
$labels['importedsuccessfully'] = 'Evento aggiunto correttamente a \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Stato dei partecipanti aggiornato correttamente';
$labels['itipsendsuccess'] = 'Invito spedito ai partecipanti.';
$labels['itipresponseerror'] = 'Spedizione della risposta all\'invito fallita';
$labels['itipinvalidrequest'] = 'Questo invito non è più valido';
$labels['sentresponseto'] = 'Risposta all\'invito inviata correttamente a $mailto';
$labels['localchangeswarning'] = 'Stai per fare dei cambiamenti che compariranno solo nel tuo calendario e non saranno spediti all\'organizzatore dell\'evento.';
$labels['importsuccess'] = '$nr eventi importati correttamente';
$labels['importnone'] = 'Nessun evento trovato da importare';
$labels['importerror'] = 'Si è verificato un errore durante l\'importazione';
$labels['aclnorights'] = 'Non hai i diritti di amministratore per questo calendario.';
// recurrence form
$labels['repeat'] = 'Ricorrenza';
$labels['frequency'] = 'Frequenza';
$labels['never'] = 'una volta';
$labels['daily'] = 'quotidiana';
$labels['weekly'] = 'settimanale';
$labels['monthly'] = 'mensile';
$labels['yearly'] = 'annuale';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Ogni';
$labels['days'] = 'giorno/i';
$labels['weeks'] = 'settimana/e';
$labels['months'] = 'mese/i';
$labels['years'] = 'anno/i in:';
$labels['bydays'] = 'Di';
$labels['untildate'] = 'il';
$labels['each'] = 'Nei giorni';
$labels['onevery'] = 'Ogni';
$labels['onsamedate'] = 'Alla stessa data';
$labels['forever'] = 'per sempre';
$labels['recurrencend'] = 'fino al';
$labels['forntimes'] = 'per $nr volte';
$labels['first'] = 'primo';
$labels['second'] = 'secondo';
$labels['third'] = 'terzo';
$labels['fourth'] = 'quarto';
$labels['last'] = 'ultimo';
$labels['dayofmonth'] = 'Giorno del mese';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Cambia evento';
$labels['removeeventconfirm'] = 'Rimuovi evento';
$labels['changerecurringeventwarning'] = 'This is a recurring event. Would you like to edit the current event only, this and all future occurences, all occurences or save it as a new event?';
$labels['removerecurringeventwarning'] = 'This is a recurring event. Would you like to remove the current event only, this and all future occurences or all occurences of this event?';
$labels['currentevent'] = 'Current';
$labels['futurevents'] = 'Futuro';
$labels['allevents'] = 'Tutto';
$labels['saveasnew'] = 'Salva come nuovo';
// birthdays calendar
$labels['birthdays'] = 'Compleanni';
$labels['birthdayscalendar'] = 'Calendario compleanni';
$labels['displaybirthdayscalendar'] = 'Mostra il calendario compleanni';
$labels['birthdayscalendarsources'] = 'Da queste rubriche';
$labels['birthdayeventtitle'] = 'Compleanno di $name';
$labels['birthdayage'] = 'Età: $age anni';
?>

View file

@ -1,7 +1,11 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'デフォルトビュー';
$labels['time_format'] = '時刻表示形式';
$labels['timeslots'] = '1時間毎';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = '最初の平日';
$labels['first_hour'] = '最初の時間を表示';
$labels['workinghours'] = '労働時間';
@ -13,6 +17,8 @@ $labels['coloringmode0'] = 'カレンダーの説明';
$labels['coloringmode1'] = 'カテゴリの説明';
$labels['coloringmode2'] = 'アウトライン用カレンダー、コンテンツ用カテゴリ';
$labels['coloringmode3'] = 'アウトライン用カレンダー、コンテンツ用カテゴリ';
// calendar
$labels['calendar'] = 'カレンダー';
$labels['calendars'] = 'カレンダー';
$labels['category'] = 'カテゴリ';
@ -40,7 +46,11 @@ $labels['description'] = '説明';
$labels['all-day'] = '全日';
$labels['export'] = 'エクスポート';
$labels['exporttitle'] = 'iカレンダーへエクスポート';
$labels['exportrange'] = 'イベント元';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = '場所';
$labels['url'] = 'URL';
$labels['date'] = '期日';
$labels['start'] = '開始';
$labels['end'] = '終了';
@ -70,6 +80,9 @@ $labels['onemonthback'] = '1 ヶ月戻る';
$labels['nmonthsback'] = '$nr ヶ月戻る';
$labels['showurl'] = 'カレンダーURL表示';
$labels['showurldescription'] = '以下のアドレスを使用して他のアプリケーションからカレンダーにアクセス(読込のみ)できます。iCal形式をサポートしたカレンダーソフトウェアへコピーアンドペーストができます。';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = '表示範囲:';
$labels['listsections'] = '分割:';
$labels['smartsections'] = 'スマートセクション';
@ -83,9 +96,13 @@ $labels['nextmonth'] = '来月';
$labels['weekofyear'] = '週';
$labels['pastevents'] = '以前';
$labels['futureevents'] = '以降';
$labels['showalarms'] = 'アラーム表示';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'デフォルト通知設定';
$labels['defaultalarmoffset'] = 'デフォルト通知時間';
// attendees
$labels['attendee'] = '参加者';
$labels['role'] = 'ロール';
$labels['availability'] = '利用可';
@ -94,6 +111,12 @@ $labels['addattendee'] = '参加者追加';
$labels['roleorganizer'] = '編成者';
$labels['rolerequired'] = '要件';
$labels['roleoptional'] = 'オプション';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'グループ';
$labels['cutyperesource'] = 'リソース';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = '空';
$labels['availbusy'] = 'ビジー';
$labels['availunknown'] = '不明';
@ -116,37 +139,27 @@ $labels['eventupdatesubjectempty'] = 'あなたに関連するイベントが更
$labels['eventupdatemailbody'] = "*\$title*\n\nいつ: \$date\n\n招待者: \$attendees\n\nあなたのカレンダーアプリケーションにインポートできるアップデートされた全イベントの詳細が添付されたiカレンダーファイルを見つけてください。";
$labels['eventcancelsubject'] = '"$title" は変更されました';
$labels['eventcancelmailbody'] = "*\$title*\n\nいつ: \$date\n\n招待者: \$attendees\n\nイベントが \$organizer によってキャンセルされました。\n\n更新されたイベントの詳細とともに添付されたiカレンダーファイルを見つけてください。";
$labels['itipinvitation'] = '招待する';
$labels['itipupdate'] = '更新';
$labels['itipcancellation'] = 'キャンセル';
$labels['itipreply'] = '返信';
$labels['itipaccepted'] = '承諾';
$labels['itiptentative'] = 'たぶん';
$labels['itipdeclined'] = '辞退';
$labels['itipsubjectaccepted'] = '$name が "$title" を承諾しました';
$labels['itipsubjecttentative'] = '$name が "$title" を仮承諾しました';
$labels['itipsubjectdeclined'] = '$name が "$title" を辞退しました';
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender は以下のイベントへの招待を承諾しました:\n\n*\$title*\n\nいつ: \$date\n\n招待者: \$attendees";
$labels['itipmailbodytentative'] = "\$sender は以下のイベントへの招待を仮承諾しました:\n\n*\$title*\n\nいつ: \$date\n\n招待者: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender は以下のイベントへの招待を辞退しました:\n\n*\$title*\n\nいつ: \$date\n\n招待者: \$attendees";
$labels['itipdeclineevent'] = 'このイベントへの招待を辞退しますか?';
$labels['importtocalendar'] = 'カレンダーに保存';
$labels['removefromcalendar'] = 'カレンダーから削除';
$labels['updateattendeestatus'] = '参加者の状況更新';
$labels['acceptinvitation'] = 'この招待を承諾しますか?';
$labels['youhaveaccepted'] = 'この招待を承諾しました';
$labels['youhavetentative'] = 'この招待を仮承諾しました。';
$labels['youhavedeclined'] = 'この招待を辞退しました。';
$labels['notanattendee'] = 'このイベントの出席者として一覧にありません';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['eventcancelled'] = 'このイベントはキャンセルされました';
$labels['saveincalendar'] = '保存';
// event dialog tabs
$labels['tabsummary'] = '要約';
$labels['tabrecurrence'] = '繰返し';
$labels['tabattendees'] = '参加者';
$labels['tabattachments'] = '添付';
$labels['tabsharing'] = '共有';
// messages
$labels['deleteventconfirm'] = '本当にこのイベントを削除しますか?';
$labels['deletecalendarconfirm'] = '本当にこのカレンダーを全イベントとともに削除しますか?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'データを保存中…';
$labels['errorsaving'] = '変更が保存できませんでした。';
$labels['operationfailed'] = '要求された操作ができませんでした。';
@ -165,10 +178,13 @@ $labels['itipsendsuccess'] = '出席者へ招待を送信しました。';
$labels['itipresponseerror'] = 'この招待の返信できませんでした';
$labels['itipinvalidrequest'] = 'この招待は間もなく無効になります';
$labels['sentresponseto'] = '$mailto への招待の返信しました';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = '$nr イベントをインポートしました';
$labels['importnone'] = 'インポートされたイベントはありません';
$labels['importerror'] = 'インポート中にエラーが発生しました。';
$labels['aclnorights'] = 'このカレンダーの管理権限がありません。';
// recurrence form
$labels['repeat'] = '繰返し';
$labels['frequency'] = '繰返し';
$labels['never'] = '繰返さない';
@ -176,6 +192,7 @@ $labels['daily'] = '毎日';
$labels['weekly'] = '毎週';
$labels['monthly'] = '毎月';
$labels['yearly'] = '毎年';
$labels['rdate'] = 'on dates';
$labels['every'] = 'いつでも';
$labels['days'] = '日(s)';
$labels['weeks'] = '週(s)';
@ -195,6 +212,8 @@ $labels['third'] = '第3週';
$labels['fourth'] = '第4週';
$labels['last'] = '最終週';
$labels['dayofmonth'] = '日';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'イベント変更';
$labels['removeeventconfirm'] = 'イベント削除';
$labels['changerecurringeventwarning'] = 'これは繰返しイベントです。現在のイベントのみ、このイベントと今後の全イベント、全イベント、編集したい、もしくは新しいイベントとして保存したい?';
@ -203,4 +222,13 @@ $labels['currentevent'] = '現在';
$labels['futurevents'] = '今後';
$labels['allevents'] = '全て';
$labels['saveasnew'] = '新規保存';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,17 +1,24 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Standaard agenda';
$labels['time_format'] = 'Tijdsformaat';
$labels['timeslots'] = 'Timeslots per uur';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Eerste weekdag';
$labels['first_hour'] = 'Eerste uur om weer te geven';
$labels['workinghours'] = 'Werkuren';
$labels['add_category'] = 'Categorie toevoegen';
$labels['remove_category'] = 'Categorie verwijderen';
$labels['eventcoloring'] = 'Evenement kleuren';
$labels['defaultcalendar'] = 'Maak nieuwe afspraken in';
$labels['eventcoloring'] = 'Kleuren van afspraken';
$labels['coloringmode0'] = 'Volgens kalender';
$labels['coloringmode1'] = 'Volgens categorie';
$labels['coloringmode2'] = 'Kalender voor omtrek, categorie voor inhoud';
$labels['coloringmode3'] = 'Categorie voor omtrek, kalender voor inhoud';
// calendar
$labels['calendar'] = 'Agenda';
$labels['calendars'] = 'Kalenders';
$labels['category'] = 'Categorie';
@ -25,7 +32,7 @@ $labels['week'] = 'Week';
$labels['month'] = 'Maand';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Nieuw';
$labels['new_event'] = 'Nieuw evenement';
$labels['new_event'] = 'Nieuwe afspraak';
$labels['edit_event'] = 'Wijzig evenement';
$labels['edit'] = 'Wijzig';
$labels['save'] = 'Bewaar';
@ -39,7 +46,11 @@ $labels['description'] = 'Beschrijving';
$labels['all-day'] = 'hele dag';
$labels['export'] = 'Exporteer naar ICS';
$labels['exporttitle'] = 'Als iCalender exporteren';
$labels['exportrange'] = 'Events from';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Locatie';
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Begin';
$labels['end'] = 'Eind';
@ -57,14 +68,24 @@ $labels['confidential'] = 'vertrouwelijk';
$labels['alarms'] = 'Herinnering';
$labels['generated'] = 'gegenereerd op';
$labels['printdescriptions'] = 'Print beschrijvingen';
$labels['parentcalendar'] = 'Insert inside';
$labels['searchearlierdates'] = '« Zoek voor eerdere evenementen';
$labels['searchlaterdates'] = 'Zoek voor latere evenementen »';
$labels['andnmore'] = '$nr meer...';
$labels['togglerole'] = 'Click to toggle role';
$labels['createfrommail'] = 'Bewaar als evenement';
$labels['importevents'] = 'Evenementen importeren';
$labels['importrange'] = 'Events from';
$labels['onemonthback'] = '1 maand terug';
$labels['nmonthsback'] = '$nr maanden terug';
$labels['showurl'] = 'Toon kalender URL';
$labels['showurldescription'] = 'Use the following address to access (read only) your calendar from other applications. You can copy and paste this into any calendar software that supports the iCal format.';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Range to display:';
$labels['listsections'] = 'Verdeel in:';
$labels['smartsections'] = 'Smart sections';
$labels['until'] = 'tot';
$labels['today'] = 'Vandaag';
$labels['tomorrow'] = 'Morgen';
@ -75,7 +96,13 @@ $labels['nextmonth'] = 'Volgende maand';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Verleden';
$labels['futureevents'] = 'Toekomst';
$labels['showalarms'] = 'Alarmen tonen';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Standaard herinnering instelling';
$labels['defaultalarmoffset'] = 'Standaard herinnering tijd';
// attendees
$labels['attendee'] = 'Deelnemer';
$labels['role'] = 'Rol';
$labels['availability'] = 'Beschikb.';
@ -84,6 +111,12 @@ $labels['addattendee'] = 'Deelnemer toevoegen';
$labels['roleorganizer'] = 'Organisatie';
$labels['rolerequired'] = 'Verplicht';
$labels['roleoptional'] = 'Optioneel';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Groep';
$labels['cutyperesource'] = 'Middel';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Vrij';
$labels['availbusy'] = 'Bezig';
$labels['availunknown'] = 'Onbekend';
@ -91,26 +124,69 @@ $labels['availtentative'] = 'Misschien';
$labels['availoutofoffice'] = 'Niet Aanwezig';
$labels['scheduletime'] = 'Vind beschikbaarheid';
$labels['sendinvitations'] = 'Verzend uitnodigingen';
$labels['itipinvitation'] = 'Uitnodiging voor';
$labels['itipupdate'] = 'Update van';
$labels['itipcancellation'] = 'Afgelast:';
$labels['itipaccepted'] = 'Accepteer';
$labels['itiptentative'] = 'Misschien';
$labels['itipdeclined'] = 'Afwijzen';
$labels['importtocalendar'] = 'Bewaar in mijn kalender';
$labels['removefromcalendar'] = 'Verwijder van mijn kalender';
$labels['updateattendeestatus'] = 'Update status van deelnemer';
$labels['acceptinvitation'] = 'Accepteer je deze uitnodiging?';
$labels['youhaveaccepted'] = 'Je hebt de uitnodiging geaccepteerd';
$labels['youhavedeclined'] = 'Je hebt deze uitnodiging afgewezen';
$labels['sendnotifications'] = 'Notify participants about modifications';
$labels['sendcancellation'] = 'Notify participants about event cancellation';
$labels['onlyworkinghours'] = 'Find availability within my working hours';
$labels['reqallattendees'] = 'Required/all participants';
$labels['prevslot'] = 'Previous Slot';
$labels['nextslot'] = 'Next Slot';
$labels['noslotfound'] = 'Unable to find a free time slot';
$labels['invitationsubject'] = 'U bent uitgenodigd voor "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with all the event details which you can import to your calendar application.";
$labels['invitationattendlinks'] = "In case your email client doesn't support iTip requests you can use the following link to either accept or decline this invitation:\n\$url";
$labels['eventupdatesubject'] = '"$title" is bijgewerkt';
$labels['eventupdatesubjectempty'] = 'An event that concerns you has been updated';
$labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with the updated event details which you can import to your calendar application.";
$labels['eventcancelsubject'] = '"$title" is geannuleerd';
$labels['eventcancelmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nThe event has been cancelled by \$organizer.\n\nPlease find attached an iCalendar file with the updated event details.";
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender has accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender has tentatively accepted the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender has declined the invitation to the following event:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipdeclineevent'] = 'Do you want to decline your invitation to this event?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'Dit evenement is afgelast';
$labels['saveincalendar'] = 'bewaar in';
// event dialog tabs
$labels['tabsummary'] = 'Samenvatting';
$labels['tabrecurrence'] = 'Herhaling';
$labels['tabattendees'] = 'Deelnemers';
$labels['tabattachments'] = 'Toebehoren';
$labels['tabsharing'] = 'Delen';
// messages
$labels['deleteventconfirm'] = 'Do you really want to delete this event?';
$labels['deletecalendarconfirm'] = 'Do you really want to delete this calendar with all its events?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Data wordt opgeslagen...';
$labels['errorsaving'] = 'Failed to save changes.';
$labels['operationfailed'] = 'The requested operation failed.';
$labels['invalideventdates'] = 'Invalid dates entered! Please check your input.';
$labels['invalidcalendarproperties'] = 'Invalid calendar properties! Please set a valid name.';
$labels['searchnoresults'] = 'No events found in the selected calendars.';
$labels['successremoval'] = 'The event has been deleted successfully.';
$labels['successrestore'] = 'The event has been restored successfully.';
$labels['errornotifying'] = 'Failed to send notifications to event participants';
$labels['errorimportingevent'] = 'Failed to import the event';
$labels['newerversionexists'] = 'A newer version of this event already exists! Aborted.';
$labels['nowritecalendarfound'] = 'No calendar found to save the event';
$labels['importedsuccessfully'] = 'The event was successfully added to \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Successfully updated the participant\'s status';
$labels['itipsendsuccess'] = 'Invitation sent to participants.';
$labels['itipresponseerror'] = 'Failed to send the response to this event invitation';
$labels['itipinvalidrequest'] = 'This invitation is no longer valid';
$labels['sentresponseto'] = 'Successfully sent invitation response to $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Successfully imported $nr events';
$labels['importnone'] = 'No events found to be imported';
$labels['importerror'] = 'An error occured while importing';
$labels['aclnorights'] = 'You do not have administrator rights on this calendar.';
// recurrence form
$labels['repeat'] = 'Herhaal';
$labels['frequency'] = 'Herhaal';
$labels['never'] = 'nooit';
@ -118,10 +194,12 @@ $labels['daily'] = 'dagelijks';
$labels['weekly'] = 'weekelijks';
$labels['monthly'] = 'maandelijks';
$labels['yearly'] = 'jaarlijks';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Elke';
$labels['days'] = 'dag(en)';
$labels['weeks'] = 'week / weken';
$labels['months'] = 'maand(en)';
$labels['years'] = 'year(s) in:';
$labels['bydays'] = 'Op';
$labels['untildate'] = 'de';
$labels['each'] = 'Elke';
@ -136,10 +214,23 @@ $labels['third'] = 'derde';
$labels['fourth'] = 'vierde';
$labels['last'] = 'laatste';
$labels['dayofmonth'] = 'Dag van de maand';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Wijzig evenement';
$labels['removeeventconfirm'] = 'Verwijder evenement';
$labels['changerecurringeventwarning'] = 'This is a recurring event. Would you like to edit the current event only, this and all future occurences, all occurences or save it as a new event?';
$labels['removerecurringeventwarning'] = 'This is a recurring event. Would you like to remove the current event only, this and all future occurences or all occurences of this event?';
$labels['currentevent'] = 'Huidige';
$labels['futurevents'] = 'Toekomst';
$labels['allevents'] = 'Alle';
$labels['saveasnew'] = 'Bewaar als nieuw';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,22 +1,235 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Domyślny widok';
$labels['time_format'] = 'Format czasu';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Pierwszy dzień tygodnia';
$labels['first_hour'] = 'Pierwsza godzina';
$labels['workinghours'] = 'Godziny robocze';
$labels['add_category'] = 'Dodaj kategorię';
$labels['remove_category'] = 'Usuń kategorię';
$labels['defaultcalendar'] = 'Twórz nowe zdarzenia w';
$labels['eventcoloring'] = 'Kolor zdarzenia';
$labels['coloringmode0'] = 'Zgodnie z kalendarzem';
$labels['coloringmode1'] = 'Zgodnie z kategorią';
$labels['coloringmode2'] = 'Kalendarz dla obramowania, kategoria dla środka';
$labels['coloringmode3'] = 'Kategoria dla obramowania, kalendarz dla środka';
// calendar
$labels['calendar'] = 'Kalendarz';
$labels['calendars'] = 'Kalendarze';
$labels['category'] = 'Kategoria';
$labels['categories'] = 'Kategorie';
$labels['createcalendar'] = 'Utwórz nowy kalendarz';
$labels['editcalendar'] = 'Edytuj właściwości kalendarza';
$labels['name'] = 'Nazwa';
$labels['color'] = 'Kolor';
$labels['day'] = 'Dzień';
$labels['week'] = 'Tydzień';
$labels['month'] = 'Miesiąc';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Nowy';
$labels['new_event'] = 'Nowe zdarzenie';
$labels['edit_event'] = 'Edytuj zdarzenie';
$labels['edit'] = 'Edytuj';
$labels['save'] = 'Zapisz';
$labels['remove'] = 'Usuń';
$labels['cancel'] = 'Anuluj';
$labels['select'] = 'Wybierz';
$labels['print'] = 'Drukuj';
$labels['printtitle'] = 'Drukuj kalendarze';
$labels['title'] = 'Podsumowanie';
$labels['description'] = 'Opis';
$labels['start'] = 'Start';
$labels['all-day'] = 'cały dzień';
$labels['export'] = 'Eksport';
$labels['exporttitle'] = 'Eksport w formacie iCalendar';
$labels['exportrange'] = 'Zdarzenia z';
$labels['exportattachments'] = 'Z załącznikami';
$labels['customdate'] = 'Własna data';
$labels['location'] = 'Położenie';
$labels['url'] = 'Adres URL';
$labels['date'] = 'Data';
$labels['start'] = 'Początek';
$labels['end'] = 'Koniec';
$labels['selectdate'] = 'Wybierz datę';
$labels['freebusy'] = 'Pokaż mnie jako';
$labels['free'] = 'Wolny';
$labels['busy'] = 'Zajęty';
$labels['outofoffice'] = 'Poza biurem';
$labels['tentative'] = 'Niepewny';
$labels['priority'] = 'Priorytet';
$labels['sensitivity'] = 'Poufność';
$labels['public'] = 'publiczny';
$labels['private'] = 'prywatny';
$labels['confidential'] = 'poufny';
$labels['alarms'] = 'Przypomnienie';
$labels['generated'] = 'wygenerowano';
$labels['printdescriptions'] = 'Drukuj opisy';
$labels['parentcalendar'] = 'Wstaw wewnątrz';
$labels['searchearlierdates'] = '« Szukaj wcześniejszych zdarzeń';
$labels['searchlaterdates'] = 'Szukaj późniejszych zdarzeń »';
$labels['andnmore'] = '$nr więcej...';
$labels['togglerole'] = 'Kliknuj aby przestawić rolę';
$labels['createfrommail'] = 'Zapisz jako zdarzenie';
$labels['importevents'] = 'Importuj zdarzenia';
$labels['importrange'] = 'Zdarzenia z';
$labels['onemonthback'] = '1 miesiąc wstecz';
$labels['nmonthsback'] = '$nr miesięcy wstecz';
$labels['showurl'] = 'Pokaż adres URL kalendarza';
$labels['showurldescription'] = 'Używaj tego adresu aby dostać się do kalendarza z innych programów (w trybie tylko-do-odczytu). Możesz wkleić go do dowolnej aplikacji obsługującej format iCal.';
$labels['caldavurldescription'] = 'Skopiuj ten adres do aplikacji obsługującej format <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (np. Evolution lub Mozilla Thunderbird) aby zsynchronizować wybrany kalendarz z twoim komputerem lub urządzeniem przenośnym.';
// agenda view
$labels['listrange'] = 'Zakres do pokazania:';
$labels['listsections'] = 'Podziel na:';
$labels['smartsections'] = 'Inteligentne sekcje';
$labels['until'] = 'dopóki';
$labels['today'] = 'Dzisiaj';
$labels['tomorrow'] = 'Jutro';
$labels['showalarms'] = 'Pokaż alarmy';
$labels['thisweek'] = 'Bieżący tydzień';
$labels['nextweek'] = 'Następny tydzień';
$labels['thismonth'] = 'Bieżący miesiąc';
$labels['nextmonth'] = 'Następny miesiąc';
$labels['weekofyear'] = 'Tydzień';
$labels['pastevents'] = 'Przeszłe';
$labels['futureevents'] = 'Przyszłe';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Domyślne powiadomienie';
$labels['defaultalarmoffset'] = 'Domyślny czas powiadomienia';
// attendees
$labels['attendee'] = 'Uczestnik';
$labels['role'] = 'Rola';
$labels['availability'] = 'Dostępny';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Dodaj uczestnika';
$labels['roleorganizer'] = 'Organizator';
$labels['rolerequired'] = 'Wymagany';
$labels['roleoptional'] = 'Opcjonalny';
$labels['rolechair'] = 'Przewodniczący';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Osoba';
$labels['cutypegroup'] = 'Grupa';
$labels['cutyperesource'] = 'Zasób';
$labels['cutyperoom'] = 'Pokój';
$labels['availfree'] = 'Wolny';
$labels['availbusy'] = 'Zajęty';
$labels['availunknown'] = 'Nieznany';
$labels['availtentative'] = 'Niepewny';
$labels['availoutofoffice'] = 'Poza biurem';
$labels['scheduletime'] = 'Sprawdź dostępność';
$labels['sendinvitations'] = 'Wyślij zaproszenia';
$labels['sendnotifications'] = 'Powiadom uczestników o zmianach';
$labels['sendcancellation'] = 'Powiadom uczestników o anulowaniu zdarzenia';
$labels['onlyworkinghours'] = 'Sprawdź dostępność w moich godzinach pracy';
$labels['reqallattendees'] = 'Wymagany/wszyscy uczestnicy';
$labels['prevslot'] = 'Poprzedni przedział';
$labels['nextslot'] = 'Następny przedział';
$labels['noslotfound'] = 'Nie znaleziono wolnego przedziału czasu';
$labels['invitationsubject'] = 'Zostałeś zaproszony do "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\nW załączeniu plik w formacie iCalendar ze szczegółami zdarzenia, który możesz zaimportować do twojej aplikacji kalendarza.";
$labels['invitationattendlinks'] = "W przypadku gdy klient poczty elektronicznej nie obsługuje rządań w formacie iTip, aby zaakceptować lub odrzucić to zaproszenie, można skorzystać z następującego linku:\n\$url ";
$labels['eventupdatesubject'] = '"$title" zostało zaktualizowane';
$labels['eventupdatesubjectempty'] = 'Zdarzenie które cię dotyczy zostało zaktualizowane';
$labels['eventupdatemailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\nW załączeniu plik w formacie iCalendar zawierający zaktualizowane szczegóły zdarzenia, które możesz zaimportować do swojej aplikacji kalendarza.";
$labels['eventcancelsubject'] = '"$title" zostało anulowane';
$labels['eventcancelmailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\nZdarzenie zostało anulowane przez \$organizer.\n\nW załączeniu plik w formacie iCalendar ze zaktualizowanymi szczegółami zdarzenia.";
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender zaakceptował zaproszenie do następującego zdarzenia:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
$labels['itipmailbodytentative'] = "\$sender warunkowo zaakceptował zaproszenie do następującego zdarzenia:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender odrzucił zaproszenie na następujące zdarzenie:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
$labels['itipdeclineevent'] = 'Czy chcesz odrzucić zaproszenie na to zdarzenie?';
$labels['declinedeleteconfirm'] = 'Czy chcesz także usunąć to odrzucone zdarzenie ze swojego kalendarza?';
$labels['notanattendee'] = 'Nie jesteś na liście uczestników tego zdarzenia';
$labels['eventcancelled'] = 'Zdarzenie zostało anulowane';
$labels['saveincalendar'] = 'zapisz w';
// event dialog tabs
$labels['tabsummary'] = 'Podsumowanie';
$labels['tabrecurrence'] = 'Powtarzalność';
$labels['tabattendees'] = 'Uczestnicy';
$labels['tabattachments'] = 'Załączniki';
$labels['tabsharing'] = 'Udostępnianie';
// messages
$labels['deleteventconfirm'] = 'Czy na pewno chcesz usunąć to zdarzenie?';
$labels['deletecalendarconfirm'] = 'Czy na pewno chcesz usunąć ten kalendarz z wszystkimi zadaniami?';
$labels['deletecalendarconfirmrecursive'] = 'Czy na pewno chcesz usunąć ten kalendarz ze wszystkimi zdarzeniami i pod-kalendarzami?';
$labels['savingdata'] = 'Zapisuję dane...';
$labels['errorsaving'] = 'Błąd podczas zapisu danych.';
$labels['operationfailed'] = 'Żądana operacja nie powiodła się.';
$labels['invalideventdates'] = 'Błędna data! Proszę sprawdzić wprowadzone dane.';
$labels['invalidcalendarproperties'] = 'Błędna właściwość kalendarza! Proszę podać poprawną nazwę.';
$labels['searchnoresults'] = 'Nie znaleziono zdarzeń w wybranym kalendarzu.';
$labels['successremoval'] = 'Zdarzenie zostało usunięte.';
$labels['successrestore'] = 'Zdarzenie zostało przywrócone.';
$labels['errornotifying'] = 'Nie udało się wysłać powiadomień do uczestników zdarzenia';
$labels['errorimportingevent'] = 'Nie udało się zaimportować zdarzenia';
$labels['newerversionexists'] = 'Istnieje nowsza wersja tego zdarzenia ! Przerwano.';
$labels['nowritecalendarfound'] = 'Nie znaleziono kalendarza aby zapisać zdarzenie.';
$labels['importedsuccessfully'] = 'Zdarzenie dodano do \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Zaktualizowano status uczestnika.';
$labels['itipsendsuccess'] = 'Wysłano zaproszenia do uczestników.';
$labels['itipresponseerror'] = 'Nie udało się wysłać odpowiedzi na to zaproszenie.';
$labels['itipinvalidrequest'] = 'To zaproszenie nie jest już aktualne.';
$labels['sentresponseto'] = 'Wysłano odpowiedź na zaproszenie do $mailto.';
$labels['localchangeswarning'] = 'Zamierzasz dokonać zmian, które mogą zostać wykonane tylko w twoim kalendarzu i nie zostaną wysłane do organizatora zdarzenia.';
$labels['importsuccess'] = 'Zaimportowano $nr zdarzeń.';
$labels['importnone'] = 'Nie znaleziono zdarzeń do zaimportowania.';
$labels['importerror'] = 'Wystąpił błąd podczas importu.';
$labels['aclnorights'] = 'Nie masz uprawnień administracyjnych dla tego kalendarza.';
// recurrence form
$labels['repeat'] = 'Powtórz';
$labels['frequency'] = 'Powtórz';
$labels['never'] = 'nigdy';
$labels['daily'] = 'codziennie';
$labels['weekly'] = 'cotygodniowo';
$labels['monthly'] = 'miesięcznie';
$labels['yearly'] = 'corocznie';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Każdy';
$labels['days'] = 'dnia';
$labels['weeks'] = 'tygodnia';
$labels['months'] = 'miesiąca';
$labels['years'] = 'roku w:';
$labels['bydays'] = 'W';
$labels['untildate'] = 'do';
$labels['each'] = 'Każdy';
$labels['onevery'] = 'W każdy';
$labels['onsamedate'] = 'W tej samej dacie';
$labels['forever'] = 'zawsze';
$labels['recurrencend'] = 'dopóki';
$labels['forntimes'] = '$nr raz(y)';
$labels['first'] = 'pierwszy';
$labels['second'] = 'drugi';
$labels['third'] = 'trzeci';
$labels['fourth'] = 'czwarty';
$labels['last'] = 'ostatni';
$labels['dayofmonth'] = 'Dzień miesiąca';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Zmień zdarzenie';
$labels['removeeventconfirm'] = 'Usuń zdarzenie';
$labels['changerecurringeventwarning'] = 'To jest zdarzenie powtarzalne. Czy chcesz zmienić bieżące zdarzenie, bieżące i przyszłe, wszystkie, a może zapisać je jako nowe zdarzenie?';
$labels['removerecurringeventwarning'] = 'To jest zdarzenie powtarzalne. Czy chcesz usunąć tylko bieżące zdarzenie, bieżące i przyszłe, a może wszystkie wystąpienia?';
$labels['currentevent'] = 'Bieżące';
$labels['futurevents'] = 'Przyszłe';
$labels['allevents'] = 'Wszystkie';
$labels['saveasnew'] = 'Zapisz jako nowe';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,7 +1,11 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Visualização padrão';
$labels['time_format'] = 'Formato da hora';
$labels['timeslots'] = 'Alocações de tempo por hora';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Primeiro dia da semana';
$labels['first_hour'] = 'Primeira hora a mostrar';
$labels['workinghours'] = 'Horário de trabalho';
@ -13,6 +17,8 @@ $labels['coloringmode0'] = 'De acordo com o calendário';
$labels['coloringmode1'] = 'De acordo com a categoria';
$labels['coloringmode2'] = 'Calendário para esboço, categoria para conteúdo';
$labels['coloringmode3'] = 'Categoria para esboço, calendário para conteúdo';
// calendar
$labels['calendar'] = 'Calendário';
$labels['calendars'] = 'Calendários';
$labels['category'] = 'Categoria';
@ -40,7 +46,11 @@ $labels['description'] = 'Descrição';
$labels['all-day'] = 'dia todo';
$labels['export'] = 'Exportar';
$labels['exporttitle'] = 'Exportar para iCalendar';
$labels['exportrange'] = 'Eventos de';
$labels['exportattachments'] = 'With attachments';
$labels['customdate'] = 'Custom date';
$labels['location'] = 'Local';
$labels['url'] = 'URL';
$labels['date'] = 'Data';
$labels['start'] = 'Início';
$labels['end'] = 'Término';
@ -70,6 +80,9 @@ $labels['onemonthback'] = '1 mês atrás';
$labels['nmonthsback'] = '$nr meses atrás';
$labels['showurl'] = 'Mostrar URL do calendário';
$labels['showurldescription'] = 'Use o seguinte endereço para acessar (somente leitura) seu calendário em outras aplicações. Você pode copiar e colar este endereço em qualquer software de calendário que suporte o formato iCal.';
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
// agenda view
$labels['listrange'] = 'Intervalo para exibir:';
$labels['listsections'] = 'Dividir em:';
$labels['smartsections'] = 'Seções inteligentes';
@ -83,9 +96,13 @@ $labels['nextmonth'] = 'Próximo mês';
$labels['weekofyear'] = 'Semana';
$labels['pastevents'] = 'Passado';
$labels['futureevents'] = 'Futuro';
$labels['showalarms'] = 'Mostrar alarmes';
// alarm/reminder settings
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Configuração de lembrete padrão';
$labels['defaultalarmoffset'] = 'Horário padrão de lembrete';
// attendees
$labels['attendee'] = 'Participante';
$labels['role'] = 'Papel';
$labels['availability'] = 'Disp.';
@ -94,6 +111,12 @@ $labels['addattendee'] = 'Adicionar participante';
$labels['roleorganizer'] = 'Organizador';
$labels['rolerequired'] = 'Obrigatório';
$labels['roleoptional'] = 'Opcional';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Grupo';
$labels['cutyperesource'] = 'Recurso';
$labels['cutyperoom'] = 'Room';
$labels['availfree'] = 'Disponível';
$labels['availbusy'] = 'Ocupado';
$labels['availunknown'] = 'Desconhecido';
@ -116,37 +139,28 @@ $labels['eventupdatesubjectempty'] = 'Um evento do seu interesse foi atualizado'
$labels['eventupdatemailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nSegue em anexo um arquivo iCalendar com os detalhes atualizados do evento na qual você pode importar para sua aplicação de calendário.";
$labels['eventcancelsubject'] = '"$title" foi cancelado';
$labels['eventcancelmailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nO evento foi cancelado por \$organizer.\n\nSegue em anexo um arquivo iCalendar com os detalhes atualizados do evento.";
$labels['itipinvitation'] = 'Convite para';
$labels['itipupdate'] = 'Atualização de';
$labels['itipcancellation'] = 'Cancelado:';
$labels['itipreply'] = 'Responder para';
$labels['itipaccepted'] = 'Aceitar';
$labels['itiptentative'] = 'Talvez';
$labels['itipdeclined'] = 'Rejeitar';
$labels['itipsubjectaccepted'] = '"$title" foi aceito por $name';
$labels['itipsubjecttentative'] = '"$title" foi aceito como tentativa por $name';
$labels['itipsubjectdeclined'] = '"$title" foi recusado por $name';
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender aceitou o convite para o seguinte evento:\n\n*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees";
$labels['itipmailbodytentative'] = "\$sender aceitou como tentativa o convite para o seguinte evento:\n\n*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender recusou o convite para o seguinte evento:\n\n*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees";
$labels['itipdeclineevent'] = 'Você deseja recusar o convite para este evento?';
$labels['importtocalendar'] = 'Salvar em meu calendário';
$labels['removefromcalendar'] = 'Remover do meu calendário';
$labels['updateattendeestatus'] = 'Atualizar o estado dos participantes';
$labels['acceptinvitation'] = 'Você aceita este convite?';
$labels['youhaveaccepted'] = 'Você aceitou este convite';
$labels['youhavetentative'] = 'Você aceitou como tentativa este convite';
$labels['youhavedeclined'] = 'Você recusou este convite';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['notanattendee'] = 'Você não está listado como um participante deste evento';
$labels['eventcancelled'] = 'O evento foi cancelado';
$labels['saveincalendar'] = 'salvar em';
// event dialog tabs
$labels['tabsummary'] = 'Sumário';
$labels['tabrecurrence'] = 'Repetição';
$labels['tabattendees'] = 'Participantes';
$labels['tabattachments'] = 'Anexos';
$labels['tabsharing'] = 'Compartilhamento';
// messages
$labels['deleteventconfirm'] = 'Você realmente deseja remover este evento?';
$labels['deletecalendarconfirm'] = 'Você realmente deseja excluir este calendário com todos os seus eventos?';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Salvando dados...';
$labels['errorsaving'] = 'Falha ao salvar as modificações.';
$labels['operationfailed'] = 'A operação requisitada falhou.';
@ -165,10 +179,13 @@ $labels['itipsendsuccess'] = 'Convite enviado aos participantes.';
$labels['itipresponseerror'] = 'Falha ao enviar a resposta para este convite de evento';
$labels['itipinvalidrequest'] = 'Este convite não é mais válido';
$labels['sentresponseto'] = 'Resposta de convite enviada com sucesso para $mailto';
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
$labels['importsuccess'] = 'Importado com sucesso $nr eventos';
$labels['importnone'] = 'Não há eventos a serem importados';
$labels['importerror'] = 'Ocorreu um erro na importação';
$labels['aclnorights'] = 'Você não tem permissão de administrador neste calendário.';
// recurrence form
$labels['repeat'] = 'Repetir';
$labels['frequency'] = 'Repetir';
$labels['never'] = 'nunca';
@ -176,6 +193,7 @@ $labels['daily'] = 'diariamente';
$labels['weekly'] = 'semanalmente';
$labels['monthly'] = 'mensalmente';
$labels['yearly'] = 'anualmente';
$labels['rdate'] = 'on dates';
$labels['every'] = 'À cada';
$labels['days'] = 'dia(s)';
$labels['weeks'] = 'semana(s)';
@ -195,6 +213,8 @@ $labels['third'] = 'terceira';
$labels['fourth'] = 'quarta';
$labels['last'] = 'última';
$labels['dayofmonth'] = 'Dia do mês';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Trocar evento';
$labels['removeeventconfirm'] = 'Remover evento';
$labels['changerecurringeventwarning'] = 'Este é um evento com repetição. Você gostaria de editar o evento atual somente, estas e todas as futuras ocorrências ou salvar este como um novo evento?';
@ -203,4 +223,13 @@ $labels['currentevent'] = 'Atual';
$labels['futurevents'] = 'Futuro';
$labels['allevents'] = 'Todos';
$labels['saveasnew'] = 'Salvar como novo';
// birthdays calendar
$labels['birthdays'] = 'Birthdays';
$labels['birthdayscalendar'] = 'Birthdays Calendar';
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = '$name\'s Birthday';
$labels['birthdayage'] = 'Age $age';
?>

View file

@ -1,7 +1,11 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Вид по умолчанию';
$labels['time_format'] = 'Формат времени';
$labels['timeslots'] = 'Промежутков в часу';
$labels['timeslots'] = 'Промежутков в час';
$labels['first_day'] = 'Первый день недели';
$labels['first_hour'] = 'Показывать начиная с';
$labels['workinghours'] = 'Рабочие часы';
@ -13,6 +17,8 @@ $labels['coloringmode0'] = 'Согласно цвета календаря';
$labels['coloringmode1'] = 'Согласно цвета категории';
$labels['coloringmode2'] = 'Цвет календаря для рамки, цвет категории для фона';
$labels['coloringmode3'] = 'Цвет категории для рамки, цвет календаря для фона';
// calendar
$labels['calendar'] = 'Календарь';
$labels['calendars'] = 'Календари';
$labels['category'] = 'Категория';
@ -40,7 +46,11 @@ $labels['description'] = 'Описание';
$labels['all-day'] = 'весь день';
$labels['export'] = 'Экспорт';
$labels['exporttitle'] = 'Экспорт в iCalendar';
$labels['exportrange'] = 'События начиная с';
$labels['exportattachments'] = 'С вложениями';
$labels['customdate'] = 'Специальная дата';
$labels['location'] = 'Место';
$labels['url'] = 'URL';
$labels['date'] = 'Дата';
$labels['start'] = 'Начало';
$labels['end'] = 'Конец';
@ -70,6 +80,9 @@ $labels['onemonthback'] = '1 месяц назад';
$labels['nmonthsback'] = '$nr месяца(ев) назад';
$labels['showurl'] = 'Показать URL календаря';
$labels['showurldescription'] = 'Используйте следующий адрес для просмотра Вашего календаря из других приложений. Вы можете скопировать и вставить это в любое приложение которое поддерживает формат iCal.';
$labels['caldavurldescription'] = 'Скопируйте этот адрес в клиент, <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">поддерживающий CalDAV</a> (например, Evolution или Mozilla Thunderbird) для полной синхронизации данного календаря со своим компьютером или мобильным устройством.';
// agenda view
$labels['listrange'] = 'Диапазон:';
$labels['listsections'] = 'Разделить на:';
$labels['smartsections'] = 'Умные секции';
@ -83,9 +96,13 @@ $labels['nextmonth'] = 'Следующий месяц';
$labels['weekofyear'] = 'Неделя';
$labels['pastevents'] = 'Прошедшее';
$labels['futureevents'] = 'Будущее';
// alarm/reminder settings
$labels['showalarms'] = 'Показывать напоминания';
$labels['defaultalarmtype'] = 'Настройки напоминания по умолчанию';
$labels['defaultalarmoffset'] = 'Время напоминания по умолчанию';
// attendees
$labels['attendee'] = 'Участник';
$labels['role'] = 'Роль';
$labels['availability'] = 'Доступность';
@ -94,6 +111,12 @@ $labels['addattendee'] = 'Добавить участника';
$labels['roleorganizer'] = 'Организатор';
$labels['rolerequired'] = 'Обязательный';
$labels['roleoptional'] = 'Необязательный';
$labels['rolechair'] = 'Место';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Индивидуум';
$labels['cutypegroup'] = 'Группа';
$labels['cutyperesource'] = 'Ресурс';
$labels['cutyperoom'] = 'Комната';
$labels['availfree'] = 'Свободен';
$labels['availbusy'] = 'Занят';
$labels['availunknown'] = 'Неизвестно';
@ -116,37 +139,28 @@ $labels['eventupdatesubjectempty'] = 'Событие, которое касае
$labels['eventupdatemailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nВо вложении вы найдёте файл iCalendar со всеми изменениями в событии, который Вы можете импортировать в Вашу программу-ежедневник.";
$labels['eventcancelsubject'] = '"$title" было отменено';
$labels['eventcancelmailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nЭто событие отменено \$organizer.\n\nВо вложении вы найдёте файл iCalendar со всеми изменениями в событии.";
$labels['itipinvitation'] = 'Приглашение на';
$labels['itipupdate'] = 'Обновление';
$labels['itipcancellation'] = 'Отменённый:';
$labels['itipreply'] = 'Ответить';
$labels['itipaccepted'] = 'Принять';
$labels['itiptentative'] = 'Может быть';
$labels['itipdeclined'] = 'Отклонить';
$labels['itipsubjectaccepted'] = '"$title" принято $name';
$labels['itipsubjecttentative'] = '"$title" предварительно принято $name';
$labels['itipsubjectdeclined'] = '"$title" отклонено $name';
// invitation handling
$labels['itipmailbodyaccepted'] = "\$sender принял(а) приглашение на следующее событие:\n\n*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees";
$labels['itipmailbodytentative'] = "\$sender предварительно принял(а) приглашение на следующее событие:\n\n*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender отклонил(а) приглашение на следующее событие:\n\n*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees";
$labels['itipdeclineevent'] = 'Вы хотите отклонить приглашение на это событие?';
$labels['importtocalendar'] = 'Сохранить в мой календарь';
$labels['removefromcalendar'] = 'Удалить из моего календаря';
$labels['updateattendeestatus'] = 'Обновить статус участника';
$labels['acceptinvitation'] = 'Вы принимаете это приглашение?';
$labels['youhaveaccepted'] = 'Вы приняли это приглашение';
$labels['youhavetentative'] = 'Вы предварительно приняли это приглашение';
$labels['youhavedeclined'] = 'Вы отклонили это приглашение';
$labels['declinedeleteconfirm'] = 'Хотите ли вы так же удалить это отклонённое событие из вашего календаря?';
$labels['notanattendee'] = 'Вы не в списке участников этого события';
$labels['eventcancelled'] = 'Это событие отменено';
$labels['saveincalendar'] = 'сохранить в';
// event dialog tabs
$labels['tabsummary'] = 'Сводка';
$labels['tabrecurrence'] = 'Повторение';
$labels['tabattendees'] = 'Участники';
$labels['tabattachments'] = 'Вложения';
$labels['tabsharing'] = 'Совместное использование';
// messages
$labels['deleteventconfirm'] = 'Вы действительно хотите удалить это событие?';
$labels['deletecalendarconfirm'] = 'Вы действительно хотите удалить этот календарь со всеми его событиями?';
$labels['deletecalendarconfirmrecursive'] = 'Вы действительно хотите удалить этот календарь со всеми его событиями и вложенными календарями?';
$labels['savingdata'] = 'Сохранение данных...';
$labels['errorsaving'] = 'Ошибка сохранения изменений.';
$labels['operationfailed'] = 'Не удалось выполнить запрошенную операцию.';
@ -165,10 +179,13 @@ $labels['itipsendsuccess'] = 'Приглашания отправлены уча
$labels['itipresponseerror'] = 'Не удалось послать ответ на это приглашение';
$labels['itipinvalidrequest'] = 'Это приглашение больше не действительно';
$labels['sentresponseto'] = 'Успешно отправлен ответ на приглашение на $mailto';
$labels['localchangeswarning'] = 'Вы собираетесь внести изменения, которые отразятся только на Вашем личном календаре и не будут отправлены организатору события.';
$labels['importsuccess'] = 'Успешно импортировано $nr событий';
$labels['importnone'] = 'Не найдено событий для импорта';
$labels['importerror'] = 'Ошибка при импорте';
$labels['aclnorights'] = 'Вы не имеете прав администратора для этого календаря.';
// recurrence form
$labels['repeat'] = 'Повторить';
$labels['frequency'] = 'Повторить';
$labels['never'] = 'никогда';
@ -176,6 +193,7 @@ $labels['daily'] = 'ежедневно';
$labels['weekly'] = 'еженедельно';
$labels['monthly'] = 'ежемесячно';
$labels['yearly'] = 'ежегодно';
$labels['rdate'] = 'on dates';
$labels['every'] = 'Каждый(ую)';
$labels['days'] = 'день';
$labels['weeks'] = 'неделю';
@ -195,6 +213,8 @@ $labels['third'] = 'третий(ую)';
$labels['fourth'] = 'четвертый(ую)';
$labels['last'] = 'последний(ую)';
$labels['dayofmonth'] = 'День месяца';
$labels['addrdate'] = 'Add repeat date';
$labels['changeeventconfirm'] = 'Изменить событие';
$labels['removeeventconfirm'] = 'Удалить событие';
$labels['changerecurringeventwarning'] = 'Это - повторяющееся событие. Хотели бы Вы редактировать только текущее событие, это и все будущие повторения, все события или сохранять его как новое событие?';
@ -203,4 +223,13 @@ $labels['currentevent'] = 'Текущее';
$labels['futurevents'] = 'Будущие';
$labels['allevents'] = 'Все';
$labels['saveasnew'] = 'Сохранить как новое';
// birthdays calendar
$labels['birthdays'] = 'Дни рождения';
$labels['birthdayscalendar'] = 'Календарь Дней Рождения';
$labels['displaybirthdayscalendar'] = 'Показывать календарь Дней Рождения';
$labels['birthdayscalendarsources'] = 'Из этих адресных книг';
$labels['birthdayeventtitle'] = 'День рождения $name';
$labels['birthdayage'] = 'Возраст $age';
?>

View file

@ -1248,8 +1248,7 @@ div.calendar-invitebox td.label {
}
#event-rsvp .rsvp-buttons,
div.calendar-invitebox .rsvp-status,
div.calendar-invitebox .rsvp-buttons {
div.calendar-invitebox .itip-buttons div {
margin-top: 0.5em;
}
@ -1260,7 +1259,7 @@ div.calendar-invitebox select {
margin-right: 0.5em;
}
div.calendar-invitebox .calendar-select {
div.calendar-invitebox .folder-select {
font-size: 11px;
margin-left: 1em;
}

View file

@ -1436,8 +1436,7 @@ div.calendar-invitebox td.label {
}
#event-rsvp .rsvp-buttons,
div.calendar-invitebox .rsvp-status,
div.calendar-invitebox .rsvp-buttons {
div.calendar-invitebox .itip-buttons div {
margin-top: 0.5em;
}
@ -1447,20 +1446,31 @@ div.calendar-invitebox input.button {
margin-right: 0.5em;
}
div.calendar-invitebox .calendar-select {
div.calendar-invitebox .folder-select {
font-weight: 10px;
margin-left: 1em;
}
div.calendar-invitebox .rsvp-status {
padding-left: 2px;
}
div.calendar-invitebox .rsvp-status.loading {
color: #666;
padding: 1px 0 2px 24px;
background: url(images/loading_blue.gif) top left no-repeat;
}
div.calendar-invitebox .rsvp-status.hint {
color: #666;
text-shadow: none;
font-style: italic;
}
div.calendar-invitebox .rsvp-status.declined,
div.calendar-invitebox .rsvp-status.tentative,
div.calendar-invitebox .rsvp-status.accepted {
div.calendar-invitebox .rsvp-status.accepted,
div.calendar-invitebox .rsvp-status.delegated {
padding: 0 0 1px 22px;
background: url(images/attendee-status.gif) 2px -20px no-repeat;
}
@ -1473,6 +1483,10 @@ div.calendar-invitebox .rsvp-status.tentative {
background-position: 2px -60px;
}
div.calendar-invitebox .rsvp-status.delegated {
background-position: 2px -160px;
}
/* iTIP attend reply page */
.calendaritipattend .centerbox {

View file

@ -0,0 +1,524 @@
<?php
/**
* iTIP functions for the calendar-based Roudncube plugins
*
* Class providing functionality to manage iTIP invitations
*
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 2011-2014, Kolab Systems AG <contact@kolabsys.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class libcalendaring_itip
{
protected $rc;
protected $lib;
protected $plugin;
protected $sender;
protected $domain;
protected $itip_send = false;
function __construct($plugin, $domain = 'libcalendaring')
{
$this->plugin = $plugin;
$this->rc = rcube::get_instance();
$this->lib = libcalendaring::get_instance();
$this->domain = $domain;
$hook = $this->rc->plugins->exec_hook('calendar_load_itip',
array('identity' => $this->rc->user->get_identity()));
$this->sender = $hook['identity'];
$this->plugin->add_hook('message_before_send', array($this, 'before_send_hook'));
$this->plugin->add_hook('smtp_connect', array($this, 'smtp_connect_hook'));
}
function set_sender_email($email)
{
if (!empty($email))
$this->sender['email'] = $email;
}
/**
* Wrapper for rcube_plugin::gettext()
* Checking for a label in different domains
*
* @see rcube::gettext()
*/
protected function gettext($p)
{
$label = is_array($p) ? $p['name'] : $p;
$domain = $this->domain;
if (!$this->rc->text_exists($label, $domain)) {
$domain = 'libcalendaring';
}
return $this->rc->gettext($p, $domain);
}
/**
* Send an iTip mail message
*
* @param array Event object to send
* @param string iTip method (REQUEST|REPLY|CANCEL)
* @param array Hash array with recipient data (name, email)
* @param string Mail subject
* @param string Mail body text label
* @param object Mail_mime object with message data
* @return boolean True on success, false on failure
*/
public function send_itip_message($event, $method, $recipient, $subject, $bodytext, $message = null)
{
if (!$this->sender['name'])
$this->sender['name'] = $this->sender['email'];
if (!$message)
$message = $this->compose_itip_message($event, $method);
$mailto = rcube_idn_to_ascii($recipient['email']);
$headers = $message->headers();
$headers['To'] = format_email_recipient($mailto, $recipient['name']);
$headers['Subject'] = $this->gettext(array(
'name' => $subject,
'vars' => array(
'title' => $event['title'],
'name' => $this->sender['name']
)
));
// compose a list of all event attendees
$attendees_list = array();
foreach ((array)$event['attendees'] as $attendee) {
$attendees_list[] = ($attendee['name'] && $attendee['email']) ?
$attendee['name'] . ' <' . $attendee['email'] . '>' :
($attendee['name'] ? $attendee['name'] : $attendee['email']);
}
$mailbody = $this->gettext(array(
'name' => $bodytext,
'vars' => array(
'title' => $event['title'],
'date' => $this->lib->event_date_text($event, true),
'attendees' => join(', ', $attendees_list),
'sender' => $this->sender['name'],
'organizer' => $this->sender['name'],
)
));
// append links for direct invitation replies
if ($method == 'REQUEST' && ($token = $this->store_invitation($event, $recipient['email']))) {
$mailbody .= "\n\n" . $this->gettext(array(
'name' => 'invitationattendlinks',
'vars' => array('url' => $this->plugin->get_url(array('action' => 'attend', 't' => $token))),
));
}
else if ($method == 'CANCEL') {
$this->cancel_itip_invitation($event);
}
$message->headers($headers, true);
$message->setTXTBody(rcube_mime::format_flowed($mailbody, 79));
// finally send the message
$this->itip_send = true;
$sent = $this->rc->deliver_message($message, $headers['X-Sender'], $mailto, $smtp_error);
$this->itip_send = false;
return $sent;
}
/**
* Plugin hook triggered by rcube::deliver_message() before delivering a message.
* Here we can set the 'smtp_server' config option to '' in order to use
* PHP's mail() function for unauthenticated email sending.
*/
public function before_send_hook($p)
{
if ($this->itip_send && !$this->rc->user->ID && $this->rc->config->get('calendar_itip_smtp_server', null) === '') {
$this->rc->config->set('smtp_server', '');
}
return $p;
}
/**
* Plugin hook to alter SMTP authentication.
* This is used if iTip messages are to be sent from an unauthenticated session
*/
public function smtp_connect_hook($p)
{
// replace smtp auth settings if we're not in an authenticated session
if ($this->itip_send && !$this->rc->user->ID) {
foreach (array('smtp_server', 'smtp_user', 'smtp_pass') as $prop) {
$p[$prop] = $this->rc->config->get("calendar_itip_$prop", $p[$prop]);
}
}
return $p;
}
/**
* Helper function to build a Mail_mime object to send an iTip message
*
* @param array Event object to send
* @param string iTip method (REQUEST|REPLY|CANCEL)
* @return object Mail_mime object with message data
*/
public function compose_itip_message($event, $method)
{
$from = rcube_idn_to_ascii($this->sender['email']);
$from_utf = rcube_idn_to_utf8($from);
$sender = format_email_recipient($from, $this->sender['name']);
// truncate list attendees down to the recipient of the iTip Reply.
// constraints for a METHOD:REPLY according to RFC 5546
if ($method == 'REPLY') {
$replying_attendee = null; $reply_attendees = array();
foreach ($event['attendees'] as $attendee) {
if ($attendee['role'] == 'ORGANIZER') {
$reply_attendees[] = $attendee;
}
else if (strcasecmp($attedee['email'], $from) == 0 || strcasecmp($attendee['email'], $from_utf) == 0) {
$replying_attendee = $attendee;
}
}
if ($replying_attendee) {
$reply_attendees[] = $replying_attendee;
$event['attendees'] = $reply_attendees;
}
}
// compose multipart message using PEAR:Mail_Mime
$message = new Mail_mime("\r\n");
$message->setParam('text_encoding', 'quoted-printable');
$message->setParam('head_encoding', 'quoted-printable');
$message->setParam('head_charset', RCMAIL_CHARSET);
$message->setParam('text_charset', RCMAIL_CHARSET . ";\r\n format=flowed");
$message->setContentType('multipart/alternative');
// compose common headers array
$headers = array(
'From' => $sender,
'Date' => $this->rc->user_date(),
'Message-ID' => $this->rc->gen_message_id(),
'X-Sender' => $from,
);
if ($agent = $this->rc->config->get('useragent')) {
$headers['User-Agent'] = $agent;
}
$message->headers($headers);
// attach ics file for this event
$ical = $this->plugin->get_ical();
$ics = $ical->export(array($event), $method, false, $method == 'REQUEST' && $this->plugin->driver ? array($this->plugin->driver, 'get_attachment_body') : false);
$message->addAttachment($ics, 'text/calendar', 'event.ics', false, '8bit', '', RCMAIL_CHARSET . "; method=" . $method);
return $message;
}
/**
* Handler for calendar/itip-status requests
*/
public function get_itip_status($event, $existing = null)
{
$action = $event['rsvp'] ? 'rsvp' : '';
$status = $event['fallback'];
$latest = false;
$html = '';
if (is_numeric($event['changed']))
$event['changed'] = new DateTime('@'.$event['changed']);
// check if the given itip object matches the last state
if ($existing) {
$latest = ($event['sequence'] && $existing['sequence'] == $event['sequence']) ||
(!$event['sequence'] && $existing['changed'] && $existing['changed'] >= $event['changed']);
}
// determine action for REQUEST
if ($event['method'] == 'REQUEST') {
$html = html::div('rsvp-status', $this->gettext('acceptinvitation'));
if ($existing) {
$rsvp = $event['rsvp'];
$emails = $this->lib->get_user_emails();
foreach ($existing['attendees'] as $i => $attendee) {
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
$status = strtoupper($attendee['status']);
break;
}
}
}
else {
$rsvp = $event['rsvp'] && $this->rc->config->get('calendar_allow_itip_uninvited', true);
}
if ($status == 'unknown' && !$this->rc->config->get('calendar_allow_itip_uninvited', true)) {
$html = html::div('rsvp-status', $this->gettext('notanattendee'));
$action = 'import';
}
else if (in_array($status, array('ACCEPTED','TENTATIVE','DECLINED','DELEGATED'))) {
$html = html::div('rsvp-status ' . strtolower($status), $this->gettext('youhave'.strtolower($status)));
if ($existing && ($existing['sequence'] > $event['sequence'] || (!$event['sequence'] && $existing['changed'] && $existing['changed'] > $event['changed']))) {
$action = ''; // nothing to do here, outdated invitation
}
else if (!$existing && !$rsvp) {
$action = 'import';
}
}
}
// determine action for REPLY
else if ($event['method'] == 'REPLY') {
// check whether the sender already is an attendee
if ($existing) {
$action = $this->rc->config->get('calendar_allow_itip_uninvited', true) ? 'accept' : '';
$listed = false;
foreach ($existing['attendees'] as $attendee) {
if ($attendee['role'] != 'ORGANIZER' && strcasecmp($attendee['email'], $event['attendee']) == 0) {
if (in_array($status, array('ACCEPTED','TENTATIVE','DECLINED','DELEGATED'))) {
$html = html::div('rsvp-status ' . strtolower($status), $this->gettext('attendee'.strtolower($status)));
}
$action = $attendee['status'] == $status ? '' : 'update';
$listed = true;
break;
}
}
if (!$listed) {
$html = html::div('rsvp-status', $this->gettext('itipnewattendee'));
}
}
else {
$html = html::div('rsvp-status hint', $this->gettext('itipobjectnotfound'));
$action = '';
}
}
else if ($event['method'] == 'CANCEL') {
if (!$existing) {
$html = html::div('rsvp-status hint', $this->gettext('itipobjectnotfound'));
$action = '';
}
}
return array(
'uid' => $event['uid'],
'id' => asciiwords($event['uid'], true),
'saved' => $existing ? true : false,
'latest' => $latest,
'status' => $status,
'action' => $action,
'html' => $html,
);
}
/**
* Build inline UI elements for iTip messages
*/
public function mail_itip_inline_ui($event, $method, $mime_id, $task, $message_date = null)
{
$buttons = array();
$dom_id = asciiwords($event['uid'], true);
$rsvp_status = 'unknown';
// pass some metadata about the event and trigger the asynchronous status check
$changed = is_object($event['changed']) ? $event['changed'] : $message_date;
$metadata = array(
'uid' => $event['uid'],
'changed' => $changed ? $changed->format('U') : 0,
'sequence' => intval($event['sequence']),
'method' => $method,
'task' => $task,
);
// create buttons to be activated from async request checking existence of this event in local calendars
$buttons[] = html::div(array('id' => 'loading-'.$dom_id, 'class' => 'rsvp-status loading'), $this->gettext('loading'));
// on iTip REPLY we have two options:
if ($method == 'REPLY') {
$title = $this->gettext('itipreply');
foreach ($event['attendees'] as $attendee) {
if (!empty($attendee['email']) && $attendee['role'] != 'ORGANIZER') {
$metadata['attendee'] = $attendee['email'];
$rsvp_status = strtoupper($attendee['status']);
break;
}
}
// 1. update the attendee status on our copy
$update_button = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . JQ($mime_id) . "', '$task')",
'value' => $this->gettext('updateattendeestatus'),
));
// 2. accept or decline a new or delegate attendee
$accept_buttons = html::tag('input', array(
'type' => 'button',
'class' => "button accept",
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . JQ($mime_id) . "', '$task')",
'value' => $this->gettext('acceptattendee'),
));
$accept_buttons .= html::tag('input', array(
'type' => 'button',
'class' => "button decline",
'onclick' => "rcube_libcalendaring.decline_attendee_reply('" . JQ($mime_id) . "', '$task')",
'value' => $this->gettext('declineattendee'),
));
$buttons[] = html::div(array('id' => 'update-'.$dom_id, 'style' => 'display:none'), $update_button);
$buttons[] = html::div(array('id' => 'accept-'.$dom_id, 'style' => 'display:none'), $accept_buttons);
}
// when receiving iTip REQUEST messages:
else if ($method == 'REQUEST') {
$emails = $this->lib->get_user_emails();
$title = $event['sequence'] > 0 ? $this->gettext('itipupdate') : $this->gettext('itipinvitation');
$metadata['rsvp'] = true;
// 1. display RSVP buttons (if the user was invited)
foreach (array('accepted','tentative','declined') as $method) {
$rsvp_buttons .= html::tag('input', array(
'type' => 'button',
'class' => "button $method",
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . JQ($mime_id) . "', '$task', '$method')",
'value' => $this->gettext('itip' . $method),
));
}
// 2. Simply import the event without replying
$import_button = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . JQ($mime_id) . "', '$task')",
'value' => $this->gettext('importtocalendar'),
));
// check my status
foreach ($event['attendees'] as $attendee) {
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
$metadata['attendee'] = $attendee['email'];
$metadata['rsvp'] = $attendee['rsvp'] || $attendee['role'] != 'NON-PARTICIPANT';
$rsvp_status = strtoupper($attendee['status']);
break;
}
}
$buttons[] = html::div(array('id' => 'rsvp-'.$dom_id, 'class' => 'rsvp-buttons', 'style' => 'display:none'), $rsvp_buttons);
}
// for CANCEL messages, we can:
else if ($method == 'CANCEL') {
$title = $this->gettext('itipcancellation');
// 1. remove the event from our calendar
$button_remove = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_libcalendaring.remove_from_itip('" . JQ($event['uid']) . "', '$task', '" . JQ($event['title']) . "')",
'value' => $this->gettext('removefromcalendar'),
));
// 2. update our copy with status=cancelled
/* TODO: implement CANCELLED status in calendar UI first
$button_update = html::tag('input', array(
'type' => 'button',
'class' => 'button',
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . JQ($mime_id) . "')",
'value' => $this->gettext('updatemycopy'),
));
*/
$buttons[] = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $button_remove . $button_update);
$rsvp_status = 'CANCELLED';
$metadata['rsvp'] = true;
}
// append generic import button
if ($import_button) {
$buttons[] = html::div(array('id' => 'import-'.$dom_id, 'style' => 'display:none'), $import_button);
}
// TODO: add field for COMMENT on iTip replies
// TODO: add option/checkbox to delete this message after update
// pass some metadata about the event and trigger the asynchronous status check
$metadata['fallback'] = $rsvp_status;
$metadata['rsvp'] = intval($metadata['rsvp']);
$this->rc->output->add_script("rcube_libcalendaring.fetch_itip_object_status(" . json_serialize($metadata) . ")", 'docready');
// get localized texts from the right domain
$this->rc->output->command('add_label', 'itip.savingdata', $this->gettext('savingdata'));
$this->rc->output->command('add_label', 'itip.declinedeleteconfirm', $this->gettext('declinedeleteconfirm'));
$this->rc->output->command('add_label', 'itip.declinedeleteconfirm', $this->gettext('declinedeleteconfirm'));
// show event details with buttons
return $this->itip_object_details_table($event, $title) .
html::div(array('class' => 'itip-buttons', 'id' => 'itip-buttons-' . asciiwords($metadata['uid'], true)), join('', $buttons));
}
/**
* Render event details in a table
*/
function itip_object_details_table($event, $title)
{
$table = new html_table(array('cols' => 2, 'border' => 0, 'class' => 'calendar-eventdetails'));
$table->add('ititle', $title);
$table->add('title', Q($event['title']));
$table->add('label', $this->plugin->gettext('date'), $this->domain);
$table->add('date', Q($this->lib->event_date_text($event)));
if ($event['location']) {
$table->add('label', $this->plugin->gettext('location'), $this->domain);
$table->add('location', Q($event['location']));
}
if ($event['comment']) {
$table->add('label', $this->plugin->gettext('comment'), $this->domain);
$table->add('location', Q($event['comment']));
}
return $table->show();
}
/**
* Create iTIP invitation token for later replies via URL
*
* @param array Hash array with event properties
* @param string Attendee email address
* @return string Invitation token
*/
public function store_invitation($event, $attendee)
{
// empty stub
return false;
}
/**
* Mark invitations for the given event as cancelled
*
* @param array Hash array with event properties
*/
public function cancel_itip_invitation($event)
{
// empty stub
return false;
}
}

View file

@ -1,10 +1,9 @@
/**
* Basic Javascript utilities for calendar-related plugins
*
* @version @package_version@
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 2012, Kolab Systems AG <contact@kolabsys.com>
* Copyright (C) 2012-2014, Kolab Systems AG <contact@kolabsys.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@ -436,6 +435,88 @@ function rcube_libcalendaring(settings)
};
}
////// static methods
/**
*
*/
rcube_libcalendaring.add_from_itip_mail = function(mime_id, task, status)
{
// ask user to delete the declined event from the local calendar (#1670)
var del = false;
if (rcmail.env.rsvp_saved && status == 'declined') {
del = confirm(rcmail.gettext('itip.declinedeleteconfirm'));
}
rcmail.http_post(task + '/mailimportitip', {
'_uid': rcmail.env.uid,
'_mbox': rcmail.env.mailbox,
'_part': mime_id,
'_folder': $('#itip-saveto').val(),
'_status': status,
'_del': del?1:0
}, rcmail.set_busy(true, 'itip.savingdata'));
return false;
};
/**
*
*/
rcube_libcalendaring.remove_from_itip = function(uid, task, title)
{
if (confirm(rcmail.gettext('itip.deleteobjectconfirm').replace('$title', title))) {
rcmail.http_post(task + '/itip-remove',
{ uid: uid },
rcmail.set_busy(true, 'itip.savingdata'));
}
};
/**
*
*/
rcube_libcalendaring.decline_attendee_reply = function(mime_id)
{
// TODO: show dialog for entering a comment and send to server
return false;
};
/**
*
*/
rcube_libcalendaring.fetch_itip_object_status = function(p)
{
rcmail.http_post(p.task + '/itip-status', { data: p });
};
/**
*
*/
rcube_libcalendaring.update_itip_object_status = function(p)
{
rcmail.env.rsvp_saved = p.saved;
// hide all elements first
$('#itip-buttons-'+p.id+' > div').hide();
$('#rsvp-'+p.id+' .folder-select').remove();
if (p.html) {
// append/replace rsvp status display
$('#loading-'+p.id).next('.rsvp-status').remove();
$('#loading-'+p.id).hide().after(p.html);
}
// enable/disable rsvp buttons
if (p.action == 'rsvp') {
$('#rsvp-'+p.id+' input.button').prop('disabled', false)
.filter('.'+String(p.status||'unknown').toLowerCase()).prop('disabled', p.latest);
}
// show rsvp/import buttons (with calendar selector)
$('#'+p.action+'-'+p.id).show().append(p.select);
};
// extend jQuery
(function($){
@ -455,4 +536,7 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
var libcal = new rcube_libcalendaring(rcmail.env.libcal_settings);
rcmail.addEventListener('plugin.display_alarms', function(alarms){ libcal.display_alarms(alarms); });
}
rcmail.addEventListener('plugin.update_itip_object_status', rcube_libcalendaring.update_itip_object_status);
rcmail.addEventListener('plugin.fetch_itip_object_status', rcube_libcalendaring.fetch_itip_object_status);
});

View file

@ -113,7 +113,17 @@ class libcalendaring extends rcube_plugin
require_once($self->home . '/libvcalendar.php');
return new libvcalendar();
}
/**
* Load iTip functions
*/
public static function get_itip($domain = 'libcalendaring')
{
$self = self::get_instance();
require_once($self->home . '/lib/libcalendaring_itip.php');
return new libcalendaring_itip($self, $domain);
}
/**
* Shift dates into user's current timezone
*
@ -304,6 +314,27 @@ class libcalendaring extends rcube_plugin
return $html;
}
/**
* Get a list of email addresses of the current user (from login and identities)
*/
public function get_user_emails()
{
$emails = array();
$plugin = $this->rc->plugins->exec_hook('calendar_user_emails', array('emails' => $emails));
$emails = array_map('strtolower', $plugin['emails']);
if ($plugin['abort']) {
return $emails;
}
$emails[] = $this->rc->user->get_username();
foreach ($this->rc->user->list_identities() as $identity) {
$emails[] = strtolower($identity['email']);
}
return array_unique($emails);
}
/********* Alarms handling *********/

View file

@ -1,2 +1,49 @@
<?php
$labels = array();
$labels['alarmemail'] = 'Send Email';
$labels['alarmdisplay'] = 'Show message';
$labels['alarmdisplayoption'] = 'Message';
$labels['alarmemailoption'] = 'Електронна поща';
$labels['alarmat'] = 'at $datetime';
$labels['trigger@'] = 'on date';
$labels['trigger-M'] = 'minutes before';
$labels['trigger-H'] = 'hours before';
$labels['trigger-D'] = 'days before';
$labels['trigger+M'] = 'minutes after';
$labels['trigger+H'] = 'hours after';
$labels['trigger+D'] = 'days after';
$labels['addalarm'] = 'add alarm';
$labels['alarmtitle'] = 'Upcoming events';
$labels['dismissall'] = 'Dismiss all';
$labels['dismiss'] = 'Dismiss';
$labels['snooze'] = 'Snooze';
$labels['repeatinmin'] = 'Repeat in $min minutes';
$labels['repeatinhr'] = 'Repeat in 1 hour';
$labels['repeatinhrs'] = 'Repeat in $hrs hours';
$labels['repeattomorrow'] = 'Repeat tomorrow';
$labels['repeatinweek'] = 'Repeat in a week';
$labels['showmore'] = 'Show more...';
// itip related labels
$labels['itipinvitation'] = 'Invitation to';
$labels['itipupdate'] = 'Update of';
$labels['itipcancellation'] = 'Отказано:';
$labels['itipreply'] = 'Отговор на';
$labels['itipaccepted'] = 'Приемане';
$labels['itiptentative'] = 'Може би';
$labels['itipdeclined'] = 'Отхвърляне';
$labels['itipsubjectaccepted'] = '"$title" беше прието от $name';
$labels['itipsubjectdeclined'] = '"$title" беше отхвърлено от $name';
$labels['importtocalendar'] = 'Запазване в моя календар';
$labels['removefromcalendar'] = 'Премахване от моя календар';
$labels['updateattendeestatus'] = 'Подновяване на статусът на участника';
$labels['acceptinvitation'] = 'Приемате ли тази покана?';
$labels['youhaveaccepted'] = 'Вие сте приели тази покана';
$labels['savingdata'] = 'Запазване на данни...';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'Poslat e-mail';
$labels['alarmdisplay'] = 'Zobrazit zprávu';
$labels['alarmdisplayoption'] = 'Zpráva';
@ -12,6 +15,7 @@ $labels['trigger+M'] = 'minut po';
$labels['trigger+H'] = 'hodin po';
$labels['trigger+D'] = 'dnů po';
$labels['addalarm'] = 'přidat upozornění';
$labels['alarmtitle'] = 'Blížící se události';
$labels['dismissall'] = 'Zrušit vše';
$labels['dismiss'] = 'Zrušit';
@ -21,4 +25,29 @@ $labels['repeatinhr'] = 'Zopakovat za 1 hodinu';
$labels['repeatinhrs'] = 'Zopakovat za $hrs hodin';
$labels['repeattomorrow'] = 'Zopakovat zítra';
$labels['repeatinweek'] = 'Zopakovat za týden';
$labels['showmore'] = 'Ukázat víc...';
// itip related labels
$labels['itipinvitation'] = 'Pozvání na událost';
$labels['itipupdate'] = 'Aktualizace události';
$labels['itipcancellation'] = 'Zrušeno:';
$labels['itipreply'] = 'Odpověď na';
$labels['itipaccepted'] = 'Potvrdit';
$labels['itiptentative'] = 'Možná';
$labels['itipdeclined'] = 'Odmítnout';
$labels['itipsubjectaccepted'] = '$name potvrdil(a) účas na události "$title"';
$labels['itipsubjecttentative'] = '$name nezávazně potvrdil(a) účast na události "$title"';
$labels['itipsubjectdeclined'] = '$name odmítl(a) účast na události "$title"';
$labels['importtocalendar'] = 'Uložit do kalendáře';
$labels['removefromcalendar'] = 'Odstranit z kalendáře';
$labels['updateattendeestatus'] = 'Aktualizovat stav účastníka';
$labels['acceptinvitation'] = 'Chcete přijmout toto pozvání (potvrdit účast)?';
$labels['youhaveaccepted'] = 'Přijal(a) jste toto pozvání';
$labels['youhavetentative'] = 'Nezávazně jste přijal(a) toto pozvání';
$labels['youhavedeclined'] = 'Odmítl(a) jste toto pozvání';
$labels['notanattendee'] = 'Nejste na seznamu účastníků této události';
$labels['savingdata'] = 'Ukládám data...';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'E-Mail senden';
$labels['alarmdisplay'] = 'Nachricht anzeigen';
$labels['alarmdisplayoption'] = 'Nachricht';
@ -12,6 +15,7 @@ $labels['trigger+M'] = 'Minuten danach';
$labels['trigger+H'] = 'Stunden danach';
$labels['trigger+D'] = 'Tage danach';
$labels['addalarm'] = 'Erinnerung hinzufügen';
$labels['alarmtitle'] = 'Anstehende Termine';
$labels['dismissall'] = 'Alle ignorieren';
$labels['dismiss'] = 'Ignorieren';
@ -21,4 +25,32 @@ $labels['repeatinhr'] = 'Wiederholung in 1 Stunde';
$labels['repeatinhrs'] = 'Wiederholung in $hrs Stunden';
$labels['repeattomorrow'] = 'Wiederholung morgen';
$labels['repeatinweek'] = 'Wiederholung in einer Woche';
$labels['showmore'] = 'Mehr anzeigen...';
// itip related labels
$labels['itipinvitation'] = 'Einladung zu';
$labels['itipupdate'] = 'Aktialisiert:';
$labels['itipcancellation'] = 'Abgesagt:';
$labels['itipreply'] = 'Antwort zu';
$labels['itipaccepted'] = 'Akzeptieren';
$labels['itiptentative'] = 'Mit Vorbehalt';
$labels['itipdeclined'] = 'Ablehnen';
$labels['itipsubjectaccepted'] = 'Einladung zu "$title" wurde von $name angenommen';
$labels['itipsubjecttentative'] = 'Einladung zu "$title" wurde von $name mit Vorbehalt angenommen';
$labels['itipsubjectdeclined'] = 'Einladung zu "$title" wurde von $name abgelehnt';
$labels['importtocalendar'] = 'In Kalender übernehmen';
$labels['removefromcalendar'] = 'Aus meinem Kalender löschen';
$labels['updateattendeestatus'] = 'Teilnehmerstatus aktualisieren';
$labels['acceptinvitation'] = 'Möchten Sie die Einladung zu diesem Termin annehmen?';
$labels['youhaveaccepted'] = 'Sie haben die Einladung angenommen';
$labels['youhavetentative'] = 'Sie haben die Einladung mit Vorbehalt angenommen';
$labels['youhavedeclined'] = 'Sie haben die Einladung abgelehnt';
$labels['notanattendee'] = 'Sie sind nicht in der Liste der Teilnehmer aufgeführt';
$labels['deleteobjectconfirm'] = 'Möchten Sie dieses Objekt wirklich löschen?';
$labels['declinedeleteconfirm'] = 'Soll das abgelehnte Objekt ebenfalls aus Ihrem Konto gelöscht werden?';
$labels['savingdata'] = 'Speichere...';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'E-Mail senden';
$labels['alarmdisplay'] = 'Nachricht anzeigen';
$labels['alarmdisplayoption'] = 'Nachricht';
@ -12,6 +15,7 @@ $labels['trigger+M'] = 'Minuten danach';
$labels['trigger+H'] = 'Stunden danach';
$labels['trigger+D'] = 'Tage danach';
$labels['addalarm'] = 'Erinnerung hinzufügen';
$labels['alarmtitle'] = 'Anstehende Termine';
$labels['dismissall'] = 'Alle ignorieren';
$labels['dismiss'] = 'Ignorieren';
@ -21,4 +25,32 @@ $labels['repeatinhr'] = 'Wiederholung in 1 Stunde';
$labels['repeatinhrs'] = 'Wiederholung in $hrs Stunden';
$labels['repeattomorrow'] = 'Wiederholung morgen';
$labels['repeatinweek'] = 'Wiederholung in einer Woche';
$labels['showmore'] = 'Mehr anzeigen...';
// itip related labels
$labels['itipinvitation'] = 'Einladung zu';
$labels['itipupdate'] = 'Aktialisiert:';
$labels['itipcancellation'] = 'Abgesagt:';
$labels['itipreply'] = 'Antwort zu';
$labels['itipaccepted'] = 'Akzeptieren';
$labels['itiptentative'] = 'Mit Vorbehalt';
$labels['itipdeclined'] = 'Ablehnen';
$labels['itipsubjectaccepted'] = 'Einladung zu "$title" wurde von $name angenommen';
$labels['itipsubjecttentative'] = 'Einladung zu "$title" wurde von $name mit Vorbehalt angenommen';
$labels['itipsubjectdeclined'] = 'Einladung zu "$title" wurde von $name abgelehnt';
$labels['importtocalendar'] = 'In Kalender übernehmen';
$labels['removefromcalendar'] = 'Aus meinem Kalender löschen';
$labels['updateattendeestatus'] = 'Teilnehmerstatus aktualisieren';
$labels['acceptinvitation'] = 'Möchten Sie die Einladung zu diesem Termin annehmen?';
$labels['youhaveaccepted'] = 'Sie haben die Einladung angenommen';
$labels['youhavetentative'] = 'Sie haben die Einladung mit Vorbehalt angenommen';
$labels['youhavedeclined'] = 'Sie haben die Einladung abgelehnt';
$labels['notanattendee'] = 'Sie sind nicht in der Liste der Teilnehmer aufgeführt';
$labels['deleteobjectconfirm'] = 'Möchten Sie dieses Objekt wirklich löschen?';
$labels['declinedeleteconfirm'] = 'Soll das abgelehnte Objekt ebenfalls aus Ihrem Konto gelöscht werden?';
$labels['savingdata'] = 'Speichere...';

View file

@ -28,3 +28,41 @@ $labels['repeatinweek'] = 'Repeat in a week';
$labels['showmore'] = 'Show more...';
// itip related labels
$labels['itipinvitation'] = 'Invitation to';
$labels['itipupdate'] = 'Update of';
$labels['itipcancellation'] = 'Cancelled:';
$labels['itipreply'] = 'Reply to';
$labels['itipaccepted'] = 'Accept';
$labels['itiptentative'] = 'Maybe';
$labels['itipdeclined'] = 'Decline';
$labels['itipobjectnotfound'] = 'The object referred by this message was not found in your account.';
$labels['itipsubjectaccepted'] = '"$title" has been accepted by $name';
$labels['itipsubjecttentative'] = '"$title" has been tentatively accepted by $name';
$labels['itipsubjectdeclined'] = '"$title" has been declined by $name';
$labels['itipnewattendee'] = 'This is a reply from a new participant';
$labels['updateattendeestatus'] = 'Update the participant\'s status';
$labels['acceptinvitation'] = 'Do you accept this invitation?';
$labels['acceptattendee'] = 'Accept attendee';
$labels['declineattendee'] = 'Decline attendee';
$labels['youhaveaccepted'] = 'You have accepted this invitation';
$labels['youhavetentative'] = 'You have tentatively accepted this invitation';
$labels['youhavedeclined'] = 'You have declined this invitation';
$labels['youhavedelegated'] = 'You have delegated this invitation';
$labels['attendeeaccepted'] = 'Participant has accepted';
$labels['attendeetentative'] = 'Participant has tentatively accepted';
$labels['attendeedeclined'] = 'Participant has declined';
$labels['attendeedelegated'] = 'Participant has delegated';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this object';
$labels['importtocalendar'] = 'Save to my calendar';
$labels['removefromcalendar'] = 'Remove from my calendar';
$labels['updatemycopy'] = 'Update my copy';
$labels['deleteobjectconfirm'] = 'Do you really want to delete this object?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined object from your account?';
$labels['savingdata'] = 'Saving data...';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'Envoyer un email';
$labels['alarmdisplay'] = 'Voir le message';
$labels['alarmdisplayoption'] = 'Message';
@ -12,6 +15,7 @@ $labels['trigger+M'] = 'minutes après';
$labels['trigger+H'] = 'heures après';
$labels['trigger+D'] = 'jours après';
$labels['addalarm'] = 'ajouter alarme';
$labels['alarmtitle'] = 'Evénements à venir';
$labels['dismissall'] = 'Tout supprimer';
$labels['dismiss'] = 'Abandonner';
@ -21,4 +25,30 @@ $labels['repeatinhr'] = 'Répéter dans 1 heure';
$labels['repeatinhrs'] = 'Répéter dans $hrs heures';
$labels['repeattomorrow'] = 'Répéter demain';
$labels['repeatinweek'] = 'Répéter dans une semaine';
$labels['showmore'] = 'Afficher plus...';
// itip related labels
$labels['itipinvitation'] = 'Invitation à';
$labels['itipupdate'] = 'Mise à jour de';
$labels['itipcancellation'] = 'Annulation:';
$labels['itipreply'] = 'Répondre à';
$labels['itipaccepted'] = 'Accepter';
$labels['itiptentative'] = 'Peut-être';
$labels['itipdeclined'] = 'Refuser';
$labels['itipsubjectaccepted'] = '"$title" a été accepté par $name';
$labels['itipsubjecttentative'] = '"$title" a été accepté provisoirement par $name';
$labels['itipsubjectdeclined'] = '"$title" a été refusé par $name';
$labels['importtocalendar'] = 'Enregistrer mon agenda';
$labels['removefromcalendar'] = 'Supprimer de mon agenda';
$labels['updateattendeestatus'] = 'Modifier le statut des participants';
$labels['acceptinvitation'] = 'Acceptez-vous cette invitation?';
$labels['youhaveaccepted'] = 'Vous avez accepté cette invitation';
$labels['youhavetentative'] = 'Vous avez accepté provisoirement cette invitation';
$labels['youhavedeclined'] = 'Vous avez refusé cette invitation';
$labels['notanattendee'] = 'Vous n\'êtes pas dans la liste des participants à cet évènement';
$labels['savingdata'] = 'Enregistrer...';

View file

@ -0,0 +1,28 @@
<?php
$labels = array();
// itip related labels
$labels['itipinvitation'] = 'Invito a';
$labels['itipupdate'] = 'Aggiornamento di';
$labels['itipcancellation'] = 'Annullato:';
$labels['itipreply'] = 'Rispondi a';
$labels['itipaccepted'] = 'Accetta';
$labels['itiptentative'] = 'Forse';
$labels['itipdeclined'] = 'Rifiuta';
$labels['itipsubjectaccepted'] = '"$title" è stato accettato da $name';
$labels['itipsubjecttentative'] = '"$title" è stato accettato con riserva da $name';
$labels['itipsubjectdeclined'] = '"$title" è stato rifiutato da $name';
$labels['importtocalendar'] = 'Salva nel mio calendario';
$labels['removefromcalendar'] = 'Rimuovi dal mio calendario';
$labels['updateattendeestatus'] = 'Aggiorna lo stato dei partecipanti';
$labels['acceptinvitation'] = 'Accetti questo invito?';
$labels['youhaveaccepted'] = 'Hai accettato questo invito';
$labels['youhavetentative'] = 'Hai accettato con riserva questo invito';
$labels['youhavedeclined'] = 'Hai rifiutato questo invito';
$labels['savingdata'] = 'Salvataggio dati...';
?>

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'メール送信';
$labels['alarmdisplay'] = 'メッセージ表示';
$labels['alarmdisplayoption'] = 'メッセージ';
@ -12,6 +15,7 @@ $labels['trigger+M'] = '分後';
$labels['trigger+H'] = '時間後';
$labels['trigger+D'] = '日後';
$labels['addalarm'] = 'アラーム追加';
$labels['alarmtitle'] = '今後のイベント';
$labels['dismissall'] = '全て削除';
$labels['dismiss'] = '削除';
@ -21,4 +25,29 @@ $labels['repeatinhr'] = '1時間で繰返し';
$labels['repeatinhrs'] = '$hrs で繰返し';
$labels['repeattomorrow'] = '明日繰返し';
$labels['repeatinweek'] = '1週間で繰返し';
$labels['showmore'] = 'さらに表示…';
// itip related labels
$labels['itipinvitation'] = '招待する';
$labels['itipupdate'] = '更新';
$labels['itipcancellation'] = 'キャンセル';
$labels['itipreply'] = '返信';
$labels['itipaccepted'] = '承諾';
$labels['itiptentative'] = 'たぶん';
$labels['itipdeclined'] = '辞退';
$labels['itipsubjectaccepted'] = '$name が "$title" を承諾しました';
$labels['itipsubjecttentative'] = '$name が "$title" を仮承諾しました';
$labels['itipsubjectdeclined'] = '$name が "$title" を辞退しました';
$labels['importtocalendar'] = 'カレンダーに保存';
$labels['removefromcalendar'] = 'カレンダーから削除';
$labels['updateattendeestatus'] = '参加者の状況更新';
$labels['acceptinvitation'] = 'この招待を承諾しますか?';
$labels['youhaveaccepted'] = 'この招待を承諾しました';
$labels['youhavetentative'] = 'この招待を仮承諾しました。';
$labels['youhavedeclined'] = 'この招待を辞退しました。';
$labels['notanattendee'] = 'このイベントの出席者として一覧にありません';
$labels['savingdata'] = 'データを保存中…';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'Verzend E-mail';
$labels['alarmdisplay'] = 'Bericht weergeven';
$labels['alarmdisplayoption'] = 'Bericht';
@ -12,11 +15,39 @@ $labels['trigger+M'] = 'minuten na';
$labels['trigger+H'] = 'uren na';
$labels['trigger+D'] = 'dagen na';
$labels['addalarm'] = 'alarm toevoegen';
$labels['alarmtitle'] = 'Aankomende evenementen';
$labels['dismissall'] = 'Dismiss all';
$labels['dismiss'] = 'Dismiss';
$labels['snooze'] = 'Snooze';
$labels['repeatinmin'] = 'Herhaal over $min minuten';
$labels['repeatinhr'] = 'Herhaal over 1 uur';
$labels['repeatinhrs'] = 'Herhaal over $hrs uur';
$labels['repeattomorrow'] = 'Herhaal morgen';
$labels['repeatinweek'] = 'Herhaal over een week';
$labels['showmore'] = 'Toon meer...';
// itip related labels
$labels['itipinvitation'] = 'Uitnodiging voor';
$labels['itipupdate'] = 'Update van';
$labels['itipcancellation'] = 'Afgelast:';
$labels['itipreply'] = 'Reply to';
$labels['itipaccepted'] = 'Accepteer';
$labels['itiptentative'] = 'Misschien';
$labels['itipdeclined'] = 'Afwijzen';
$labels['itipsubjectaccepted'] = '"$title" is geaccepteerd door $name';
$labels['itipsubjecttentative'] = '"$title" has been tentatively accepted by $name';
$labels['itipsubjectdeclined'] = '"$title" has been declined by $name';
$labels['importtocalendar'] = 'Bewaar in mijn kalender';
$labels['removefromcalendar'] = 'Verwijder van mijn kalender';
$labels['updateattendeestatus'] = 'Update status van deelnemer';
$labels['acceptinvitation'] = 'Accepteer je deze uitnodiging?';
$labels['youhaveaccepted'] = 'Je hebt de uitnodiging geaccepteerd';
$labels['youhavetentative'] = 'You have tentatively accepted this invitation';
$labels['youhavedeclined'] = 'Je hebt deze uitnodiging afgewezen';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['savingdata'] = 'Data wordt opgeslagen...';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'Wyślij e-mail';
$labels['alarmdisplay'] = 'Pokaż wiadomość';
$labels['alarmdisplayoption'] = 'Wiadomość';
@ -12,6 +15,7 @@ $labels['trigger+M'] = 'minut po';
$labels['trigger+H'] = 'godzin(y) po';
$labels['trigger+D'] = 'dni po';
$labels['addalarm'] = 'dodaj alarm';
$labels['alarmtitle'] = 'Nadchodzące zdarzenia';
$labels['dismissall'] = 'Odrzuć wszystkie';
$labels['dismiss'] = 'Odrzuć';
@ -21,4 +25,29 @@ $labels['repeatinhr'] = 'Powtórz po godzinie';
$labels['repeatinhrs'] = 'Powtórz po $hrs godzinach';
$labels['repeattomorrow'] = 'Powtórz jutro';
$labels['repeatinweek'] = 'Powtórz za tydzień';
$labels['showmore'] = 'Pokaż więcej...';
// itip related labels
$labels['itipinvitation'] = 'Zaproszenie do';
$labels['itipupdate'] = 'Aktualizacja';
$labels['itipcancellation'] = 'Anulowano:';
$labels['itipreply'] = 'Odpowiedź do';
$labels['itipaccepted'] = 'Akceptuj';
$labels['itiptentative'] = 'Może';
$labels['itipdeclined'] = 'Odrzuć';
$labels['itipsubjectaccepted'] = '"$title" zostało zaakceptowane przez $name';
$labels['itipsubjecttentative'] = '"$title" zostało warunkowo zaakceptowane przez $name';
$labels['itipsubjectdeclined'] = '"$title" zostało odrzucone przez $name';
$labels['importtocalendar'] = 'Zapisz w moim kalendarzu';
$labels['removefromcalendar'] = 'Usuń z mojego kalendarza';
$labels['updateattendeestatus'] = 'Zaktualizuj status uczestnika';
$labels['acceptinvitation'] = 'Czy akceptujesz to zdarzenie?';
$labels['youhaveaccepted'] = 'Zaakceptowałeś to zaproszenie';
$labels['youhavetentative'] = 'Zaakceptowałeś to zdarzenie warunkowo';
$labels['youhavedeclined'] = 'Odrzuciłeś to zdarzenie';
$labels['notanattendee'] = 'Nie jesteś na liście uczestników tego zdarzenia';
$labels['savingdata'] = 'Zapisuję dane...';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'Enviar Email';
$labels['alarmdisplay'] = 'Mostrar mensagem';
$labels['alarmdisplayoption'] = 'Mensagem';
@ -12,6 +15,7 @@ $labels['trigger+M'] = 'minutos depois';
$labels['trigger+H'] = 'horas depois';
$labels['trigger+D'] = 'dias depois';
$labels['addalarm'] = 'adicionar alarme';
$labels['alarmtitle'] = 'Próximos eventos';
$labels['dismissall'] = 'Dispensar tudo';
$labels['dismiss'] = 'Dispensar';
@ -21,4 +25,28 @@ $labels['repeatinhr'] = 'Repetir em 1 hora';
$labels['repeatinhrs'] = 'Repetir em $hrs horas';
$labels['repeattomorrow'] = 'Repetir amanhã';
$labels['repeatinweek'] = 'Repetir em uma semana';
$labels['showmore'] = 'Mostrar mais...';
// itip related labels
$labels['itipinvitation'] = 'Convite para';
$labels['itipupdate'] = 'Atualização de';
$labels['itipcancellation'] = 'Cancelado:';
$labels['itipreply'] = 'Responder para';
$labels['itipaccepted'] = 'Aceitar';
$labels['itiptentative'] = 'Talvez';
$labels['itipdeclined'] = 'Rejeitar';
$labels['itipsubjectaccepted'] = '"$title" foi aceito por $name';
$labels['itipsubjecttentative'] = '"$title" foi aceito como tentativa por $name';
$labels['itipsubjectdeclined'] = '"$title" foi recusado por $name';
$labels['importtocalendar'] = 'Salvar em meu calendário';
$labels['removefromcalendar'] = 'Remover do meu calendário';
$labels['updateattendeestatus'] = 'Atualizar o estado dos participantes';
$labels['acceptinvitation'] = 'Você aceita este convite?';
$labels['youhaveaccepted'] = 'Você aceitou este convite';
$labels['youhavetentative'] = 'Você aceitou como tentativa este convite';
$labels['youhavedeclined'] = 'Você recusou este convite';
$labels['savingdata'] = 'Salvando dados...';

View file

@ -1,4 +1,7 @@
<?php
$labels = array();
$labels['alarmemail'] = 'Послать e-mail';
$labels['alarmdisplay'] = 'Показать сообщение';
$labels['alarmdisplayoption'] = 'Сообщение';
@ -12,6 +15,7 @@ $labels['trigger+M'] = 'минут после';
$labels['trigger+H'] = 'часов после';
$labels['trigger+D'] = 'дней после';
$labels['addalarm'] = 'добавить уведомление';
$labels['alarmtitle'] = 'Предстоящие события';
$labels['dismissall'] = 'Отменить все';
$labels['dismiss'] = 'Отменить';
@ -21,4 +25,29 @@ $labels['repeatinhr'] = 'Повторить через 1 час';
$labels['repeatinhrs'] = 'Повторить через $hrs часов';
$labels['repeattomorrow'] = 'Повторить завтра';
$labels['repeatinweek'] = 'Повторить через неделю';
$labels['showmore'] = 'Показать больше...';
// itip related labels
$labels['itipinvitation'] = 'Приглашение на';
$labels['itipupdate'] = 'Обновление';
$labels['itipcancellation'] = 'Отменённый:';
$labels['itipreply'] = 'Ответить';
$labels['itipaccepted'] = 'Принять';
$labels['itiptentative'] = 'Может быть';
$labels['itipdeclined'] = 'Отклонить';
$labels['itipsubjectaccepted'] = '"$title" принято $name';
$labels['itipsubjecttentative'] = '"$title" предварительно принято $name';
$labels['itipsubjectdeclined'] = '"$title" отклонено $name';
$labels['importtocalendar'] = 'Сохранить в мой календарь';
$labels['removefromcalendar'] = 'Удалить из моего календаря';
$labels['updateattendeestatus'] = 'Обновить статус участника';
$labels['acceptinvitation'] = 'Вы принимаете это приглашение?';
$labels['youhaveaccepted'] = 'Вы приняли это приглашение';
$labels['youhavetentative'] = 'Вы предварительно приняли это приглашение';
$labels['youhavedeclined'] = 'Вы отклонили это приглашение';
$labels['savingdata'] = 'Сохранение данных...';