Synchronized with git master from git.kolab.org (v3.2.7)

This commit is contained in:
Thomas Bruederli 2015-03-12 22:37:40 +01:00
parent 4ffb17858c
commit 13b36ba29b
104 changed files with 20278 additions and 7400 deletions

54
README
View file

@ -20,5 +20,59 @@ are used. They are packaged in a slightly modified version with this plugin.
IMPORTANT
---------
The calendar module makes heavy use of PHP's DateTime as well as DateInterval
classes. The latter one requires at least PHP 5.3.0 to run.
REQUIREMENTS
------------
Some functions are shared with other plugins and therefore being moved to
library plugins. Thus in order to run the calendar plugin, you also need the
following plugins installed:
* libcalendaring [1]
* libkolab [1] (when using the 'kolab' driver)
INSTALLATION
------------
For a manual installation of the calendar plugin (and its dependencies),
execute the following steps. This will set it up with the database backend
driver.
1. Get the source from git
$ cd /tmp
$ git clone git://git.kolab.org/git/roundcubemail-plugins-kolab
$ cd /<path-to-roundcube>/plugins
$ cp -r /tmp/roundcubemail-plugins-kolab/plugins/calendar .
$ cp -r /tmp/roundcubemail-plugins-kolab/plugins/libcalendaring .
2. Create calendar plugin configuration
$ cd calendar/
$ cp config.inc.php.dist config.inc.php
$ edit config.inc.php
3. Initialize the calendar database tables
$ mysql roundcubemail < drivers/database/SQL/mysql.initial.sql
4. Enable the calendar plugin
$ cd ../../
$ edit config/config.inc.php
Add 'calendar' to the list of active plugins:
$config['plugins'] = array(
(...)
'calendar',
);
[1] http://git.kolab.org/roundcubemail-plugins-kolab/

View file

@ -8,10 +8,10 @@ updatedb.sh --package=calendar-<driver> --version=<version> \
--dir=../plugins/calendar/drivers/<driver>/SQL
[*] Replace <driver> with "database" or "kolab" (without quotes)
[*] Replace <version> with Roundcube version e.g. 0.7.3
[*] Replace <version> with Roundcube version e.g. 0.9.0
[*] Roundcube should be upgraded before plugin upgrades
Example:
updatedb.sh --package=calendar-kolab --version=0.8.0 \
updatedb.sh --package=calendar-kolab --version=0.9.0 \
--dir=../plugins/calendar/drivers/kolab/SQL

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,14 @@
/**
* Base Javascript class for the Calendar plugin
*
* @version @package_version@
* @author Lazlo Westerhof <hello@lazlo.me>
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* @licstart The following is the entire license notice for the
* JavaScript code in this page.
*
* Copyright (C) 2010, Lazlo Westerhof <hello@lazlo.me>
* Copyright (C) 2013, Kolab Systems AG <contact@kolabsys.com>
* Copyright (C) 2013-2015, 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
@ -20,6 +22,9 @@
*
* 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/>.
*
* @licend The above is the entire license notice
* for the JavaScript code in this page.
*/
// Basic setup for Roundcube calendar client class
@ -31,6 +36,7 @@ function rcube_calendar(settings)
// member vars
this.ui;
this.ui_loaded = false;
this.selected_attachment = null;
// private vars
var me = this;
@ -42,13 +48,13 @@ function rcube_calendar(settings)
// load calendar UI (scripts and edit dialog template)
if (!this.ui_loaded) {
$.when(
$.getScript('./plugins/calendar/calendar_ui.js'),
$.getScript('./plugins/calendar/lib/js/fullcalendar.js'),
$.getScript(rcmail.assets_path('plugins/calendar/calendar_ui.js')),
$.getScript(rcmail.assets_path('plugins/calendar/lib/js/fullcalendar.js')),
$.get(rcmail.url('calendar/inlineui'), function(html){ $(document.body).append(html); }, 'html')
).then(function() {
// disable attendees feature (autocompletion and stuff is not initialized)
for (var c in rcmail.env.calendars)
rcmail.env.calendars[c].attendees = false;
rcmail.env.calendars[c].attendees = rcmail.env.calendars[c].resources = false;
me.ui_loaded = true;
me.ui = new rcube_calendar_ui(me.settings);
@ -72,90 +78,36 @@ function rcube_calendar(settings)
{
if (event.title) {
this.ui.add_event(event);
rcmail.message_list.blur();
if (rcmail.message_list)
rcmail.message_list.blur();
}
};
// handler for attachment-save-calendar commands
this.save_to_calendar = function(p)
{
// TODO: show dialog to select the calendar for importing
if (this.selected_attachment && window.rcube_libcalendaring) {
rcmail.http_post('calendar/mailimportattach', {
_uid: rcmail.env.uid,
_mbox: rcmail.env.mailbox,
_part: this.selected_attachment,
// _calendar: $('#calendar-attachment-saveto').val(),
}, rcmail.set_busy(true, 'itip.savingdata'));
}
}
}
// 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() });
rcmail.register_command('attachment-save-calendar', function() { cal.save_to_calendar() });
rcmail.addEventListener('plugin.mail2event_dialog', function(p){ cal.mail2event_dialog(p) });
rcmail.addEventListener('plugin.unlock_saving', function(p){ cal.ui && cal.ui.unlock_saving(); });
@ -163,17 +115,17 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
rcmail.env.message_commands.push('calendar-create-from-mail');
rcmail.add_element($('<a>'));
}
else
else {
rcmail.enable_command('calendar-create-from-mail', true);
// add contextmenu item
if (window.rcm_contextmenu_register_command) {
rcm_contextmenu_register_command(
'calendar-create-from-mail',
function(cmd,el){ cal.create_from_mail() },
'calendar.createfrommail',
'moveto');
}
rcmail.addEventListener('beforemenu-open', function(p) {
if (p.menu == 'attachmentmenu') {
cal.selected_attachment = p.id;
var mimetype = rcmail.env.attachments[p.id];
rcmail.enable_command('attachment-save-calendar', mimetype == 'text/calendar' || mimetype == 'text/x-vcalendar' || mimetype == 'application/ics');
}
});
}
}

File diff suppressed because it is too large Load diff

View file

@ -26,12 +26,11 @@
"require": {
"php": ">=5.3.0",
"roundcube/plugin-installer": ">=0.1.3",
"kolab/libcalendaring": "~1.0"
"kolab/libcalendaring": ">=3.2.0"
},
"extra": {
"roundcube": {
"min-version": "1.0.0",
"max-version": "1.0.99",
"min-version": "1.1.0",
"sql-dir": "drivers/database/SQL"
}
}

View file

@ -2,10 +2,9 @@
/*
+-------------------------------------------------------------------------+
| Configuration for the Calendar plugin |
| Version 0.7-beta |
| |
| Copyright (C) 2010, Lazlo Westerhof - Netherlands |
| Copyright (C) 2011, Kolab Systems AG |
| Copyright (C) 2011-2014, Kolab Systems AG |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU Affero General Public License as |
@ -27,14 +26,17 @@
*/
// backend type (database, google, kolab)
$rcmail_config['calendar_driver'] = "database";
$config['calendar_driver'] = "database";
// default calendar view (agendaDay, agendaWeek, month)
$rcmail_config['calendar_default_view'] = "agendaWeek";
$config['calendar_default_view'] = "agendaWeek";
// show a birthdays calendar from the user's address book(s)
$config['calendar_contact_birthdays'] = false;
// mapping of Roundcube date formats to calendar formats (long/short/agenda)
// should be in sync with 'date_formats' in main config
$rcmail_config['calendar_date_format_sets'] = array(
$config['calendar_date_format_sets'] = array(
'yyyy-MM-dd' => array('MMM d yyyy', 'M-d', 'ddd MM-dd'),
'dd-MM-yyyy' => array('d MMM yyyy', 'd-M', 'ddd dd-MM'),
'yyyy/MM/dd' => array('MMM d yyyy', 'M/d', 'ddd MM/dd'),
@ -45,59 +47,59 @@ $rcmail_config['calendar_date_format_sets'] = array(
);
// general date format (only set if different from default date format and not user configurable)
// $rcmail_config['calendar_date_format'] = "yyyy-MM-dd";
// $config['calendar_date_format'] = "yyyy-MM-dd";
// time format (only set if different from default date format)
// $rcmail_config['calendar_time_format'] = "HH:mm";
// $config['calendar_time_format'] = "HH:mm";
// short date format (used for column titles)
// $rcmail_config['calendar_date_short'] = 'M-d';
// $config['calendar_date_short'] = 'M-d';
// long date format (used for calendar title)
// $rcmail_config['calendar_date_long'] = 'MMM d yyyy';
// $config['calendar_date_long'] = 'MMM d yyyy';
// date format used for agenda view
// $rcmail_config['calendar_date_agenda'] = 'ddd MM-dd';
// $config['calendar_date_agenda'] = 'ddd MM-dd';
// timeslots per hour (1, 2, 3, 4, 6)
$rcmail_config['calendar_timeslots'] = 2;
$config['calendar_timeslots'] = 2;
// show this number of days in agenda view
$rcmail_config['calendar_agenda_range'] = 60;
$config['calendar_agenda_range'] = 60;
// first day of the week (0-6)
$rcmail_config['calendar_first_day'] = 1;
$config['calendar_first_day'] = 1;
// first hour of the calendar (0-23)
$rcmail_config['calendar_first_hour'] = 6;
$config['calendar_first_hour'] = 6;
// working hours begin
$rcmail_config['calendar_work_start'] = 6;
$config['calendar_work_start'] = 6;
// working hours end
$rcmail_config['calendar_work_end'] = 18;
$config['calendar_work_end'] = 18;
// show line at current time of the day
$rcmail_config['calendar_time_indicator'] = true;
$config['calendar_time_indicator'] = true;
// default alarm settings for new events.
// this is only a preset when a new event dialog opens
// possible values are <empty>, DISPLAY, EMAIL
$rcmail_config['calendar_default_alarm_type'] = '';
$config['calendar_default_alarm_type'] = '';
// default alarm offset for new events.
// use ical-style offset values like "-1H" (one hour before) or "+30M" (30 minutes after)
$rcmail_config['calendar_default_alarm_offset'] = '-15M';
$config['calendar_default_alarm_offset'] = '-15M';
// how to colorize events:
// 0: according to calendar color
// 1: according to category color
// 2: calendar for outer, category for inner color
// 3: category for outer, calendar for inner color
$rcmail_config['calendar_event_coloring'] = 0;
$config['calendar_event_coloring'] = 0;
// event categories
$rcmail_config['calendar_categories'] = array(
$config['calendar_categories'] = array(
'Personal' => 'c0c0c0',
'Work' => 'ff0000',
'Family' => '00ff00',
@ -105,19 +107,49 @@ $rcmail_config['calendar_categories'] = array(
);
// enable users to invite/edit attendees for shared events organized by others
$rcmail_config['calendar_allow_invite_shared'] = false;
$config['calendar_allow_invite_shared'] = false;
// allow users to accecpt iTip invitations who are no explicitly listed as attendee.
// this can be the case if invitations are sent to mailing lists or alias email addresses.
$config['calendar_allow_itip_uninvited'] = true;
// controls the visibility/default of the checkbox controlling the sending of iTip invitations
// 0 = hidden + disabled
// 1 = hidden + active
// 2 = visible + unchecked
// 3 = visible + active
$config['calendar_itip_send_option'] = 3;
// Action taken after iTip request is handled. Possible values:
// 0 - no action
// 1 - move to Trash
// 2 - delete the message
// 3 - flag as deleted
// folder_name - move the message to the specified folder
$config['calendar_itip_after_action'] = 0;
// enable asynchronous free-busy triggering after data changed
$rcmail_config['calendar_freebusy_trigger'] = false;
$config['calendar_freebusy_trigger'] = false;
// SMTP server host used to send (anonymous) itip messages
$rcmail_config['calendar_itip_smtp_server'] = null;
// free-busy information will be displayed for user calendars if available
// 0 - no free-busy information
// 1 - enabled in all views
// 2 - only in quickview
$config['calendar_include_freebusy_data'] = 1;
// SMTP server host used to send (anonymous) itip messages.
// Set to '' in order to use PHP's mail() function for email delivery.
// To override the SMTP port or connection method, provide a full URL like 'tls://somehost:587'
$config['calendar_itip_smtp_server'] = null;
// SMTP username used to send (anonymous) itip messages
$rcmail_config['calendar_itip_smtp_user'] = 'smtpauth';
$config['calendar_itip_smtp_user'] = 'smtpauth';
// SMTP password used to send (anonymous) itip messages
$rcmail_config['calendar_itip_smtp_pass'] = '123456';
$config['calendar_itip_smtp_pass'] = '123456';
// show virtual invitation calendars (Kolab driver only)
$config['kolab_invitation_calendars'] = true;
// Base URL to build fully qualified URIs to access calendars via CALDAV
// The following replacement variables are supported:
@ -125,6 +157,13 @@ $rcmail_config['calendar_itip_smtp_pass'] = '123456';
// %u - Current webmail user name
// %n - Calendar name
// %i - Calendar UUID
// $rcmail_config['calendar_caldav_url'] = 'http://%h/iRony/calendars/%u/%i';
// $config['calendar_caldav_url'] = 'http://%h/iRony/calendars/%u/%i';
// Driver to provide a resource directory ('ldap' is the only implementation yet).
// Leave empty or commented to disable resources support.
// $config['calendar_resources_driver'] = 'ldap';
// LDAP directory configuration to find avilable resources for events
// $config['calendar_resources_directory'] = array(/* ldap_public-like address book configuration */);
?>

View file

@ -8,7 +8,7 @@
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 2010, Lazlo Westerhof <hello@lazlo.me>
* Copyright (C) 2012, Kolab Systems AG <contact@kolabsys.com>
* Copyright (C) 2012-2015, 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
@ -50,8 +50,10 @@
* 'EXCEPTIONS' => array(<event>), list of event objects which denote exceptions in the recurrence chain
* ),
* 'recurrence_id' => 'ID of the recurrence group', // usually the ID of the starting event
* '_instance' => 'ID of the recurring instance', // identifies an instance within a recurrence chain
* 'categories' => 'Event category',
* 'free_busy' => 'free|busy|outofoffice|tentative', // Show time as
* 'status' => 'TENTATIVE|CONFIRMED|CANCELLED', // event status according to RFC 2445
* 'priority' => 0-9, // Event priority (0=undefined, 1=highest, 9=lowest)
* 'sensitivity' => 'public|private|confidential', // Event sensitivity
* 'alarms' => '-15M:DISPLAY', // DEPRECATED Reminder settings inspired by valarm definition (e.g. display alert 15 minutes before event)
@ -92,12 +94,22 @@
*/
abstract class calendar_driver
{
const FILTER_ALL = 0;
const FILTER_WRITEABLE = 1;
const FILTER_INSERTABLE = 2;
const FILTER_ACTIVE = 4;
const FILTER_PERSONAL = 8;
const FILTER_PRIVATE = 16;
const FILTER_CONFIDENTIAL = 32;
const BIRTHDAY_CALENDAR_ID = '__bdays__';
// features supported by backend
public $alarms = false;
public $attendees = false;
public $freebusy = false;
public $attachments = false;
public $undelete = false; // event undelete action
public $undelete = false;
public $history = false;
public $categoriesimmutable = false;
public $alarm_types = array('DISPLAY');
public $alarm_absolute = true;
@ -113,12 +125,11 @@ abstract class calendar_driver
/**
* Get a list of available calendars from this source
*
* @param bool $active Return only active calendars
* @param bool $personal Return only personal calendars
*
* @param integer Bitmask defining filter criterias.
* See FILTER_* constants for possible values.
* @return array List of calendars
*/
abstract function list_calendars($active = false, $personal = false);
abstract function list_calendars($filter = 0);
/**
* Create a new calendar assigned to the current user
@ -160,7 +171,16 @@ abstract class calendar_driver
* id: Calendar Identifier
* @return boolean True on success, Fales on failure
*/
abstract function remove_calendar($prop);
abstract function delete_calendar($prop);
/**
* Search for shared or otherwise not listed calendars the user has access
*
* @param string Search string
* @param string Section/source to search
* @return array List of calendars
*/
abstract function search_calendars($query, $source);
/**
* Add a single event to the database
@ -178,6 +198,31 @@ abstract class calendar_driver
*/
abstract function edit_event($event);
/**
* Extended event editing with possible changes to the argument
*
* @param array Hash array with event properties
* @param string New participant status
* @param array List of hash arrays with updated attendees
* @return boolean True on success, False on error
*/
public function edit_rsvp(&$event, $status, $attendees)
{
return $this->edit_event($event);
}
/**
* Update the participant status for the given attendee
*
* @param array Hash array with event properties
* @param array List of hash arrays each represeting an updated attendee
* @return boolean True on success, False on error
*/
public function update_attendees(&$event, $attendees)
{
return $this->edit_event($event);
}
/**
* Move a single event
*
@ -230,21 +275,23 @@ abstract class calendar_driver
* Return data of a single event
*
* @param mixed UID string or hash array with event properties:
* id: Event identifier
* calendar: Calendar identifier (optional)
* @param boolean If true, only writeable calendars shall be searched
* @param boolean If true, only active calendars shall be searched
* @param boolean If true, only personal calendars shall be searched
* id: Event identifier
* uid: Event UID
* _instance: Instance identifier in combination with uid (optional)
* calendar: Calendar identifier (optional)
* @param integer Bitmask defining the scope to search events in.
* See FILTER_* constants for possible values.
* @param boolean If true, recurrence exceptions shall be added
*
* @return array Event object as hash array
*/
abstract function get_event($event, $writeable = false, $active = false, $personal = false);
abstract function get_event($event, $scope = 0, $full = false);
/**
* Get events from source.
*
* @param integer Event's new start (unix timestamp)
* @param integer Event's new end (unix timestamp)
* @param integer Date range start (unix timestamp)
* @param integer Date range end (unix timestamp)
* @param string Search query (optional)
* @param mixed List of calendar IDs to load events from (either as array or comma-separated string)
* @param boolean Include virtual/recurring events (optional)
@ -253,6 +300,16 @@ abstract class calendar_driver
*/
abstract function load_events($start, $end, $query = null, $calendars = null, $virtual = 1, $modifiedsince = null);
/**
* Get number of events in the given calendar
*
* @param mixed List of calendar IDs to count events (either as array or comma-separated string)
* @param integer Date range start (unix timestamp)
* @param integer Date range end (unix timestamp)
* @return array Hash array with counts grouped by calendar ID
*/
abstract function count_events($calendars, $start, $end = null);
/**
* Get a list of pending alarms to be displayed to the user
*
@ -342,6 +399,21 @@ abstract class calendar_driver
*/
public function get_attachment_body($id, $event) { }
/**
* Build a struct representing the given message reference
*
* @param object|string $uri_or_headers rcube_message_header instance holding the message headers
* or an URI from a stored link referencing a mail message.
* @param string $folder IMAP folder the message resides in
*
* @return array An struct referencing the given IMAP message
*/
public function get_message_reference($uri_or_headers, $folder = null)
{
// to be implemented by the derived classes
return false;
}
/**
* List availabale categories
* The default implementation reads them from config/user prefs
@ -381,6 +453,132 @@ abstract class calendar_driver
return false;
}
/**
* Create instances of a recurring event
*
* @param array Hash array with event properties
* @param object DateTime Start date of the recurrence window
* @param object DateTime End date of the recurrence window
* @return array List of recurring event instances
*/
public function get_recurring_events($event, $start, $end = null)
{
$events = array();
if ($event['recurrence']) {
// include library class
require_once(dirname(__FILE__) . '/../lib/calendar_recurrence.php');
$rcmail = rcmail::get_instance();
$recurrence = new calendar_recurrence($rcmail->plugins->get_plugin('calendar'), $event);
$recurrence_id_format = libcalendaring::recurrence_id_format($event);
// determine a reasonable end date if none given
if (!$end) {
switch ($event['recurrence']['FREQ']) {
case 'YEARLY': $intvl = 'P100Y'; break;
case 'MONTHLY': $intvl = 'P20Y'; break;
default: $intvl = 'P10Y'; break;
}
$end = clone $event['start'];
$end->add(new DateInterval($intvl));
}
$i = 0;
while ($next_event = $recurrence->next_instance()) {
// add to output if in range
if (($next_event['start'] <= $end && $next_event['end'] >= $start)) {
$next_event['_instance'] = $next_event['start']->format($recurrence_id_format);
$next_event['id'] = $next_event['uid'] . '-' . $exception['_instance'];
$next_event['recurrence_id'] = $event['uid'];
$events[] = $next_event;
}
else if ($next_event['start'] > $end) { // stop loop if out of range
break;
}
// avoid endless recursion loops
if (++$i > 1000) {
break;
}
}
}
return $events;
}
/**
* Provide a list of revisions for the given event
*
* @param array $event Hash array with event properties:
* id: Event identifier
* calendar: Calendar identifier
*
* @return array List of changes, each as a hash array:
* rev: Revision number
* type: Type of the change (create, update, move, delete)
* date: Change date
* user: The user who executed the change
* ip: Client IP
* destination: Destination calendar for 'move' type
*/
public function get_event_changelog($event)
{
return false;
}
/**
* Get a list of property changes beteen two revisions of an event
*
* @param array $event Hash array with event properties:
* id: Event identifier
* calendar: Calendar identifier
* @param mixed $rev Revisions: "from:to"
*
* @return array List of property changes, each as a hash array:
* property: Revision number
* old: Old property value
* new: Updated property value
*/
public function get_event_diff($event, $rev)
{
return false;
}
/**
* Return full data of a specific revision of an event
*
* @param mixed UID string or hash array with event properties:
* id: Event identifier
* calendar: Calendar identifier
* @param mixed $rev Revision number
*
* @return array Event object as hash array
* @see self::get_event()
*/
public function get_event_revison($event, $rev)
{
return false;
}
/**
* Command the backend to restore a certain revision of an event.
* This shall replace the current event with an older version.
*
* @param mixed UID string or hash array with event properties:
* id: Event identifier
* calendar: Calendar identifier
* @param mixed $rev Revision number
*
* @return boolean True on success, False on failure
*/
public function restore_event_revision($event, $rev)
{
return false;
}
/**
* Callback function to produce driver-specific calendar create/edit form
*
@ -403,13 +601,219 @@ abstract class calendar_driver
}
/**
* Return a (limited) list of color values to be used for calendar and category coloring
* Compose a list of birthday events from the contact records in the user's address books.
*
* @return mixed List for colors as hex values or false if no presets should be shown
* This is a default implementation using Roundcube's address book API.
* It can be overriden with a more optimized version by the individual drivers.
*
* @param integer Event's new start (unix timestamp)
* @param integer Event's new end (unix timestamp)
* @param string Search query (optional)
* @param integer Only list events modified since this time (unix timestamp)
* @return array A list of event records
*/
public function get_color_values()
public function load_birthday_events($start, $end, $search = null, $modifiedsince = null)
{
return false;
// ignore update requests for simplicity reasons
if (!empty($modifiedsince)) {
return array();
}
// convert to DateTime for comparisons
$start = new DateTime('@'.$start);
$end = new DateTime('@'.$end);
// extract the current year
$year = $start->format('Y');
$year2 = $end->format('Y');
$events = array();
$search = mb_strtolower($search);
$rcmail = rcmail::get_instance();
$cache = $rcmail->get_cache('calendar.birthdays', 'db', 3600);
$cache->expunge();
$alarm_type = $rcmail->config->get('calendar_birthdays_alarm_type', '');
$alarm_offset = $rcmail->config->get('calendar_birthdays_alarm_offset', '-1D');
$alarms = $alarm_type ? $alarm_offset . ':' . $alarm_type : null;
// let the user select the address books to consider in prefs
$selected_sources = $rcmail->config->get('calendar_birthday_adressbooks');
$sources = $selected_sources ?: array_keys($rcmail->get_address_sources(false, true));
foreach ($sources as $source) {
$abook = $rcmail->get_address_book($source);
// skip LDAP address books unless selected by the user
if (!$abook || ($abook instanceof rcube_ldap && empty($selected_sources))) {
continue;
}
$abook->set_pagesize(10000);
// check for cached results
$cache_records = array();
$cached = $cache->get($source);
// iterate over (cached) contacts
foreach (($cached ?: $abook->search('*', '', 2, true, true, array('birthday'))) as $contact) {
if (is_array($contact) && !empty($contact['birthday'])) {
try {
if (is_array($contact['birthday']))
$contact['birthday'] = reset($contact['birthday']);
$bday = $contact['birthday'] instanceof DateTime ? $contact['birthday'] :
new DateTime($contact['birthday'], new DateTimezone('UTC'));
$birthyear = $bday->format('Y');
}
catch (Exception $e) {
rcube::raise_error(array(
'code' => 600, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => 'BIRTHDAY PARSE ERROR: ' . $e),
true, false);
continue;
}
$display_name = rcube_addressbook::compose_display_name($contact);
$event_title = $rcmail->gettext(array('name' => 'birthdayeventtitle', 'vars' => array('name' => $display_name)), 'calendar');
// add stripped record to cache
if (empty($cached)) {
$cache_records[] = array(
'ID' => $contact['ID'],
'name' => $display_name,
'birthday' => $bday->format('Y-m-d'),
);
}
// filter by search term (only name is involved here)
if (!empty($search) && strpos(mb_strtolower($event_title), $search) === false) {
continue;
}
// quick-and-dirty recurrence computation: just replace the year
$bday->setDate($year, $bday->format('n'), $bday->format('j'));
$bday->setTime(12, 0, 0);
// date range reaches over multiple years: use end year if not in range
if (($bday > $end || $bday < $start) && $year2 != $year) {
$bday->setDate($year2, $bday->format('n'), $bday->format('j'));
$year = $year2;
}
// birthday is within requested range
if ($bday <= $end && $bday >= $start) {
$age = $year - $birthyear;
$event = array(
'id' => rcube_ldap::dn_encode('bday:' . $source . ':' . $contact['ID'] . ':' . $year),
'calendar' => self::BIRTHDAY_CALENDAR_ID,
'title' => $event_title,
'description' => $rcmail->gettext(array('name' => 'birthdayage', 'vars' => array('age' => $age)), 'calendar'),
// Add more contact information to description block?
'allday' => true,
'start' => $bday,
'alarms' => $alarms,
);
$event['end'] = clone $bday;
$event['end']->add(new DateInterval('PT1H'));
$events[] = $event;
}
}
}
// store collected contacts in cache
if (empty($cached)) {
$cache->write($source, $cache_records);
}
}
return $events;
}
/**
* Get a single birthday calendar event
*/
public function get_birthday_event($id)
{
// decode $id
list(,$source,$contact_id,$year) = explode(':', rcube_ldap::dn_decode($id));
$rcmail = rcmail::get_instance();
if ($source && $contact_id && ($abook = $rcmail->get_address_book($source))) {
$contact = $abook->get_record($contact_id, true);
if (is_array($contact) && !empty($contact['birthday'])) {
try {
if (is_array($contact['birthday']))
$contact['birthday'] = reset($contact['birthday']);
$bday = $contact['birthday'] instanceof DateTime ? $contact['birthday'] :
new DateTime($contact['birthday'], new DateTimezone('UTC'));
$birthyear = $bday->format('Y');
}
catch (Exception $e) {
rcube::raise_error(array(
'code' => 600, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => 'BIRTHDAY PARSE ERROR: ' . $e),
true, false);
return null;
}
$display_name = rcube_addressbook::compose_display_name($contact);
$event_title = $rcmail->gettext(array('name' => 'birthdayeventtitle', 'vars' => array('name' => $display_name)), 'calendar');
$event = array(
'id' => rcube_ldap::dn_encode('bday:' . $source . ':' . $contact['ID'] . ':' . $year),
'uid' => rcube_ldap::dn_encode('bday:' . $source . ':' . $contact['ID'] . ':' . $birthyear),
'calendar' => self::BIRTHDAY_CALENDAR_ID,
'title' => $event_title,
'description' => '',
'allday' => true,
'start' => $bday,
'recurrence' => array('FREQ' => 'YEARLY', 'INTERVAL' => 1),
'free_busy' => 'free',
);
$event['end'] = clone $bday;
$event['end']->add(new DateInterval('PT1H'));
return $event;
}
}
return null;
}
/**
* Store alarm dismissal for birtual birthay events
*
* @param string Event identifier
* @param integer Suspend the alarm for this number of seconds
*/
public function dismiss_birthday_alarm($event_id, $snooze = 0)
{
$rcmail = rcmail::get_instance();
$cache = $rcmail->get_cache('calendar.birthdayalarms', 'db', 86400 * 30);
$cache->remove($event_id);
// compute new notification time or disable if not snoozed
$notifyat = $snooze > 0 ? time() + $snooze : null;
$cache->set($event_id, array('snooze' => $snooze, 'notifyat' => $notifyat));
return true;
}
/**
* Handler for user_delete plugin hook
*
* @param array Hash array with hook arguments
* @return array Return arguments for plugin hooks
*/
public function user_delete($args)
{
// TO BE OVERRIDDEN
return $args;
}
}

View file

@ -3,12 +3,11 @@
*
* Plugin to add a calendar to Roundcube.
*
* @version @package_version@
* @author Lazlo Westerhof
* @author Thomas Bruederli
* @url http://rc-calendar.lazlo.me
* @licence GNU AGPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
* @copyright (c) 2014 Kolab Systems AG
*
**/
@ -29,6 +28,8 @@ CREATE TABLE IF NOT EXISTS `events` (
`calendar_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
`recurrence_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
`uid` varchar(255) NOT NULL DEFAULT '',
`instance` varchar(16) NOT NULL DEFAULT ''
`isexception` tinyint(1) NOT NULL DEFAULT '0',
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`sequence` int(1) UNSIGNED NOT NULL DEFAULT '0',
@ -44,7 +45,8 @@ CREATE TABLE IF NOT EXISTS `events` (
`free_busy` tinyint(1) NOT NULL DEFAULT '0',
`priority` tinyint(1) NOT NULL DEFAULT '0',
`sensitivity` tinyint(1) NOT NULL DEFAULT '0',
`alarms` varchar(255) DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT '',
`alarms` text DEFAULT NULL,
`attendees` text DEFAULT NULL,
`notifyat` datetime DEFAULT NULL,
PRIMARY KEY(`event_id`),
@ -80,4 +82,4 @@ CREATE TABLE IF NOT EXISTS `itipinvitations` (
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
REPLACE INTO system (name, value) VALUES ('calendar-database-version', '2013051600');
REPLACE INTO system (name, value) VALUES ('calendar-database-version', '2015022700');

View file

@ -0,0 +1,3 @@
-- MySQL database updates since version 1.0
ALTER TABLE `events` ADD `status` VARCHAR(32) NOT NULL AFTER `sensitivity`;

View file

@ -0,0 +1,15 @@
-- add identifier for recurring instances and exceptions
ALTER TABLE `events` ADD `instance` varchar(16) NOT NULL DEFAULT '' AFTER `uid`;
ALTER TABLE `events` ADD `isexception` tinyint(1) NOT NULL DEFAULT '0' AFTER `instance`;
UPDATE `events` SET `instance` = DATE_FORMAT(`start`, '%Y%m%d')
WHERE `recurrence_id` != 0 AND `instance` = '' AND `all_day` = 1;
UPDATE `events` SET `instance` = DATE_FORMAT(`start`, '%Y%m%dT%k%i%s')
WHERE `recurrence_id` != 0 AND `instance` = '' AND `all_day` = 0;
-- extend alarms columns for multiple values
ALTER TABLE `events` CHANGE `alarms` `alarms` TEXT NULL DEFAULT NULL;

View file

@ -3,13 +3,12 @@
*
* Plugin to add a calendar to RoundCube.
*
* @version @package_version@
* @author Lazlo Westerhof
* @author Albert Lee
* @author Aleksander Machniak <machniak@kolabsys.com>
* @url http://rc-calendar.lazlo.me
* @licence GNU AGPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
* @copyright (c) 2014 Kolab Systems AG
*
**/
@ -45,22 +44,25 @@ CREATE TABLE events (
REFERENCES calendars (calendar_id) ON UPDATE CASCADE ON DELETE CASCADE,
recurrence_id integer NOT NULL DEFAULT 0,
uid varchar(255) NOT NULL DEFAULT '',
instance varchar(16) NOT NULL DEFAULT '',
isexception smallint NOT NULL DEFAULT '0',
created timestamp without time zone DEFAULT now() NOT NULL,
changed timestamp without time zone DEFAULT now(),
sequence integer NOT NULL DEFAULT 0,
"start" timestamp without time zone DEFAULT now() NOT NULL,
"end" timestamp without time zone DEFAULT now() NOT NULL,
recurrence varchar(255) DEFAULT NULL,
title character varying(255) NOT NULL,
description text NOT NULL,
location character varying(255) NOT NULL,
categories character varying(255) NOT NULL,
url character varying(255) NOT NULL,
title character varying(255) NOT NULL DEFAULT '',
description text NOT NULL DEFAULT '',
location character varying(255) NOT NULL DEFAULT '',
categories character varying(255) NOT NULL DEFAULT '',
url character varying(255) NOT NULL DEFAULT '',
all_day smallint NOT NULL DEFAULT 0,
free_busy smallint NOT NULL DEFAULT 0,
priority smallint NOT NULL DEFAULT 0,
sensitivity smallint NOT NULL DEFAULT 0,
alarms varchar(255) DEFAULT NULL,
status character varying(32) NOT NULL DEFAULT '',
alarms text DEFAULT NULL,
attendees text DEFAULT NULL,
notifyat timestamp without time zone DEFAULT NULL,
PRIMARY KEY (event_id)
@ -104,4 +106,4 @@ CREATE TABLE itipinvitations (
CREATE INDEX itipinvitations_user_id_event_uid_idx ON itipinvitations (user_id, event_uid);
INSERT INTO system (name, value) VALUES ('calendar-database-version', '2013051600');
INSERT INTO system (name, value) VALUES ('calendar-database-version', '2015022700');

View file

@ -0,0 +1,3 @@
-- Postgres database updates since version 1.0
ALTER TABLE events ADD status character varying(32) NOT NULL;

View file

@ -0,0 +1,9 @@
-- add identifier for recurring instances and exceptions
ALTER TABLE events ADD instance character varying(16) NOT NULL;
ALTER TABLE events ADD isexception smallint NOT NULL DEFAULT '0';
-- extend alarms columns for multiple values
ALTER TABLE events ALTER COLUMN alarms TYPE text;

View file

@ -3,13 +3,12 @@
*
* Plugin to add a calendar to Roundcube.
*
* @version @package_version@
* @author Lazlo Westerhof
* @author Thomas Bruederli
* @author Albert Lee
* @url http://rc-calendar.lazlo.me
* @licence GNU AGPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
* @copyright (c) 2014 Kolab Systems AG
*
**/
@ -28,6 +27,8 @@ CREATE TABLE events (
calendar_id integer NOT NULL default '0',
recurrence_id integer NOT NULL default '0',
uid varchar(255) NOT NULL default '',
instance varchar(16) NOT NULL default '',
isexception tinyint(1) NOT NULL default '0',
created datetime NOT NULL default '1000-01-01 00:00:00',
changed datetime NOT NULL default '1000-01-01 00:00:00',
sequence integer NOT NULL default '0',
@ -43,7 +44,8 @@ CREATE TABLE events (
free_busy tinyint(1) NOT NULL default '0',
priority tinyint(1) NOT NULL default '0',
sensitivity tinyint(1) NOT NULL default '0',
alarms varchar(255) default NULL,
status varchar(32) NOT NULL default '',
alarms text default NULL,
attendees text default NULL,
notifyat datetime default NULL,
CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
@ -74,4 +76,4 @@ CREATE TABLE itipinvitations (
CREATE INDEX ix_itipinvitations_uid ON itipinvitations(user_id, event_uid);
INSERT INTO system (name, value) VALUES ('calendar-database-version', '2013051600');
INSERT INTO system (name, value) VALUES ('calendar-database-version', '2015022700');

View file

@ -0,0 +1,67 @@
-- SQLite database updates since version 0.9-beta
-- ALTER TABLE events ADD url varchar(255) NOT NULL AFTER categories;
CREATE TABLE temp_events (
event_id integer NOT NULL PRIMARY KEY,
calendar_id integer NOT NULL default '0',
recurrence_id integer NOT NULL default '0',
uid varchar(255) NOT NULL default '',
created datetime NOT NULL default '1000-01-01 00:00:00',
changed datetime NOT NULL default '1000-01-01 00:00:00',
sequence integer NOT NULL default '0',
start datetime NOT NULL default '1000-01-01 00:00:00',
end datetime NOT NULL default '1000-01-01 00:00:00',
recurrence varchar(255) default NULL,
title varchar(255) NOT NULL,
description text NOT NULL,
location varchar(255) NOT NULL default '',
categories varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
all_day tinyint(1) NOT NULL default '0',
free_busy tinyint(1) NOT NULL default '0',
priority tinyint(1) NOT NULL default '0',
sensitivity tinyint(1) NOT NULL default '0',
alarms varchar(255) default NULL,
attendees text default NULL,
notifyat datetime default NULL
);
INSERT INTO temp_events (event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat)
SELECT event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat
FROM events;
DROP TABLE events;
CREATE TABLE events (
event_id integer NOT NULL PRIMARY KEY,
calendar_id integer NOT NULL default '0',
recurrence_id integer NOT NULL default '0',
uid varchar(255) NOT NULL default '',
created datetime NOT NULL default '1000-01-01 00:00:00',
changed datetime NOT NULL default '1000-01-01 00:00:00',
sequence integer NOT NULL default '0',
start datetime NOT NULL default '1000-01-01 00:00:00',
end datetime NOT NULL default '1000-01-01 00:00:00',
recurrence varchar(255) default NULL,
title varchar(255) NOT NULL,
description text NOT NULL,
location varchar(255) NOT NULL default '',
categories varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
all_day tinyint(1) NOT NULL default '0',
free_busy tinyint(1) NOT NULL default '0',
priority tinyint(1) NOT NULL default '0',
sensitivity tinyint(1) NOT NULL default '0',
status varchar(32) NOT NULL default '',
alarms varchar(255) default NULL,
attendees text default NULL,
notifyat datetime default NULL,
CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
REFERENCES calendars(calendar_id)
);
INSERT INTO events (event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat)
SELECT event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat
FROM temp_events;

View file

@ -0,0 +1,79 @@
-- ALTER TABLE `events` ADD `instance` varchar(16) NOT NULL DEFAULT '' AFTER `uid`;
-- ALTER TABLE `events` ADD `isexception` tinyint(3) NOT NULL DEFAULT '0' AFTER `instance`;
-- ALTER TABLE `events` CHANGE `alarms` `alarms` TEXT NULL DEFAULT NULL;
CREATE TABLE temp_events (
event_id integer NOT NULL PRIMARY KEY,
calendar_id integer NOT NULL default '0',
recurrence_id integer NOT NULL default '0',
uid varchar(255) NOT NULL default '',
created datetime NOT NULL default '1000-01-01 00:00:00',
changed datetime NOT NULL default '1000-01-01 00:00:00',
sequence integer NOT NULL default '0',
start datetime NOT NULL default '1000-01-01 00:00:00',
end datetime NOT NULL default '1000-01-01 00:00:00',
recurrence varchar(255) default NULL,
title varchar(255) NOT NULL,
description text NOT NULL,
location varchar(255) NOT NULL default '',
categories varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
all_day tinyint(1) NOT NULL default '0',
free_busy tinyint(1) NOT NULL default '0',
priority tinyint(1) NOT NULL default '0',
sensitivity tinyint(1) NOT NULL default '0',
status varchar(32) NOT NULL default '',
alarms varchar(255) default NULL,
attendees text default NULL,
notifyat datetime default NULL
);
INSERT INTO temp_events (event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat)
SELECT event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat
FROM events;
DROP TABLE events;
CREATE TABLE events (
event_id integer NOT NULL PRIMARY KEY,
calendar_id integer NOT NULL default '0',
recurrence_id integer NOT NULL default '0',
uid varchar(255) NOT NULL default '',
instance varchar(16) NOT NULL default '',
isexception tinyint(1) NOT NULL default '0',
created datetime NOT NULL default '1000-01-01 00:00:00',
changed datetime NOT NULL default '1000-01-01 00:00:00',
sequence integer NOT NULL default '0',
start datetime NOT NULL default '1000-01-01 00:00:00',
end datetime NOT NULL default '1000-01-01 00:00:00',
recurrence varchar(255) default NULL,
title varchar(255) NOT NULL,
description text NOT NULL,
location varchar(255) NOT NULL default '',
categories varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
all_day tinyint(1) NOT NULL default '0',
free_busy tinyint(1) NOT NULL default '0',
priority tinyint(1) NOT NULL default '0',
sensitivity tinyint(1) NOT NULL default '0',
status varchar(32) NOT NULL default '',
alarms text default NULL,
attendees text default NULL,
notifyat datetime default NULL,
CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
REFERENCES calendars(calendar_id)
);
INSERT INTO events (event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat)
SELECT event_id, calendar_id, recurrence_id, uid, created, changed, sequence, start, end, recurrence, title, description, location, categories, url, all_day, free_busy, priority, sensitivity, alarms, attendees, notifyat
FROM temp_events;
DROP TABLE temp_events;
-- Derrive instance columns from start date/time
UPDATE events SET instance = strftime('%Y%m%d', start)
WHERE recurrence_id != 0 AND instance = '' AND all_day = 1;
UPDATE events SET instance = strftime('%Y%m%dT%H%M%S', start)
WHERE recurrence_id != 0 AND instance = '' AND all_day = 0;

File diff suppressed because it is too large Load diff

View file

@ -7,11 +7,11 @@
**/
CREATE TABLE IF NOT EXISTS `kolab_alarms` (
`event_id` VARCHAR(255) NOT NULL,
`alarm_id` VARCHAR(255) NOT NULL,
`user_id` int(10) UNSIGNED NOT NULL,
`notifyat` DATETIME DEFAULT NULL,
`dismissed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY(`event_id`,`user_id`),
PRIMARY KEY(`alarm_id`,`user_id`),
CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) /*!40000 ENGINE=INNODB */;
@ -29,4 +29,4 @@ CREATE TABLE IF NOT EXISTS `itipinvitations` (
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
REPLACE INTO system (name, value) VALUES ('calendar-kolab-version', '2013011000');
REPLACE INTO system (name, value) VALUES ('calendar-kolab-version', '2014041700');

View file

@ -0,0 +1 @@
ALTER TABLE `kolab_alarms` CHANGE `event_id` `alarm_id` VARCHAR(255) NOT NULL;

View file

@ -0,0 +1,31 @@
/**
* Roundcube Calendar Kolab backend
*
* @author Aleksander Machniak
* @licence GNU AGPL
**/
CREATE TABLE "kolab_alarms" (
"alarm_id" varchar(255) NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"notifyat" timestamp DEFAULT NULL,
"dismissed" smallint DEFAULT 0 NOT NULL
);
CREATE INDEX "kolab_alarms_user_id_idx" ON "kolab_alarms" ("user_id");
CREATE TABLE "itipinvitations" (
"token" varchar(64) NOT NULL PRIMARY KEY,
"event_uid" varchar(255) NOT NULL,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"event" long NOT NULL,
"expires" timestamp DEFAULT NULL,
"cancelled" smallint DEFAULT 0 NOT NULL
);
CREATE INDEX "itipinvitations_user_id_idx" ON "itipinvitations" ("user_id", "event_uid");
INSERT INTO "system" ("name", "value") VALUES ('calendar-kolab-version', '2014041700');

View file

@ -6,14 +6,16 @@
**/
CREATE TABLE IF NOT EXISTS kolab_alarms (
event_id character varying(255) NOT NULL,
alarm_id character varying(255) NOT NULL,
user_id integer NOT NULL
REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
notifyat timestamp without time zone DEFAULT NULL,
dismissed smallint NOT NULL DEFAULT 0,
PRIMARY KEY(event_id)
PRIMARY KEY(alarm_id)
);
CREATE INDEX kolab_alarms_user_id_idx ON kolab_alarms (user_id);
CREATE TABLE IF NOT EXISTS itipinvitations (
token character varying(64) NOT NULL,
event_uid character varying(255) NOT NULL,
@ -25,6 +27,6 @@ CREATE TABLE IF NOT EXISTS itipinvitations (
PRIMARY KEY(token)
);
CREATE INDEX itipinvitations_event_uid_user_id_idx ON itipinvitations (event_uid, user_id);
CREATE INDEX itipinvitations_user_id_event_uid_idx ON itipinvitations (user_id, event_uid);
INSERT INTO system (name, value) VALUES ('calendar-kolab-version', '2013011000');
INSERT INTO system (name, value) VALUES ('calendar-kolab-version', '2014041700');

View file

@ -7,7 +7,7 @@
* @author Thomas Bruederli <bruederli@kolabsys.com>
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012, Kolab Systems AG <contact@kolabsys.com>
* Copyright (C) 2012-2015, 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
@ -24,22 +24,43 @@
*/
class kolab_calendar
class kolab_calendar extends kolab_storage_folder_api
{
public $id;
public $ready = false;
public $readonly = true;
public $rights = 'lrs';
public $editable = false;
public $attachments = true;
public $alarms = false;
public $history = false;
public $subscriptions = true;
public $categories = array();
public $storage;
public $name;
private $cal;
private $events = array();
private $imap_folder = 'INBOX/Calendar';
private $search_fields = array('title', 'description', 'location', 'attendees');
public $type = 'event';
protected $cal;
protected $events = array();
protected $search_fields = array('title', 'description', 'location', 'attendees');
/**
* Factory method to instantiate a kolab_calendar object
*
* @param string Calendar ID (encoded IMAP folder name)
* @param object calendar plugin object
* @return object kolab_calendar instance
*/
public static function factory($id, $calendar)
{
$imap = $calendar->rc->get_storage();
$imap_folder = kolab_storage::id_decode($id);
$info = $imap->folder_info($imap_folder, true);
if (empty($info) || $info['noselect'] || strpos(kolab_storage::folder_type($imap_folder), 'event') !== 0) {
return new kolab_user_calendar($imap_folder, $calendar);
}
else {
return new kolab_calendar($imap_folder, $calendar);
}
}
/**
* Default constructor
@ -47,28 +68,30 @@ class kolab_calendar
public function __construct($imap_folder, $calendar)
{
$this->cal = $calendar;
if (strlen($imap_folder))
$this->imap_folder = $this->name = $imap_folder;
$this->imap = $calendar->rc->get_storage();
$this->name = $imap_folder;
// ID is derrived from folder name
$this->id = kolab_storage::folder_id($this->imap_folder);
$this->id = kolab_storage::folder_id($this->name, true);
$old_id = kolab_storage::folder_id($this->name, false);
// fetch objects from the given IMAP folder
$this->storage = kolab_storage::get_folder($this->imap_folder);
$this->ready = $this->storage && !PEAR::isError($this->storage);
$this->storage = kolab_storage::get_folder($this->name);
$this->ready = $this->storage && $this->storage->valid;
// Set readonly and alarms flags according to folder permissions
// Set writeable and alarms flags according to folder permissions
if ($this->ready) {
if ($this->storage->get_namespace() == 'personal') {
$this->readonly = false;
$this->editable = true;
$this->rights = 'lrswikxteav';
$this->alarms = true;
}
else {
$rights = $this->storage->get_myrights();
if ($rights && !PEAR::isError($rights)) {
if (strpos($rights, 'i') !== false)
$this->readonly = false;
$this->rights = $rights;
if (strpos($rights, 't') !== false || strpos($rights, 'd') !== false)
$this->editable = strpos($rights, 'i');;
}
}
@ -76,20 +99,12 @@ class kolab_calendar
$prefs = $this->cal->rc->config->get('kolab_calendars', array());
if (isset($prefs[$this->id]['showalarms']))
$this->alarms = $prefs[$this->id]['showalarms'];
else if (isset($prefs[$old_id]['showalarms']))
$this->alarms = $prefs[$old_id]['showalarms'];
}
}
/**
* Getter for a nice and human readable name for this calendar
* See http://wiki.kolab.org/UI-Concepts/Folder-Listing for reference
*
* @return string Name of this calendar
*/
public function get_name()
{
$folder = kolab_storage::object_name($this->imap_folder, $this->namespace);
return $folder;
$this->default = $this->storage->default;
$this->subtype = $this->storage->subtype;
}
@ -100,43 +115,18 @@ class kolab_calendar
*/
public function get_realname()
{
return $this->imap_folder;
return $this->name;
}
/**
* Getter for the IMAP folder owner
*
* @return string Name of the folder owner
*/
public function get_owner()
public function get_title()
{
return $this->storage->get_owner();
return null;
}
/**
* Getter for the name of the namespace to which the IMAP folder belongs
*
* @return string Name of the namespace (personal, other, shared)
*/
public function get_namespace()
{
return $this->storage->get_namespace();
}
/**
* Getter for the top-end calendar folder name (not the entire path)
*
* @return string Name of this calendar
*/
public function get_foldername()
{
$parts = explode('/', $this->imap_folder);
return rcube_charset::convert(end($parts), 'UTF7-IMAP');
}
/**
* Return color to display this calendar
*/
@ -161,27 +151,37 @@ class kolab_calendar
*/
public function get_caldav_url()
{
$url = null;
if ($template = $this->cal->rc->config->get('calendar_caldav_url', null)) {
return strtr($template, array(
'%h' => $_SERVER['HTTP_HOST'],
'%u' => urlencode($this->cal->rc->get_user_name()),
'%i' => urlencode($this->storage->get_uid()),
'%n' => urlencode($this->imap_folder),
'%n' => urlencode($this->name),
));
}
return false;
}
/**
* Return the corresponding kolab_storage_folder instance
*/
public function get_folder()
{
return $this->storage;
}
/**
* Update properties of this calendar folder
*
* @see calendar_driver::edit_calendar()
*/
public function update(&$prop)
{
$prop['oldname'] = $this->get_realname();
$newfolder = kolab_storage::folder_update($prop);
if ($newfolder === false) {
$this->cal->last_error = $this->cal->gettext(kolab_storage::$last_error);
return false;
}
// create ID
return kolab_storage::folder_id($newfolder);
}
/**
* Getter for a single event object
@ -190,22 +190,54 @@ class kolab_calendar
{
// directly access storage object
if (!$this->events[$id] && ($record = $this->storage->get_object($id)))
$this->events[$id] = $this->_to_rcube_event($record);
$this->events[$id] = $this->_to_driver_event($record, true);
// event not found, maybe a recurring instance is requested
if (!$this->events[$id]) {
$master_id = preg_replace('/-\d+$/', '', $id);
if ($master_id != $id && ($record = $this->storage->get_object($master_id)))
$this->events[$master_id] = $this->_to_rcube_event($record);
$master_id = preg_replace('/-\d+(T\d{6})?$/', '', $id);
$instance_id = substr($id, strlen($master_id) + 1);
if (($master = $this->events[$master_id]) && $master['recurrence']) {
$this->_get_recurring_events($record, $master['start'], null, $id);
if ($master_id != $id && ($record = $this->storage->get_object($master_id))) {
$master = $this->_to_driver_event($record);
}
// check for match in top-level exceptions (aka loose single occurrences)
if ($master && $master['_formatobj'] && ($instance = $master['_formatobj']->get_instance($instance_id))) {
$this->events[$id] = $this->_to_driver_event($instance);
}
// check for match on the first instance already
else if ($master['_instance'] && $master['_instance'] == $instance_id) {
$this->events[$id] = $master;
}
else if ($master && is_array($master['recurrence'])) {
$this->get_recurring_events($record, $master['start'], null, $id);
}
}
return $this->events[$id];
}
/**
* Get attachment body
* @see calendar_driver::get_attachment_body()
*/
public function get_attachment_body($id, $event)
{
if (!$this->ready)
return false;
$data = $this->storage->get_attachment($event['id'], $id);
if ($data == null) {
// try again with master UID
$uid = preg_replace('/-\d+(T\d{6})?$/', '', $event['id']);
if ($uid != $event['id']) {
$data = $this->storage->get_attachment($uid, $id);
}
}
return $data;
}
/**
* @param integer Event's new start (unix timestamp)
@ -213,71 +245,75 @@ class kolab_calendar
* @param string Search query (optional)
* @param boolean Include virtual events (optional)
* @param array Additional parameters to query storage
* @param array Additional query to filter events
* @return array A list of event records
*/
public function list_events($start, $end, $search = null, $virtual = 1, $query = array())
public function list_events($start, $end, $search = null, $virtual = 1, $query = array(), $filter_query = null)
{
// convert to DateTime for comparisons
$start = new DateTime('@'.$start);
$end = new DateTime('@'.$end);
try {
$start = new DateTime('@'.$start);
}
catch (Exception $e) {
$start = new DateTime('@0');
}
try {
$end = new DateTime('@'.$end);
}
catch (Exception $e) {
$end = new DateTime('today +10 years');
}
// get email addresses of the current user
$user_emails = $this->cal->get_user_emails();
// query Kolab storage
$query[] = array('dtstart', '<=', $end);
$query[] = array('dtend', '>=', $start);
if (is_array($filter_query)) {
$query = array_merge($query, $filter_query);
}
if (!empty($search)) {
$search = mb_strtolower($search);
$words = rcube_utils::tokenize_string($search, 1);
foreach (rcube_utils::normalize_string($search, true) as $word) {
$query[] = array('words', 'LIKE', $word);
}
}
else {
$words = array();
}
// set partstat filter to skip pending and declined invitations
if (empty($filter_query) && $this->get_namespace() != 'other') {
$partstat_exclude = array('NEEDS-ACTION','DECLINED');
}
else {
$partstat_exclude = array();
}
$events = array();
foreach ($this->storage->select($query) as $record) {
$event = $this->_to_rcube_event($record);
$this->events[$event['id']] = $event;
$event = $this->_to_driver_event($record, !$virtual);
// remember seen categories
if ($event['categories'])
$this->categories[$event['categories']]++;
// filter events by search query
if (!empty($search)) {
$hit = false;
foreach ($this->search_fields as $col) {
$sval = is_array($event[$col]) ? self::_complex2string($event[$col]) : $event[$col];
if (empty($sval))
continue;
// do a simple substring matching (to be improved)
$val = mb_strtolower($sval);
if (strpos($val, $search) !== false) {
$hit = true;
break;
}
}
if (!$hit) // skip this event if not match with search term
continue;
}
if ($event['categories']) {
$cat = is_array($event['categories']) ? $event['categories'][0] : $event['categories'];
$this->categories[$cat]++;
}
// list events in requested time window
if ($event['start'] <= $end && $event['end'] >= $start) {
unset($event['_attendees']);
$add = true;
// skip the first instance of a recurring event if listed in exdate
if ($virtual && (!empty($event['recurrence']['EXDATE']) || !empty($event['recurrence']['EXCEPTIONS']))) {
if ($virtual && !empty($event['recurrence']['EXDATE'])) {
$event_date = $event['start']->format('Ymd');
$exdates = (array)$event['recurrence']['EXDATE'];
// add dates from exceptions to list
if (is_array($event['recurrence']['EXCEPTIONS'])) {
foreach ($event['recurrence']['EXCEPTIONS'] as $exception) {
$exdates[] = clone $exception['start'];
}
}
foreach ($exdates as $exdate) {
if ($exdate->format('Ymd') == $event_date) {
$add = false;
@ -286,19 +322,114 @@ class kolab_calendar
}
}
// find and merge exception for the first instance
if ($virtual && !empty($event['recurrence']) && is_array($event['recurrence']['EXCEPTIONS'])) {
foreach ($event['recurrence']['EXCEPTIONS'] as $exception) {
if ($event['_instance'] == $exception['_instance']) {
// clone date objects from main event before adjusting them with exception data
if (is_object($event['start'])) $event['start'] = clone $record['start'];
if (is_object($event['end'])) $event['end'] = clone $record['end'];
kolab_driver::merge_exception_data($event, $exception);
}
}
}
if ($add)
$events[] = $event;
}
// resolve recurring events
if ($record['recurrence'] && $virtual == 1) {
$events = array_merge($events, $this->_get_recurring_events($record, $start, $end));
$events = array_merge($events, $this->get_recurring_events($record, $start, $end));
}
// add top-level exceptions (aka loose single occurrences)
else if (is_array($record['exceptions'])) {
foreach ($record['exceptions'] as $ex) {
$component = $this->_to_driver_event($ex);
if ($component['start'] <= $end && $component['end'] >= $start) {
$events[] = $component;
}
}
}
}
// post-filter all events by fulltext search and partstat values
$me = $this;
$events = array_filter($events, function($event) use ($words, $partstat_exclude, $user_emails, $me) {
// fulltext search
if (count($words)) {
$hits = 0;
foreach ($words as $word) {
$hits += $me->fulltext_match($event, $word, false);
}
if ($hits < count($words)) {
return false;
}
}
// partstat filter
if (count($partstat_exclude) && is_array($event['attendees'])) {
foreach ($event['attendees'] as $attendee) {
if (in_array($attendee['email'], $user_emails) && in_array($attendee['status'], $partstat_exclude)) {
return false;
}
}
}
return true;
});
// avoid session race conditions that will loose temporary subscriptions
$this->cal->rc->session->nowrite = true;
return $events;
}
/**
*
* @param integer Date range start (unix timestamp)
* @param integer Date range end (unix timestamp)
* @param array Additional query to filter events
* @return integer Count
*/
public function count_events($start, $end = null, $filter_query = null)
{
// convert to DateTime for comparisons
try {
$start = new DateTime('@'.$start);
}
catch (Exception $e) {
$start = new DateTime('@0');
}
if ($end) {
try {
$end = new DateTime('@'.$end);
}
catch (Exception $e) {
$end = null;
}
}
// query Kolab storage
$query[] = array('dtend', '>=', $start);
if ($end)
$query[] = array('dtstart', '<=', $end);
// add query to exclude pending/declined invitations
if (empty($filter_query)) {
foreach ($this->cal->get_user_emails() as $email) {
$query[] = array('tags', '!=', 'x-partstat:' . $email . ':needs-action');
$query[] = array('tags', '!=', 'x-partstat:' . $email . ':declined');
}
}
else if (is_array($filter_query)) {
$query = array_merge($query, $filter_query);
}
// we rely the Kolab storage query (no post-filtering)
return $this->storage->count($query);
}
/**
* Create a new event record
@ -312,8 +443,12 @@ class kolab_calendar
if (!is_array($event))
return false;
// email links are stored separately
$links = $event['links'];
unset($event['links']);
//generate new event from RC input
$object = $this->_from_rcube_event($event);
$object = $this->_from_driver_event($event);
$saved = $this->storage->save($object, 'event');
if (!$saved) {
@ -325,8 +460,10 @@ class kolab_calendar
$saved = false;
}
else {
$event['id'] = $event['uid'];
$this->events = array($event['uid'] => $this->_to_rcube_event($object));
// save links in configuration.relation object
$this->save_links($event['uid'], $links);
$this->events = array($event['uid'] => $this->_to_driver_event($object, true));
}
return $saved;
@ -342,12 +479,16 @@ class kolab_calendar
public function update_event($event, $exception_id = null)
{
$updated = false;
$old = $this->storage->get_object($event['id']);
$old = $this->storage->get_object($event['uid'] ?: $event['id']);
if (!$old || PEAR::isError($old))
return false;
$object = $this->_from_rcube_event($event, $old);
$saved = $this->storage->save($object, 'event', $event['id']);
// email links are stored separately
$links = $event['links'];
unset($event['links']);
$object = $this->_from_driver_event($event, $old);
$saved = $this->storage->save($object, 'event', $old['uid']);
if (!$saved) {
rcube::raise_error(array(
@ -357,12 +498,15 @@ class kolab_calendar
true, false);
}
else {
// save links in configuration.relation object
$this->save_links($event['uid'], $links);
$updated = true;
$this->events[$event['id']] = $this->_to_rcube_event($object);
$this->events = array($event['uid'] => $this->_to_driver_event($object, true));
// refresh local cache with recurring instances
if ($exception_id) {
$this->_get_recurring_events($object, $event['start'], $event['end'], $exception_id);
$this->get_recurring_events($object, $event['start'], $event['end'], $exception_id);
}
}
@ -377,13 +521,13 @@ class kolab_calendar
*/
public function delete_event($event, $force = true)
{
$deleted = $this->storage->delete($event['id'], $force);
$deleted = $this->storage->delete($event['uid'] ?: $event['id'], $force);
if (!$deleted) {
rcube::raise_error(array(
'code' => 600, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => "Error deleting event object from Kolab server"),
'message' => sprintf("Error deleting event object '%s' from Kolab server", $event['id'])),
true, false);
}
@ -412,6 +556,29 @@ class kolab_calendar
return false;
}
/**
* Find messages linked with an event
*/
protected function get_links($uid)
{
$storage = kolab_storage_config::get_instance();
return $storage->get_object_links($uid);
}
/**
*
*/
protected function save_links($uid, $links)
{
// make sure we have a valid array
if (empty($links)) {
$links = array();
}
$storage = kolab_storage_config::get_instance();
$remove = array_diff($storage->get_object_links($uid), $links);
return $storage->save_object_links($uid, $links, $remove);
}
/**
* Create instances of a recurring event
@ -422,7 +589,7 @@ class kolab_calendar
* @param string ID of a specific recurring event instance
* @return array List of recurring event instances
*/
public function _get_recurring_events($event, $start, $end = null, $event_id = null)
public function get_recurring_events($event, $start, $end = null, $event_id = null)
{
$object = $event['_formatobj'];
if (!$object) {
@ -444,40 +611,48 @@ class kolab_calendar
$end->add(new DateInterval($intvl));
}
// add recurrence exceptions to output
$i = 0;
// copy the recurrence rule from the master event (to be used in the UI)
$recurrence_rule = $event['recurrence'];
unset($recurrence_rule['EXCEPTIONS'], $recurrence_rule['EXDATE']);
// read recurrence exceptions first
$events = array();
$exdates = array();
$exdata = array();
$futuredata = array();
$recurrence_id_format = libcalendaring::recurrence_id_format($event);
if (is_array($event['recurrence']['EXCEPTIONS'])) {
// copy the recurrence rule from the master event (to be used in the UI)
$recurrence_rule = $event['recurrence'];
unset($recurrence_rule['EXCEPTIONS'], $recurrence_rule['EXDATE']);
foreach ($event['recurrence']['EXCEPTIONS'] as $exception) {
$rec_event = $this->_to_rcube_event($exception);
$rec_event['id'] = $event['uid'] . '-' . ++$i;
$rec_event['recurrence_id'] = $event['uid'];
$rec_event['recurrence'] = $recurrence_rule;
$rec_event['_instance'] = $i;
$rec_event['isexception'] = 1;
$events[] = $rec_event;
if (!$exception['_instance'])
$exception['_instance'] = libcalendaring::recurrence_instance_identifier($exception);
// found the specifically requested instance, exiting...
if ($rec_event['id'] == $event_id) {
$rec_event = $this->_to_driver_event($exception);
$rec_event['id'] = $event['uid'] . '-' . $exception['_instance'];
$rec_event['isexception'] = 1;
// found the specifically requested instance: register exception (single occurrence wins)
if ($rec_event['id'] == $event_id && (!$this->events[$event_id] || $this->events[$event_id]['thisandfuture'])) {
$rec_event['recurrence'] = $recurrence_rule;
$rec_event['recurrence_id'] = $event['uid'];
$this->events[$rec_event['id']] = $rec_event;
return $events;
}
// remember this exception's date
$exdate = $rec_event['start']->format('Y-m-d');
$exdates[$exdate] = $rec_event['id'];
$exdate = substr($exception['_instance'], 0, 8);
if (!$exdata[$exdate] || $exdata[$exdate]['thisandfuture']) {
$exdata[$exdate] = $rec_event;
}
if ($rec_event['thisandfuture']) {
$futuredata[$exdate] = $rec_event;
}
}
}
// found the specifically requested instance, exiting...
if ($event_id && !empty($this->events[$event_id])) {
return array($this->events[$event_id]);
}
// use libkolab to compute recurring events
if (class_exists('kolabcalendaring')) {
$recurrence = new kolab_date_recurrence($object);
@ -488,27 +663,28 @@ class kolab_calendar
$recurrence = new calendar_recurrence($this->cal, $event);
}
$i = 0;
while ($next_event = $recurrence->next_instance()) {
// skip if there's an exception at this date
$datestr = $next_event['start']->format('Y-m-d');
if ($exdates[$datestr]) {
// use this event data for future recurring instances
if ($futuredata[$datestr])
$overlay_data = $futuredata[$datestr];
continue;
}
$datestr = $next_event['start']->format('Ymd');
$instance_id = $next_event['start']->format($recurrence_id_format);
// use this event data for future recurring instances
if ($futuredata[$datestr])
$overlay_data = $futuredata[$datestr];
// add to output if in range
$rec_id = $event['uid'] . '-' . ++$i;
$rec_id = $event['uid'] . '-' . $instance_id;
if (($next_event['start'] <= $end && $next_event['end'] >= $start) || ($event_id && $rec_id == $event_id)) {
$rec_event = $this->_to_rcube_event($next_event);
$rec_event = $this->_to_driver_event($next_event);
$rec_event['_instance'] = $instance_id;
$rec_event['_count'] = $i + 1;
if ($overlay_data) // copy data from a 'this-and-future' exception
$this->_merge_event_data($rec_event, $overlay_data);
if ($overlay_data || $exdata[$datestr]) // copy data from exception
kolab_driver::merge_exception_data($rec_event, $exdata[$datestr] ?: $overlay_data);
$rec_event['id'] = $rec_id;
$rec_event['recurrence_id'] = $event['uid'];
$rec_event['_instance'] = $i;
$rec_event['recurrence'] = $recurrence_rule;
unset($rec_event['_attendees']);
$events[] = $rec_event;
@ -521,139 +697,85 @@ class kolab_calendar
break;
// avoid endless recursion loops
if ($i > 1000)
if (++$i > 1000)
break;
}
return $events;
}
/**
* Merge certain properties from the overlay event to the base event object
*
* @param array The event object to be altered
* @param array The overlay event object to be merged over $event
*/
private function _merge_event_data(&$event, $overlay)
{
static $forbidden = array('id','uid','created','changed','recurrence','organizer','attendees','sequence');
foreach ($overlay as $prop => $value) {
// adjust time of the recurring event instance
if ($prop == 'start' || $prop == 'end') {
if (is_object($event[$prop]) && is_a($event[$prop], 'DateTime'))
$event[$prop]->setTime($value->format('G'), intval($value->format('i')), intval($value->format('s')));
}
else if ($prop[0] != '_' && !in_array($prop, $forbidden))
$event[$prop] = $value;
}
}
/**
* Convert from Kolab_Format to internal representation
*/
private function _to_rcube_event($record)
private function _to_driver_event($record, $noinst = false)
{
$record['id'] = $record['uid'];
$record['calendar'] = $this->id;
/*
// convert from DateTime to unix timestamp
if (is_a($record['start'], 'DateTime'))
$record['start'] = $record['start']->format('U');
if (is_a($record['end'], 'DateTime'))
$record['end'] = $record['end']->format('U');
*/
// all-day events go from 12:00 - 13:00
if ($record['end'] <= $record['start'] && $record['allday']) {
$record['end'] = clone $record['start'];
$record['end']->add(new DateInterval('PT1H'));
$record['links'] = $this->get_links($record['uid']);
if ($this->get_namespace() == 'other') {
$record['className'] = 'fc-event-ns-other';
$record = kolab_driver::add_partstat_class($record, array('NEEDS-ACTION','DECLINED'), $this->get_owner());
}
if (!empty($record['_attachments'])) {
foreach ($record['_attachments'] as $key => $attachment) {
if ($attachment !== false) {
if (!$attachment['name'])
$attachment['name'] = $key;
unset($attachment['path'], $attachment['content']);
$attachments[] = $attachment;
}
}
$record['attachments'] = $attachments;
// add instance identifier to first occurrence (master event)
$recurrence_id_format = libcalendaring::recurrence_id_format($record);
if (!$noinst && $record['recurrence'] && !$record['recurrence_id'] && !$record['_instance']) {
$record['_instance'] = $record['start']->format($recurrence_id_format);
}
else if (is_a($record['recurrence_date'], 'DateTime')) {
$record['_instance'] = $record['recurrence_date']->format($recurrence_id_format);
}
// Roundcube only supports one category assignment
if (is_array($record['categories']))
$record['categories'] = $record['categories'][0];
// The web client only supports DISPLAY type of alarms
if (!empty($record['alarms']))
$record['alarms'] = preg_replace('/:[A-Z]+$/', ':DISPLAY', $record['alarms']);
// remove empty recurrence array
if (empty($record['recurrence']))
unset($record['recurrence']);
// remove internals
unset($record['_mailbox'], $record['_msguid'], $record['_formatobj'], $record['_attachments'], $record['x-custom']);
// clean up exception data
if ($record['recurrence'] && is_array($record['recurrence']['EXCEPTIONS'])) {
array_walk($record['recurrence']['EXCEPTIONS'], function(&$exception) {
unset($exception['_mailbox'], $exception['_msguid'], $exception['_formatobj'], $exception['_attachments']);
});
}
return $record;
}
/**
* Convert the given event record into a data structure that can be passed to Kolab_Storage backend for saving
* (opposite of self::_to_rcube_event())
* (opposite of self::_to_driver_event())
*/
private function _from_rcube_event($event, $old = array())
private function _from_driver_event($event, $old = array())
{
// in kolab_storage attachments are indexed by content-id
$event['_attachments'] = array();
if (is_array($event['attachments'])) {
foreach ($event['attachments'] as $attachment) {
$key = null;
// Roundcube ID has nothing to do with the storage ID, remove it
if ($attachment['content']) {
unset($attachment['id']);
}
else {
foreach ((array)$old['_attachments'] as $cid => $oldatt) {
if ($attachment['id'] == $oldatt['id'])
$key = $cid;
}
}
// flagged for deletion => set to false
if ($attachment['_deleted']) {
$event['_attachments'][$key] = false;
}
// replace existing entry
else if ($key) {
$event['_attachments'][$key] = $attachment;
}
// append as new attachment
else {
$event['_attachments'][] = $attachment;
}
}
unset($event['attachments']);
}
// set current user as ORGANIZER
$identity = $this->cal->rc->user->get_identity();
$identity = $this->cal->rc->user->list_emails(true);
if (empty($event['attendees']) && $identity['email'])
$event['attendees'] = array(array('role' => 'ORGANIZER', 'name' => $identity['name'], 'email' => $identity['email']));
$event['_owner'] = $identity['email'];
# remove EXDATE values if RDATE is given
// remove EXDATE values if RDATE is given
if (!empty($event['recurrence']['RDATE'])) {
$event['recurrence']['EXDATE'] = array();
}
// remove recurrence information (e.g. EXDATES and EXCEPTIONS) entirely
if ($event['recurrence'] && empty($event['recurrence']['FREQ']) && empty($event['recurrence']['RDATE'])) {
$event['recurrence'] = array();
}
// keep 'comment' from initial itip invitation
if (!empty($old['comment'])) {
$event['comment'] = $old['comment'];
}
// clean up exception data
if (is_array($event['exceptions'])) {
array_walk($event['exceptions'], function(&$exception) {
unset($exception['_mailbox'], $exception['_msguid'], $exception['_formatobj'], $exception['_attachments'],
$event['attachments'], $event['deleted_attachments'], $event['recurrence_id']);
});
}
// remove some internal properties which should not be saved
unset($event['_savemode'], $event['_fromcalendar'], $event['_identity']);
unset($event['_savemode'], $event['_fromcalendar'], $event['_identity'], $event['_folder_id'],
$event['recurrence_id'], $event['attachments'], $event['deleted_attachments'], $event['className']);
// copy meta data (starting with _) from old object
foreach ((array)$old as $key => $val) {
@ -664,6 +786,28 @@ class kolab_calendar
return $event;
}
/**
* Match the given word in the event contents
*/
public function fulltext_match($event, $word, $recursive = true)
{
$hits = 0;
foreach ($this->search_fields as $col) {
$sval = is_array($event[$col]) ? self::_complex2string($event[$col]) : $event[$col];
if (empty($sval))
continue;
// do a simple substring matching (to be improved)
$val = mb_strtolower($sval);
if (strpos($val, $word) !== false) {
$hits++;
break;
}
}
return $hits;
}
/**
* Convert a complex event attribute to a string value
*/

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,377 @@
<?php
/**
* Kolab calendar storage class simulating a virtual calendar listing pedning/declined invitations
*
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 2014-2015, 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 kolab_invitation_calendar
{
public $id = '__invitation__';
public $ready = true;
public $alarms = false;
public $rights = 'lrsv';
public $editable = false;
public $attachments = false;
public $subscriptions = false;
public $partstats = array('unknown');
public $categories = array();
public $name = 'Invitations';
/**
* Default constructor
*/
public function __construct($id, $calendar)
{
$this->cal = $calendar;
$this->id = $id;
switch ($this->id) {
case kolab_driver::INVITATIONS_CALENDAR_PENDING:
$this->partstats = array('NEEDS-ACTION');
$this->name = $this->cal->gettext('invitationspending');
if (!empty($_REQUEST['_quickview']))
$this->partstats[] = 'TENTATIVE';
break;
case kolab_driver::INVITATIONS_CALENDAR_DECLINED:
$this->partstats = array('DECLINED');
$this->name = $this->cal->gettext('invitationsdeclined');
break;
}
// user-specific alarms settings win
$prefs = $this->cal->rc->config->get('kolab_calendars', array());
if (isset($prefs[$this->id]['showalarms']))
$this->alarms = $prefs[$this->id]['showalarms'];
}
/**
* Getter for a nice and human readable name for this calendar
*
* @return string Name of this calendar
*/
public function get_name()
{
return $this->name;
}
/**
* Getter for the IMAP folder owner
*
* @return string Name of the folder owner
*/
public function get_owner()
{
return $this->cal->rc->get_user_name();
}
/**
*
*/
public function get_title()
{
return $this->get_name();
}
/**
* Getter for the name of the namespace to which the IMAP folder belongs
*
* @return string Name of the namespace (personal, other, shared)
*/
public function get_namespace()
{
return 'x-special';
}
/**
* Getter for the top-end calendar folder name (not the entire path)
*
* @return string Name of this calendar
*/
public function get_foldername()
{
return $this->get_name();
}
/**
* Getter for the Cyrus mailbox identifier corresponding to this folder
*
* @return string Mailbox ID
*/
public function get_mailbox_id()
{
// this is a virtual collection and has no concrete mailbox ID
return null;
}
/**
* Return color to display this calendar
*/
public function get_color()
{
// calendar color is stored in local user prefs
$prefs = $this->cal->rc->config->get('kolab_calendars', array());
if (!empty($prefs[$this->id]) && !empty($prefs[$this->id]['color']))
return $prefs[$this->id]['color'];
return 'ffffff';
}
/**
* Compose an URL for CalDAV access to this calendar (if configured)
*/
public function get_caldav_url()
{
return false;
}
/**
* Check activation status of this folder
*
* @return boolean True if enabled, false if not
*/
public function is_active()
{
$prefs = $this->cal->rc->config->get('kolab_calendars', array()); // read local prefs
return (bool)$prefs[$this->id]['active'];
}
/**
* Update properties of this calendar folder
*
* @see calendar_driver::edit_calendar()
*/
public function update(&$prop)
{
// don't change anything.
// let kolab_driver save props in local prefs
return $prop['id'];
}
/**
* Getter for a single event object
*/
public function get_event($id)
{
// redirect call to kolab_driver::get_event()
$event = $this->cal->driver->get_event($id, calendar_driver::FILTER_WRITEABLE);
if (is_array($event)) {
// add pointer to original calendar folder
$event['_folder_id'] = $event['calendar'];
$event = $this->_mod_event($event);
}
return $event;
}
/**
* Get attachment body
* @see calendar_driver::get_attachment_body()
*/
public function get_attachment_body($id, $event)
{
// find the actual folder this event resides in
if (!empty($event['_folder_id'])) {
$cal = $this->cal->get_calendar($event['_folder_id']);
}
else {
$cal = null;
foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) {
$cal = new kolab_calendar($foldername, $this->cal);
if ($cal->ready && $cal->storage && $cal->get_event($event['id'])) {
break;
}
}
}
if ($cal && $cal->storage) {
return $cal->get_attachment_body($id, $event);
}
return false;
}
/**
* @param integer Event's new start (unix timestamp)
* @param integer Event's new end (unix timestamp)
* @param string Search query (optional)
* @param boolean Include virtual events (optional)
* @param array Additional parameters to query storage
* @return array A list of event records
*/
public function list_events($start, $end, $search = null, $virtual = 1, $query = array())
{
// get email addresses of the current user
$user_emails = $this->cal->get_user_emails();
$subquery = array();
foreach ($user_emails as $email) {
foreach ($this->partstats as $partstat) {
$subquery[] = array('tags', '=', 'x-partstat:' . $email . ':' . strtolower($partstat));
}
}
// aggregate events from all calendar folders
$events = array();
foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) {
$cal = new kolab_calendar($foldername, $this->cal);
if ($cal->get_namespace() == 'other')
continue;
foreach ($cal->list_events($start, $end, $search, 1, $query, array(array($subquery, 'OR'))) as $event) {
$match = false;
// post-filter events to match out partstats
if (is_array($event['attendees'])) {
foreach ($event['attendees'] as $attendee) {
if (in_array($attendee['email'], $user_emails) && in_array($attendee['status'], $this->partstats)) {
$match = true;
break;
}
}
}
if ($match) {
$events[$event['id']] = $this->_mod_event($event);
}
}
// merge list of event categories (really?)
$this->categories += $cal->categories;
}
return $events;
}
/**
*
* @param integer Date range start (unix timestamp)
* @param integer Date range end (unix timestamp)
* @return integer Count
*/
public function count_events($start, $end = null)
{
// get email addresses of the current user
$user_emails = $this->cal->get_user_emails();
$subquery = array();
foreach ($user_emails as $email) {
foreach ($this->partstats as $partstat) {
$subquery[] = array('tags', '=', 'x-partstat:' . $email . ':' . strtolower($partstat));
}
}
$filter = array(
array('tags','!=','x-status:cancelled'),
array($subquery, 'OR')
);
// aggregate counts from all calendar folders
$count = 0;
foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) {
$cal = new kolab_calendar($foldername, $this->cal);
if ($cal->get_namespace() == 'other')
continue;
$count += $cal->count_events($start, $end, $filter);
}
return $count;
}
/**
* Helper method to modify some event properties
*/
private function _mod_event($event)
{
// set classes according to PARTSTAT
$event = kolab_driver::add_partstat_class($event, $this->partstats);
if (strpos($event['className'], 'fc-invitation-') !== false) {
$event['calendar'] = $this->id;
}
return $event;
}
/**
* Create a new event record
*
* @see calendar_driver::new_event()
*
* @return mixed The created record ID on success, False on error
*/
public function insert_event($event)
{
return false;
}
/**
* Update a specific event record
*
* @see calendar_driver::new_event()
* @return boolean True on success, False on error
*/
public function update_event($event, $exception_id = null)
{
// forward call to the actual storage folder
if ($event['_folder_id']) {
$cal = $this->cal->driver->get_calendar($event['_folder_id']);
if ($cal && $cal->ready) {
return $cal->update_event($event, $exception_id);
}
}
return false;
}
/**
* Delete an event record
*
* @see calendar_driver::remove_event()
* @return boolean True on success, False on error
*/
public function delete_event($event, $force = true)
{
return false;
}
/**
* Restore deleted event record
*
* @see calendar_driver::undelete_event()
* @return boolean True on success, False on error
*/
public function restore_event($event)
{
return false;
}
}

View file

@ -0,0 +1,432 @@
<?php
/**
* Kolab calendar storage class simulating a virtual user calendar
*
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 2014-2015, 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 kolab_user_calendar extends kolab_calendar
{
public $id = 'unknown';
public $ready = false;
public $editable = false;
public $attachments = false;
public $subscriptions = false;
protected $userdata = array();
protected $timeindex = array();
/**
* Default constructor
*/
public function __construct($user_or_folder, $calendar)
{
$this->cal = $calendar;
// full user record is provided
if (is_array($user_or_folder)) {
$this->userdata = $user_or_folder;
$this->storage = new kolab_storage_folder_user($this->userdata['kolabtargetfolder'], '', $this->userdata);
}
else { // get user record from LDAP
$this->storage = new kolab_storage_folder_user($user_or_folder);
$this->userdata = $this->storage->ldaprec;
}
$this->ready = !empty($this->userdata['kolabtargetfolder']);
$this->storage->type = 'event';
if ($this->ready) {
// ID is derrived from the user's kolabtargetfolder attribute
$this->id = kolab_storage::folder_id($this->userdata['kolabtargetfolder'], true);
$this->imap_folder = $this->userdata['kolabtargetfolder'];
$this->name = $this->storage->get_name();
$this->parent = ''; // user calendars are top level
// user-specific alarms settings win
$prefs = $this->cal->rc->config->get('kolab_calendars', array());
if (isset($prefs[$this->id]['showalarms']))
$this->alarms = $prefs[$this->id]['showalarms'];
}
}
/**
* Getter for a nice and human readable name for this calendar
*
* @return string Name of this calendar
*/
public function get_name()
{
return $this->userdata['displayname'] ?: ($this->userdata['name'] ?: $this->userdata['mail']);
}
/**
* Getter for the IMAP folder owner
*
* @return string Name of the folder owner
*/
public function get_owner()
{
return $this->userdata['mail'];
}
/**
*
*/
public function get_title()
{
return trim($this->userdata['displayname'] . '; ' . $this->userdata['mail'], '; ');
}
/**
* Getter for the name of the namespace to which the IMAP folder belongs
*
* @return string Name of the namespace (personal, other, shared)
*/
public function get_namespace()
{
return 'other user';
}
/**
* Getter for the top-end calendar folder name (not the entire path)
*
* @return string Name of this calendar
*/
public function get_foldername()
{
return $this->get_name();
}
/**
* Return color to display this calendar
*/
public function get_color()
{
// calendar color is stored in local user prefs
$prefs = $this->cal->rc->config->get('kolab_calendars', array());
if (!empty($prefs[$this->id]) && !empty($prefs[$this->id]['color']))
return $prefs[$this->id]['color'];
return 'cc0000';
}
/**
* Compose an URL for CalDAV access to this calendar (if configured)
*/
public function get_caldav_url()
{
return false;
}
/**
* Check subscription status of this folder
*
* @return boolean True if subscribed, false if not
*/
public function is_subscribed()
{
return $this->storage->is_subscribed();
}
/**
* Update properties of this calendar folder
*
* @see calendar_driver::edit_calendar()
*/
public function update(&$prop)
{
// don't change anything.
// let kolab_driver save props in local prefs
return $prop['id'];
}
/**
* Getter for a single event object
*/
public function get_event($id)
{
// TODO: implement this
return $this->events[$id];
}
/**
* Get attachment body
* @see calendar_driver::get_attachment_body()
*/
public function get_attachment_body($id, $event)
{
if (!$event['calendar'] && ($ev = $this->get_event($event['id']))) {
$event['calendar'] = $ev['calendar'];
}
if ($event['calendar'] && ($cal = $this->cal->get_calendar($event['calendar']))) {
return $cal->get_attachment_body($id, $event);
}
return false;
}
/**
* @param integer Event's new start (unix timestamp)
* @param integer Event's new end (unix timestamp)
* @param string Search query (optional)
* @param boolean Include virtual events (optional)
* @param array Additional parameters to query storage
* @return array A list of event records
*/
public function list_events($start, $end, $search = null, $virtual = 1, $query = array())
{
// convert to DateTime for comparisons
try {
$start_dt = new DateTime('@'.$start);
}
catch (Exception $e) {
$start_dt = new DateTime('@0');
}
try {
$end_dt = new DateTime('@'.$end);
}
catch (Exception $e) {
$end_dt = new DateTime('today +10 years');
}
$limit_changed = null;
if (!empty($query)) {
foreach ($query as $q) {
if ($q[0] == 'changed' && $q[1] == '>=') {
try { $limit_changed = new DateTime('@'.$q[2]); }
catch (Exception $e) { /* ignore */ }
}
}
}
// aggregate all calendar folders the user shares (but are not subscribed)
foreach (kolab_storage::list_user_folders($this->userdata, 'event', false) as $foldername) {
$cal = new kolab_calendar($foldername, $this->cal);
foreach ($cal->list_events($start, $end, $search, 1) as $event) {
$this->events[$event['id']] = $event;
$this->timeindex[$this->time_key($event)] = $event['id'];
}
}
// get events from the user's free/busy feed (for quickview only)
$fbview = $this->cal->rc->config->get('calendar_include_freebusy_data', 1);
if ($fbview && ($fbview == 1 || !empty($_REQUEST['_quickview'])) && empty($search)) {
$this->fetch_freebusy($limit_changed);
}
$events = array();
foreach ($this->events as $event) {
// list events in requested time window
if ($event['start'] <= $end_dt && $event['end'] >= $start_dt &&
(!$limit_changed || !$event['changed'] || $event['changed'] >= $limit_changed)) {
$events[] = $event;
}
}
// avoid session race conditions that will loose temporary subscriptions
$this->cal->rc->session->nowrite = true;
return $events;
}
/**
*
* @param integer Date range start (unix timestamp)
* @param integer Date range end (unix timestamp)
* @return integer Count
*/
public function count_events($start, $end = null)
{
// not implemented
return 0;
}
/**
* Helper method to fetch free/busy data for the user and turn it into calendar data
*/
private function fetch_freebusy($limit_changed = null)
{
// ask kolab server first
try {
$request_config = array(
'store_body' => true,
'follow_redirects' => true,
);
$request = libkolab::http_request(kolab_storage::get_freebusy_url($this->userdata['mail']), 'GET', $request_config);
$response = $request->send();
// authentication required
if ($response->getStatus() == 401) {
$request->setAuth($this->cal->rc->user->get_username(), $this->cal->rc->decrypt($_SESSION['password']));
$response = $request->send();
}
if ($response->getStatus() == 200)
$fbdata = $response->getBody();
unset($request, $response);
}
catch (Exception $e) {
rcube::raise_error(array(
'code' => 900,
'type' => 'php',
'file' => __FILE__,
'line' => __LINE__,
'message' => "Error fetching free/busy information: " . $e->getMessage()),
true, false);
return false;
}
$statusmap = array(
'FREE' => 'free',
'BUSY' => 'busy',
'BUSY-TENTATIVE' => 'tentative',
'X-OUT-OF-OFFICE' => 'outofoffice',
'OOF' => 'outofoffice',
);
$titlemap = array(
'FREE' => $this->cal->gettext('availfree'),
'BUSY' => $this->cal->gettext('availbusy'),
'BUSY-TENTATIVE' => $this->cal->gettext('availtentative'),
'X-OUT-OF-OFFICE' => $this->cal->gettext('availoutofoffice'),
);
// console('_fetch_freebusy', kolab_storage::get_freebusy_url($this->userdata['mail']), $fbdata);
// parse free-busy information
$count = 0;
if ($fbdata) {
$ical = $this->cal->get_ical();
$ical->import($fbdata);
if ($fb = $ical->freebusy) {
// consider 'changed >= X' queries
if ($limit_changed && $fb['created'] && $fb['created'] < $limit_changed) {
return 0;
}
foreach ($fb['periods'] as $tuple) {
list($from, $to, $type) = $tuple;
$event = array(
'id' => md5($this->id . $from->format('U') . '/' . $to->format('U')),
'calendar' => $this->id,
'changed' => $fb['created'] ?: new DateTime(),
'title' => $this->get_name() . ' ' . ($titlemap[$type] ?: $type),
'start' => $from,
'end' => $to,
'free_busy' => $statusmap[$type] ?: 'busy',
'className' => 'fc-type-freebusy',
'organizer' => array(
'email' => $this->userdata['mail'],
'name' => $this->userdata['displayname'],
),
);
// avoid duplicate entries
$key = $this->time_key($event);
if (!$this->timeindex[$key]) {
$this->events[$event['id']] = $event;
$this->timeindex[$key] = $event['id'];
$count++;
}
}
}
}
return $count;
}
/**
* Helper to build a key for the absolute time slot the given event convers
*/
private function time_key($event)
{
return sprintf('%s/%s', $event['start']->format('U'), is_object($event['end']->format('U')) ?: '0');
}
/**
* Create a new event record
*
* @see calendar_driver::new_event()
*
* @return mixed The created record ID on success, False on error
*/
public function insert_event($event)
{
return false;
}
/**
* Update a specific event record
*
* @see calendar_driver::new_event()
* @return boolean True on success, False on error
*/
public function update_event($event, $exception_id = null)
{
return false;
}
/**
* Delete an event record
*
* @see calendar_driver::remove_event()
* @return boolean True on success, False on error
*/
public function delete_event($event, $force = true)
{
return false;
}
/**
* Restore deleted event record
*
* @see calendar_driver::undelete_event()
* @return boolean True on success, False on error
*/
public function restore_event($event)
{
return false;
}
/**
* Convert from Kolab_Format to internal representation
*/
private function _to_rcube_event($record)
{
$record['id'] = $record['uid'];
$record['calendar'] = $this->id;
return kolab_driver::to_rcube_event($record);
}
}

View file

@ -0,0 +1,150 @@
<?php
/**
* LDAP-based resource directory class using rcube_ldap functionality
*
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 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/>.
*/
/**
* LDAP-based resource directory implementation
*/
class resources_driver_ldap extends resources_driver
{
private $rc;
private $ldap;
/**
* Default constructor
*/
function __construct($cal)
{
$this->cal = $cal;
$this->rc = $cal->rc;
}
/**
* Fetch resource objects to be displayed for booking
*
* @param string Search query (optional)
* @return array List of resource records available for booking
*/
public function load_resources($query = null, $num = 5000)
{
if (!($ldap = $this->connect())) {
return array();
}
// TODO: apply paging
$ldap->set_pagesize($num);
if (isset($query)) {
$results = $ldap->search('*', $query, 0, true, true);
}
else {
$results = $ldap->list_records();
}
if ($results instanceof ArrayAccess) {
foreach ($results as $i => $rec) {
$results[$i] = $this->decode_resource($rec);
}
}
return $results;
}
/**
* Return properties of a single resource
*
* @param string Unique resource identifier
* @return array Resource object as hash array
*/
public function get_resource($dn)
{
$rec = null;
if ($ldap = $this->connect()) {
$rec = $ldap->get_record(rcube_ldap::dn_encode($dn), true);
if (!empty($rec)) {
$rec = $this->decode_resource($rec);
}
}
return $rec;
}
/**
* Return properties of a resource owner
*
* @param string Owner identifier
* @return array Resource object as hash array
*/
public function get_resource_owner($dn)
{
$owner = null;
if ($ldap = $this->connect()) {
$owner = $ldap->get_record(rcube_ldap::dn_encode($dn), true);
$owner['ID'] = rcube_ldap::dn_decode($owner['ID']);
unset($owner['_raw_attrib'], $owner['_type']);
}
return $owner;
}
/**
* Extract JSON-serialized attributes
*/
private function decode_resource($rec)
{
$rec['ID'] = rcube_ldap::dn_decode($rec['ID']);
if (is_array($rec['attributes']) && $rec['attributes'][0]) {
$attributes = array();
foreach ($rec['attributes'] as $sattr) {
$attr = @json_decode($sattr, true);
$attributes += $attr;
}
$rec['attributes'] = $attributes;
}
// force $rec['members'] to be an array
if (!empty($rec['members']) && !is_array($rec['members'])) {
$rec['members'] = array($rec['members']);
}
// remove unused cruft
unset($rec['_raw_attrib']);
return $rec;
}
private function connect()
{
if (!isset($this->ldap)) {
$this->ldap = new rcube_ldap($this->rc->config->get('calendar_resources_directory'), true);
}
return $this->ldap->ready ? $this->ldap : null;
}
}

View file

@ -0,0 +1,114 @@
<?php
/**
* Resources directory interface definition
*
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 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/>.
*/
/**
* Interface definition for a resources directory driver classe
*/
abstract class resources_driver
{
protected$cal;
/**
* Default constructor
*/
function __construct($cal)
{
$this->cal = $cal;
}
/**
* Fetch resource objects to be displayed for booking
*
* @param string Search query (optional)
* @return array List of resource records available for booking
*/
abstract public function load_resources($query = null);
/**
* Return properties of a single resource
*
* @param string Unique resource identifier
* @return array Resource object as hash array
*/
abstract public function get_resource($id);
/**
* Return properties of a resource owner
*
* @param string Owner identifier
* @return array Resource object as hash array
*/
public function get_resource_owner($id)
{
return null;
}
/**
* Get event data to display a resource's calendar
*
* The default implementation extracts the resource's email address
* and fetches free-busy data using the calendar backend driver.
*
* @param integer Event's new start (unix timestamp)
* @param integer Event's new end (unix timestamp)
* @return array A list of event objects (see calendar_driver specification)
*/
public function get_resource_calendar($id, $start, $end)
{
$events = array();
$rec = $this->get_resource($id);
if ($rec && !empty($rec['email']) && $this->cal->driver) {
$fbtypemap = array(
calendar::FREEBUSY_BUSY => 'busy',
calendar::FREEBUSY_TENTATIVE => 'tentative',
calendar::FREEBUSY_OOF => 'outofoffice',
);
// if the backend has free-busy information
$fblist = $this->cal->driver->get_freebusy_list($rec['email'], $start, $end);
if (is_array($fblist)) {
foreach ($fblist as $slot) {
list($from, $to, $type) = $slot;
if ($type == calendar::FREEBUSY_FREE || $type == calendar::FREEBUSY_UNKNOWN) {
continue;
}
if ($from < $end && $to > $start) {
$event = array(
'id' => sha1($id . $from . $to),
'title' => $rec['name'],
'start' => new DateTime('@' . $from),
'end' => new DateTime('@' . $to),
'status' => $fbtypemap[$type],
'calendar' => '_resource',
);
$events[] = $event;
}
}
}
}
return $events;
}
}

View file

@ -1,5 +1,7 @@
<?php
require_once realpath(__DIR__ . '/../../libcalendaring/lib/libcalendaring_itip.php');
/**
* iTIP functions for the Calendar plugin
*
@ -24,173 +26,32 @@
* 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)
/**
* Constructor to set text domain to calendar
*/
function __construct($plugin, $domain = 'calendar')
{
$this->cal = $cal;
$this->rc = $cal->rc;
$this->sender = $identity ? $identity : $this->rc->user->get_identity();
parent::__construct($plugin, $domain);
$this->cal->add_hook('smtp_connect', array($this, 'smtp_connect_hook'));
}
function set_sender_email($email)
{
if (!empty($email))
$this->sender['email'] = $email;
$this->db_itipinvitations = $this->rc->db->table_name('itipinvitations', true);
}
/**
* 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
* Handler for calendar/itip-status requests
*/
public function send_itip_message($event, $method, $recipient, $subject, $bodytext, $message = null)
public function get_itip_status($event, $existing = 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->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));
$status = parent::get_itip_status($event, $existing);
// finally send the message
$this->itip_send = true;
$sent = $this->rc->deliver_message($message, $headers['X-Sender'], $mailto, $smtp_error);
$this->itip_send = false;
// don't ask for deleting events when declining
if ($this->rc->config->get('kolab_invitation_calendars'))
$status['saved'] = false;
return $sent;
return $status;
}
/**
* 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
*
@ -200,7 +61,7 @@ class calendar_itip
public function get_invitation($token)
{
if ($parts = $this->decode_token($token)) {
$result = $this->rc->db->query("SELECT * FROM itipinvitations WHERE token=?", $parts['base']);
$result = $this->rc->db->query("SELECT * FROM $this->db_itipinvitations WHERE `token` = ?", $parts['base']);
if ($result && ($rec = $this->rc->db->fetch_assoc($result))) {
$rec['event'] = unserialize($rec['event']);
$rec['attendee'] = $parts['attendee'];
@ -244,16 +105,16 @@ 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
$query = $this->rc->db->query(
"UPDATE itipinvitations
SET event=?
WHERE token=?",
"UPDATE $this->db_itipinvitations
SET `event` = ?
WHERE `token` = ?",
self::serialize_event($invitation['event']),
$invitation['token']
);
@ -289,17 +150,19 @@ class calendar_itip
return $token;
// delete old entry
$this->rc->db->query("DELETE FROM itipinvitations WHERE token=?", $base);
$this->rc->db->query("DELETE FROM $this->db_itipinvitations WHERE `token` = ?", $base);
$event_uid = $event['uid'] . ($event['_instance'] ? '-' . $event['_instance'] : '');
$query = $this->rc->db->query(
"INSERT INTO itipinvitations
(token, event_uid, user_id, event, expires)
"INSERT INTO $this->db_itipinvitations
(`token`, `event_uid`, `user_id`, `event`, `expires`)
VALUES(?, ?, ?, ?, ?)",
$base,
$event['uid'],
$event_uid,
$this->rc->user->ID,
self::serialize_event($event),
date('Y-m-d H:i:s', $event['end'] + 86400 * 2)
date('Y-m-d H:i:s', $event['end']->format('U') + 86400 * 2)
);
if ($this->rc->db->affected_rows($query)) {
@ -317,12 +180,14 @@ class calendar_itip
*/
public function cancel_itip_invitation($event)
{
$event_uid = $event['uid'] . ($event['_instance'] ? '-' . $event['_instance'] : '');
// flag invitation record as cancelled
$this->rc->db->query(
"UPDATE itipinvitations
SET cancelled=1
WHERE event_uid=? AND user_id=?",
$event['uid'],
"UPDATE $this->db_itipinvitations
SET `cancelled` = 1
WHERE `event_uid` = ? AND `user_id` = ?",
$event_uid,
$this->rc->user->ID
);
}
@ -335,7 +200,8 @@ class calendar_itip
*/
public function generate_token($event, $attendee)
{
$base = sha1($event['uid'] . ';' . $this->rc->user->ID);
$event_uid = $event['uid'] . ($event['_instance'] ? '-' . $event['_instance'] : '');
$base = sha1($event_uid . ';' . $this->rc->user->ID);
$mail = base64_encode($attendee);
$hash = substr(md5($base . $mail . $this->rc->config->get('des_key')), 0, 6);

View file

@ -1,15 +1,15 @@
<?php
require_once realpath(__DIR__ . '/../../libcalendaring/lib/libcalendaring_recurrence.php');
/**
* Recurrence computation class for the Calendar plugin
*
* Uitility class to compute instances of recurring events.
*
* @version @package_version@
* @author Thomas Bruederli <bruederli@kolabsys.com>
* @package @package_name@
*
* 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
@ -24,14 +24,10 @@
* 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_recurrence
class calendar_recurrence extends libcalendaring_recurrence
{
private $cal;
private $event;
private $next;
private $engine;
private $duration;
private $hour = 0;
/**
* Default constructor
@ -41,62 +37,25 @@ class calendar_recurrence
*/
function __construct($cal, $event)
{
// use Horde classes to compute recurring instances
// TODO: replace with something that has less than 6'000 lines of code
require_once(__DIR__ . '/Horde_Date_Recurrence.php');
parent::__construct($cal->lib);
$this->cal = $cal;
$this->event = $event;
$this->next = new Horde_Date($event['start'], $cal->timezone->getName());
$this->hour = $this->next->hour;
if (is_object($event['start']) && is_object($event['end']))
$this->duration = $event['start']->diff($event['end']);
$this->engine = new Horde_Date_Recurrence($event['start']);
$this->engine->fromRRule20(libcalendaring::to_rrule($event['recurrence']));
if (is_array($event['recurrence']['EXDATE'])) {
foreach ($event['recurrence']['EXDATE'] as $exdate) {
if (is_a($exdate, 'DateTime')) {
$this->engine->addException($exdate->format('Y'), $exdate->format('n'), $exdate->format('j'));
}
}
}
if (is_array($event['recurrence']['RDATE'])) {
foreach ($event['recurrence']['RDATE'] as $rdate) {
if (is_a($rdate, 'DateTime')) {
$this->engine->addRDate($rdate->format('Y'), $rdate->format('n'), $rdate->format('j'));
}
}
}
$event['start']->_dateonly |= $event['allday'];
$this->init($event['recurrence'], $event['start']);
}
/**
* Get date/time of the next occurence of this event
* Alias of libcalendaring_recurrence::next()
*
* @return mixed DateTime object or False if recurrence ended
*/
public function next_start()
{
$time = false;
$after = clone $this->next;
$after->mday = $after->mday + 1;
if ($this->next && ($next = $this->engine->nextActiveRecurrence($after))) {
if (!$next->after($this->next)) {
// avoid endless loops if recurrence computation fails
return false;
}
if ($this->event['allday']) {
$next->hour = $this->hour; # fix time for all-day events
$next->min = 0;
}
$time = $next->toDateTime();
$this->next = $next;
}
return $time;
return $this->next();
}
/**
@ -106,14 +65,18 @@ class calendar_recurrence
*/
public function next_instance()
{
if ($next_start = $this->next_start()) {
$next_end = clone $next_start;
$next_end->add($this->duration);
if ($next_start = $this->next()) {
$next = $this->event;
$next['recurrence_id'] = $next_start->format('Y-m-d');
$next['start'] = $next_start;
$next['end'] = $next_end;
if ($this->duration) {
$next['end'] = clone $next_start;
$next['end']->add($this->duration);
}
$next['recurrence_date'] = clone $next_start;
$next['_instance'] = libcalendaring::recurrence_instance_identifier($next);
unset($next['_formatobj']);
return $next;

View file

@ -2,12 +2,11 @@
/**
* User Interface class for the Calendar plugin
*
* @version @package_version@
* @author Lazlo Westerhof <hello@lazlo.me>
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 2010, Lazlo Westerhof <hello@lazlo.me>
* Copyright (C) 2012, Kolab Systems AG <contact@kolabsys.com>
* Copyright (C) 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
@ -74,16 +73,22 @@ class calendar_ui
$this->cal->register_handler('plugin.calendar_select', array($this, 'calendar_select'));
$this->cal->register_handler('plugin.identity_select', array($this, 'identity_select'));
$this->cal->register_handler('plugin.category_select', array($this, 'category_select'));
$this->cal->register_handler('plugin.status_select', array($this, 'status_select'));
$this->cal->register_handler('plugin.freebusy_select', array($this, 'freebusy_select'));
$this->cal->register_handler('plugin.priority_select', array($this, 'priority_select'));
$this->cal->register_handler('plugin.sensitivity_select', array($this, 'sensitivity_select'));
$this->cal->register_handler('plugin.alarm_select', array($this, 'alarm_select'));
$this->cal->register_handler('plugin.recurrence_form', array($this, 'recurrence_form'));
$this->cal->register_handler('plugin.recurrence_form', array($this->cal->lib, 'recurrence_form'));
$this->cal->register_handler('plugin.attachments_form', array($this, 'attachments_form'));
$this->cal->register_handler('plugin.attachments_list', array($this, 'attachments_list'));
$this->cal->register_handler('plugin.filedroparea', array($this, 'file_drop_area'));
$this->cal->register_handler('plugin.attendees_list', array($this, 'attendees_list'));
$this->cal->register_handler('plugin.attendees_form', array($this, 'attendees_form'));
$this->cal->register_handler('plugin.resources_form', array($this, 'resources_form'));
$this->cal->register_handler('plugin.resources_list', array($this, 'resources_list'));
$this->cal->register_handler('plugin.resources_searchform', array($this, 'resources_search_form'));
$this->cal->register_handler('plugin.resource_info', array($this, 'resource_info'));
$this->cal->register_handler('plugin.resource_calendar', array($this, 'resource_calendar'));
$this->cal->register_handler('plugin.attendees_freebusy_table', array($this, 'attendees_freebusy_table'));
$this->cal->register_handler('plugin.edit_attendees_notify', array($this, 'edit_attendees_notify'));
$this->cal->register_handler('plugin.edit_recurring_warning', array($this, 'recurring_event_warning'));
@ -91,6 +96,7 @@ class calendar_ui
$this->cal->register_handler('plugin.angenda_options', array($this, 'angenda_options'));
$this->cal->register_handler('plugin.events_import_form', array($this, 'events_import_form'));
$this->cal->register_handler('plugin.events_export_form', array($this, 'events_export_form'));
$this->cal->register_handler('plugin.event_changelog_table', array($this, 'event_changelog_table'));
$this->cal->register_handler('plugin.searchform', array($this->rc->output, 'search_form')); // use generic method from rcube_template
}
@ -101,7 +107,6 @@ class calendar_ui
{
$skin_path = $this->cal->local_skin_path();
$this->cal->include_stylesheet($skin_path . '/fullcalendar.css');
$this->cal->include_stylesheet($skin_path . '/jquery.miniColors.css');
}
/**
@ -111,7 +116,14 @@ class calendar_ui
{
$this->cal->include_script('calendar_ui.js');
$this->cal->include_script('lib/js/fullcalendar.js');
$this->cal->include_script('lib/js/jquery.miniColors.min.js');
$this->rc->output->include_script('treelist.js');
// include kolab folderlist widget if available
if (in_array('libkolab', $this->cal->api->loaded_plugins())) {
$this->cal->api->include_script('libkolab/js/folderlist.js');
}
jqueryui::miniColors();
}
/**
@ -151,75 +163,164 @@ class calendar_ui
foreach ((array)$calendars as $id => $prop) {
if (!$prop['color'])
continue;
$color = $prop['color'];
$class = 'cal-' . asciiwords($id, true);
$css .= "li.$class, #eventshow .$class { color: #$color }\n";
if ($mode != 1) {
if ($mode == 3) {
$css .= ".fc-event-$class .fc-event-bg {";
$css .= " opacity: 0.9;";
$css .= " filter: alpha(opacity=90);";
}
else {
$css .= ".fc-event-$class, ";
$css .= ".fc-event-$class .fc-event-inner {";
}
if (!$attrib['printmode'])
$css .= " background-color: #$color;";
if ($mode % 2 == 0)
$css .= " border-color: #$color;";
$css .= "}\n";
}
$css .= ".$class .handle { background-color: #$color; }";
$css .= $this->calendar_css_classes($id, $prop, $mode);
}
return html::tag('style', array('type' => 'text/css'), $css);
}
/**
*
*/
public function calendar_css_classes($id, $prop, $mode)
{
$color = $prop['color'];
$class = 'cal-' . asciiwords($id, true);
$css .= "li .$class, #eventshow .$class { color: #$color }\n";
if ($mode != 1) {
if ($mode == 3) {
$css .= ".fc-event-$class .fc-event-bg {";
$css .= " opacity: 0.9;";
$css .= " filter: alpha(opacity=90);";
}
else {
$css .= ".fc-event-$class, ";
$css .= ".fc-event-$class .fc-event-inner {";
}
if (!$attrib['printmode'])
$css .= " background-color: #$color;";
if ($mode % 2 == 0)
$css .= " border-color: #$color;";
$css .= "}\n";
}
return $css . ".$class .handle { background-color: #$color; }\n";
}
/**
*
*/
function calendar_list($attrib = array())
{
$calendars = $this->cal->driver->list_calendars();
$html = '';
$jsenv = array();
$tree = true;
$calendars = $this->cal->driver->list_calendars(0, $tree);
// walk folder tree
if (is_object($tree)) {
$html = $this->list_tree_html($tree, $calendars, $jsenv, $attrib);
// append birthdays calendar which isn't part of $tree
if ($bdaycal = $calendars[calendar_driver::BIRTHDAY_CALENDAR_ID]) {
$calendars = array(calendar_driver::BIRTHDAY_CALENDAR_ID => $bdaycal);
}
else {
$calendars = array(); // clear array for flat listing
}
}
else {
// fall-back to flat folder listing
$attrib['class'] .= ' flat';
}
$li = '';
foreach ((array)$calendars as $id => $prop) {
if ($attrib['activeonly'] && !$prop['active'])
continue;
unset($prop['user_id']);
$prop['alarms'] = $this->cal->driver->alarms;
$prop['attendees'] = $this->cal->driver->attendees;
$prop['freebusy'] = $this->cal->driver->freebusy;
$prop['attachments'] = $this->cal->driver->attachments;
$prop['undelete'] = $this->cal->driver->undelete;
$prop['feedurl'] = $this->cal->get_url(array('_cal' => $this->cal->ical_feed_hash($id) . '.ics', 'action' => 'feed'));
if (!$prop['virtual'])
$jsenv[$id] = $prop;
$html_id = html_identifier($id);
$class = 'cal-' . asciiwords($id, true);
$title = $prop['name'] != $prop['listname'] ? html_entity_decode($prop['name'], ENT_COMPAT, RCMAIL_CHARSET) : '';
if ($prop['virtual'])
$class .= ' virtual';
else if ($prop['readonly'])
$class .= ' readonly';
if ($prop['class_name'])
$class .= ' '.$prop['class_name'];
$li .= html::tag('li', array('id' => 'rcmlical' . $html_id, 'class' => $class),
($prop['virtual'] ? '' : html::tag('input', array('type' => 'checkbox', 'name' => '_cal[]', 'value' => $id, 'checked' => $prop['active']), '') .
html::span('handle', '&nbsp;')) .
html::span(array('class' => 'calname', 'title' => $title), $prop['listname']));
$html .= html::tag('li', array('id' => 'rcmlical' . $id, 'class' => $prop['group']),
$content = $this->calendar_list_item($id, $prop, $jsenv, $attrib['activeonly'])
);
}
$this->rc->output->set_env('calendars', $jsenv);
$this->rc->output->add_gui_object('folderlist', $attrib['id']);
$this->rc->output->add_gui_object('calendarslist', $attrib['id']);
return html::tag('ul', $attrib, $li, html::$common_attrib);
return html::tag('ul', $attrib, $html, html::$common_attrib);
}
/**
* Return html for a structured list <ul> for the folder tree
*/
public function list_tree_html($node, $data, &$jsenv, $attrib)
{
$out = '';
foreach ($node->children as $folder) {
$id = $folder->id;
$prop = $data[$id];
$is_collapsed = false; // TODO: determine this somehow?
$content = $this->calendar_list_item($id, $prop, $jsenv, $attrib['activeonly']);
if (!empty($folder->children)) {
$content .= html::tag('ul', array('style' => ($is_collapsed ? "display:none;" : null)),
$this->list_tree_html($folder, $data, $jsenv, $attrib));
}
if (strlen($content)) {
$out .= html::tag('li', array(
'id' => 'rcmlical' . rcube_utils::html_identifier($id),
'class' => $prop['group'] . ($prop['virtual'] ? ' virtual' : ''),
),
$content);
}
}
return $out;
}
/**
* Helper method to build a calendar list item (HTML content and js data)
*/
public function calendar_list_item($id, $prop, &$jsenv, $activeonly = false)
{
// enrich calendar properties with settings from the driver
if (!$prop['virtual']) {
unset($prop['user_id']);
$prop['alarms'] = $this->cal->driver->alarms;
$prop['attendees'] = $this->cal->driver->attendees;
$prop['freebusy'] = $this->cal->driver->freebusy;
$prop['attachments'] = $this->cal->driver->attachments;
$prop['undelete'] = $this->cal->driver->undelete;
$prop['feedurl'] = $this->cal->get_url(array('_cal' => $this->cal->ical_feed_hash($id) . '.ics', 'action' => 'feed'));
$jsenv[$id] = $prop;
}
$classes = array('calendar', 'cal-' . asciiwords($id, true));
$title = $prop['title'] ?: ($prop['name'] != $prop['listname'] || strlen($prop['name']) > 25 ?
html_entity_decode($prop['name'], ENT_COMPAT, RCMAIL_CHARSET) : '');
if ($prop['virtual'])
$classes[] = 'virtual';
else if (!$prop['editable'])
$classes[] = 'readonly';
if ($prop['subscribed'])
$classes[] = 'subscribed';
if ($prop['subscribed'] === 2)
$classes[] = 'partial';
if ($prop['class'])
$classes[] = $prop['class'];
$content = '';
if (!$activeonly || $prop['active']) {
$label_id = 'cl:' . $id;
$content = html::div(join(' ', $classes),
html::span(array('class' => 'calname', 'id' => $label_id, 'title' => $title), $prop['editname'] ? Q($prop['editname']) : $prop['listname']) .
($prop['virtual'] ? '' :
html::tag('input', array('type' => 'checkbox', 'name' => '_cal[]', 'value' => $id, 'checked' => $prop['active'], 'aria-labelledby' => $label_id), '') .
html::span('actions',
($prop['removable'] ? html::a(array('href' => '#', 'class' => 'remove', 'title' => $this->cal->gettext('removelist')), ' ') : '') .
html::a(array('href' => '#', 'class' => 'quickview', 'title' => $this->cal->gettext('quickview'), 'role' => 'checkbox', 'aria-checked' => 'false'), '') .
(isset($prop['subscribed']) ? html::a(array('href' => '#', 'class' => 'subscribed', 'title' => $this->cal->gettext('calendarsubscribe'), 'role' => 'checkbox', 'aria-checked' => $prop['subscribed'] ? 'true' : 'false'), ' ') : '')
) .
html::span(array('class' => 'handle', 'style' => "background-color: #" . ($prop['color'] ?: 'f00')), '&nbsp;')
)
);
}
return $content;
}
/**
@ -231,17 +332,17 @@ class calendar_ui
$attrib['style'] .= 'display:none';
$select_range = new html_select(array('name' => 'listrange', 'id' => 'agenda-listrange'));
$select_range->add(1 . ' ' . preg_replace('/\(.+\)/', '', $this->cal->gettext('days')), $days);
foreach (array(2,5,7,14,30,60,90) as $days)
$select_range->add($days . ' ' . preg_replace('/\(|\)/', '', $this->cal->gettext('days')), $days);
$select_range->add(1 . ' ' . preg_replace('/\(.+\)/', '', $this->cal->lib->gettext('days')), $days);
foreach (array(2,5,7,14,30,60,90,180,365) as $days)
$select_range->add($days . ' ' . preg_replace('/\(|\)/', '', $this->cal->lib->gettext('days')), $days);
$html .= html::label('agenda-listrange', $this->cal->gettext('listrange'));
$html .= $select_range->show($this->rc->config->get('calendar_agenda_range', $this->cal->defaults['calendar_agenda_range']));
$select_sections = new html_select(array('name' => 'listsections', 'id' => 'agenda-listsections'));
$select_sections->add('---', '');
foreach (array('day' => 'days', 'week' => 'weeks', 'month' => 'months', 'smart' => 'smartsections') as $val => $label)
$select_sections->add(preg_replace('/\(|\)/', '', ucfirst($this->cal->gettext($label))), $val);
foreach (array('day' => 'libcalendaring.days', 'week' => 'libcalendaring.weeks', 'month' => 'libcalendaring.months', 'smart' => 'calendar.smartsections') as $val => $label)
$select_sections->add(preg_replace('/\(|\)/', '', ucfirst($this->rc->gettext($label))), $val);
$html .= html::span('spacer', '&nbsp;');
$html .= html::label('agenda-listsections', $this->cal->gettext('listsections'));
@ -260,7 +361,7 @@ class calendar_ui
$select = new html_select($attrib);
foreach ((array)$this->cal->driver->list_calendars() as $id => $prop) {
if (!$prop['readonly'])
if ($prop['editable'] || strpos($prop['rights'], 'i') !== false)
$select->add($prop['name'], $id);
}
@ -274,7 +375,7 @@ class calendar_ui
{
$attrib['name'] = 'identity';
$select = new html_select($attrib);
$identities = $this->rc->user->list_identities();
$identities = $this->rc->user->list_emails();
foreach ($identities as $ident) {
$select->add(format_email_recipient($ident['email'], $ident['name']), $ident['identity_id']);
@ -298,6 +399,20 @@ class calendar_ui
return $select->show(null);
}
/**
* Render a HTML select box for status property
*/
function status_select($attrib = array())
{
$attrib['name'] = 'status';
$select = new html_select($attrib);
$select->add('---', '');
$select->add($this->cal->gettext('status-confirmed'), 'CONFIRMED');
$select->add($this->cal->gettext('status-cancelled'), 'CANCELLED');
//$select->add($this->cal->gettext('tentative'), 'TENTATIVE');
return $select->show(null);
}
/**
* Render a HTML select box for free/busy/out-of-office property
*/
@ -307,7 +422,8 @@ class calendar_ui
$select = new html_select($attrib);
$select->add($this->cal->gettext('free'), 'free');
$select->add($this->cal->gettext('busy'), 'busy');
$select->add($this->cal->gettext('outofoffice'), 'outofoffice');
// out-of-office is not supported by libkolabxml (#3220)
// $select->add($this->cal->gettext('outofoffice'), 'outofoffice');
$select->add($this->cal->gettext('tentative'), 'tentative');
return $select->show(null);
}
@ -377,161 +493,6 @@ class calendar_ui
return html::div($attrib, html::div('message', html::span('ui-icon ui-icon-alert', '') . $this->cal->gettext('changerecurringeventwarning')) . html::div('savemode', $form));
}
/**
* Generate the form for recurrence settings
*/
function recurrence_form($attrib = array())
{
switch ($attrib['part']) {
// frequency selector
case 'frequency':
$select = new html_select(array('name' => 'frequency', 'id' => 'edit-recurrence-frequency'));
$select->add($this->cal->gettext('never'), '');
$select->add($this->cal->gettext('daily'), 'DAILY');
$select->add($this->cal->gettext('weekly'), 'WEEKLY');
$select->add($this->cal->gettext('monthly'), 'MONTHLY');
$select->add($this->cal->gettext('yearly'), 'YEARLY');
$select->add($this->cal->gettext('rdate'), 'RDATE');
$html = html::label('edit-frequency', $this->cal->gettext('frequency')) . $select->show('');
break;
// daily recurrence
case 'daily':
$select = $this->interval_selector(array('name' => 'interval', 'class' => 'edit-recurrence-interval', 'id' => 'edit-recurrence-interval-daily'));
$html = html::div($attrib, html::label(null, $this->cal->gettext('every')) . $select->show(1) . html::span('label-after', $this->cal->gettext('days')));
break;
// weekly recurrence form
case 'weekly':
$select = $this->interval_selector(array('name' => 'interval', 'class' => 'edit-recurrence-interval', 'id' => 'edit-recurrence-interval-weekly'));
$html = html::div($attrib, html::label(null, $this->cal->gettext('every')) . $select->show(1) . html::span('label-after', $this->cal->gettext('weeks')));
// weekday selection
$daymap = array('sun','mon','tue','wed','thu','fri','sat');
$checkbox = new html_checkbox(array('name' => 'byday', 'class' => 'edit-recurrence-weekly-byday'));
$first = $this->rc->config->get('calendar_first_day', 1);
for ($weekdays = '', $j = $first; $j <= $first+6; $j++) {
$d = $j % 7;
$weekdays .= html::label(array('class' => 'weekday'), $checkbox->show('', array('value' => strtoupper(substr($daymap[$d], 0, 2)))) . $this->cal->gettext($daymap[$d])) . ' ';
}
$html .= html::div($attrib, html::label(null, $this->cal->gettext('bydays')) . $weekdays);
break;
// monthly recurrence form
case 'monthly':
$select = $this->interval_selector(array('name' => 'interval', 'class' => 'edit-recurrence-interval', 'id' => 'edit-recurrence-interval-monthly'));
$html = html::div($attrib, html::label(null, $this->cal->gettext('every')) . $select->show(1) . html::span('label-after', $this->cal->gettext('months')));
$checkbox = new html_checkbox(array('name' => 'bymonthday', 'class' => 'edit-recurrence-monthly-bymonthday'));
for ($monthdays = '', $d = 1; $d <= 31; $d++) {
$monthdays .= html::label(array('class' => 'monthday'), $checkbox->show('', array('value' => $d)) . $d);
$monthdays .= $d % 7 ? ' ' : html::br();
}
// rule selectors
$radio = new html_radiobutton(array('name' => 'repeatmode', 'class' => 'edit-recurrence-monthly-mode'));
$table = new html_table(array('cols' => 2, 'border' => 0, 'cellpadding' => 0, 'class' => 'formtable'));
$table->add('label', html::label(null, $radio->show('BYMONTHDAY', array('value' => 'BYMONTHDAY')) . ' ' . $this->cal->gettext('each')));
$table->add(null, $monthdays);
$table->add('label', html::label(null, $radio->show('', array('value' => 'BYDAY')) . ' ' . $this->cal->gettext('onevery')));
$table->add(null, $this->rrule_selectors($attrib['part']));
$html .= html::div($attrib, $table->show());
break;
// annually recurrence form
case 'yearly':
$select = $this->interval_selector(array('name' => 'interval', 'class' => 'edit-recurrence-interval', 'id' => 'edit-recurrence-interval-yearly'));
$html = html::div($attrib, html::label(null, $this->cal->gettext('every')) . $select->show(1) . html::span('label-after', $this->cal->gettext('years')));
// month selector
$monthmap = array('','jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');
$checkbox = new html_checkbox(array('name' => 'bymonth', 'class' => 'edit-recurrence-yearly-bymonth'));
for ($months = '', $m = 1; $m <= 12; $m++) {
$months .= html::label(array('class' => 'month'), $checkbox->show(null, array('value' => $m)) . $this->cal->gettext($monthmap[$m]));
$months .= $m % 4 ? ' ' : html::br();
}
$html .= html::div($attrib + array('id' => 'edit-recurrence-yearly-bymonthblock'), $months);
// day rule selection
$html .= html::div($attrib, html::label(null, $this->cal->gettext('onevery')) . $this->rrule_selectors($attrib['part'], '---'));
break;
// end of recurrence form
case 'until':
$radio = new html_radiobutton(array('name' => 'repeat', 'class' => 'edit-recurrence-until'));
$select = $this->interval_selector(array('name' => 'times', 'id' => 'edit-recurrence-repeat-times'));
$input = new html_inputfield(array('name' => 'untildate', 'id' => 'edit-recurrence-enddate', 'size' => "10"));
$table = new html_table(array('cols' => 2, 'border' => 0, 'cellpadding' => 0, 'class' => 'formtable'));
$table->add('label', ucfirst($this->cal->gettext('recurrencend')));
$table->add(null, html::label(null, $radio->show('', array('value' => '', 'id' => 'edit-recurrence-repeat-forever')) . ' ' .
$this->cal->gettext('forever')));
$table->add('label', '');
$table->add(null, $radio->show('', array('value' => 'count', 'id' => 'edit-recurrence-repeat-count')) . ' ' .
$this->cal->gettext(array(
'name' => 'forntimes',
'vars' => array('nr' => $select->show(1)))
));
$table->add('label', '');
$table->add(null, $radio->show('', array('value' => 'until', 'id' => 'edit-recurrence-repeat-until')) . ' ' .
$this->cal->gettext('untildate') . ' ' . $input->show(''));
$html = $table->show();
break;
case 'rdate':
$ul = html::tag('ul', array('id' => 'edit-recurrence-rdates'), '');
$input = new html_inputfield(array('name' => 'rdate', 'id' => 'edit-recurrence-rdate-input', 'size' => "10"));
$button = new html_inputfield(array('type' => 'button', 'class' => 'button add', 'value' => $this->cal->gettext('addrdate')));
$html .= html::div($attrib, $ul . html::div('inputform', $input->show() . $button->show()));
break;
}
return $html;
}
/**
* Input field for interval selection
*/
private function interval_selector($attrib)
{
$select = new html_select($attrib);
$select->add(range(1,30), range(1,30));
return $select;
}
/**
* Drop-down menus for recurrence rules like "each last sunday of"
*/
private function rrule_selectors($part, $noselect = null)
{
// rule selectors
$select_prefix = new html_select(array('name' => 'bydayprefix', 'id' => "edit-recurrence-$part-prefix"));
if ($noselect) $select_prefix->add($noselect, '');
$select_prefix->add(array(
$this->cal->gettext('first'),
$this->cal->gettext('second'),
$this->cal->gettext('third'),
$this->cal->gettext('fourth'),
$this->cal->gettext('last')
),
array(1, 2, 3, 4, -1));
$select_wday = new html_select(array('name' => 'byday', 'id' => "edit-recurrence-$part-byday"));
if ($noselect) $select_wday->add($noselect, '');
$daymap = array('sunday','monday','tuesday','wednesday','thursday','friday','saturday');
$first = $this->rc->config->get('calendar_first_day', 1);
for ($j = $first; $j <= $first+6; $j++) {
$d = $j % 7;
$select_wday->add($this->cal->gettext($daymap[$d]), strtoupper(substr($daymap[$d], 0, 2)));
}
return $select_prefix->show() . '&nbsp;' . $select_wday->show();
}
/**
* Form for uploading and importing events
@ -544,8 +505,14 @@ class calendar_ui
// Get max filesize, enable upload progress bar
$max_filesize = rcube_upload_init();
$accept = '.ics, text/calendar, text/x-vcalendar, application/ics';
if (class_exists('ZipArchive', false)) {
$accept .= ', .zip, application/zip';
}
$input = new html_inputfield(array(
'type' => 'file', 'name' => '_data', 'size' => $attrib['uploadfieldsize']));
'type' => 'file', 'name' => '_data', 'size' => $attrib['uploadfieldsize'],
'accept' => $accept));
$select = new html_select(array('name' => '_range', 'id' => 'event-import-range'));
$select->add(array(
@ -732,13 +699,29 @@ class calendar_ui
*/
function attendees_list($attrib = array())
{
$table = new html_table(array('cols' => 5, 'border' => 0, 'cellpadding' => 0, 'class' => 'rectable'));
// add "noreply" checkbox to attendees table only
$invitations = strpos($attrib['id'], 'attend') !== false;
$invite = new html_checkbox(array('value' => 1, 'id' => 'edit-attendees-invite'));
$table = new html_table(array('cols' => 5 + intval($invitations), 'border' => 0, 'cellpadding' => 0, 'class' => 'rectable'));
$table->add_header('role', $this->cal->gettext('role'));
$table->add_header('name', $this->cal->gettext('attendee'));
$table->add_header('name', $this->cal->gettext($attrib['coltitle'] ?: 'attendee'));
$table->add_header('availability', $this->cal->gettext('availability'));
$table->add_header('confirmstate', $this->cal->gettext('confirmstate'));
if ($invitations) {
$table->add_header(array('class' => 'invite', 'title' => $this->cal->gettext('sendinvitations')),
$invite->show(1) . html::label('edit-attendees-invite', $this->cal->gettext('sendinvitations')));
}
$table->add_header('options', '');
// hide invite column if disabled by config
$itip_notify = (int)$this->rc->config->get('calendar_itip_send_option', $this->cal->defaults['calendar_itip_send_option']);
if ($invitations && !($itip_notify & 2)) {
$css = sprintf('#%s td.invite, #%s th.invite { display:none !important }', $attrib['id'], $attrib['id']);
$this->rc->output->add_footer(html::tag('style', array('type' => 'text/css'), $css));
}
return $table->show($attrib);
}
@ -747,17 +730,108 @@ class calendar_ui
*/
function attendees_form($attrib = array())
{
$input = new html_inputfield(array('name' => 'participant', 'id' => 'edit-attendee-name', 'size' => 30));
$checkbox = new html_checkbox(array('name' => 'invite', 'id' => 'edit-attendees-invite', 'value' => 1));
$input = new html_inputfield(array('name' => 'participant', 'id' => 'edit-attendee-name', 'size' => 30));
$textarea = new html_textarea(array('name' => 'comment', 'id' => 'edit-attendees-comment',
'rows' => 4, 'cols' => 55, 'title' => $this->cal->gettext('itipcommenttitle')));
return html::div($attrib,
html::div(null, $input->show() . " " .
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-attendee-add', 'value' => $this->cal->gettext('addattendee'))) . " " .
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-attendee-schedule', 'value' => $this->cal->gettext('scheduletime').'...'))) .
html::p('attendees-invitebox', html::label(null, $checkbox->show(1) . $this->cal->gettext('sendinvitations')))
html::p('attendees-commentbox', html::label(null, $this->cal->gettext('itipcomment') . $textarea->show()))
);
}
/**
*
*/
function resources_form($attrib = array())
{
$input = new html_inputfield(array('name' => 'resource', 'id' => 'edit-resource-name', 'size' => 30));
return html::div($attrib,
html::div(null, $input->show() . " " .
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-resource-add', 'value' => $this->cal->gettext('addresource'))) . " " .
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-resource-find', 'value' => $this->cal->gettext('findresources').'...')))
);
}
/**
*
*/
function resources_list($attrib = array())
{
$attrib += array('id' => 'calendar-resources-list');
$this->rc->output->add_gui_object('resourceslist', $attrib['id']);
return html::tag('ul', $attrib, '', html::$common_attrib);
}
/**
*
*/
public function resource_info($attrib = array())
{
$attrib += array('id' => 'calendar-resources-info');
$this->rc->output->add_gui_object('resourceinfo', $attrib['id']);
$this->rc->output->add_gui_object('resourceownerinfo', $attrib['id'] . '-owner');
// copy address book labels for owner details to client
$this->rc->output->add_label('name','firstname','surname','department','jobtitle','email','phone','address');
$table_attrib = array('id','class','style','width','summary','cellpadding','cellspacing','border');
return html::tag('table', $attrib,
html::tag('tbody', null, ''), $table_attrib) .
html::tag('table', array('id' => $attrib['id'] . '-owner', 'style' => 'display:none') + $attrib,
html::tag('thead', null,
html::tag('tr', null,
html::tag('td', array('colspan' => 2), Q($this->cal->gettext('resourceowner')))
)
) .
html::tag('tbody', null, ''),
$table_attrib);
}
/**
*
*/
public function resource_calendar($attrib = array())
{
$attrib += array('id' => 'calendar-resources-calendar');
$this->rc->output->add_gui_object('resourceinfocalendar', $attrib['id']);
return html::div($attrib, '');
}
/**
* GUI object 'searchform' for the resource finder dialog
*
* @param array Named parameters
* @return string HTML code for the gui object
*/
function resources_search_form($attrib)
{
$attrib += array('command' => 'search-resource', 'id' => 'rcmcalresqsearchbox', 'autocomplete' => 'off');
$attrib['name'] = '_q';
$input_q = new html_inputfield($attrib);
$out = $input_q->show();
// add form tag around text field
$out = $this->rc->output->form_tag(array(
'name' => "rcmcalresoursqsearchform",
'onsubmit' => rcmail_output::JS_OBJECT_NAME . ".command('" . $attrib['command'] . "'); return false",
'style' => "display:inline"),
$out);
return $out;
}
/**
*
*/
@ -780,21 +854,19 @@ class calendar_ui
}
/**
* Render event details in a table
* Table oultine for event changelog display
*/
function event_details_table($event, $title)
function event_changelog_table($attrib = array())
{
$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();
$table = new html_table(array('cols' => 5, 'border' => 0, 'cellspacing' => 0));
$table->add_header('diff', '');
$table->add_header('revision', $this->cal->gettext('revision'));
$table->add_header('date', $this->cal->gettext('date'));
$table->add_header('user', $this->cal->gettext('user'));
$table->add_header('operation', $this->cal->gettext('operation'));
$table->add_header('actions', '&nbsp;');
return $table->show($attrib);
}
/**
@ -804,7 +876,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->itip->itip_object_details_table($this->cal->event, $this->cal->itip->gettext('itipinvitation')) .
$this->cal->invitestatus
);
}
@ -814,20 +886,11 @@ class calendar_ui
function event_rsvp_buttons($attrib = array())
{
$attrib += array('type' => 'button');
foreach (array('accepted','tentative','declined') as $method) {
$buttons .= html::tag('input', array(
'type' => $attrib['type'],
'name' => $attrib['iname'],
'class' => 'button',
'rel' => $method,
'value' => $this->cal->gettext('itip' . $method),
));
}
return html::div($attrib,
html::div('label', $this->cal->gettext('acceptinvitation')) .
html::div('rsvp-buttons', $buttons));
$actions = array('accepted','tentative','declined');
if ($attrib['delegate'] !== 'false')
$actions[] = 'delegated';
return $this->cal->itip->itip_rsvp_buttons($attrib, $actions);
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,38 +1,206 @@
<?php
/**
* RoundCube Calendar
* Localizations for Kolab Calendar plugin
*
* Plugin to add a calendar to RoundCube.
* Copyright (C) 2014, Kolab Systems AG
*
* @version 0.2 BETA 2
* @author Lazlo Westerhof
* @url http://rc-calendar.lazlo.me
* @licence GNU GPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
*
**/
$labels = array();
// config
$labels['default_view'] = 'Изглед';
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Изглед по подразбиране';
$labels['time_format'] = 'Формат на часовете';
$labels['timeslots'] = 'Полета на час';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Първи ден от седмицата';
// calendar
$labels['first_hour'] = 'Първи час при показване';
$labels['workinghours'] = 'Работни часове';
$labels['add_category'] = 'Добавяне на категория';
$labels['remove_category'] = 'Премахване на категория';
$labels['defaultcalendar'] = 'Създаване на нови събития в ';
$labels['eventcoloring'] = 'Оцветяване на събитията';
$labels['coloringmode0'] = 'Според календара';
$labels['coloringmode1'] = 'Относно категорията';
$labels['coloringmode2'] = 'Календар за очертание, категория за съдържание';
$labels['coloringmode3'] = 'Категория за очертание, календар за съдържание';
$labels['calendar'] = 'Календар';
$labels['calendars'] = 'Календари';
$labels['category'] = 'Категория';
$labels['categories'] = 'Категории';
$labels['createcalendar'] = 'Създаване на нов календар';
$labels['editcalendar'] = 'Промяна на свойствата на календара';
$labels['name'] = 'Име';
$labels['color'] = 'Цвят';
$labels['day'] = 'Ден';
$labels['week'] = 'Седмица';
$labels['month'] = 'Месец';
$labels['agenda'] = 'Бележник';
$labels['new'] = 'Ново';
$labels['new_event'] = 'Добавяне на събитие';
$labels['edit_event'] = 'Промяна на събитие';
$labels['edit'] = 'Промяна';
$labels['save'] = 'Запис';
$labels['remove'] = 'Изтриване';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Отказ';
$labels['select'] = 'Избиране';
$labels['print'] = 'Печат';
$labels['printtitle'] = 'Печат на календарите';
$labels['title'] = 'Заглавие';
$labels['description'] = 'Описание';
$labels['all-day'] = 'цял ден';
$labels['export'] = 'Запази като ICS';
$labels['category'] = 'Категория';
?>
$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['starttime'] = 'Start time';
$labels['end'] = 'Край';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Избор на дата';
$labels['freebusy'] = 'Показване като';
$labels['free'] = 'Свободно';
$labels['busy'] = 'Заето';
$labels['outofoffice'] = 'Извън офиса';
$labels['tentative'] = 'Предварително';
$labels['status'] = 'Статус';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Приоритет';
$labels['sensitivity'] = 'Частност';
$labels['public'] = 'публично';
$labels['private'] = 'частно';
$labels['confidential'] = 'конфиденциално';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Напомняне';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Неизвестно';
$labels['generated'] = 'генерирано в';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Печат на описанията';
$labels['parentcalendar'] = 'Внасяне вътре';
$labels['searchearlierdates'] = '« Търсене за по- стари събития';
$labels['searchlaterdates'] = 'Търсене за по- нови събития »';
$labels['andnmore'] = '$nr повече...';
$labels['togglerole'] = 'Click to toggle role';
$labels['createfrommail'] = 'Запазване като събитие';
$labels['importevents'] = 'Внасяне на събития';
$labels['importrange'] = 'Събития от';
$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.';
$labels['searchterms'] = 'Search terms';
$labels['calendarsubscribe'] = 'List permanently';
$labels['listrange'] = 'Оразмеряване към екран:';
$labels['listsections'] = 'Разделяне на:';
$labels['smartsections'] = 'Интелигентни секции';
$labels['until'] = 'до';
$labels['today'] = 'Днес';
$labels['tomorrow'] = 'Утре';
$labels['thisweek'] = 'Тази седмица';
$labels['nextweek'] = 'Следващата седмица';
$labels['thismonth'] = 'Този месец';
$labels['nextmonth'] = 'Следващия месец';
$labels['weekofyear'] = 'Седмица';
$labels['pastevents'] = 'Минали';
$labels['futureevents'] = 'Бъдещи';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Настройка за напомняне по подразбиране';
$labels['defaultalarmoffset'] = 'Време за напомняне по подразбиране';
$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['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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.";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'запазване в';
$labels['resource'] = 'Resource';
$labels['resourcedetails'] = 'Details';
$labels['tabsummary'] = 'Заглавие';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Участници';
$labels['tabattachments'] = 'Прикрепени файлове';
$labels['tabsharing'] = 'Споделяне';
$labels['deleteobjectconfirm'] = 'Наистина ли искате да премахнете това събитие?';
$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.';
$labels['changeeventconfirm'] = 'Change 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['currentevent'] = 'Current';
$labels['futurevents'] = 'Бъдещи';
$labels['allevents'] = 'All';
$labels['saveasnew'] = 'Save as new';
$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';
?>

267
localization/ca_ES.inc Normal file
View file

@ -0,0 +1,267 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Vista per defecte';
$labels['time_format'] = 'Format de l\'hora';
$labels['timeslots'] = 'Espais de temps per hora';
$labels['first_day'] = 'Primer dia de la setmana';
$labels['first_hour'] = 'Primera hora a mostrar';
$labels['workinghours'] = 'Hores de feina';
$labels['add_category'] = 'Afegeix categoria';
$labels['remove_category'] = 'Suprimeix categoria';
$labels['defaultcalendar'] = 'Crea nous esdeveniments a';
$labels['eventcoloring'] = 'Colors dels esdeveniments';
$labels['coloringmode0'] = 'Depenent del calendari';
$labels['coloringmode1'] = 'Depenent de la categoria';
$labels['coloringmode2'] = 'Calendari pel contorn, categoria pel contingut';
$labels['coloringmode3'] = 'Categoria pel contorn, calendari pel contingut\'';
$labels['afternothing'] = 'No facis res';
$labels['aftertrash'] = 'Mou a la Paperera';
$labels['afterdelete'] = 'Suprimeix el missatge';
$labels['afterflagdeleted'] = 'Marca\'l com a suprimit';
$labels['aftermoveto'] = 'Mou a...';
$labels['itipoptions'] = 'Invitacions a esdeveniments';
$labels['afteraction'] = 'S\'envia un missatge després d\'una invitació o una actualització';
$labels['calendar'] = 'Calendari';
$labels['calendars'] = 'Calendaris';
$labels['category'] = 'Categoria';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Crea un nou calendari';
$labels['editcalendar'] = 'Edita les propietats del calendari';
$labels['name'] = 'Nom';
$labels['color'] = 'Color';
$labels['day'] = 'Dia';
$labels['week'] = 'Setmana';
$labels['month'] = 'Mes';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Nou';
$labels['new_event'] = 'Nou esdeveniment';
$labels['edit_event'] = 'Edita esdeveniment';
$labels['edit'] = 'Edita';
$labels['save'] = 'Desa';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Cancel·la';
$labels['select'] = 'Selecciona';
$labels['print'] = 'Imprimeix';
$labels['printtitle'] = 'Imprimeix calendaris';
$labels['title'] = 'Resum';
$labels['description'] = 'Descripció';
$labels['all-day'] = 'Tot el dia';
$labels['export'] = 'Exporta';
$labels['exporttitle'] = 'Exporta a iCalendari';
$labels['exportrange'] = 'Esdeveniments de';
$labels['exportattachments'] = 'Amb fitxers adjunts';
$labels['customdate'] = 'Personalitza la data';
$labels['location'] = 'Ubicació';
$labels['url'] = 'URL';
$labels['date'] = 'Data';
$labels['start'] = 'Inici';
$labels['starttime'] = 'Hora d\'inici';
$labels['end'] = 'Final';
$labels['endtime'] = 'Hora de finalització';
$labels['repeat'] = 'Repeteix';
$labels['selectdate'] = 'Tria la data';
$labels['freebusy'] = 'Mostra\'m com';
$labels['free'] = 'Lliure';
$labels['busy'] = 'Ocupat';
$labels['outofoffice'] = 'Fora de l\'oficina';
$labels['tentative'] = 'Provisional';
$labels['mystatus'] = 'El meu estat';
$labels['status'] = 'Estat';
$labels['status-confirmed'] = 'Confirmat';
$labels['status-cancelled'] = 'Cancel·lat';
$labels['priority'] = 'Prioritat';
$labels['sensitivity'] = 'Privadesa';
$labels['public'] = 'públic';
$labels['private'] = 'privat';
$labels['confidential'] = 'confidencial';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Recordatori';
$labels['comment'] = 'Comentari';
$labels['created'] = 'Creat';
$labels['changed'] = 'Darrera modificació';
$labels['unknown'] = 'Desconegut';
$labels['eventoptions'] = 'Opcions';
$labels['generated'] = 'generat a';
$labels['eventhistory'] = 'Historial';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Imprimeix descripcions';
$labels['parentcalendar'] = 'Insereix dins';
$labels['searchearlierdates'] = '« Cerca els esdeveniments d\'abans';
$labels['searchlaterdates'] = 'Cerca els esdeveniments de després »';
$labels['andnmore'] = '$nr més...';
$labels['togglerole'] = 'Feu clic per commutar el rol';
$labels['createfrommail'] = 'Desa com a esdeveniment';
$labels['importevents'] = 'Importa esdeveniments';
$labels['importrange'] = 'Esdeveniments de';
$labels['onemonthback'] = '1 mes abans';
$labels['nmonthsback'] = '$nr mesos abans';
$labels['showurl'] = 'Mostra la URL del calendari';
$labels['showurldescription'] = 'Podeu fer servir aquesta adreça per accedir (només lectura) el vostre calendari des d\'altres aplicacions. Copieu i enganxeu-la dins d\'un altre programari de calendari que suporti el format iCal.';
$labels['caldavurldescription'] = 'Copieu aquesta adreça a una aplicació client <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (p.ex.: Evolution o Mozilla Thunderbird) per sincronitzar aquest calendari amb el vostre ordinador o dispositiu mòbil.';
$labels['findcalendars'] = 'Cerca calendaris...';
$labels['searchterms'] = 'Termes de cerca';
$labels['calsearchresults'] = 'Calendaris disponibles';
$labels['calendarsubscribe'] = 'Llista permanentment';
$labels['nocalendarsfound'] = 'No s\'ha trobat cap calendari';
$labels['nrcalendarsfound'] = 'S\'han trobat $nr calendaris';
$labels['quickview'] = 'Mostra només aquest calendari';
$labels['invitationspending'] = 'Invitacions pendents';
$labels['invitationsdeclined'] = 'Invitacions declinades';
$labels['changepartstat'] = 'Canvia l\'estat d\'un participant';
$labels['rsvpcomment'] = 'Text d\'invitació';
$labels['listrange'] = 'Rang per mostrar:';
$labels['listsections'] = 'Divideix en:';
$labels['smartsections'] = 'Seccions petites';
$labels['until'] = 'fins';
$labels['today'] = 'Avui';
$labels['tomorrow'] = 'Demà';
$labels['thisweek'] = 'Aquesta setmana';
$labels['nextweek'] = 'Setmana vinent';
$labels['prevweek'] = 'Setmana anterior';
$labels['thismonth'] = 'Aquest mes';
$labels['nextmonth'] = 'Mes vinent';
$labels['weekofyear'] = 'Setmana';
$labels['pastevents'] = 'Passat';
$labels['futureevents'] = 'Futur';
$labels['showalarms'] = 'Mostra els recordatoris';
$labels['defaultalarmtype'] = 'Recordatori per defecte';
$labels['defaultalarmoffset'] = 'Temps de recordatori per defecte';
$labels['attendee'] = 'Participant';
$labels['role'] = 'Rol';
$labels['availability'] = 'Disp.';
$labels['confirmstate'] = 'Estat';
$labels['addattendee'] = 'Afegeix participant';
$labels['roleorganizer'] = 'Organitzador';
$labels['rolerequired'] = 'Obligatori';
$labels['roleoptional'] = 'Opcional';
$labels['rolechair'] = 'President';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Grup';
$labels['cutyperesource'] = 'Recurs';
$labels['cutyperoom'] = 'Sala';
$labels['availfree'] = 'Lliure';
$labels['availbusy'] = 'Ocupat';
$labels['availunknown'] = 'Desconegut';
$labels['availtentative'] = 'Provisional';
$labels['availoutofoffice'] = 'Fora de l\'oficina';
$labels['delegatedto'] = 'Delegat a:';
$labels['delegatedfrom'] = 'Delegat de:';
$labels['scheduletime'] = 'Cerca disponibilitat';
$labels['sendinvitations'] = 'Envia invitacions';
$labels['sendnotifications'] = 'Notifica als participants quan hi hagi modificacions';
$labels['sendcancellation'] = 'Notifica als participants si es cancel·la l\'esdeveniment';
$labels['onlyworkinghours'] = 'Cerca disponibilitat dins de les hores de feina';
$labels['reqallattendees'] = 'Obligatori/tots els participants';
$labels['prevslot'] = 'Lloc anterior';
$labels['nextslot'] = 'Lloc següent';
$labels['suggestedslot'] = 'Lloc suggerit';
$labels['noslotfound'] = 'No s\'ha pogut trobar un espai de temps lliure';
$labels['invitationsubject'] = 'Heu estat convidats a "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nQuan: \$date\n\nConvidats: \$attendees\n\nSi us plau cerqueu el fitxer iCalendar adjunt dins dels detalls de l'esdeveniment per poder-lo importar a la vostra aplicació de calendari.";
$labels['invitationattendlinks'] = "En cas que el vostre client de correu electrònic no suporti peticions de tipus iTip, podeu fer servir el següent enllaç per acceptar o declinar aquesta invitació:\n\$url";
$labels['eventupdatesubject'] = '"$title" ha estat actualitzat';
$labels['eventupdatesubjectempty'] = 'Un esdeveniment que us afecta ha estat actualitzat';
$labels['eventupdatemailbody'] = "*\$title*\n\nQuan: \$date\n\nConvidats: \$attendees\n\nSi us plau cerqueu el fitxer iCalendar adjunt dins dels detalls actualitzats de l'esdeveniment per poder-lo importar a la vostra aplicació de calendari.";
$labels['eventcancelsubject'] = '"$title" ha estat cancel·lat';
$labels['eventcancelmailbody'] = "*\$title*\n\nQuan: \$date\n\nConvidats: \$attendees\n\nL'esdeveniment ha estat cancel·lat per \$organizer.\n\nSi us plau cerqueu el fitxer iCalendar adjunt amb els detalls actualitzats de l'esdeveniment.";
$labels['itipobjectnotfound'] = 'L\'esdeveniment que fa referència aquest missatge no s\'ha trobat al vostre calendari.';
$labels['itipmailbodyaccepted'] = "\$sender ha acceptat la invitació al següent esdeveniment:\n\n*\$title*\n\nQuan: \$date\n\nConvidats: \$attendees";
$labels['itipmailbodytentative'] = "\$sender ha acceptat provisionalment la invitació al següent esdeveniment:\n\n*\$title*\n\nQuan: \$date\n\nConvidats: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender ha declinat la invitació al següent esdeveniment:\n\n*\$title*\n\nQuan: \$date\n\nConvidats: \$attendees";
$labels['itipmailbodycancel'] = "\$sender ha rebutjat la vostra participació en el següent esdeveniment:\n\n*\$title*\n\nQuan: \$date";
$labels['itipdeclineevent'] = 'Voleu declinar la vostra invitació a aquest esdeveniment?';
$labels['declinedeleteconfirm'] = 'Voleu també suprimir aquest esdeveniment declinat del vostre calendari?';
$labels['itipcomment'] = 'Comentari de la invitació/notificació';
$labels['itipcommenttitle'] = 'Aquest comentari serà adjuntat al missatge d\'invitació/notificació que s\'envia als participants';
$labels['notanattendee'] = 'No sou a la llista d\'assistents d\'aquest esdeveniment';
$labels['eventcancelled'] = 'L\'esdeveniment s\'ha cancel·lat.';
$labels['saveincalendar'] = 'desa a';
$labels['updatemycopy'] = 'Actualitza en el meu calendari';
$labels['savetocalendar'] = 'Desa al calendari';
$labels['resource'] = 'Recurs';
$labels['addresource'] = 'Recurs de llibre';
$labels['findresources'] = 'Cerca recursos';
$labels['resourcedetails'] = 'Detalls';
$labels['resourceavailability'] = 'Disponibilitat';
$labels['resourceowner'] = 'Propietari';
$labels['resourceadded'] = 'El recurs ha estat afegit al vostre esdeveniment';
$labels['tabsummary'] = 'Resum';
$labels['tabrecurrence'] = 'Periodicitat';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Recursos';
$labels['tabattachments'] = 'Fitxers adjunts';
$labels['tabsharing'] = 'Compartit';
$labels['deleteobjectconfirm'] = 'Esteu segur de voler suprimir aquest esdeveniment?';
$labels['deleteventconfirm'] = 'Esteu segur de voler suprimir aquest esdeveniment?';
$labels['deletecalendarconfirm'] = 'Esteu segurs de voler suprimir aquest calendari amb tots els seus esdeveniments?';
$labels['deletecalendarconfirmrecursive'] = 'Esteu segurs de voler suprimir aquest calendari amb tots els seus esdeveniments i sub-calendaris?';
$labels['savingdata'] = 'S\'estan desant les dades...';
$labels['errorsaving'] = 'No s\'han pogut desar els canvis.';
$labels['operationfailed'] = 'L\'operació sol·licitada ha fallat.';
$labels['invalideventdates'] = 'Les dades entrades no són vàlides!. Si us plau verifiqueu l\'entrada.';
$labels['invalidcalendarproperties'] = 'Les propietats del calendari no són vàlides!. Si us plau introduïu un nom vàlid.';
$labels['searchnoresults'] = 'No s\'ha trobat cap esdeveniment en els calendaris seleccionats.';
$labels['successremoval'] = 'L\'esdeveniment ha estat suprimit correctament.';
$labels['successrestore'] = 'L\'esdeveniment ha estat recuperat correctament.';
$labels['errornotifying'] = 'No s\'ha pogut enviar les notificacions als participants de l\'esdeveniment';
$labels['errorimportingevent'] = 'No s\'ha pogut importar aquest esdeveniment';
$labels['importwarningexists'] = 'Ja existeix una còpia d\'aquest esdeveniment al vostre calendari.';
$labels['newerversionexists'] = 'Ja existeix una nova versió d\'aquest esdeveniment!. S\'ha avortat.';
$labels['nowritecalendarfound'] = 'No s\'ha trobat el calendari per desar l\'esdeveniment';
$labels['importedsuccessfully'] = 'L\'esdeveniment ha estat correctament afegit a \'$calendar\'';
$labels['updatedsuccessfully'] = 'L\'esdeveniment ha estat correctament actualitzat dins de \'$calendar\'';
$labels['attendeupdateesuccess'] = 'L\'estat del participant ha estat actualitzat correctament';
$labels['itipsendsuccess'] = 'La invitació ha estat enviada als participants.';
$labels['itipresponseerror'] = 'No s\'ha pogut enviar la resposta a la invitació d\'aquest esdeveniment';
$labels['itipinvalidrequest'] = 'Aquesta invitació ja no és vàlida';
$labels['sentresponseto'] = 'S\'ha enviat correctament la resposta de la invitació a $mailto';
$labels['localchangeswarning'] = 'Esteu a punt de fer canvis que només seran reflectits al vostre calendari i no seran enviats a l\'organitzador de l\'esdeveniment.';
$labels['importsuccess'] = 'S\'han importat correctament $nr esdeveniments';
$labels['importnone'] = 'No s\'ha trobat cap esdeveniment per importar';
$labels['importerror'] = 'Hi ha hagut un error mentre s\'importava';
$labels['aclnorights'] = 'No teniu drets d\'administrador en aquest calendari.';
$labels['changeeventconfirm'] = 'Canvia l\'esdeveniment';
$labels['changerecurringeventwarning'] = 'Aquest és un esdeveniment periòdic. Voleu editar només l\'esdeveniment actual, aquesta i totes les futures ocurrències, totes les ocurrències o desar-lo com un esdeveniment nou?';
$labels['currentevent'] = 'Actual';
$labels['futurevents'] = 'Futurs';
$labels['allevents'] = 'Tots';
$labels['saveasnew'] = 'Desa com a nou';
$labels['birthdays'] = 'Aniversaris';
$labels['birthdayscalendar'] = 'Calendari d\'aniversaris';
$labels['displaybirthdayscalendar'] = 'Mostra el calendari d\'aniversaris';
$labels['birthdayscalendarsources'] = 'D\'aquestes llibretes d\'adreces';
$labels['birthdayeventtitle'] = 'Aniversari de $name';
$labels['birthdayage'] = 'Edat $age';
$labels['eventchangelog'] = 'Canvia historial';
$labels['eventdiff'] = 'Canvis de revisions $rev';
$labels['revision'] = 'Revisió';
$labels['user'] = 'Usuari';
$labels['operation'] = 'Acció';
$labels['actionappend'] = 'Desat';
$labels['actionmove'] = 'Mogut';
$labels['actiondelete'] = 'Suprimit';
$labels['compare'] = 'Compara';
$labels['showrevision'] = 'Mostra aquesta versió';
$labels['restore'] = 'Restaura aquesta versió';
$labels['eventnotfound'] = 'No s\'han pogut carregar les dades d\'aquest esdeveniment';
$labels['eventchangelognotavailable'] = 'No està disponible canviar l\'historial d\'aquest esdeveniment';
$labels['eventdiffnotavailable'] = 'No és possible comparar les revisions seleccionades';
$labels['eventrestoreconfirm'] = 'Esteu segurs de voler restaurar la revisió $rev d\'aquest esdeveniment? Això substituirà l\'actual esdeveniment per una versió antiga.';
$labels['arialabelminical'] = 'Selecció de la data del calendari';
$labels['arialabelcalendarview'] = 'Vista del calendari';
$labels['arialabelsearchform'] = 'Formulari per cercar esdeveniments';
$labels['arialabelquicksearchbox'] = 'Entrada de cerca d\'esdeveniments';
$labels['arialabelcalsearchform'] = 'Formulari de cerca de calendaris';
$labels['calendaractions'] = 'Accions del calendari';
$labels['arialabeleventattendees'] = 'Llista de participants de l\'esdeveniment';
$labels['arialabeleventresources'] = 'Llista de recursos de l\'esdeveniment';
$labels['arialabelresourcesearchform'] = 'Formulari de cerca de recursos';
$labels['arialabelresourceselection'] = 'Recursos disponibles';
?>

View file

@ -1,18 +1,15 @@
<?php
$labels = array();
// config
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Výchozí pohled';
$labels['time_format'] = 'Formát data';
$labels['timeslots'] = 'Slotů na hodinu';
$labels['timeslots'] = 'Míst v rozvrhu na hodinu';
$labels['first_day'] = 'První den v týdnu';
// preferences
$labels['default_view'] = 'Výchozí pohled';
$labels['time_format'] = 'Formát času';
$labels['timeslots'] = 'Slotů na hodinu';
$labels['first_day'] = 'První den týdne';
$labels['first_hour'] = 'První hodina k zobrazení';
$labels['workinghours'] = 'Pracovní hodiny';
$labels['add_category'] = 'Přidat kategorii';
@ -23,8 +20,13 @@ $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['afternothing'] = 'Nedělat nic';
$labels['aftertrash'] = 'Přesunout do koše';
$labels['afterdelete'] = 'Smazat zprávu';
$labels['afterflagdeleted'] = 'Označit jako smazané';
$labels['aftermoveto'] = 'Přesunout do...';
$labels['itipoptions'] = 'Pozvání na událost';
$labels['afteraction'] = 'Poté co jsou pozvání nebo aktualizace zprávy zpracovány';
$labels['calendar'] = 'Kalendář';
$labels['calendars'] = 'Kalendáře';
$labels['category'] = 'Kategorie';
@ -42,7 +44,7 @@ $labels['new_event'] = 'Nová událost';
$labels['edit_event'] = 'Upravit událost';
$labels['edit'] = 'Upravit';
$labels['save'] = 'Uložit';
$labels['remove'] = 'Odstranit';
$labels['removelist'] = 'Odstranit ze seznamu';
$labels['cancel'] = 'Storno';
$labels['select'] = 'Vybrat';
$labels['print'] = 'Tisk';
@ -50,40 +52,69 @@ $labels['printtitle'] = 'Vytisknout kalendáře';
$labels['title'] = 'Souhrn';
$labels['description'] = 'Popis';
$labels['all-day'] = 'celý den';
$labels['export'] = 'Exportovat do ICS';
$labels['exporttitle'] = 'Exportovat souhrn do ICS';
$labels['export'] = 'Uložit jako ICS';
$labels['exporttitle'] = 'Uložit jako iCalendar';
$labels['exportrange'] = 'Události od';
$labels['exportattachments'] = 'S přílohami';
$labels['customdate'] = 'Vlastní datum';
$labels['location'] = 'Místo';
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Začátek';
$labels['starttime'] = 'Začáteční čas';
$labels['end'] = 'Konec';
$labels['endtime'] = 'Čas konce';
$labels['repeat'] = 'Opakování';
$labels['selectdate'] = 'Vyberte datum';
$labels['freebusy'] = 'Zobrazovat časový úsek jako';
$labels['freebusy'] = 'Zobrazovat jako';
$labels['free'] = 'volno';
$labels['busy'] = 'obsazeno';
$labels['outofoffice'] = 'mimo kancelář';
$labels['tentative'] = 'nezávazně';
$labels['priority'] = 'Priorita';
$labels['mystatus'] = 'Můj stav';
$labels['status'] = 'Stav';
$labels['status-confirmed'] = 'Potvrzeno';
$labels['status-cancelled'] = 'Zrušeno';
$labels['priority'] = 'Přednost';
$labels['sensitivity'] = 'Soukromí';
$labels['public'] = 'veřejné';
$labels['private'] = 'soukromé';
$labels['confidential'] = 'důvěrné';
$labels['links'] = 'Odkaz';
$labels['alarms'] = 'Připomenutí';
$labels['generated'] = 'vygenerováno';
$labels['comment'] = 'Poznámka';
$labels['created'] = 'Vytvořeno';
$labels['changed'] = 'Naposledy změněno';
$labels['unknown'] = 'Neznámý';
$labels['eventoptions'] = 'Volby';
$labels['generated'] = 'vytvořeno';
$labels['eventhistory'] = 'Historie';
$labels['removelink'] = 'Odstranit odkaz na e-mail';
$labels['printdescriptions'] = 'Vytisknout popisy';
$labels['parentcalendar'] = 'Vložit dovnitř';
$labels['searchearlierdates'] = '« Hledat dřívější události';
$labels['searchlaterdates'] = 'Hledat pozdější události »';
$labels['andnmore'] = 'dalších $nr...';
$labels['togglerole'] = 'Klikněte k přepnutí role';
$labels['togglerole'] = 'Klepněte k přepnutí role';
$labels['createfrommail'] = 'Uložit jako událost';
$labels['importevents'] = 'Importovat události';
$labels['importevents'] = 'Zavést události';
$labels['importrange'] = 'Události od';
$labels['onemonthback'] = '1 měsíc nazpátek';
$labels['nmonthsback'] = '$nr měsíců nazpátek';
$labels['showurl'] = 'Ukázat URL kalendáře';
$labels['showurl'] = 'Ukázat adresu (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.';
// agenda view
$labels['caldavurldescription'] = 'Zkopírujte tuto adresu do aplikace <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> klienta (např. Evolution nebo Mozilla Thunderbird) pro úplné synchronizování tohoto adresáře s vaším počítačem nebo mobilním zařízením.';
$labels['findcalendars'] = 'Najít kalendáře...';
$labels['searchterms'] = 'Hledané výrazy';
$labels['calsearchresults'] = 'Dostupné kalendáře';
$labels['calendarsubscribe'] = 'Ukazovat seznam trvale';
$labels['nocalendarsfound'] = 'Nenalezeny žádné kalendáře';
$labels['nrcalendarsfound'] = '$nr kalendářů nalezeno';
$labels['quickview'] = 'Zobrazit jen tento kalendář';
$labels['invitationspending'] = 'Pozvání čekající na vyřízení';
$labels['invitationsdeclined'] = 'Odmítnutá pozvání';
$labels['changepartstat'] = 'Změnit stav příjemce';
$labels['rsvpcomment'] = 'Text pozvánky';
$labels['listrange'] = 'Rozsah k zobrazení:';
$labels['listsections'] = 'Rozdělit na:';
$labels['smartsections'] = 'Chytré sekce';
@ -92,18 +123,15 @@ $labels['today'] = 'Dnes';
$labels['tomorrow'] = 'Zítra';
$labels['thisweek'] = 'Tento týden';
$labels['nextweek'] = 'Příští týden';
$labels['prevweek'] = 'Předchozí týden';
$labels['thismonth'] = 'Tento měsíc';
$labels['nextmonth'] = 'Příští měsíc';
$labels['weekofyear'] = 'Týden';
$labels['pastevents'] = 'Minulost';
$labels['futureevents'] = 'Budoucnost';
// alarm/reminder settings
$labels['showalarms'] = 'Zobrazit upozornění';
$labels['showalarms'] = 'Ukázat připomenutí';
$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.';
@ -112,67 +140,74 @@ $labels['addattendee'] = 'Přidat účastníka';
$labels['roleorganizer'] = 'Organizátor';
$labels['rolerequired'] = 'Povinný';
$labels['roleoptional'] = 'Nepovinný';
$labels['roleresource'] = 'Prostředek';
$labels['availfree'] = 'volno';
$labels['availbusy'] = 'obsazeno';
$labels['availunknown'] = 'neznámý';
$labels['availtentative'] = 'nezávazně';
$labels['availoutofoffice'] = 'mimo kancelář';
$labels['rolechair'] = 'Předsednictví';
$labels['rolenonparticipant'] = 'Nepřítomný';
$labels['cutypeindividual'] = 'Jednotlivec';
$labels['cutypegroup'] = 'Skupina';
$labels['cutyperesource'] = 'Zdroj';
$labels['cutyperoom'] = 'Místnost';
$labels['availfree'] = 'Volno';
$labels['availbusy'] = 'Obsazeno';
$labels['availunknown'] = 'Neznámý';
$labels['availtentative'] = 'Nezávazně';
$labels['availoutofoffice'] = 'Mimo kancelář';
$labels['delegatedto'] = 'Pověřený:';
$labels['delegatedfrom'] = 'Pověřující:';
$labels['scheduletime'] = 'Najít dostupnost';
$labels['sendinvitations'] = 'Poslat pozvánky';
$labels['sendnotifications'] = 'Uvědomit účastníky o změnách';
$labels['sendcancellation'] = 'Uvědomit účastníky o zrušení události';
$labels['onlyworkinghours'] = 'Najít dostupnost v mé pracovní době';
$labels['reqallattendees'] = 'Povinní/všichni účastníci';
$labels['prevslot'] = 'Předchozí slot';
$labels['nextslot'] = 'Další slot';
$labels['noslotfound'] = 'Nelze najít volný slot';
$labels['prevslot'] = 'Předchozí místo v rozvrhu';
$labels['nextslot'] = 'Další místo v rozvrhu';
$labels['suggestedslot'] = 'Navržené místo v rozvrhu';
$labels['noslotfound'] = 'Nelze najít volné místo v rozvrhu';
$labels['invitationsubject'] = 'Byl(a) jste pozván(a) na událost "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees\n\nPodrobnosti o události najdete v přiloženém souboru typu iCalendar. Můžete si ho naimportovat do kalendářového programu.";
$labels['invitationmailbody'] = "*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees\n\nPodrobnosti o události najdete v přiloženém souboru typu iCalendar. Můžete si ho zavést do kalendářového programu.";
$labels['invitationattendlinks'] = "Pokud váš poštovní klient nepodporuje pozvánky iTip, použijte prosím následující odkaz k potvrzení nebo odmítnutí pozvání:\n\$url";
$labels['eventupdatesubject'] = 'Událost "$title" byla aktualizována';
$labels['eventupdatesubjectempty'] = 'Událost, která se vás týká, byla aktualizována';
$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['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 zavést 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.";
// invitation handling
$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['itipobjectnotfound'] = 'Událost, na který tato zpráva odkazuje, nebyl nalezen ve vašem kalendáři.';
$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['itipmailbodycancel'] = "\$sender odmítl vaši účast na následující události:\n\n*\$title*\n\nTermín: \$date";
$labels['itipmailbodydelegated'] = "\$sender delegoval účast na následující události:\n\n*\$title*\n\nTermín: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender delegoval účast na následující události na vás:\n\n*\$title*\n\nTermín: \$date";
$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'] = 'Chcete také ze svého kalendáře smazat tuto odmítnutou událost?';
$labels['itipcomment'] = 'Poznámka k pozvání/oznámení';
$labels['itipcommenttitle'] = 'Tato poznámka bude připojena ke zprávě s pozváním/oznámením poslané účastníkům';
$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['updatemycopy'] = 'Aktualizovat v mém kalendáři';
$labels['savetocalendar'] = 'Uložit do kalenáře';
$labels['openpreview'] = 'Ověřit kalendář';
$labels['noearlierevents'] = 'Žádné dřívější události';
$labels['nolaterevents'] = 'Žádné pozdější události';
$labels['resource'] = 'Zdroj';
$labels['addresource'] = 'Zapsat zdroj';
$labels['findresources'] = 'Najít zdroje';
$labels['resourcedetails'] = 'Podrobnosti';
$labels['resourceavailability'] = 'Dostupnost';
$labels['resourceowner'] = 'Vlastník';
$labels['resourceadded'] = 'Zdroj byl přidán do vaší události';
$labels['tabsummary'] = 'Souhrn';
$labels['tabrecurrence'] = 'Opakování';
$labels['tabattendees'] = 'Účastníci';
$labels['tabresources'] = 'Zdroje';
$labels['tabattachments'] = 'Přílohy';
$labels['tabsharing'] = 'Sdílení';
// messages
$labels['deleteobjectconfirm'] = 'Opravdu chcete smazat tuto událost?';
$labels['deleteventconfirm'] = 'Opravdu chcete smazat tuto událost?';
$labels['deletecalendarconfirm'] = 'Opravdu chcete smazat tento kalendář se všemi událostmi?';
$labels['savingdata'] = 'Ukládám data...';
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
$labels['savingdata'] = 'Ukládají se data...';
$labels['errorsaving'] = 'Nelze uložit změny.';
$labels['operationfailed'] = 'Požavovaná operace selhala.';
$labels['invalideventdates'] = 'Vložená data nejsou platná! Zkontrolujte prosím zadávané údaje.';
@ -181,55 +216,59 @@ $labels['searchnoresults'] = 'Ve vybraných kalendářích nebyly nalezeny žád
$labels['successremoval'] = 'Událost byla úspěšně smazána.';
$labels['successrestore'] = 'Událost byla úspěšně obnovena.';
$labels['errornotifying'] = 'Nelze odeslat notifikace účastníkům události';
$labels['errorimportingevent'] = 'Nelze naimportovat událost';
$labels['errorimportingevent'] = 'Událost se nepodařilo zavést';
$labels['importwarningexists'] = 'Kopie této události již ve vašem kalendáři existuje.';
$labels['newerversionexists'] = 'Existuje již novější verze této události! Operace byla zrušena.';
$labels['nowritecalendarfound'] = 'Nebyl nalezen žádný kalendář, do kterého by šlo uložit tuto událost.';
$labels['importedsuccessfully'] = 'Událost byla úspěšně přidána do kalendáře \'$calendar\'';
$labels['updatedsuccessfully'] = 'Událost byla úspěšně aktualizována v \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Stav účastníka byl úspěšně aktualizován';
$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'] = 'Chystáte se provést změny, které se projeví jen ve vašem vlastním kalendáři a nelze je poslat organizátorovi události.';
$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['localchangeswarning'] = 'Chystáte se provést změny, které se projeví jen ve vašem vlastním kalendáři a nebudou poslány organizátorovi události.';
$labels['importsuccess'] = 'Úspěšně zavedeno $nr událostí';
$labels['importnone'] = 'Nebyly nalezeny žádné události k zavedení';
$labels['importerror'] = 'Při zavádění 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';
$labels['daily'] = 'denně';
$labels['weekly'] = 'týdně';
$labels['monthly'] = 'měsíčně';
$labels['yearly'] = 'ročně';
$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'] = ' ';
$labels['untildate'] = 'do';
$labels['each'] = 'Každý';
$labels['onevery'] = 'Vždy v';
$labels['onsamedate'] = 'Ve stejné datum';
$labels['forever'] = 'trvale';
$labels['recurrencend'] = 'do';
$labels['forntimes'] = 'jen $nrkrát';
$labels['first'] = 'první';
$labels['second'] = 'druhý';
$labels['third'] = 'třetí';
$labels['fourth'] = 'čtvrtý';
$labels['last'] = 'poslední';
$labels['dayofmonth'] = 'Den v měsíci';
$labels['changeeventconfirm'] = 'Změnit událost';
$labels['removeeventconfirm'] = 'Odstranit událost';
$labels['removeeventconfirm'] = 'Smazat 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?';
$labels['removerecurringeventwarning'] = 'Toto je opakovaná událost. Chcete odstranit jen toto konání, toto a následující konání nebo úplně všechna konání této události?';
$labels['currentevent'] = 'Aktuální';
$labels['removerecurringeventwarning'] = 'Toto je opakovaná událost. Chcete smazat jen toto konání, toto a všechna následující konání, nebo úplně všechna konání?';
$labels['currentevent'] = 'Nynější';
$labels['futurevents'] = 'Budoucí';
$labels['allevents'] = 'Všechny';
$labels['allevents'] = 'Vše';
$labels['saveasnew'] = 'Uložit jako novou';
$labels['birthdays'] = 'Narozeniny';
$labels['birthdayscalendar'] = 'Kalendář narozenin';
$labels['displaybirthdayscalendar'] = 'Zobrazit kalendář narozenin';
$labels['birthdayscalendarsources'] = 'Z těchto adresářů';
$labels['birthdayeventtitle'] = 'Narozeniny $name';
$labels['birthdayage'] = 'Věk $age';
$labels['eventchangelog'] = 'Historie změn';
$labels['eventdiff'] = 'Změny od verze $rev';
$labels['revision'] = 'Verze';
$labels['user'] = 'Uživatel';
$labels['operation'] = 'Činnost';
$labels['actionappend'] = 'Uloženo';
$labels['actionmove'] = 'Přesunuto';
$labels['actiondelete'] = 'Smazáno';
$labels['compare'] = 'Porovnat';
$labels['showrevision'] = 'Ukázat tuto verzi';
$labels['restore'] = 'Obnovit tuto verzi';
$labels['eventnotfound'] = 'Nepodařilo se nahrát data události';
$labels['eventchangelognotavailable'] = 'Historie změn není pro tuto událost dostupná';
$labels['eventdiffnotavailable'] = 'Pro vybrané verze není žádné srovnání možné';
$labels['eventrestoreconfirm'] = 'Opravdu chcete obnovit změnu $rev této události? Tímto dojde k nahrazení nynější události starou verzí.';
$labels['arialabelminical'] = 'Výběr data v kalendáři';
$labels['arialabelcalendarview'] = 'Pohled na kalendář';
$labels['arialabelsearchform'] = 'Hledání události';
$labels['arialabelquicksearchbox'] = 'Zadání hledání události';
$labels['arialabelcalsearchform'] = 'Hledání kalendářů';
$labels['calendaractions'] = 'Činnosti v kalendáři';
$labels['arialabeleventattendees'] = 'Seznam účastníků události';
$labels['arialabeleventresources'] = 'Seznam zdrojů události';
$labels['arialabelresourcesearchform'] = 'Hledání zdrojů';
$labels['arialabelresourceselection'] = 'Dostupné zdroje';
?>

204
localization/da_DK.inc Normal file
View file

@ -0,0 +1,204 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Standardvisning';
$labels['time_format'] = 'Tidsformat';
$labels['first_day'] = 'Første ugedag';
$labels['first_hour'] = 'Første time som vises';
$labels['workinghours'] = 'Arbejdstider';
$labels['add_category'] = 'Tilføj kategori';
$labels['remove_category'] = 'Fjern kategori';
$labels['defaultcalendar'] = 'Opret nye arragementer i';
$labels['eventcoloring'] = 'Farver for arrangementer';
$labels['coloringmode0'] = 'Ifølge kalender';
$labels['coloringmode1'] = 'Ifølge kategori';
$labels['coloringmode2'] = 'Kalender til oversigt, kategori til indhold';
$labels['coloringmode3'] = 'Kategori til oversigt, kalender til indhold';
$labels['calendar'] = 'Kalender';
$labels['calendars'] = 'Kalendere';
$labels['category'] = 'Kategori';
$labels['categories'] = 'Kategorier';
$labels['createcalendar'] = 'Opret ny kalender';
$labels['editcalendar'] = 'Redigér kalenderegenskaber';
$labels['name'] = 'Navn';
$labels['color'] = 'Farve';
$labels['day'] = 'Dag';
$labels['week'] = 'Uge';
$labels['month'] = 'Måned';
$labels['agenda'] = 'Dagsorden';
$labels['new'] = 'Ny';
$labels['new_event'] = 'Nyt arrangement';
$labels['edit_event'] = 'Redigér arrangement';
$labels['edit'] = 'Redigér';
$labels['save'] = 'Gem';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Annullér';
$labels['select'] = 'Vælg';
$labels['print'] = 'Udskriv';
$labels['printtitle'] = 'Udskriv kalendere';
$labels['title'] = 'Resumé';
$labels['description'] = 'Beskrivelse';
$labels['all-day'] = 'hele-dagen';
$labels['export'] = 'Eksport';
$labels['exporttitle'] = 'Eksportér til iCalendar';
$labels['exportrange'] = 'Arrangementer fra';
$labels['exportattachments'] = 'Med vedhæftninger';
$labels['customdate'] = 'Brugerdefineret dato';
$labels['location'] = 'Placering';
$labels['url'] = 'URL';
$labels['date'] = 'Dato';
$labels['start'] = 'Start';
$labels['starttime'] = 'Start time';
$labels['end'] = 'Slut';
$labels['repeat'] = 'Gentag';
$labels['selectdate'] = 'Vælg dato';
$labels['freebusy'] = 'Vis mig som';
$labels['free'] = 'Ledig';
$labels['busy'] = 'Optaget';
$labels['outofoffice'] = 'Ikke på kontoret';
$labels['tentative'] = 'Forsøgsvis';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Bekræftet';
$labels['status-cancelled'] = 'Annulleret';
$labels['priority'] = 'Prioritet';
$labels['sensitivity'] = 'Privatliv';
$labels['public'] = 'offentlig';
$labels['private'] = 'privat';
$labels['confidential'] = 'fortrolig';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Påmindelse';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Ukendt';
$labels['eventoptions'] = 'Tilvalg';
$labels['generated'] = 'oprettet per';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Udskriv beskrivelser';
$labels['parentcalendar'] = 'Indsæt indeni';
$labels['searchearlierdates'] = '« Søg efter tidligere arrangementer';
$labels['searchlaterdates'] = 'Søg efter senere arrangementer »';
$labels['andnmore'] = '$nr flere...';
$labels['togglerole'] = 'Klik for at vise eller skjule rolle';
$labels['createfrommail'] = 'Gem som arrangement';
$labels['importevents'] = 'Importér arrangement';
$labels['importrange'] = 'Arrangementer fra';
$labels['onemonthback'] = '1 måned tilbage';
$labels['nmonthsback'] = '$nr måneder tilbage';
$labels['showurl'] = 'Vis kalenderens URL';
$labels['showurldescription'] = 'Brug følgende adresse for at tilgå din kalender (skrivebeskyttet) fra andre programmer. Du kan kopiere og indsætet denne i ethvert kalenderprogram, der understøtter iCal-formatet.';
$labels['caldavurldescription'] = 'Kopiér denne adresse til en <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a>-klientprogram (eks. Evolution eller Mozilla Thunderbird) for at synkronisere denne kalender komplet med din computer eller mobilenhed.';
$labels['searchterms'] = 'Search terms';
$labels['calendarsubscribe'] = 'List permanently';
$labels['listrange'] = 'Interval som skal vises:';
$labels['listsections'] = 'Del op i:';
$labels['smartsections'] = 'Smarte sektioner';
$labels['until'] = 'indtil';
$labels['today'] = 'I dag';
$labels['tomorrow'] = 'I morgen';
$labels['thisweek'] = 'Denne uge';
$labels['nextweek'] = 'Næste uge';
$labels['thismonth'] = 'Denne måned';
$labels['nextmonth'] = 'Næste måned';
$labels['weekofyear'] = 'Uge';
$labels['pastevents'] = 'Tidligere';
$labels['futureevents'] = 'Fremtid';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Standardindstilling for påmindelse';
$labels['defaultalarmoffset'] = 'Standardtidspunkt for påmindelse';
$labels['attendee'] = 'Deltager';
$labels['role'] = 'Rolle';
$labels['availability'] = 'Tilg.';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Tilføj deltager';
$labels['roleorganizer'] = 'Organisator';
$labels['rolerequired'] = 'Påkrævet';
$labels['roleoptional'] = 'Valgfri';
$labels['rolechair'] = 'Formand';
$labels['cutypeindividual'] = 'Individuel';
$labels['cutypegroup'] = 'Gruppe';
$labels['cutyperesource'] = 'Ressource';
$labels['cutyperoom'] = 'Lokale';
$labels['availfree'] = 'Ledig';
$labels['availbusy'] = 'Optaget';
$labels['availunknown'] = 'Ukendt';
$labels['availtentative'] = 'Forsøgsvis';
$labels['availoutofoffice'] = 'Ikke på kontoret';
$labels['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$labels['scheduletime'] = 'Find ledigt tidspunkt';
$labels['sendinvitations'] = 'Send invitationer';
$labels['sendnotifications'] = 'Gør deltagere opmærksom på ændringer';
$labels['sendcancellation'] = 'Giv deltagere besked om aflysning af arrangementer';
$labels['onlyworkinghours'] = 'Find ledigt tidspunkt inden for mine arbejdstider';
$labels['reqallattendees'] = 'Påkrævet/alle deltagere';
$labels['prevslot'] = 'Forrige blok';
$labels['nextslot'] = 'Næste blok';
$labels['noslotfound'] = 'Kunne ikke finde en ledig tidsblok';
$labels['invitationsubject'] = 'Du er blevet inviteret til "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nTidspunkt: \$date\n\nInviterede: \$attendees\n\nBemærk venligst vedhæftede iCalendar-fil med alle detaljer om arrangementet, som du kan importere til dit kalenderprogram.";
$labels['invitationattendlinks'] = "Hvis dit e-postprogram ikke understøtter iTip-forespørgsler, så kan du benytte følgende henvisning til enten at acceptere eller afvise denne invitation:\n\$url";
$labels['eventupdatesubject'] = '"$title" er blevet opdateret';
$labels['eventupdatesubjectempty'] = 'Et arrangement der vedrører dig er blevet opdateret';
$labels['eventupdatemailbody'] = "*\$title*\n\nTidspunkt: \$date\n\nInviterede: \$attendees\n\nBemærk venligst vedhæftede iCalendar-fil med alle detaljer om arrangementet, som du kan importere til dit kalenderprogram.";
$labels['eventcancelsubject'] = '"$title" er blevet aflyst';
$labels['eventcancelmailbody'] = "*\$title*\n\nTidspunkt: \$date\n\nInviterede: \$attendees\n\nDette arrangement er blevet aflyst af \$organizer.\n\nBemærk venligst vedhæftede iCalendard-fil med de opdaterede detaljer om arrangementet.";
$labels['itipmailbodyaccepted'] = "\$sender har accepteret invitationen til det følgende arrangement:\n\n*\$title*\n\nTidspunkt: \$date\n\nInviterede: \$attendees";
$labels['itipmailbodytentative'] = "\$sender har forsøgsvist accepteret invitationen til det følgende arrangement:\n\n*\$title*\n\nTidspunkt: \$date\n\nInviterede: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender har afvist invitationen til det følgende arrangement:\n\n*\$title*\n\nTidspunkt: \$date\n\nInviterede: \$attendees";
$labels['itipdeclineevent'] = 'Sikker på at du vil afvise dette arrangement?';
$labels['declinedeleteconfirm'] = 'Vil du også slette dette afviste arrangement fra din kalender?';
$labels['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'Du er ikke opført som deltager for dette arrangement';
$labels['eventcancelled'] = 'Arrangementet er blevet aflyst';
$labels['saveincalendar'] = 'gem i';
$labels['resource'] = 'Ressource';
$labels['resourcedetails'] = 'Detaljer';
$labels['tabsummary'] = 'Resumé';
$labels['tabrecurrence'] = 'Gentagelse';
$labels['tabattendees'] = 'Deltagere';
$labels['tabresources'] = 'Ressourcer';
$labels['tabattachments'] = 'Vedhæftninger';
$labels['tabsharing'] = 'Deling';
$labels['deleteobjectconfirm'] = 'Sikker på at du vil slette dette arrangement?';
$labels['deleteventconfirm'] = 'Sikker på at du vil slette dette arrangement?';
$labels['deletecalendarconfirm'] = 'Sikker på at du vil slette denne kalender med alle dets arrangementer?';
$labels['deletecalendarconfirmrecursive'] = 'Sikker på du vil slette denne kalender med alle dens arrangementer og delkalendere?';
$labels['savingdata'] = 'Gemmer data...';
$labels['errorsaving'] = 'Kunne ikke gemme ændringer.';
$labels['operationfailed'] = 'Den forespurgte handling mislykkedes.';
$labels['invalideventdates'] = 'Ugyldig dato indtastet! Tjek venligst dit input.';
$labels['invalidcalendarproperties'] = 'Ugyldige kalenderegenskaber! Angiv venligst et gyldigt navn.';
$labels['searchnoresults'] = 'Der blev ikke fundet arrangementer i de valgte kalendere.';
$labels['successremoval'] = 'Sletning af arrangementet blev gennemført.';
$labels['successrestore'] = 'Gendannelse af arrangementet blev gennemført.';
$labels['errornotifying'] = 'Kunne ikke sende notifikation til arrangementets deltagere';
$labels['errorimportingevent'] = 'Kunne ikke importere arrangementet';
$labels['newerversionexists'] = 'Der findes allerede en nyere version af arrangementet! Afbrød.';
$labels['nowritecalendarfound'] = 'Ingen funden kalender til lagring af arrangementet';
$labels['importedsuccessfully'] = 'Arrangementet blev tilføjet til \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Opdatering af deltagernes status blev gennemført';
$labels['itipsendsuccess'] = 'Invitation blev sendt til deltagerne.';
$labels['itipresponseerror'] = 'Kunne ikke sende svar til denne arrangementsinvitation';
$labels['itipinvalidrequest'] = 'Denne invitation er ikke længere gyldig';
$labels['sentresponseto'] = 'Gennemførte afsendelse af invitationssvar til $mailto';
$labels['localchangeswarning'] = 'Du er i færd med at foretage ændringer, der vil påvirke din kalender og som ikke vil blive sendt til afholderen af arrangementet.';
$labels['importsuccess'] = 'Gennemførte import af $nr arrangementer';
$labels['importnone'] = 'Fandt ingen arrangementer som kunne importeres';
$labels['importerror'] = 'Der opstod en fejl under import';
$labels['aclnorights'] = 'Du har ikke administratorrettigheder for denne kalender.';
$labels['changeeventconfirm'] = 'Tilpas arrangement';
$labels['changerecurringeventwarning'] = 'Dette er et tilbagevendende arrangement. Ønsker du kun at redige det aktuelle arrangement, dette og alle fremtidige forekomster, alle forekomster eller gemme det som et nyt arrangement?';
$labels['currentevent'] = 'Nuværende';
$labels['futurevents'] = 'Fremtid';
$labels['allevents'] = 'Alle';
$labels['saveasnew'] = 'Gem som ny';
$labels['user'] = 'Bruger';
$labels['actiondelete'] = 'Slettet';
$labels['compare'] = 'Sammenlign';
?>

View file

@ -1,11 +1,14 @@
<?php
$labels = array();
// preferences
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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';
@ -17,8 +20,6 @@ $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';
@ -36,7 +37,7 @@ $labels['new_event'] = 'Neuer Termin';
$labels['edit_event'] = 'Termin bearbeiten';
$labels['edit'] = 'Bearbeiten';
$labels['save'] = 'Speichern';
$labels['remove'] = 'Entfernen';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Abbrechen';
$labels['select'] = 'Auswählen';
$labels['print'] = 'Drucken';
@ -47,24 +48,31 @@ $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';
$labels['repeat'] = 'Wiederholung';
$labels['selectdate'] = 'Datum auswählen';
$labels['freebusy'] = 'Zeige mich als';
$labels['free'] = 'Frei';
$labels['busy'] = 'Gebucht';
$labels['outofoffice'] = 'Abwesend';
$labels['tentative'] = 'Mit Vorbehalt';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Bestätigt';
$labels['status-cancelled'] = 'Gekündigt';
$labels['priority'] = 'Priorität';
$labels['sensitivity'] = 'Sichtbarkeit';
$labels['public'] = 'öffentlich';
$labels['private'] = 'privat';
$labels['confidential'] = 'vertraulich';
$labels['alarms'] = 'Erinnerung';
$labels['comment'] = 'Kommentar';
$labels['unknown'] = 'Unbekannt';
$labels['generated'] = 'erstellt am';
$labels['printdescriptions'] = 'Beschrieb drucken';
$labels['parentcalendar'] = 'Erstellen in';
@ -79,9 +87,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'] = 'Benutzen Sie folgende Addresse in einer <a href="http://de.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a>-Anwendung (wie z.B. Evolution oder Mozilla Thunderbird) um diesen spezifischen Kalender mit dem Computer oder Mobiltelefon zu synchronisieren.';
// agenda view
$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.';
$labels['searchterms'] = 'Search terms';
$labels['calendarsubscribe'] = 'List permanently';
$labels['listrange'] = 'Angezeigter Bereich:';
$labels['listsections'] = 'Unterteilung:';
$labels['smartsections'] = 'Intelligent';
@ -95,13 +103,9 @@ $labels['nextmonth'] = 'Nächsten Monat';
$labels['weekofyear'] = 'KW';
$labels['pastevents'] = 'Vergangene';
$labels['futureevents'] = 'Zukünftige';
// alarm/reminder settings
$labels['showalarms'] = 'Erinnerungen anzeigen';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Standard-Erinnerungseinstellung';
$labels['defaultalarmoffset'] = 'Standard-Erinnerungszeit';
// attendees
$labels['attendee'] = 'Teilnehmer';
$labels['role'] = 'Rolle';
$labels['availability'] = 'Verfüg.';
@ -110,7 +114,12 @@ $labels['addattendee'] = 'Hinzufügen';
$labels['roleorganizer'] = 'Organisator';
$labels['rolerequired'] = 'Erforderlich';
$labels['roleoptional'] = 'Optional';
$labels['rolechair'] = 'Vorsitz';
$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';
@ -133,45 +142,25 @@ $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.";
// invitation handling
$labels['itipinvitation'] = 'Einladung zu';
$labels['itipreply'] = 'Antwort zu';
$labels['itipupdate'] = 'Aktialisiert:';
$labels['itipcancellation'] = 'Abgesagt:';
$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['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['declinedeleteconfirm'] = 'Möchten Sie den abgelehnten Termin ebenfalls aus Ihrem Kalender löschen?';
$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['resource'] = 'Ressource';
$labels['resourcedetails'] = 'Details';
$labels['tabsummary'] = 'Übersicht';
$labels['tabrecurrence'] = 'Wiederholung';
$labels['tabattendees'] = 'Teilnehmer';
$labels['tabattachments'] = 'Anhänge';
$labels['tabsharing'] = 'Freigabe';
// messages
$labels['deleteobjectconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
$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'] = 'Möchten Sie diesen Kalender mit allen Terminen und Unter-Kalendern 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.';
@ -188,48 +177,24 @@ $labels['importedsuccessfully'] = 'Der Termin wurde erfolgreich in \'$calendar\'
$labels['attendeupdateesuccess'] = 'Teilnehmerstatus erfolgreich aktualisiert';
$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'] = 'Änderungen an diesem Termin werden nur in Ihrem Kalender gespeichert und nicht an den Organisator des Termins 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';
// recurrence form
$labels['repeat'] = 'Wiederholung';
$labels['frequency'] = 'Wiederholung';
$labels['never'] = 'nie';
$labels['daily'] = 'täglich';
$labels['weekly'] = 'wöchentlich';
$labels['monthly'] = 'monatlich';
$labels['yearly'] = 'jährlich';
$labels['rdate'] = 'per Datum';
$labels['every'] = 'Alle';
$labels['days'] = 'Tag(e)';
$labels['weeks'] = 'Woche(n)';
$labels['months'] = 'Monat(e)';
$labels['years'] = 'Jahre(e) im:';
$labels['bydays'] = 'Am';
$labels['untildate'] = 'am';
$labels['each'] = 'Jeden';
$labels['onevery'] = 'An jedem';
$labels['onsamedate'] = 'Am gleichen Tag';
$labels['forever'] = 'unendlich';
$labels['recurrencend'] = 'bis';
$labels['forntimes'] = '$nr Wiederholungen';
$labels['first'] = 'erster';
$labels['second'] = 'zweiter';
$labels['third'] = 'dritter';
$labels['fourth'] = 'vierter';
$labels['last'] = 'letzter';
$labels['dayofmonth'] = 'Tag des Montats';
$labels['addrdate'] = 'Datum hinzufügen';
$labels['aclnorights'] = 'Sie haben keine Administrator-Rechte für diesen Kalender.';
$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?';
$labels['removerecurringeventwarning'] = 'Dies ist eine Terminreihe. Möchten Sie nur den aktuellen, diesen und alle zukünftigen oder alle Termine löschen?';
$labels['currentevent'] = 'Aktuellen';
$labels['futurevents'] = 'Zukünftige';
$labels['allevents'] = 'Alle';
$labels['saveasnew'] = 'Als neu speichern';
$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';
$labels['actiondelete'] = 'Gelöscht';
?>

View file

@ -1,24 +1,32 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Ansicht';
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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['afternothing'] = 'nichts unternehmen';
$labels['aftertrash'] = 'In den Papierkorb verschieben';
$labels['afterdelete'] = 'Nachricht löschen';
$labels['afterflagdeleted'] = 'Als gelöscht markieren';
$labels['aftermoveto'] = 'Verschiebe nach...';
$labels['itipoptions'] = 'Veranstaltungseinladungen';
$labels['afteraction'] = 'Nachdem eine Einladungs- oder Update-Nachricht verarbetet wurde';
$labels['calendar'] = 'Kalender';
$labels['calendars'] = 'Kalender';
$labels['category'] = 'Kategorie';
@ -36,7 +44,7 @@ $labels['new_event'] = 'Neuer Termin';
$labels['edit_event'] = 'Termin bearbeiten';
$labels['edit'] = 'Bearbeiten';
$labels['save'] = 'Speichern';
$labels['remove'] = 'Entfernen';
$labels['removelist'] = 'Von der Liste entfernen';
$labels['cancel'] = 'Abbrechen';
$labels['select'] = 'Auswählen';
$labels['print'] = 'Drucken';
@ -48,24 +56,40 @@ $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['starttime'] = 'Startzeit';
$labels['end'] = 'Ende';
$labels['endtime'] = 'Endzeit';
$labels['repeat'] = 'Wiederholung';
$labels['selectdate'] = 'Datum auswählen';
$labels['freebusy'] = 'Zeige mich als';
$labels['free'] = 'Frei';
$labels['busy'] = 'Gebucht';
$labels['outofoffice'] = 'Abwesend';
$labels['tentative'] = 'Mit Vorbehalt';
$labels['mystatus'] = 'Mein Status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Bestätigt';
$labels['status-cancelled'] = 'Abgesagt';
$labels['priority'] = 'Priorität';
$labels['sensitivity'] = 'Sichtbarkeit';
$labels['public'] = 'öffentlich';
$labels['private'] = 'privat';
$labels['confidential'] = 'vertraulich';
$labels['links'] = 'Referenz';
$labels['alarms'] = 'Erinnerung';
$labels['comment'] = 'Kommentar';
$labels['created'] = 'Erstellt';
$labels['changed'] = 'Geändert';
$labels['unknown'] = 'Unbekannt';
$labels['eventoptions'] = 'Optionen';
$labels['generated'] = 'erstellt am';
$labels['eventhistory'] = 'Historie';
$labels['removelink'] = 'E-Mail-Referenz entfernen';
$labels['printdescriptions'] = 'Beschreibung drucken';
$labels['parentcalendar'] = 'Erstellen in';
$labels['searchearlierdates'] = '« Frühere Termine suchen';
@ -79,9 +103,18 @@ $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'] = 'Benutzen Sie folgende Addresse in einer <a href="http://de.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a>-Anwendung (wie z.B. Evolution oder Mozilla Thunderbird) um diesen spezifischen Kalender mit dem Computer oder Mobiltelefon zu synchronisieren.';
// agenda view
$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.';
$labels['findcalendars'] = 'Kalender finden...';
$labels['searchterms'] = 'Suchbegriffe';
$labels['calsearchresults'] = 'Verfügbare Kalender';
$labels['calendarsubscribe'] = 'Permanent anzeigen';
$labels['nocalendarsfound'] = 'Keine Kalender gefunden';
$labels['nrcalendarsfound'] = '$nr Kalender gefunden';
$labels['quickview'] = 'Nur diesen Kalender anzeigen';
$labels['invitationspending'] = 'Ausstehende Einladungen';
$labels['invitationsdeclined'] = 'Abgelehnte Einladungen';
$labels['changepartstat'] = 'Teilnehmerstatus ändern';
$labels['rsvpcomment'] = 'Einladungstext';
$labels['listrange'] = 'Angezeigter Bereich:';
$labels['listsections'] = 'Unterteilung:';
$labels['smartsections'] = 'Intelligent';
@ -90,18 +123,15 @@ $labels['today'] = 'Heute';
$labels['tomorrow'] = 'Morgen';
$labels['thisweek'] = 'Diese Woche';
$labels['nextweek'] = 'Nächste Woche';
$labels['prevweek'] = 'Vorige Woche';
$labels['thismonth'] = 'Diesen Monat';
$labels['nextmonth'] = 'Nächsten Monat';
$labels['weekofyear'] = 'Woche';
$labels['pastevents'] = 'Vergangene';
$labels['futureevents'] = 'Zukünftige';
// alarm/reminder settings
$labels['showalarms'] = 'Erinnerungen anzeigen';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Standard-Erinnerungseinstellung';
$labels['defaultalarmoffset'] = 'Standard-Erinnerungszeit';
// attendees
$labels['attendee'] = 'Teilnehmer';
$labels['role'] = 'Rolle';
$labels['availability'] = 'Verfüg.';
@ -111,11 +141,18 @@ $labels['roleorganizer'] = 'Organisator';
$labels['rolerequired'] = 'Erforderlich';
$labels['roleoptional'] = 'Optional';
$labels['rolechair'] = 'Vorsitz';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Person';
$labels['cutypegroup'] = 'Gruppe';
$labels['cutyperesource'] = 'Ressource';
$labels['cutyperoom'] = 'Raum';
$labels['availfree'] = 'Frei';
$labels['availbusy'] = 'Gebucht';
$labels['availunknown'] = 'Unbekannt';
$labels['availtentative'] = 'Mit Vorbehalt';
$labels['availoutofoffice'] = 'Abwesend';
$labels['delegatedto'] = 'Delegiert an:';
$labels['delegatedfrom'] = 'Delegiert von:';
$labels['scheduletime'] = 'Verfügbarkeit anzeigen';
$labels['sendinvitations'] = 'Einladungen versenden';
$labels['sendnotifications'] = 'Teilnehmer über die Änderungen informieren';
@ -124,6 +161,7 @@ $labels['onlyworkinghours'] = 'Verfügbarkeit innerhalb meiner Arbeitszeiten suc
$labels['reqallattendees'] = 'Erforderliche/alle Teilnehmer';
$labels['prevslot'] = 'Vorheriger Vorschlag';
$labels['nextslot'] = 'Nächster Vorschlag';
$labels['suggestedslot'] = 'Empfohlener Slot';
$labels['noslotfound'] = 'Es konnten keine freien Zeiten gefunden werden';
$labels['invitationsubject'] = 'Sie wurden zu "$title" eingeladen';
$labels['invitationmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nIm Anhang finden Sie eine iCalendar-Datei mit allen Details des Termins. Diese können Sie in Ihre Kalenderanwendung importieren.";
@ -133,45 +171,42 @@ $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.";
// invitation handling
$labels['itipinvitation'] = 'Einladung zu';
$labels['itipreply'] = 'Antwort zu';
$labels['itipupdate'] = 'Aktialisiert:';
$labels['itipcancellation'] = 'Abgesagt:';
$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['itipobjectnotfound'] = 'Der Termin auf den sich diese Nachricht bezieht, wurde in Deinem Kalnder nicht gefunden.';
$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['itipmailbodycancel'] = "\$sender hat Deine Teilnahme bei der folgenden Veranstaltung zurückgewiesen:\n\n*\$title*\n\nam: \$date";
$labels['itipmailbodydelegated'] = "\$sender hat die Teilnahme an folgendem Event delegiert:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender hat die Teilnahme an folgendem Event an Sie delegiert:\n\n*\$title*\n\nWhen: \$date";
$labels['itipdeclineevent'] = 'Möchten Sie die Einladung zu diesem Termin ablehnen?';
$labels['declinedeleteconfirm'] = 'Möchten Sie den abgelehnten Termin ebenfalls aus Ihrem Kalender löschen?';
$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['itipcomment'] = 'Kommentar zur Einladungs-/Benachrichtigungsnachricht';
$labels['itipcommenttitle'] = 'Dieser Kommentar wird an die Einladungs-/Benachrichtigungsnachricht angehängt, die an die Teilnehmer verschickt wird';
$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['updatemycopy'] = 'In meinen Kalender updaten';
$labels['savetocalendar'] = 'In Kalender übernehmen';
$labels['openpreview'] = 'Kalender überprüfen';
$labels['noearlierevents'] = 'Keine früheren Ereignisse';
$labels['nolaterevents'] = 'Keine späteren Ereignisse';
$labels['resource'] = 'Ressource';
$labels['addresource'] = 'Ressource buchen';
$labels['findresources'] = 'Ressourcen finden';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Verfügbarkeit';
$labels['resourceowner'] = 'Eigentümer';
$labels['resourceadded'] = 'Diese Ressource wurde Deinem Ereignis hinzugefügt';
$labels['tabsummary'] = 'Übersicht';
$labels['tabrecurrence'] = 'Wiederholung';
$labels['tabattendees'] = 'Teilnehmer';
$labels['tabresources'] = 'Ressourcen';
$labels['tabattachments'] = 'Anhänge';
$labels['tabsharing'] = 'Freigabe';
// messages
$labels['deleteobjectconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
$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'] = 'Möchten Sie diesen Kalender mit allen Terminen und Unter-Kalendern 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.';
@ -182,54 +217,59 @@ $labels['successremoval'] = 'Der Termin wurde erfolgreich gelöscht.';
$labels['successrestore'] = 'Der Termin wurde erfolgreich wieder hergestellt.';
$labels['errornotifying'] = 'Benachrichtigung an die Teilnehmer konnten nicht gesendet werden';
$labels['errorimportingevent'] = 'Fehler beim Importieren';
$labels['importwarningexists'] = 'Eine Kopie dieses Termins exisitert bereits in Deinem Kalender.';
$labels['newerversionexists'] = 'Eine neuere Version dieses Termins exisitert bereits! Import abgebrochen.';
$labels['nowritecalendarfound'] = 'Kein Kalender zum Speichern gefunden';
$labels['importedsuccessfully'] = 'Der Termin wurde erfolgreich in \'$calendar\' gespeichert';
$labels['updatedsuccessfully'] = 'Der Termin wurde erfolgreich in \'$calendar\' geändert';
$labels['attendeupdateesuccess'] = 'Teilnehmerstatus erfolgreich aktualisiert';
$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'] = 'Änderungen an diesem Termin werden nur in Ihrem Kalender gespeichert und nicht an den Organisator des Termins 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';
// recurrence form
$labels['repeat'] = 'Wiederholung';
$labels['frequency'] = 'Wiederholung';
$labels['never'] = 'nie';
$labels['daily'] = 'täglich';
$labels['weekly'] = 'wöchentlich';
$labels['monthly'] = 'monatlich';
$labels['yearly'] = 'jährlich';
$labels['rdate'] = 'per Datum';
$labels['every'] = 'Alle';
$labels['days'] = 'Tag(e)';
$labels['weeks'] = 'Woche(n)';
$labels['months'] = 'Monat(e)';
$labels['years'] = 'Jahre(e) im:';
$labels['bydays'] = 'Am';
$labels['untildate'] = 'am';
$labels['each'] = 'Jeden';
$labels['onevery'] = 'An jedem';
$labels['onsamedate'] = 'Am gleichen Tag';
$labels['forever'] = 'unendlich';
$labels['recurrencend'] = 'bis';
$labels['forntimes'] = '$nr Wiederholungen';
$labels['first'] = 'erster';
$labels['second'] = 'zweiter';
$labels['third'] = 'dritter';
$labels['fourth'] = 'vierter';
$labels['last'] = 'letzter';
$labels['dayofmonth'] = 'Tag des Montats';
$labels['addrdate'] = 'Datum hinzufügen';
$labels['aclnorights'] = 'Der Zugriff auf diesen Kalender erfordert Administrator-Rechte.';
$labels['changeeventconfirm'] = 'Termin ändern';
$labels['removeeventconfirm'] = 'Termin löschen';
$labels['removeeventconfirm'] = 'Ereignis 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?';
$labels['removerecurringeventwarning'] = 'Dies ist eine Terminreihe. Möchten Sie nur den aktuellen, diesen und alle zukünftigen oder alle Termine löschen?';
$labels['removerecurringeventwarning'] = 'Dies ist ein wiederkehrender Termin. Wollen Sie nur diesen Termin bearbeiten oder alle zukünftigen Vorkommen? Alternativ können auch alle Vorkommen bearbeitet werden.';
$labels['removerecurringallonly'] = 'Dieses ist ein wiederkehrender Termin. Als ein Teilnehmer können Sie nur den gesamten Termin inklusive aller Wiederholungen löschen.';
$labels['currentevent'] = 'Aktuellen';
$labels['futurevents'] = 'Zukünftige';
$labels['allevents'] = 'Alle';
$labels['saveasnew'] = 'Als neu speichern';
$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';
$labels['eventchangelog'] = 'Änderungshistorie';
$labels['eventdiff'] = 'Änderungen aus den Versionen $rev';
$labels['revision'] = 'Version';
$labels['user'] = 'Benutzer';
$labels['operation'] = 'Aktion';
$labels['actionappend'] = 'Gespeichert';
$labels['actionmove'] = 'Verschoben';
$labels['actiondelete'] = 'Gelöscht';
$labels['compare'] = 'Vergleichen';
$labels['showrevision'] = 'Diese Version anzeigen';
$labels['restore'] = 'Diese Version wiederherstellen';
$labels['eventnotfound'] = 'Termindaten sind leider nicht vergübar';
$labels['eventchangelognotavailable'] = 'Änderungshistorie ist nicht verfügbar für diesen Termin';
$labels['eventdiffnotavailable'] = 'Vergleich für die gewählten Versionen nicht möglich';
$labels['eventrestoreconfirm'] = 'Wollen Sie wirklich die Version $rev dieses Termins wiederherstellen? Diese Aktion wird die aktuelle Kopie mit der älteren Version ersetzen.';
$labels['arialabelminical'] = 'Kalender Datumswahl';
$labels['arialabelcalendarview'] = 'Kalender Ansicht';
$labels['arialabelsearchform'] = 'Suchformular für Termine';
$labels['arialabelquicksearchbox'] = 'Sucheingabe für Termine';
$labels['arialabelcalsearchform'] = 'Suchformular für Kalender';
$labels['calendaractions'] = 'Kalenderaktionen';
$labels['arialabeleventattendees'] = 'Teilehmerliste';
$labels['arialabeleventresources'] = 'Liste der Terminressourcen';
$labels['arialabelresourcesearchform'] = 'Suchformular für Ressourcen';
$labels['arialabelresourceselection'] = 'Verfügbare Ressourcen';
?>

View file

@ -1,11 +1,19 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels = array();
// preferences
$labels['default_view'] = 'Default view';
$labels['time_format'] = 'Time format';
$labels['timeslots'] = 'Timeslots per hour';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'First weekday';
$labels['first_hour'] = 'First hour to show';
$labels['workinghours'] = 'Working hours';
@ -17,6 +25,13 @@ $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';
$labels['afternothing'] = 'Do nothing';
$labels['aftertrash'] = 'Move to Trash';
$labels['afterdelete'] = 'Delete the message';
$labels['afterflagdeleted'] = 'Flag as deleted';
$labels['aftermoveto'] = 'Move to...';
$labels['itipoptions'] = 'Event Invitations';
$labels['afteraction'] = 'After an invitation or update message is processed';
// calendar
$labels['calendar'] = 'Calendar';
@ -36,7 +51,7 @@ $labels['new_event'] = 'New event';
$labels['edit_event'] = 'Edit event';
$labels['edit'] = 'Edit';
$labels['save'] = 'Save';
$labels['remove'] = 'Remove';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Cancel';
$labels['select'] = 'Select';
$labels['print'] = 'Print';
@ -53,20 +68,35 @@ $labels['location'] = 'Location';
$labels['url'] = 'URL';
$labels['date'] = 'Date';
$labels['start'] = 'Start';
$labels['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['endtime'] = 'End time';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['mystatus'] = 'My status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Confirmed';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['eventoptions'] = 'Options';
$labels['generated'] = 'generated at';
$labels['eventhistory'] = 'History';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Print descriptions';
$labels['parentcalendar'] = 'Insert inside';
$labels['searchearlierdates'] = '« Search for earlier events';
@ -81,6 +111,17 @@ $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.';
$labels['findcalendars'] = 'Find calendars...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Available Calendars';
$labels['calendarsubscribe'] = 'List permanently';
$labels['nocalendarsfound'] = 'No calendars found';
$labels['nrcalendarsfound'] = '$nr calendars found';
$labels['quickview'] = 'View only this calendar';
$labels['invitationspending'] = 'Pending invitations';
$labels['invitationsdeclined'] = 'Declined invitations';
$labels['changepartstat'] = 'Change participant status';
$labels['rsvpcomment'] = 'Invitation text';
// agenda view
$labels['listrange'] = 'Range to display:';
@ -91,6 +132,7 @@ $labels['today'] = 'Today';
$labels['tomorrow'] = 'Tomorrow';
$labels['thisweek'] = 'This week';
$labels['nextweek'] = 'Next week';
$labels['prevweek'] = 'Previous week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
@ -98,7 +140,7 @@ $labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
// alarm/reminder settings
$labels['showalarms'] = 'Show alarms';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
@ -112,6 +154,7 @@ $labels['roleorganizer'] = 'Organizer';
$labels['rolerequired'] = 'Required';
$labels['roleoptional'] = 'Optional';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Group';
$labels['cutyperesource'] = 'Resource';
@ -121,6 +164,8 @@ $labels['availbusy'] = 'Busy';
$labels['availunknown'] = 'Unknown';
$labels['availtentative'] = 'Tentative';
$labels['availoutofoffice'] = 'Out of Office';
$labels['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$labels['scheduletime'] = 'Find availability';
$labels['sendinvitations'] = 'Send invitations';
$labels['sendnotifications'] = 'Notify participants about modifications';
@ -129,6 +174,7 @@ $labels['onlyworkinghours'] = 'Find availability within my working hours';
$labels['reqallattendees'] = 'Required/all participants';
$labels['prevslot'] = 'Previous Slot';
$labels['nextslot'] = 'Next Slot';
$labels['suggestedslot'] = 'Suggested 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.";
@ -139,41 +185,49 @@ $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['itipmailbodycancel'] = "\$sender has rejected your participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegated'] = "\$sender has delegated the participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender has delegated the participation in the following event to you:\n\n*\$title*\n\nWhen: \$date";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['itipcommenttitle'] = 'This comment will be attached to the invitation/notification message sent to participants';
$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';
$labels['savetocalendar'] = 'Save to calendar';
$labels['openpreview'] = 'Check Calendar';
$labels['noearlierevents'] = 'No earlier events';
$labels['nolaterevents'] = 'No later events';
// resources
$labels['resource'] = 'Resource';
$labels['addresource'] = 'Book resource';
$labels['findresources'] = 'Find resources';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Availability';
$labels['resourceowner'] = 'Owner';
$labels['resourceadded'] = 'The resource was added to your event';
// event dialog tabs
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Resources';
$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?';
@ -187,9 +241,11 @@ $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['importwarningexists'] = 'A copy of this event already exists in your calendar.';
$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['updatedsuccessfully'] = 'The event was successfully updated in \'$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';
@ -201,43 +257,52 @@ $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['removeeventconfirm'] = 'Delete 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['removerecurringeventwarning'] = 'This is a recurring event. Would you like to delete the current event only, this and all future occurences or all occurences of this event?';
$labels['removerecurringallonly'] = 'This is a recurring event. As a participant, you can only delete the entire event with all occurences.';
$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';
// history dialog
$labels['eventchangelog'] = 'Change History';
$labels['eventdiff'] = 'Changes from revisions $rev';
$labels['revision'] = 'Revision';
$labels['user'] = 'User';
$labels['operation'] = 'Action';
$labels['actionappend'] = 'Saved';
$labels['actionmove'] = 'Moved';
$labels['actiondelete'] = 'Deleted';
$labels['compare'] = 'Compare';
$labels['showrevision'] = 'Show this version';
$labels['restore'] = 'Restore this version';
$labels['eventnotfound'] = 'Failed to load event data';
$labels['eventchangelognotavailable'] = 'Change history is not available for this event';
$labels['eventdiffnotavailable'] = 'No comparison possible for the selected revisions';
$labels['eventrestoreconfirm'] = 'Do you really want to restore revision $rev of this event? This will replace the current event with the old version.';
// (hidden) titles and labels for accessibility annotations
$labels['arialabelminical'] = 'Calendar date selection';
$labels['arialabelcalendarview'] = 'Calendar view';
$labels['arialabelsearchform'] = 'Event search form';
$labels['arialabelquicksearchbox'] = 'Event search input';
$labels['arialabelcalsearchform'] = 'Calendars search form';
$labels['calendaractions'] = 'Calendar actions';
$labels['arialabeleventattendees'] = 'Event participants list';
$labels['arialabeleventresources'] = 'Event resources list';
$labels['arialabelresourcesearchform'] = 'Resources search form';
$labels['arialabelresourceselection'] = 'Available resources';
?>

270
localization/es_AR.inc Normal file
View file

@ -0,0 +1,270 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Vista predeterminada';
$labels['time_format'] = 'Formato de hora';
$labels['timeslots'] = 'Espacios por hora';
$labels['first_day'] = 'Primer día de semana';
$labels['first_hour'] = 'Primer hora a mostrar';
$labels['workinghours'] = 'Horario laboral';
$labels['add_category'] = 'Agregar categoría';
$labels['remove_category'] = 'Eliminar categoría';
$labels['defaultcalendar'] = 'Crear nuevos eventos en';
$labels['eventcoloring'] = 'Colores de eventos';
$labels['coloringmode0'] = 'De acuerdo al calendario';
$labels['coloringmode1'] = 'De acuerdo a la categoría';
$labels['coloringmode2'] = 'Calendario para borde, categoría para contenido';
$labels['coloringmode3'] = 'Categoría para borde, calendario para contenido';
$labels['afternothing'] = 'Hacer nada';
$labels['aftertrash'] = 'Mover a la papelera';
$labels['afterdelete'] = 'Eliminar el mensaje';
$labels['afterflagdeleted'] = 'Marcar como eliminado';
$labels['aftermoveto'] = 'Mover a...';
$labels['itipoptions'] = 'Invitaciones del evento';
$labels['afteraction'] = 'Luego que una invitación o actualización de mensaje es procesado';
$labels['calendar'] = 'Calendario';
$labels['calendars'] = 'Calendarios';
$labels['category'] = 'Categoría';
$labels['categories'] = 'Categorías';
$labels['createcalendar'] = 'Crear nuevo calendario';
$labels['editcalendar'] = 'Editar propiedades del calendario';
$labels['name'] = 'Nombre';
$labels['color'] = 'Color';
$labels['day'] = 'Día';
$labels['week'] = 'Semana';
$labels['month'] = 'Mes';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Nuevo';
$labels['new_event'] = 'Nuevo evento';
$labels['edit_event'] = 'Editar evento';
$labels['edit'] = 'Editar';
$labels['save'] = 'Guardar';
$labels['removelist'] = 'Eliminar de la lista';
$labels['cancel'] = 'Cancelar';
$labels['select'] = 'Seleccionar';
$labels['print'] = 'Imprimir';
$labels['printtitle'] = 'Imprimir calendarios';
$labels['title'] = 'Sumario';
$labels['description'] = 'Descripción';
$labels['all-day'] = 'Todo el día';
$labels['export'] = 'Exportar';
$labels['exporttitle'] = 'Exportar a iCalendar';
$labels['exportrange'] = 'Eventos de';
$labels['exportattachments'] = 'Con adjunto';
$labels['customdate'] = 'Fecha personalizada';
$labels['location'] = 'Localización';
$labels['url'] = 'URL';
$labels['date'] = 'Fecha';
$labels['start'] = 'Inicio';
$labels['starttime'] = 'Hora de inicio';
$labels['end'] = 'Fin';
$labels['endtime'] = 'Hora de finalización';
$labels['repeat'] = 'Repetir';
$labels['selectdate'] = 'Elegir fecha';
$labels['freebusy'] = 'Mostrarme como';
$labels['free'] = 'Libre';
$labels['busy'] = 'Ocupado';
$labels['outofoffice'] = 'Fuera de la oficina';
$labels['tentative'] = 'Tentativo';
$labels['mystatus'] = 'Mi estado';
$labels['status'] = 'Estado';
$labels['status-confirmed'] = 'Confirmado';
$labels['status-cancelled'] = 'Cancelado';
$labels['priority'] = 'Prioridad';
$labels['sensitivity'] = 'Privacidad';
$labels['public'] = 'público';
$labels['private'] = 'privado';
$labels['confidential'] = 'confidencial';
$labels['alarms'] = 'Recordatorio';
$labels['comment'] = 'Comentario';
$labels['created'] = 'Creado';
$labels['changed'] = 'Última modificación';
$labels['unknown'] = 'Desconocido';
$labels['eventoptions'] = 'Opciones';
$labels['generated'] = 'generado en';
$labels['eventhistory'] = 'Historial';
$labels['printdescriptions'] = 'Imprimir descripciones';
$labels['parentcalendar'] = 'Insertar dentro';
$labels['searchearlierdates'] = '« Buscar eventos anteriores';
$labels['searchlaterdates'] = 'Buscar eventos posteriores »';
$labels['andnmore'] = '$nr más...';
$labels['togglerole'] = 'Click para cambiar rol';
$labels['createfrommail'] = 'Guardar como evento';
$labels['importevents'] = 'Importar eventos';
$labels['importrange'] = 'Eventos de';
$labels['onemonthback'] = '1 mes atrás';
$labels['nmonthsback'] = '$nr meses atrás';
$labels['showurl'] = 'Mostrar URL del calendario';
$labels['showurldescription'] = 'Use la siguiente direccion para acceder (sólo lectura) a su calendario desde otras aplicaciones. Puede copiar y pegar esto dentro de cualquier software de calendario que soporte el formato iCal.';
$labels['caldavurldescription'] = 'Copie esta direccion a su aplicación cliente <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (por ejemplo, Evolution o Mozilla Thunderbird) para sincronizar completamente este calendario específico con su ordenador o dispositivo móvil.';
$labels['findcalendars'] = 'Encontrar calendarios...';
$labels['searchterms'] = 'Buscar términos';
$labels['calsearchresults'] = 'Calendarios disponibles';
$labels['calendarsubscribe'] = 'Listar permanentemente';
$labels['nocalendarsfound'] = 'No se encontraron calendarios';
$labels['nrcalendarsfound'] = '$nr calendarios encontrados';
$labels['quickview'] = 'Ver sólo este calendario';
$labels['invitationspending'] = 'Invitaciones pendientes';
$labels['invitationsdeclined'] = 'Invitaciones rechazadas';
$labels['changepartstat'] = 'Cambiar el estado del participante';
$labels['rsvpcomment'] = 'Texto de invitación';
$labels['listrange'] = 'Rango a mostrar:';
$labels['listsections'] = 'Dividir en:';
$labels['smartsections'] = 'Secciones inteligentes';
$labels['until'] = 'hasta';
$labels['today'] = 'Hoy';
$labels['tomorrow'] = 'Mañana';
$labels['thisweek'] = 'Esta semana';
$labels['nextweek'] = 'Próxima semana';
$labels['prevweek'] = 'Semana anterior';
$labels['thismonth'] = 'Este mes';
$labels['nextmonth'] = 'Próximo mes';
$labels['weekofyear'] = 'Semana';
$labels['pastevents'] = 'Pasado';
$labels['futureevents'] = 'Futuro';
$labels['showalarms'] = 'Mostrar alarmas';
$labels['defaultalarmtype'] = 'Configuración predeterminada de recordatorio';
$labels['defaultalarmoffset'] = 'Tiempo predeterminado de recordatorio';
$labels['attendee'] = 'Participante';
$labels['role'] = 'Rol';
$labels['availability'] = 'Disp.';
$labels['confirmstate'] = 'Estado';
$labels['addattendee'] = 'Agregar participante';
$labels['roleorganizer'] = 'Organizador';
$labels['rolerequired'] = 'Requerido';
$labels['roleoptional'] = 'Opcional';
$labels['rolechair'] = 'Jefe';
$labels['rolenonparticipant'] = 'Ausente';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Grupo';
$labels['cutyperesource'] = 'Recurso';
$labels['cutyperoom'] = 'Habitación';
$labels['availfree'] = 'Libre';
$labels['availbusy'] = 'Ocupado';
$labels['availunknown'] = 'Desconocido';
$labels['availtentative'] = 'Tentativo';
$labels['availoutofoffice'] = 'Fuera de la oficina';
$labels['delegatedto'] = 'Delegado a:';
$labels['delegatedfrom'] = 'Delegado de:';
$labels['scheduletime'] = 'Buscar disponibilidad';
$labels['sendinvitations'] = 'Enviar invitaciones';
$labels['sendnotifications'] = 'Notificar a los participantes sobre las modificaciones';
$labels['sendcancellation'] = 'Notificar a los participantes sobre la cancelación del evento';
$labels['onlyworkinghours'] = 'Buscar disponibilidad dentro de mi horario laboral';
$labels['reqallattendees'] = 'Requerido/todos los participantes';
$labels['prevslot'] = 'Espacio anterior';
$labels['nextslot'] = 'Espacio siguiente';
$labels['suggestedslot'] = 'Espacio sugerido';
$labels['noslotfound'] = 'Imposible encontrar un espacio libre';
$labels['invitationsubject'] = 'Ha sido invitado a "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees\n\nEncontrará adjunto un archivo iCalendar con todos los detalles del evento, el cual puede importar a su aplicación de calendario.";
$labels['invitationattendlinks'] = "En caso que su cliente de correo electrónico no soporte peticiones iTip puede usar el siguiente link para aceptar o declinar esta invitación:\n\$url";
$labels['eventupdatesubject'] = '"$title" ha sido actualizado';
$labels['eventupdatesubjectempty'] = 'Un evento que le interesa ha sido actualizado';
$labels['eventupdatemailbody'] = "*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees\n\nEncontrará adjunto un archivo iCalendar con todos los detalles del evento, el cual puede importar a su aplicación de calendario.";
$labels['eventcancelsubject'] = '"$title" has been canceled';
$labels['eventcancelmailbody'] = "*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees\n\nEl evento ha sido cancelado por \$organizer.\n\nEncontrará adjunto un archivo iCalendar con todos los detalles actualizados del evento.";
$labels['itipobjectnotfound'] = 'El evento referido por este mensaje no fue encontrado en su calendario.';
$labels['itipmailbodyaccepted'] = "\$sender ha aceptado la invitación al siguiente evento:\n\n*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees";
$labels['itipmailbodytentative'] = "\$sender ha tentativamente aceptado la invitación al siguiente evento:\n\n*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender ha rechazado la invitación al siguiente evento:\n\n*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees";
$labels['itipmailbodycancel'] = "\$sender ha rechazado tu participación en el siguiente evento:\n\n*\$title*\n\nCuándo:\$date";
$labels['itipdeclineevent'] = '¿Quiere rechazar la invitación a este evento?';
$labels['declinedeleteconfirm'] = '¿Quiere también eliminar este evento rechazado de su calendario?';
$labels['itipcomment'] = 'Comentario de la invitación/notificación';
$labels['itipcommenttitle'] = 'Este comentario será adjuntado al mensaje de invitación/notificación enviado a los participantes';
$labels['notanattendee'] = 'No esta incluído en la lista de invitados a este evento';
$labels['eventcancelled'] = 'El evento ha sido cancelado';
$labels['saveincalendar'] = 'guardar en';
$labels['updatemycopy'] = 'Actualizar mi calendario';
$labels['savetocalendar'] = 'Guardar en el calendario';
$labels['openpreview'] = 'Comprobar Calendario';
$labels['noearlierevents'] = 'No hay eventos anteriores';
$labels['nolaterevents'] = 'No hay eventos posteriores';
$labels['resource'] = 'Recurso';
$labels['addresource'] = 'Agendar recurso';
$labels['findresources'] = 'Encontrar recursos';
$labels['resourcedetails'] = 'Detalles';
$labels['resourceavailability'] = 'Disponibilidad';
$labels['resourceowner'] = 'Propietario';
$labels['resourceadded'] = 'El recurso fue agregado a su evento';
$labels['tabsummary'] = 'Sumario';
$labels['tabrecurrence'] = 'Recurrencia';
$labels['tabattendees'] = 'Participantes';
$labels['tabresources'] = 'Recursos';
$labels['tabattachments'] = 'Adjuntos';
$labels['tabsharing'] = 'Compartir';
$labels['deleteobjectconfirm'] = 'Confirme que desea eliminar este evento';
$labels['deleteventconfirm'] = 'Confirme que desea eliminar este evento';
$labels['deletecalendarconfirm'] = 'Confirme que desea eliminar este calendario con todos sus eventos';
$labels['deletecalendarconfirmrecursive'] = 'Confirme que desea eliminar este calendario con todos sus eventos y sub-calendarios';
$labels['savingdata'] = 'Guardando...';
$labels['errorsaving'] = 'Falló guardando los cambios.';
$labels['operationfailed'] = 'La operación falló.';
$labels['invalideventdates'] = 'Ingresó fechas erroneas. Por favor compruebe los datos.';
$labels['invalidcalendarproperties'] = 'Propiedades del calendario erroneas. Por favor ingrese un nombre válido.';
$labels['searchnoresults'] = 'No hay eventos en los calendarios seleccionados.';
$labels['successremoval'] = 'El evento ha sido eliminado exitosamente.';
$labels['successrestore'] = 'El evento ha sido recuperado exitosamente.';
$labels['errornotifying'] = 'Fallo al enviar las notificaciones del evento a los participantes';
$labels['errorimportingevent'] = 'Fallo al importar el evento';
$labels['importwarningexists'] = 'Una copia de este evento ya existe en su calendario.';
$labels['newerversionexists'] = 'Ya existe una versión actualizada de este evento. Cancelado.';
$labels['nowritecalendarfound'] = 'No hay calendarios para guardar el evento.';
$labels['importedsuccessfully'] = 'El evento fue guardado en \'$calendar\' exitosamente';
$labels['updatedsuccessfully'] = 'El evento fue actualizado exitosamente en \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Se actualizaron los estados de los participantes exitosamente';
$labels['itipsendsuccess'] = 'Invitaciones enviadas a los participantes.';
$labels['itipresponseerror'] = 'Fallo enviando la respuesta a la invitación de este evento';
$labels['itipinvalidrequest'] = 'Esta invitación no es válida';
$labels['sentresponseto'] = 'Se envió la respuesta a la invitación $mailto exitosamente';
$labels['localchangeswarning'] = 'Se realizarán cambios que sólo serán reflejadas en su calendario y no serán enviadas al organizador del evento';
$labels['importsuccess'] = 'Importados $nr eventos exitosamente';
$labels['importnone'] = 'No se importaron eventos';
$labels['importerror'] = 'Fallo al importar';
$labels['aclnorights'] = 'No tiene permisos de administrador en este calendario.';
$labels['changeeventconfirm'] = 'Cambiar evento';
$labels['removeeventconfirm'] = 'Eliminar evento';
$labels['changerecurringeventwarning'] = 'Este es un evento recurrente. ¿Desea editar solo el evento actual, este y las ocurrencias futuras, todas las ocurrencias o guardarlo como un evento nuevo?';
$labels['removerecurringeventwarning'] = 'Este es un evento recurrente. ¿Desea eliminar solo el evento actual, este y las ocurrencias futuras o todas las ocurrencias del evento?';
$labels['currentevent'] = 'Actual';
$labels['futurevents'] = 'Futuro';
$labels['allevents'] = 'Todos';
$labels['saveasnew'] = 'Guardar como nuevo';
$labels['birthdays'] = 'Cumpleaños';
$labels['birthdayscalendar'] = 'Calendario de cumpleaños';
$labels['displaybirthdayscalendar'] = 'Mostrar calendario de cumpleaños';
$labels['birthdayscalendarsources'] = 'De estas libretas de direcciones';
$labels['birthdayeventtitle'] = 'Cumpleaños de $name';
$labels['birthdayage'] = 'Edad $age';
$labels['eventchangelog'] = 'Cambiar Historial';
$labels['eventdiff'] = 'Cambios de revisiones $rev';
$labels['revision'] = 'Revisión';
$labels['user'] = 'Usuario';
$labels['operation'] = 'Acción';
$labels['actionappend'] = 'Guardado';
$labels['actionmove'] = 'Movido';
$labels['actiondelete'] = 'Eliminado';
$labels['compare'] = 'Comparar';
$labels['showrevision'] = 'Mostrar esta versión';
$labels['restore'] = 'Recuperar esta versión';
$labels['eventnotfound'] = 'Fallo al cargar datos del evento';
$labels['eventchangelognotavailable'] = 'Cambiar historial no esta disponible para este evento';
$labels['eventdiffnotavailable'] = 'No es posible comparar las revisiones seleccionadas';
$labels['eventrestoreconfirm'] = 'Confirme que quiere recuperar la revisión $rev de este evento. Esta acción reemplazará el evento actual con la versión anterior.';
$labels['arialabelminical'] = 'Selección de fecha del calendario';
$labels['arialabelcalendarview'] = 'Vista del calendario';
$labels['arialabelsearchform'] = 'Formulario de búsqueda de evento';
$labels['arialabelquicksearchbox'] = 'Entrada de búsqueda de evento';
$labels['arialabelcalsearchform'] = 'Formulario de búsqueda de calendario';
$labels['calendaractions'] = 'Acciones del calendario';
$labels['arialabeleventattendees'] = 'Lista de participantes del evento';
$labels['arialabeleventresources'] = 'Lista de recursos del evento';
$labels['arialabelresourcesearchform'] = 'Formulario de búsqueda de recursos';
$labels['arialabelresourceselection'] = 'Recursos disponibles';
?>

View file

@ -1,39 +1,210 @@
<?php
/**
* RoundCube Calendar
*
* Plugin to add a calendar to RoundCube.
*
* @version 0.2 BETA 3
* @author Lazlo Westerhof
* @author David Iribas
* @url http://rc-calendar.lazlo.me
* @licence GNU GPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
*
**/
$labels = array();
// config
$labels['default_view'] = 'Vista por defecto';
$labels['time_format'] = 'Formato hora';
$labels['timeslots'] = 'Periodos de hora';
$labels['first_day'] = 'Primer dia';
// calendar
$labels['calendar'] = 'Calendario';
$labels['day'] = 'Dia';
$labels['week'] = 'Semana';
$labels['month'] = 'Mes';
$labels['new_event'] = 'Nuevo evento';
$labels['edit_event'] = 'Editar evento';
$labels['save'] = 'Guardar';
$labels['remove'] = 'Borrar';
$labels['cancel'] = 'Cancelar';
$labels['title'] = 'Resumen';
$labels['description'] = 'Descripcion';
$labels['all-day'] = 'dia-completo';
$labels['export'] = 'Exportar a ICS';
$labels['category'] = 'Categoria';
?>
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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';
$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['removelist'] = 'Remove from list';
$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['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['status'] = 'Status';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comentario';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['eventoptions'] = 'Opciones';
$labels['generated'] = 'generated at';
$labels['removelink'] = 'Remove email reference';
$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.';
$labels['searchterms'] = 'Search terms';
$labels['calendarsubscribe'] = 'List permanently';
$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';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$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['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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.";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'save in';
$labels['resource'] = 'Recurso';
$labels['resourcedetails'] = 'Detalles';
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Recursos';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
$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?';
$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.';
$labels['changeeventconfirm'] = 'Change 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['currentevent'] = 'Current';
$labels['futurevents'] = 'Future';
$labels['allevents'] = 'All';
$labels['saveasnew'] = 'Save as new';
$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';
$labels['user'] = 'Usuario';
$labels['operation'] = 'Acción';
?>

View file

@ -1,127 +1,146 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Vaikevaade';
$labels['time_format'] = 'Aja vorming';
$labels['timeslots'] = 'Ajaühikuid päevas';
$labels['first_day'] = 'Esimene päev';
$labels['first_hour'] = 'Esimene tund';
$labels['workinghours'] = 'Tööaeg';
$labels['add_category'] = 'Lisa kategooria';
$labels['remove_category'] = 'Kustuta kategooria';
$labels['defaultcalendar'] = 'Loo uued sündmused';
$labels['eventcoloring'] = 'Sündmuste värvid';
$labels['coloringmode0'] = 'Vastavalt kalendrile';
$labels['coloringmode1'] = 'Vastavalt kategooriale';
$labels['coloringmode2'] = 'Kalender väljaspool, kategooria sisul';
$labels['coloringmode3'] = 'Kategooria väljaspool, kalender sisul';
// calendar
$labels['calendar'] = 'Kalender';
$labels['calendars'] = 'Kalendrid';
$labels['category'] = 'Kategooria';
$labels['categories'] = 'Kategooriad';
$labels['createcalendar'] = 'Uus kalender';
$labels['editcalendar'] = 'Muuda seadeid';
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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';
$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'] = 'Värv';
$labels['day'] = 'Päev';
$labels['week'] = 'Nädal';
$labels['month'] = 'Kuu';
$labels['color'] = 'Color';
$labels['day'] = 'Day';
$labels['week'] = 'Week';
$labels['month'] = 'Month';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Uus';
$labels['new_event'] = 'Uus sündmus';
$labels['edit_event'] = 'Muuda sündmust';
$labels['edit'] = 'Redigeeri';
$labels['new'] = 'New';
$labels['new_event'] = 'New event';
$labels['edit_event'] = 'Edit event';
$labels['edit'] = 'Edit';
$labels['save'] = 'Salvesta';
$labels['remove'] = 'Kustuta';
$labels['cancel'] = 'Tühista';
$labels['select'] = 'Märgi';
$labels['print'] = 'Trüki';
$labels['printtitle'] = 'Trüki kalendrid';
$labels['title'] = 'Kokkuvõte';
$labels['description'] = 'Selgitus';
$labels['all-day'] = 'kogu päev';
$labels['export'] = 'Ekspordi';
$labels['exporttitle'] = 'Ekspordi iCalendar';
$labels['location'] = 'Askukoht';
$labels['date'] = 'Kuupäev';
$labels['start'] = 'Algus';
$labels['end'] = 'Lõpp';
$labels['selectdate'] = 'Vali kuupäev';
$labels['freebusy'] = 'Näita mind';
$labels['free'] = 'vabana';
$labels['busy'] = 'hõivatuna';
$labels['outofoffice'] = 'kontorist eemal';
$labels['tentative'] = 'ei tea';
$labels['priority'] = 'Prioriteet';
$labels['sensitivity'] = 'Privaatsus';
$labels['public'] = 'avalik';
$labels['private'] = 'varjatud';
$labels['confidential'] = 'konfidentsiaalne';
$labels['alarms'] = 'Meeldetuletus';
$labels['generated'] = 'loodud';
$labels['printdescriptions'] = 'Väljuta kirjeldus';
$labels['parentcalendar'] = 'Sisesta';
$labels['searchearlierdates'] = '« Otsi varasemaid sündmusi';
$labels['searchlaterdates'] = 'Otsi hilisemaid sündmusi »';
$labels['andnmore'] = '$nr rohkem...';
$labels['togglerole'] = 'Kliki rolli muutmiseks';
$labels['createfrommail'] = 'Salvesta sündmusena';
$labels['importevents'] = 'Impordi sündmused';
$labels['importrange'] = 'Sündmused alates';
$labels['onemonthback'] = '1 kuu tagasi';
$labels['nmonthsback'] = '$nr kuud tagasi';
$labels['showurl'] = 'Näita kalendi URLi';
$labels['showurldescription'] = 'Kasuta seda aadressi kalendri lugemisõiguse andmiseks iCal vormingus.';
// agenda view
$labels['listrange'] = 'Näita ajavahemikku:';
$labels['listsections'] = 'Jaga:';
$labels['smartsections'] = 'nutikad osad';
$labels['until'] = 'kuni';
$labels['today'] = 'täna';
$labels['tomorrow'] = 'homme';
$labels['thisweek'] = 'see nädal';
$labels['nextweek'] = 'järgmine nädal';
$labels['thismonth'] = 'Sel kuul';
$labels['nextmonth'] = 'Järgmisel kuul';
$labels['weekofyear'] = 'Nädal aastas';
$labels['pastevents'] = 'Möödunud';
$labels['futureevents'] = 'Tulevased';
// alarm/reminder settings
$labels['showalarms'] = 'Näita meeldetuletusi';
$labels['defaultalarmtype'] = 'Meeldetuletuse vaiketüüp';
$labels['defaultalarmoffset'] = 'Meeldetuletuse vaikeaeg';
// attendees
$labels['attendee'] = 'Ósavõtja';
$labels['role'] = 'Roll';
$labels['availability'] = 'Saadavus';
$labels['confirmstate'] = 'Staatus';
$labels['addattendee'] = 'Lisa osaleja';
$labels['roleorganizer'] = 'Korraldaja';
$labels['rolerequired'] = 'Vajalik';
$labels['roleoptional'] = 'Teised';
$labels['roleresource'] = 'Ressurss';
$labels['availfree'] = 'Vaba';
$labels['availbusy'] = 'Hõivatud';
$labels['availunknown'] = 'Teadmata';
$labels['availtentative'] = 'Tinglik';
$labels['availoutofoffice'] = 'Kontorist eemal';
$labels['scheduletime'] = 'Otsi saadavust';
$labels['sendinvitations'] = 'Saada kutsed';
$labels['sendnotifications'] = 'Anna osavõtjaile muutustest teada';
$labels['sendcancellation'] = 'Anna osavõtjaile tühistamisest teada';
$labels['onlyworkinghours'] = 'Leia vaba aeg minu tööajast';
$labels['reqallattendees'] = 'Vajalikud/teised osavõtjad';
$labels['prevslot'] = 'Eelnev aeg';
$labels['nextslot'] = 'Järgnev aeg';
$labels['noslotfound'] = 'Ei õnnestu leida vaba aega';
$labels['invitationsubject'] = 'Olete kutsutud "$title"';
$labels['removelist'] = 'Remove from list';
$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['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Absent';
$labels['tentative'] = 'Tentative';
$labels['status'] = 'Status';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Kommentaar';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['generated'] = 'generated at';
$labels['removelink'] = 'Remove email reference';
$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.';
$labels['searchterms'] = 'Search terms';
$labels['calendarsubscribe'] = 'List permanently';
$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';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$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'] = 'Absent';
$labels['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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';
@ -129,102 +148,60 @@ $labels['eventupdatesubjectempty'] = 'An event that concerns you has been update
$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['importtocalendar'] = 'Salvesta minu kalendrisse';
$labels['removefromcalendar'] = 'Kustuta kalendrist';
$labels['updateattendeestatus'] = 'Värskenda osavõtja staatust';
$labels['acceptinvitation'] = 'Kas kutse vastu võtta?';
$labels['youhaveaccepted'] = 'Oled kutse vastu võtnud';
$labels['youhavetentative'] = 'Oled kutse tingimisi vastu võtnud';
$labels['youhavedeclined'] = 'Oled kutsest keeldunud';
$labels['notanattendee'] = 'Sa ei ole osavõtjate nimekirjas';
$labels['eventcancelled'] = 'Sündmus on tühistatud';
$labels['saveincalendar'] = 'salvesta';
// event dialog tabs
$labels['tabsummary'] = 'Kokkuvõte';
$labels['tabrecurrence'] = 'Kordumine';
$labels['tabattendees'] = 'Osavõtjad';
$labels['tabattachments'] = 'Manused';
$labels['tabsharing'] = 'Jagamine';
// messages
$labels['deleteventconfirm'] = 'Kas tõsti kustutada see sündmus?';
$labels['deletecalendarconfirm'] = 'Kas tõesti kustutada see kalender koos kõigi sündmustega?';
$labels['savingdata'] = 'Andmete salvestamine...';
$labels['errorsaving'] = 'Andmete salvestamine ebaõnnestus.';
$labels['operationfailed'] = 'Operatsioon nurjus.';
$labels['invalideventdates'] = 'Kuupäev on vigane! Kontrollige vormingut.';
$labels['invalidcalendarproperties'] = 'Vigane kalendri atribuut! Valige sobiv atribuut.';
$labels['searchnoresults'] = 'Sellest kalendrist ei leitud ühtki sündmust.';
$labels['successremoval'] = 'Sündmus on edukalt kustutatud.';
$labels['successrestore'] = 'Sündmus on edukalt taastatud.';
$labels['errornotifying'] = 'Teate saatmine osavõtjaile ebaõnnestus.';
$labels['errorimportingevent'] = 'Sündmuse import ebaõnnestus.';
$labels['newerversionexists'] = 'Uuem versioon sündmusest on juba olemas! Täitmine peatatud.';
$labels['nowritecalendarfound'] = 'Kirjutamiseks sobivat kalendrit ei leitud.';
$labels['importedsuccessfully'] = 'Sündmus on edukalt lisatud kalendrisse \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Osavõtja staatus on uuendatud';
$labels['itipsendsuccess'] = 'Kutse on saadetud osavõtjaile.';
$labels['itipresponseerror'] = 'Vastuse saatmine kutsele ebaõnnestus.';
$labels['itipinvalidrequest'] = 'See kutse pole enam kehtiv.';
$labels['sentresponseto'] = 'Vastus kutsele on edukalt saadetud aadressile $mailto';
$labels['localchangeswarning'] = 'Muutuseid on näha ainult teie isiklikus kalendris.';
$labels['importsuccess'] = 'Edukalt imporditud $nr sündmust';
$labels['importnone'] = 'Ühtki imporditavat sündmust ei leitud';
$labels['importerror'] = 'Importimise käigus tekkis viga';
$labels['aclnorights'] = 'Ei ole selle kalendri administreerimisõigusi.';
// recurrence form
$labels['repeat'] = 'Korda';
$labels['frequency'] = 'Sagedus';
$labels['never'] = 'mitte kunagi';
$labels['daily'] = 'iga päev';
$labels['weekly'] = 'nädalati';
$labels['monthly'] = 'iga kuu';
$labels['yearly'] = 'iga aasta';
$labels['every'] = 'Iga';
$labels['days'] = 'päevad';
$labels['weeks'] = 'nädalad';
$labels['months'] = 'kuud';
$labels['years'] = 'aastad:';
$labels['bydays'] = 'On';
$labels['untildate'] = 'the';
$labels['each'] = 'Iga';
$labels['onevery'] = 'Igal';
$labels['onsamedate'] = 'samal kuupäeval';
$labels['forever'] = 'alati';
$labels['recurrencend'] = 'kuni';
$labels['forntimes'] = ' $nr korda';
$labels['first'] = 'esimesel';
$labels['second'] = 'teisel';
$labels['third'] = 'kolmandal';
$labels['fourth'] = 'neljandal';
$labels['last'] = 'viimasel';
$labels['dayofmonth'] = 'Kuupäev';
$labels['changeeventconfirm'] = 'Muuda sündmust';
$labels['removeeventconfirm'] = 'Kustuta sündmus';
$labels['changerecurringeventwarning'] = 'See on korduv sündmus. Kas muuta seda sündmust, seda ja kõiki järgnevaid, või salvestada uue sündmusena?';
$labels['removerecurringeventwarning'] = 'See on korduv sündmus. Kas kustudada see sündmus, see ja kõik järgnevad sündmused?';
$labels['currentevent'] = 'Praegune';
$labels['futurevents'] = 'Tulevikusündmused';
$labels['allevents'] = 'Kõik sündmused';
$labels['saveasnew'] = 'Salvesta uuena';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'You\'re not listed as an attendee of this event';
$labels['eventcancelled'] = 'The event has been cancelled';
$labels['saveincalendar'] = 'save in';
$labels['resource'] = 'Resource';
$labels['resourcedetails'] = 'Details';
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
$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?';
$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.';
$labels['changeeventconfirm'] = 'Change 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['currentevent'] = 'Current';
$labels['futurevents'] = 'Future';
$labels['allevents'] = 'All';
$labels['saveasnew'] = 'Save as new';
$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';
$labels['operation'] = 'Toiming';
?>

271
localization/fi_FI.inc Normal file
View file

@ -0,0 +1,271 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Oletusnäkymä';
$labels['time_format'] = 'Aikamuoto';
$labels['timeslots'] = 'Ajankohdat per tunti';
$labels['first_day'] = 'Viikon ensimmäinen päivä';
$labels['first_hour'] = 'Ensimmäinen näytettävä tunti';
$labels['workinghours'] = 'Työaika';
$labels['add_category'] = 'Lisää luokka';
$labels['remove_category'] = 'Poista luokka';
$labels['defaultcalendar'] = 'Luo uudet tapahtumat kohteeseen';
$labels['eventcoloring'] = 'Tapahtuman väritys';
$labels['coloringmode0'] = 'Kalenterin mukaan';
$labels['coloringmode1'] = 'Luokan mukaan';
$labels['afternothing'] = 'Älä tee mitään';
$labels['aftertrash'] = 'Siirrä roskakoriin';
$labels['afterdelete'] = 'Poista viesti';
$labels['afterflagdeleted'] = 'Merkitse poistettavaksi';
$labels['aftermoveto'] = 'Siirrä...';
$labels['itipoptions'] = 'Tapahtuman kutsut';
$labels['afteraction'] = 'Kun kutsu tai päivitysviesti on käsitelty';
$labels['calendar'] = 'Kalenteri';
$labels['calendars'] = 'Kalenterit';
$labels['category'] = 'Luokka';
$labels['categories'] = 'Luokat';
$labels['createcalendar'] = 'Luo uusi kalenteri';
$labels['editcalendar'] = 'Muokkaa kalenterin ominaisuuksia';
$labels['name'] = 'Nimi';
$labels['color'] = 'Väri';
$labels['day'] = 'Päivä';
$labels['week'] = 'Viikko';
$labels['month'] = 'Kuukausi';
$labels['agenda'] = 'Asialista';
$labels['new'] = 'Uusi';
$labels['new_event'] = 'Uusi tapahtuma';
$labels['edit_event'] = 'Muokkaa tapahtumaa';
$labels['edit'] = 'Muokkaa';
$labels['save'] = 'Tallenna';
$labels['removelist'] = 'Poista listasta';
$labels['cancel'] = 'Peru';
$labels['select'] = 'Valitse';
$labels['print'] = 'Tulosta';
$labels['printtitle'] = 'Tulosta kalenterit';
$labels['title'] = 'Yhteenveto';
$labels['description'] = 'Kuvaus';
$labels['all-day'] = 'koko päivä';
$labels['export'] = 'Vie';
$labels['exporttitle'] = 'Vie iCalendar-muotoon';
$labels['exportrange'] = 'Tapahtumat';
$labels['exportattachments'] = 'Liitteiden kanssa';
$labels['customdate'] = 'Kustomoitu aika';
$labels['location'] = 'Sijainti';
$labels['url'] = 'Osoite';
$labels['date'] = 'Päiväys';
$labels['start'] = 'Alkaa';
$labels['starttime'] = 'Aloitusaika';
$labels['end'] = 'Päättyy';
$labels['endtime'] = 'Päättymisaika';
$labels['repeat'] = 'Toista';
$labels['selectdate'] = 'Valitse päiväys';
$labels['freebusy'] = 'Aseta tilakseni';
$labels['free'] = 'Vapaa';
$labels['busy'] = 'Varattu';
$labels['outofoffice'] = 'Ei toimistolla';
$labels['tentative'] = 'Alustava';
$labels['mystatus'] = 'Tilani';
$labels['status'] = 'Tila';
$labels['status-confirmed'] = 'Vahvistettu';
$labels['status-cancelled'] = 'Peruttu';
$labels['priority'] = 'Tärkeys';
$labels['sensitivity'] = 'Yksityisyys';
$labels['public'] = 'julkinen';
$labels['private'] = 'yksityinen';
$labels['confidential'] = 'luottamuksellinen';
$labels['links'] = 'Viittaus';
$labels['alarms'] = 'Muistutus';
$labels['comment'] = 'Kommentti';
$labels['created'] = 'Luotu';
$labels['changed'] = 'Viimeksi muokattu';
$labels['unknown'] = 'Tuntematon';
$labels['eventoptions'] = 'Valinnat';
$labels['generated'] = 'generoitu';
$labels['eventhistory'] = 'Historia';
$labels['removelink'] = 'Poista sähköpostiviittaus';
$labels['printdescriptions'] = 'Tulosta kuvaukset';
$labels['searchearlierdates'] = '« Etsi aiempia tapahtumia';
$labels['searchlaterdates'] = 'Etsi myöhempiä tapahtumia »';
$labels['andnmore'] = '$nr lisää...';
$labels['togglerole'] = 'Klikkaa vaihtaaksesi rooli';
$labels['createfrommail'] = 'Tallenna tapahtumana';
$labels['importevents'] = 'Tuo tapahtumat';
$labels['importrange'] = 'Tapahtumat';
$labels['onemonthback'] = '1 kuukauden ajalta';
$labels['nmonthsback'] = '$nr kuukauden ajalta';
$labels['showurl'] = 'Näytä kalenterin osoite';
$labels['showurldescription'] = 'Käytä seuraavia osoitteita avataksesi kalenterisi pelkässä lukumuodossa muissa sovelluksissa. Voit kopioida ja liittää osoitteen mihin tahansa iCal-muotoa tukevaan kalenterisovellukseen.';
$labels['caldavurldescription'] = 'Kopioi tämä osoite <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a-asiakassovellukseen (esim. Evolution tai Mozilla Thunderbird) synkronoidaksesi tämän kalenterin tietokoneesi tai mobiililaitteesi kanssa.';
$labels['findcalendars'] = 'Etsi kalentereita...';
$labels['searchterms'] = 'Hakuehdot';
$labels['calsearchresults'] = 'Saatavilla olevat kalenterit';
$labels['calendarsubscribe'] = 'Luetteloi pysyvästi';
$labels['nocalendarsfound'] = 'Kalentereita ei löytynyt';
$labels['nrcalendarsfound'] = '$nr kalenteria löytynyt';
$labels['quickview'] = 'Näytä vain tämä kalenteri';
$labels['invitationspending'] = 'Odottavat kutsut';
$labels['invitationsdeclined'] = 'Torjutut kutsut';
$labels['changepartstat'] = 'Muuta osallistujan tilaa';
$labels['rsvpcomment'] = 'Kutsuteksti';
$labels['listrange'] = 'Näytettävä aikaväli';
$labels['listsections'] = 'Jaa osiin:';
$labels['smartsections'] = 'Älykkäät osiot';
$labels['until'] = 'kunnes';
$labels['today'] = 'Tänään';
$labels['tomorrow'] = 'Huomenna';
$labels['thisweek'] = 'Tällä viikolla';
$labels['nextweek'] = 'Ensi viikolla';
$labels['prevweek'] = 'Edellinen viikko';
$labels['thismonth'] = 'Tässä kuussa';
$labels['nextmonth'] = 'Ensi kuussa';
$labels['weekofyear'] = 'Viikko';
$labels['pastevents'] = 'Menneet';
$labels['futureevents'] = 'Tulevat';
$labels['showalarms'] = 'Näytä muistutukset';
$labels['defaultalarmtype'] = 'Muistutuksen oletusasetus';
$labels['defaultalarmoffset'] = 'Muistutuksen oletusaika';
$labels['attendee'] = 'Osallistujat';
$labels['role'] = 'Rooli';
$labels['availability'] = 'Saatavilla';
$labels['confirmstate'] = 'Tila';
$labels['addattendee'] = 'Lisää osallistuja';
$labels['roleorganizer'] = 'Järjestäjä';
$labels['rolerequired'] = 'Vaadittu';
$labels['roleoptional'] = 'Valinnainen';
$labels['rolechair'] = 'Kutsuja';
$labels['rolenonparticipant'] = 'Poissaoleva';
$labels['cutypeindividual'] = 'Yksityishenkilö';
$labels['cutypegroup'] = 'Ryhmä';
$labels['cutyperesource'] = 'Resurssi';
$labels['cutyperoom'] = 'Huone';
$labels['availfree'] = 'Vapaa';
$labels['availbusy'] = 'Varattu';
$labels['availunknown'] = 'Tuntematon';
$labels['availtentative'] = 'Alustava';
$labels['availoutofoffice'] = 'Ei toimistolla';
$labels['delegatedto'] = 'Delegoitu henkilölle:';
$labels['delegatedfrom'] = 'Delegoitus henkilöltä:';
$labels['scheduletime'] = 'Etsi saatavuus';
$labels['sendinvitations'] = 'Lähetä kutsut';
$labels['sendnotifications'] = 'Ilmoita osallistujille muutoksista';
$labels['sendcancellation'] = 'Ilmoita osallistujille tapahtuman perumisesta';
$labels['onlyworkinghours'] = 'Etsi saatavuutta työajan sisältä';
$labels['reqallattendees'] = 'Vaadittu/kaikki osallistujat';
$labels['prevslot'] = 'Edellinen ajankohta';
$labels['nextslot'] = 'Seuraava ajankohta';
$labels['suggestedslot'] = 'Ehdotettu ajankohta';
$labels['noslotfound'] = 'Vapaata ajankohtaa ei löytynyt';
$labels['invitationsubject'] = 'Sinut on kutsuttu tapahtumaan "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nMilloin: \$date\n\nKutsutut: \$attendees\n\nOhessa iCalendar -tiedosto mistä löytyvät kaikki tapahtuman yksityistiedot. Voit tuoda tämän tiedoston kalenteriohjelmaasi.";
$labels['invitationattendlinks'] = "Mikäli sähköpostiohjelmasi ei tue iTip pyyntöjä, voit aina käyttää ao. osoitetta kutsun hyväksymiseen / hylkäämiseen:\n\$url";
$labels['eventupdatesubject'] = '"$title" on päivitetty';
$labels['eventupdatesubjectempty'] = 'Sinua koskeva tapahtuma on päivitetty';
$labels['eventupdatemailbody'] = "*\$title*\n\nMilloin: \$date\n\nKutsutut: \$attendees\n\nOhessa iCalendar -tiedosto mistä löytyvät kaikki päivitetyn tapahtuman yksityistiedot. Voit tuoda tämän tiedoston kalenteriohjelmaasi.";
$labels['eventcancelsubject'] = '"$title" on peruttu';
$labels['eventcancelmailbody'] = "*\$title*\n\nMilloin: \$date\n\nKutsutut: \$attendees\n\nTämä tapahtuma on peruttu \$organizer toimesta.\n\nLöydät liitteenä iCalendar -tiedoston tapahtuman päivitetyin tiedoin.";
$labels['itipobjectnotfound'] = 'Viestissä mainittua tapahtumaa ei löydy kalenteristasi.';
$labels['itipmailbodyaccepted'] = "\$sender on hyväksynyt kutsun seuraavaan tapahtumaan:\n\n*\$title*\n\nMilloin: \$date\n\nKutsutut: \$attendees";
$labels['itipmailbodytentative'] = "\$sender on alustavasti hyväksynyt kutsun seuraavaan tapahtumaan:\n\n*\$title*\n\nMilloin: \$date\n\nKutsutut: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender on hylännyt kutsun seuraavaan tapahtumaan:\n\n*\$title*\n\nMilloin: \$date\n\nKutsutut: \$attendees";
$labels['itipmailbodycancel'] = "\$sender on hylännyt osallistumisesi tapahtumaan:\n\n*\$title*\n\nMilloin: \$date";
$labels['itipmailbodydelegated'] = "\$sender on delegoinut osallistumisensa seuraavaan tapahtumaan:\n\n*\$title*\n\nAjankohta: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender on delegoinut osallistumisensa sinulle seuraavaan tapahtumaan:\n\n*\$title*\n\nAjankohta: \$date";
$labels['itipdeclineevent'] = 'Haluatko perua kutsun tähän tapahtumaan?';
$labels['declinedeleteconfirm'] = 'Haluatko poistaa tämän hylätyn tapahtuman kalenteristasi?';
$labels['itipcomment'] = 'Kutsun/herätteen kommentit';
$labels['itipcommenttitle'] = 'Tämä kommentti liitetään osallistujille lähetettävään kutsuun/heräteviestiin';
$labels['notanattendee'] = 'Sinua ei ole määritetty tapahtuman osanottajaksi';
$labels['eventcancelled'] = 'Tapahtuma on peruttu';
$labels['updatemycopy'] = 'Päivitä kalenterini';
$labels['savetocalendar'] = 'Tallenna kalenteriin';
$labels['openpreview'] = 'Tarkista kalenteri';
$labels['noearlierevents'] = 'Ei aiempia tapahtumia';
$labels['nolaterevents'] = 'Ei myöhempiä tapahtumia';
$labels['resource'] = 'Resurssi';
$labels['addresource'] = 'Varaa resurssi';
$labels['findresources'] = 'Etsi resursseja';
$labels['resourcedetails'] = 'Tiedot';
$labels['resourceavailability'] = 'Saatavuus';
$labels['resourceowner'] = 'Omistaja';
$labels['resourceadded'] = 'Resurssi on liitetty tapahtumaasi';
$labels['tabsummary'] = 'Yhteenveto';
$labels['tabrecurrence'] = 'Toistuminen';
$labels['tabattendees'] = 'Osallistujat';
$labels['tabresources'] = 'Resurssit';
$labels['tabattachments'] = 'Liitteet';
$labels['tabsharing'] = 'Jakaminen';
$labels['deleteobjectconfirm'] = 'Haluatko varmasti poistaa tämän tapahtuman?';
$labels['deleteventconfirm'] = 'Haluatko varmasti poistaa tämän tapahtuman?';
$labels['deletecalendarconfirm'] = 'Haluatko varmasti poistaa tämän kalenterin ja kaikki sen tapahtumat?';
$labels['deletecalendarconfirmrecursive'] = 'Haluatko varmasti poistaa tämän kalenterin ja kaikki sen tapahtumat sekä alikalenterit?';
$labels['savingdata'] = 'Tallennetaan tietoja...';
$labels['errorsaving'] = 'Muutosten tallentaminen epäonnistui.';
$labels['operationfailed'] = 'Pyydetty toiminto epäonnistui.';
$labels['invalideventdates'] = 'Annettu virheellisiä päivämääriä! Tarkista syöte.';
$labels['invalidcalendarproperties'] = 'Kalenterin ominaisuudet ovat virheelliset. Aseta kelvollinen nimi.';
$labels['searchnoresults'] = 'Valituista kalentereista ei löytynyt tapahtumia.';
$labels['successremoval'] = 'Tapahtuma on poistettu onnistuneesti.';
$labels['successrestore'] = 'Tapahtuma on palautettu onnistuneesti.';
$labels['errornotifying'] = 'Herätteen lähetys osallistujille epäonnistui';
$labels['errorimportingevent'] = 'Tapahtuman tuonti epäonnistui';
$labels['importwarningexists'] = 'Tämän tapahtuman kopio löytyy jo kalenteristasi';
$labels['newerversionexists'] = 'Uudempi versio tästä tapahtumasta on jo olemassa! Keskeytetty.';
$labels['nowritecalendarfound'] = 'Tapahtuman tallentamiseksi ei löytynyt kalenteria';
$labels['importedsuccessfully'] = 'Tapahtuma lisättiin onnistuneesti kalenteriin \'$calendar\'';
$labels['updatedsuccessfully'] = 'Tapahtuma on onnistuneesti päivitetty kalenterissa \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Osallistujan tila päivitetty onnistuneesti';
$labels['itipsendsuccess'] = 'Kutsu lähetetty osallistujille.';
$labels['itipresponseerror'] = 'Vastauksen lähettäminen tapahtumakutsuun epäonnistui';
$labels['itipinvalidrequest'] = 'Kutsu ei ole enää kelvollinen';
$labels['sentresponseto'] = 'Vastaus kutsuun lähetetty onnistuneesti sähköpostiin $mailto';
$labels['localchangeswarning'] = 'Olet tekemässä muutoksia, jotka vaikuttavat ainoastaan omaan kalenteriisi. Muutoksia ei lähetetä tapahtuman järjestäjälle.';
$labels['importsuccess'] = '$nr tapahtumaa tuotiin onnistuneesti';
$labels['importnone'] = 'Tuotavaksi tarkoitettuja tapahtumia ei löytynyt';
$labels['importerror'] = 'Tuotaessa tapahtui virhe';
$labels['aclnorights'] = 'Sinulla ei ole ylläpitäjän oikeuksia tähän kalenteriin.';
$labels['changeeventconfirm'] = 'Vaihda tapahtuma';
$labels['removeeventconfirm'] = 'Poista tapahtuma';
$labels['changerecurringeventwarning'] = 'Tämä on tuistuva tapahtuma. Haluatko muokata vain tätä ajankohtaa, tätä ja tulevia tapahtuman ajankohtia, kaikkia tapahtuman ajankohtia vai tallentaa kokonaan uutena tapahtumana? ';
$labels['removerecurringeventwarning'] = 'Tämä on toistuva tapahtuma. Haluatko poistaa vain nykyisen tapahtuman, nykyisen tapahtuman ja tulevaisuuden tapahtumat vai kaikki tapahtumaan liittyvät merkinnät?';
$labels['removerecurringallonly'] = 'Tämä on toistuva tapahtuma. Osallistujana voit poistaa vain koko tapahtuman kaikkine toistumiskertoineen.';
$labels['currentevent'] = 'Nykyinen';
$labels['futurevents'] = 'Tulevat';
$labels['allevents'] = 'Kaikki';
$labels['saveasnew'] = 'Tallenna uutena';
$labels['birthdays'] = 'Syntymäpäivät';
$labels['birthdayscalendar'] = 'Syntymäpäivät kalenteri';
$labels['displaybirthdayscalendar'] = 'Näytä syntymäpäivät kalenterissa';
$labels['birthdayscalendarsources'] = 'Näistä osoitekirjoista';
$labels['birthdayeventtitle'] = 'Syntymäpäivä: $name';
$labels['birthdayage'] = 'Ikä $age';
$labels['eventchangelog'] = 'Muuta historiaa';
$labels['eventdiff'] = 'Muutokset versiosta $rev';
$labels['revision'] = 'Versio';
$labels['user'] = 'Käyttäjä';
$labels['operation'] = 'Toiminto';
$labels['actionappend'] = 'Tallennettu';
$labels['actionmove'] = 'Siirretty';
$labels['actiondelete'] = 'Poistettu';
$labels['compare'] = 'Vertaa';
$labels['showrevision'] = 'Näytä tämä versio';
$labels['restore'] = 'Palauta tämä versio';
$labels['eventnotfound'] = 'Tapahtumadatan lataus epäonnistui';
$labels['eventchangelognotavailable'] = 'Tapahtuman muutoshistoria ei ole saatavilla';
$labels['eventdiffnotavailable'] = 'Vertailu ei ole saatavilla valittujen versioiden välillä';
$labels['eventrestoreconfirm'] = 'Haluatko varmasti palauttaa tämän tapahtuman version $rev? Nykyinen tapahtuma korvataan vanhalla versiolla.';
$labels['arialabelminical'] = 'Kalenterin ajankohdan valinta';
$labels['arialabelcalendarview'] = 'Kalenterinäkymä';
$labels['arialabelsearchform'] = 'Tapahtumahaun lomake';
$labels['arialabelquicksearchbox'] = 'Tapatumahaun syöte';
$labels['arialabelcalsearchform'] = 'Kalenterihakujen lomake';
$labels['calendaractions'] = 'Kalenterin toiminnot';
$labels['arialabeleventattendees'] = 'Tapahtuman osallistujalista';
$labels['arialabeleventresources'] = 'Tapahtuman resurssilista';
$labels['arialabelresourcesearchform'] = 'Resurssien hakulomake';
$labels['arialabelresourceselection'] = 'Saatavilla olevat resurssit';
?>

View file

@ -1,11 +1,14 @@
<?php
$labels = array();
// preferences
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Vue par défaut';
$labels['time_format'] = 'Format de l\'heure';
$labels['timeslots'] = 'Nombre d\'intervalle par heure';
$labels['timeslots'] = 'Créneau horaire';
$labels['first_day'] = 'Premier jour de la semaine';
$labels['first_hour'] = 'Première heure à afficher';
$labels['workinghours'] = 'Heures de travail';
@ -17,8 +20,13 @@ $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['afternothing'] = 'Ne rien faire';
$labels['aftertrash'] = 'Déplacer dans la corbeille';
$labels['afterdelete'] = 'Supprimer ce message';
$labels['afterflagdeleted'] = 'Marquer comme supprimer';
$labels['aftermoveto'] = 'Déplacer vers...';
$labels['itipoptions'] = 'Invitations à l\'évenement';
$labels['afteraction'] = 'Après une invitation ou une modification, le message est traité';
$labels['calendar'] = 'Agenda';
$labels['calendars'] = 'Agendas';
$labels['category'] = 'Catégorie';
@ -36,7 +44,7 @@ $labels['new_event'] = 'Nouvel évènement';
$labels['edit_event'] = 'Modifier l\'évènement';
$labels['edit'] = 'Modifier';
$labels['save'] = 'Enregistrer';
$labels['remove'] = 'Supprimer';
$labels['removelist'] = 'supprimer de la liste';
$labels['cancel'] = 'Annuler';
$labels['select'] = 'Sélectionner';
$labels['print'] = 'Imprimer';
@ -46,23 +54,42 @@ $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'] = 'Date personnalisée';
$labels['location'] = 'Lieu';
$labels['url'] = 'URL';
$labels['date'] = 'Date';
$labels['start'] = 'Début';
$labels['starttime'] = 'Début';
$labels['end'] = 'Fin';
$labels['endtime'] = 'Fin';
$labels['repeat'] = 'Répéter';
$labels['selectdate'] = 'Sélectionner une date';
$labels['freebusy'] = 'Montrez moi comme';
$labels['free'] = 'Libre';
$labels['busy'] = 'Occupé';
$labels['outofoffice'] = 'Absent';
$labels['tentative'] = 'Provisoire';
$labels['mystatus'] = 'Mon status';
$labels['status'] = 'Statut';
$labels['status-confirmed'] = 'Confirmé';
$labels['status-cancelled'] = 'Annulée';
$labels['priority'] = 'Priorité';
$labels['sensitivity'] = 'Diffusion';
$labels['public'] = 'publique';
$labels['private'] = 'privée';
$labels['confidential'] = 'Confidentiel';
$labels['links'] = 'Référence';
$labels['alarms'] = 'Rappel';
$labels['comment'] = 'Commentaire';
$labels['created'] = 'Créée';
$labels['changed'] = 'Dernière modification';
$labels['unknown'] = 'Inconnu';
$labels['eventoptions'] = 'Options';
$labels['generated'] = 'généré à';
$labels['eventhistory'] = 'Historique';
$labels['removelink'] = 'Enlever référence d\'e-mail';
$labels['printdescriptions'] = 'Imprimer les descriptions';
$labels['parentcalendar'] = 'Ajouter à l\'intérieur';
$labels['searchearlierdates'] = '« Chercher des évènements plus ancien';
@ -76,8 +103,18 @@ $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.';
// agenda view
$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.';
$labels['findcalendars'] = 'Recherche de calendriers...';
$labels['searchterms'] = 'Critères de recherche';
$labels['calsearchresults'] = 'Calendriers disponibles';
$labels['calendarsubscribe'] = 'Lister définitivement';
$labels['nocalendarsfound'] = 'Aucun calendriers trouvés';
$labels['nrcalendarsfound'] = '$nr calendriers trouvés';
$labels['quickview'] = 'Voir uniquement ce calendrier';
$labels['invitationspending'] = 'Invitations en attente';
$labels['invitationsdeclined'] = 'Invitations refusées';
$labels['changepartstat'] = 'Changer le statut du participent';
$labels['rsvpcomment'] = 'Texte d\'invitation';
$labels['listrange'] = 'Intervalle à afficher :';
$labels['listsections'] = 'Diviser en :';
$labels['smartsections'] = 'Section intelligente';
@ -86,18 +123,15 @@ $labels['today'] = 'Aujourd\'hui';
$labels['tomorrow'] = 'Demain';
$labels['thisweek'] = 'Cette semaine';
$labels['nextweek'] = 'Semaine prochaine';
$labels['prevweek'] = 'Semaine précédente';
$labels['thismonth'] = 'Ce mois';
$labels['nextmonth'] = 'Mois prochain';
$labels['weekofyear'] = 'Semaine';
$labels['pastevents'] = 'Passé';
$labels['futureevents'] = 'Futur';
// alarm/reminder settings
$labels['showalarms'] = 'Afficher les alarmes';
$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.';
@ -106,12 +140,19 @@ $labels['addattendee'] = 'Ajouter participant';
$labels['roleorganizer'] = 'Organisateur';
$labels['rolerequired'] = 'Requis';
$labels['roleoptional'] = 'Optionel';
$labels['roleresource'] = 'Ressource';
$labels['rolechair'] = 'Chair';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Groupe';
$labels['cutyperesource'] = 'Ressource';
$labels['cutyperoom'] = 'Salle';
$labels['availfree'] = 'Disponible';
$labels['availbusy'] = 'Occupé';
$labels['availunknown'] = 'Inconnu';
$labels['availtentative'] = 'Provisoire';
$labels['availoutofoffice'] = 'Absent';
$labels['delegatedto'] = 'Délégué à :';
$labels['delegatedfrom'] = 'Délégué de :';
$labels['scheduletime'] = 'Trouver les disponibilités';
$labels['sendinvitations'] = 'Envoyer les invitations';
$labels['sendnotifications'] = 'Informer les participants des modifications';
@ -120,52 +161,50 @@ $labels['onlyworkinghours'] = 'Trouver des disponibilités en fonction de mes he
$labels['reqallattendees'] = 'Demandé/tous';
$labels['prevslot'] = 'Créneau précédent';
$labels['nextslot'] = 'Créneau suivant';
$labels['suggestedslot'] = 'Emplacement suggéré';
$labels['noslotfound'] = 'Impossible de trouver un créneau disponible';
$labels['invitationsubject'] = 'Vous avez invité à "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$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['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é';
$labels['eventupdatesubjectempty'] = 'Un évènement vous concernant a été modifié';
$labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$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['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\nWhen: \$date\n\nInvitees: \$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.";
// invitation handling
$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['itipmailbodyaccepted'] = "\$sender a accepté l'invitation à l'évènement suivant :\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender a accepté provisoirement l'invitation à l'évènement suivant :\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender a refusé l'invitation à l'évènement suivant :\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$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['itipobjectnotfound'] = 'L\'évènement lié à ce message n\'a pas été trouvé dans votre calendrier.';
$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['itipmailbodycancel'] = "\$sender a rejeté votre participation à lévènement suivant :\n\n*\$title*\n\nLe: \$date";
$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['itipcomment'] = 'Commentaire dinvitation ou de notification';
$labels['itipcommenttitle'] = 'Ce commentaire sera inséré dans le message d\'invitation ou de notification envoyé aux participants';
$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['updatemycopy'] = 'Mise à jour dans mon calendrier';
$labels['savetocalendar'] = 'Sauvegarde dans le calendrier';
$labels['openpreview'] = 'Test calendrier';
$labels['noearlierevents'] = 'Aucun évènements passé';
$labels['nolaterevents'] = 'Aucun évènement futur';
$labels['resource'] = 'Ressource';
$labels['addresource'] = 'Carnet de ressources';
$labels['findresources'] = 'Recherche des ressources';
$labels['resourcedetails'] = 'Détails';
$labels['resourceavailability'] = 'Disponibilité';
$labels['resourceowner'] = 'Propriétaire';
$labels['resourceadded'] = 'Cette ressource a été ajouté à l\'évènement';
$labels['tabsummary'] = 'Résumé';
$labels['tabrecurrence'] = 'Récurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Ressources';
$labels['tabattachments'] = 'Pièces jointes';
$labels['tabsharing'] = 'Partage';
// messages
$labels['deleteobjectconfirm'] = 'Voulez-vous vraiment supprimer cet évènement?';
$labels['deleteventconfirm'] = 'Voulez-vous vraiment supprimer cet évènement?';
$labels['deletecalendarconfirm'] = 'Voulez-vous vraiment supprimer cet agenda et tous ses évènements?';
$labels['deletecalendarconfirmrecursive'] = 'Voulez-vous vraiment supprimer ce calendrier avec tous ces évènements et ces sous calendriers ?';
$labels['savingdata'] = 'Enregistrer...';
$labels['errorsaving'] = 'Échec lors de l\'enregistrement des changements';
$labels['operationfailed'] = 'L\'opération demandée a échoué';
@ -176,55 +215,58 @@ $labels['successremoval'] = 'L\'évènement a été supprimé.';
$labels['successrestore'] = 'L\'évènement a été restauré.';
$labels['errornotifying'] = 'Échec de l\'envoi de notification aux participants ';
$labels['errorimportingevent'] = 'Échec de l\'import de l\'évènement';
$labels['importwarningexists'] = 'Une copie de cet évènement existe déjà dans votre calendrier.';
$labels['newerversionexists'] = 'Une nouvelle version de cet évènement existe! Abandon.';
$labels['nowritecalendarfound'] = 'Pas d\'agenda trouvé pour enregistrer l\'évènement';
$labels['importedsuccessfully'] = 'L\'évènement a été ajouté à l\'agenda \'$calendar\'';
$labels['updatedsuccessfully'] = 'Cet évènement a été modifié avec succès dans \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Le statut des participants a été modifié';
$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'] = 'Vous êtes sur le point de faire des changements uniquement visible sur votre agenda personnel.';
$labels['localchangeswarning'] = 'Vous êtes sur le point d\'effectuer des modifications qui seront effectifs sur votre calendrier mais qui ne seront pas envoyés à l\'organisateur de lévènement.';
$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';
$labels['daily'] = 'Quotidienne';
$labels['weekly'] = 'Hebdomadaire';
$labels['monthly'] = 'Mensuelle';
$labels['yearly'] = 'Annuelle';
$labels['every'] = 'Tous les';
$labels['days'] = 'jour(s)';
$labels['weeks'] = 'semaine(s)';
$labels['months'] = 'mois';
$labels['years'] = 'année(s) en :';
$labels['bydays'] = 'Le';
$labels['untildate'] = 'le';
$labels['each'] = 'Chaque';
$labels['onevery'] = 'Tous les';
$labels['onsamedate'] = 'à la même date';
$labels['forever'] = 'Pour toujours';
$labels['recurrencend'] = 'Jusqu\'à';
$labels['forntimes'] = '$nr fois';
$labels['first'] = 'premier';
$labels['second'] = 'deuxième';
$labels['third'] = 'troisième';
$labels['fourth'] = 'quatrième';
$labels['last'] = 'dernier';
$labels['dayofmonth'] = 'Jour du mois';
$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? ';
$labels['removerecurringeventwarning'] = 'Ceci est un évènement récurant. Voulez-vous supprimer seulement cette occurrence, celle-ci et toutes les suivantes ou toutes les occurrences de cet évènement?';
$labels['removerecurringeventwarning'] = 'Ceci est un évènement recrurent. Voulez-vous supprimer uniquement l\'évènement courent, lévènement courent et toutes ces occurrences futures ou toutes les occurrences ?';
$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';
$labels['birthdays'] = 'Anniversaires';
$labels['birthdayscalendar'] = 'Calendrier des anniversaires';
$labels['displaybirthdayscalendar'] = 'Afficher le calendrier des anniversaires';
$labels['birthdayscalendarsources'] = 'Depuis ces carnets d\'adresses';
$labels['birthdayeventtitle'] = 'Anniversaire de $name';
$labels['birthdayage'] = 'Age $age';
$labels['eventchangelog'] = 'Historique des modifications';
$labels['eventdiff'] = 'Modifications pour le version $rev';
$labels['revision'] = 'Version';
$labels['user'] = 'Utilisateur';
$labels['operation'] = 'Action';
$labels['actionappend'] = 'Sauvegardé';
$labels['actionmove'] = 'Déplacé';
$labels['actiondelete'] = 'Supprimé';
$labels['compare'] = 'Comparer';
$labels['showrevision'] = 'Afficher cette version';
$labels['restore'] = 'Restaurer cette version';
$labels['eventnotfound'] = 'Impossible de charger les données de lévènement';
$labels['eventchangelognotavailable'] = 'Il n\'y a pas d\'historique des modifications pour cet évènement';
$labels['eventdiffnotavailable'] = 'La comparaison des versions sélectionnées est impossible';
$labels['eventrestoreconfirm'] = 'Voulez-vous vraiment restaurer le version $rev de cet évènement ? Cette action va remplacer l\'évènement courent par l\'ancienne version.';
$labels['arialabelminical'] = 'Sélection de la date du calendrier';
$labels['arialabelcalendarview'] = 'Vue du calendrier';
$labels['arialabelsearchform'] = 'Recherche d\'évènements depuis';
$labels['arialabelquicksearchbox'] = 'Saisie de le recherche d\'évènements';
$labels['arialabelcalsearchform'] = 'Recherche de calendriers';
$labels['calendaractions'] = 'Actions calendrier';
$labels['arialabeleventattendees'] = 'Liste des participants à l\'évènement';
$labels['arialabeleventresources'] = 'Liste des ressources de l\'évènement';
$labels['arialabelresourcesearchform'] = 'Recherche des ressources';
$labels['arialabelresourceselection'] = 'Ressources disponibles';
?>

272
localization/he.inc Normal file
View file

@ -0,0 +1,272 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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';
$labels['afternothing'] = 'Do nothing';
$labels['aftertrash'] = 'Move to Trash';
$labels['afterdelete'] = 'Delete the message';
$labels['afterflagdeleted'] = 'Flag as deleted';
$labels['aftermoveto'] = 'Move to...';
$labels['itipoptions'] = 'Event Invitations';
$labels['afteraction'] = 'After an invitation or update message is processed';
$labels['calendar'] = 'Calendar';
$labels['calendars'] = 'Calendars';
$labels['category'] = 'Category';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Name';
$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'] = 'Save';
$labels['removelist'] = 'Remove from list';
$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['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['endtime'] = 'End time';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['mystatus'] = 'My status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Confirmed';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['eventoptions'] = 'Options';
$labels['generated'] = 'generated at';
$labels['eventhistory'] = 'History';
$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.';
$labels['findcalendars'] = 'Find calendars...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Available Calendars';
$labels['calendarsubscribe'] = 'List permanently';
$labels['nocalendarsfound'] = 'No calendars found';
$labels['nrcalendarsfound'] = '$nr calendars found';
$labels['quickview'] = 'View only this calendar';
$labels['invitationspending'] = 'Pending invitations';
$labels['invitationsdeclined'] = 'Declined invitations';
$labels['changepartstat'] = 'Change participant status';
$labels['rsvpcomment'] = 'Invitation text';
$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['prevweek'] = 'Previous week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$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['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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['suggestedslot'] = 'Suggested 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.";
$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['itipmailbodycancel'] = "\$sender has rejected your participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegated'] = "\$sender has delegated the participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender has delegated the participation in the following event to you:\n\n*\$title*\n\nWhen: \$date";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['itipcommenttitle'] = 'This comment will be attached to the invitation/notification message sent to participants';
$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';
$labels['savetocalendar'] = 'Save to calendar';
$labels['openpreview'] = 'Check Calendar';
$labels['noearlierevents'] = 'No earlier events';
$labels['nolaterevents'] = 'No later events';
$labels['resource'] = 'Resource';
$labels['addresource'] = 'Book resource';
$labels['findresources'] = 'Find resources';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Availability';
$labels['resourceowner'] = 'Owner';
$labels['resourceadded'] = 'The resource was added to your event';
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Resources';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
$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?';
$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['importwarningexists'] = 'A copy of this event already exists in your calendar.';
$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['updatedsuccessfully'] = 'The event was successfully updated in \'$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.';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Delete 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 delete 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';
$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';
$labels['eventchangelog'] = 'Change History';
$labels['eventdiff'] = 'Changes from revisions $rev';
$labels['revision'] = 'Revision';
$labels['user'] = 'User';
$labels['operation'] = 'Action';
$labels['actionappend'] = 'Saved';
$labels['actionmove'] = 'Moved';
$labels['actiondelete'] = 'Deleted';
$labels['compare'] = 'Compare';
$labels['showrevision'] = 'Show this version';
$labels['restore'] = 'Restore this version';
$labels['eventnotfound'] = 'Failed to load event data';
$labels['eventchangelognotavailable'] = 'Change history is not available for this event';
$labels['eventdiffnotavailable'] = 'No comparison possible for the selected revisions';
$labels['eventrestoreconfirm'] = 'Do you really want to restore revision $rev of this event? This will replace the current event with the old version.';
$labels['arialabelminical'] = 'Calendar date selection';
$labels['arialabelcalendarview'] = 'Calendar view';
$labels['arialabelsearchform'] = 'Event search form';
$labels['arialabelquicksearchbox'] = 'Event search input';
$labels['arialabelcalsearchform'] = 'Calendars search form';
$labels['calendaractions'] = 'Calendar actions';
$labels['arialabeleventattendees'] = 'Event participants list';
$labels['arialabeleventresources'] = 'Event resources list';
$labels['arialabelresourcesearchform'] = 'Resources search form';
$labels['arialabelresourceselection'] = 'Available resources';
?>

272
localization/hr.inc Normal file
View file

@ -0,0 +1,272 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Default view';
$labels['time_format'] = 'Format datuma';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Prvi dan tjedna';
$labels['first_hour'] = 'Prvi sat za prikaz';
$labels['workinghours'] = 'Radni sati';
$labels['add_category'] = 'Dodaj kategoriju';
$labels['remove_category'] = 'Obriši kategoriju';
$labels['defaultcalendar'] = 'Kreiraj nove događaje u';
$labels['eventcoloring'] = 'Bojanje događaja';
$labels['coloringmode0'] = 'Prema kalendaru';
$labels['coloringmode1'] = 'Prema kategoriji';
$labels['coloringmode2'] = 'Calendar for outline, category for content';
$labels['coloringmode3'] = 'Category for outline, calendar for content';
$labels['afternothing'] = 'Do nothing';
$labels['aftertrash'] = 'Move to Trash';
$labels['afterdelete'] = 'Delete the message';
$labels['afterflagdeleted'] = 'Flag as deleted';
$labels['aftermoveto'] = 'Move to...';
$labels['itipoptions'] = 'Event Invitations';
$labels['afteraction'] = 'After an invitation or update message is processed';
$labels['calendar'] = 'Kalendar';
$labels['calendars'] = 'Kalendari';
$labels['category'] = 'Kategorija';
$labels['categories'] = 'Kategorije';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Name';
$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'] = 'Save';
$labels['removelist'] = 'Remove from list';
$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['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['endtime'] = 'End time';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['mystatus'] = 'My status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Confirmed';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['eventoptions'] = 'Options';
$labels['generated'] = 'generated at';
$labels['eventhistory'] = 'History';
$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.';
$labels['findcalendars'] = 'Find calendars...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Available Calendars';
$labels['calendarsubscribe'] = 'List permanently';
$labels['nocalendarsfound'] = 'No calendars found';
$labels['nrcalendarsfound'] = '$nr calendars found';
$labels['quickview'] = 'View only this calendar';
$labels['invitationspending'] = 'Pending invitations';
$labels['invitationsdeclined'] = 'Declined invitations';
$labels['changepartstat'] = 'Change participant status';
$labels['rsvpcomment'] = 'Invitation text';
$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['prevweek'] = 'Previous week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$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['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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['suggestedslot'] = 'Suggested 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.";
$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['itipmailbodycancel'] = "\$sender has rejected your participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegated'] = "\$sender has delegated the participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender has delegated the participation in the following event to you:\n\n*\$title*\n\nWhen: \$date";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['itipcommenttitle'] = 'This comment will be attached to the invitation/notification message sent to participants';
$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';
$labels['savetocalendar'] = 'Save to calendar';
$labels['openpreview'] = 'Check Calendar';
$labels['noearlierevents'] = 'No earlier events';
$labels['nolaterevents'] = 'No later events';
$labels['resource'] = 'Resource';
$labels['addresource'] = 'Book resource';
$labels['findresources'] = 'Find resources';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Availability';
$labels['resourceowner'] = 'Owner';
$labels['resourceadded'] = 'The resource was added to your event';
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Resources';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
$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?';
$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['importwarningexists'] = 'A copy of this event already exists in your calendar.';
$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['updatedsuccessfully'] = 'The event was successfully updated in \'$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.';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Delete 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 delete 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';
$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';
$labels['eventchangelog'] = 'Change History';
$labels['eventdiff'] = 'Changes from revisions $rev';
$labels['revision'] = 'Revision';
$labels['user'] = 'User';
$labels['operation'] = 'Action';
$labels['actionappend'] = 'Saved';
$labels['actionmove'] = 'Moved';
$labels['actiondelete'] = 'Deleted';
$labels['compare'] = 'Compare';
$labels['showrevision'] = 'Show this version';
$labels['restore'] = 'Restore this version';
$labels['eventnotfound'] = 'Failed to load event data';
$labels['eventchangelognotavailable'] = 'Change history is not available for this event';
$labels['eventdiffnotavailable'] = 'No comparison possible for the selected revisions';
$labels['eventrestoreconfirm'] = 'Do you really want to restore revision $rev of this event? This will replace the current event with the old version.';
$labels['arialabelminical'] = 'Calendar date selection';
$labels['arialabelcalendarview'] = 'Calendar view';
$labels['arialabelsearchform'] = 'Event search form';
$labels['arialabelquicksearchbox'] = 'Event search input';
$labels['arialabelcalsearchform'] = 'Calendars search form';
$labels['calendaractions'] = 'Calendar actions';
$labels['arialabeleventattendees'] = 'Event participants list';
$labels['arialabeleventresources'] = 'Event resources list';
$labels['arialabelresourcesearchform'] = 'Resources search form';
$labels['arialabelresourceselection'] = 'Available resources';
?>

View file

@ -1,38 +1,217 @@
<?php
/**
* RoundCube Calendar
* Localizations for Kolab Calendar plugin
*
* Plugin to add a calendar to RoundCube.
* Copyright (C) 2014, Kolab Systems AG
*
* @version 0.2 BETA 2
* @author Lazlo Westerhof
* @url http://rc-calendar.lazlo.me
* @licence GNU GPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
*
**/
$labels = array();
// config
$labels['default_view'] = 'Alap nézet';
$labels['time_format'] = 'Idõ formátum';
$labels['timeslots'] = 'Idõrés óránként';
$labels['first_day'] = 'A hét elsõ napja';
// calendar
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Alapnézett nézet';
$labels['time_format'] = 'Idő formátum';
$labels['timeslots'] = 'Órák felbontása időrésekre';
$labels['first_day'] = 'A hét első napja';
$labels['first_hour'] = 'Kezdő óra';
$labels['workinghours'] = 'Munkaidő';
$labels['add_category'] = 'Kategória hozzáadása';
$labels['remove_category'] = 'Kategória törlése';
$labels['defaultcalendar'] = 'Új események alapértelmezett helye';
$labels['eventcoloring'] = 'Események színezése';
$labels['coloringmode0'] = 'Naptár szerint';
$labels['coloringmode1'] = 'Kategória szerint';
$labels['coloringmode2'] = 'Naptár színe körvonal, kategória színe belsőrész';
$labels['coloringmode3'] = 'Kategória színe körvonal, naptár színe belsőrész';
$labels['calendar'] = 'Naptár';
$labels['calendars'] = 'Naptárak';
$labels['category'] = 'Kategória';
$labels['categories'] = 'Kategóriák';
$labels['createcalendar'] = 'Új naptár létrehozása';
$labels['editcalendar'] = 'Naptár tulajdonságai';
$labels['name'] = 'Név';
$labels['color'] = 'Szín';
$labels['day'] = 'Nap';
$labels['week'] = 'Hét';
$labels['month'] = 'Hónap';
$labels['new_event'] = 'Új bejegyzés';
$labels['edit_event'] = 'Bejegyzés szerkesztése';
$labels['agenda'] = 'Napirend';
$labels['new'] = 'Új';
$labels['new_event'] = 'Új esemény';
$labels['edit_event'] = 'Esemény módosítása';
$labels['edit'] = 'Módosítás';
$labels['save'] = 'Mentés';
$labels['remove'] = 'Törlés';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Mégse';
$labels['select'] = 'Jelölés';
$labels['print'] = 'Nyomtatás';
$labels['printtitle'] = 'Naptárak nyomtatása';
$labels['title'] = 'Tárgy';
$labels['description'] = 'Leírás';
$labels['all-day'] = 'Egész nap';
$labels['export'] = 'Exportálás ICS formátumba';
$labels['category'] = 'Kategória';
$labels['export'] = 'Exportálás';
$labels['exporttitle'] = 'Exportálás iCalendar-ba';
$labels['exportrange'] = 'Visszamenőleg';
$labels['exportattachments'] = 'Csatolmányokkal';
$labels['customdate'] = 'Megadott dátumig';
$labels['location'] = 'Hol';
$labels['url'] = 'URL';
$labels['date'] = 'Dátum';
$labels['start'] = 'Kezdet';
$labels['starttime'] = 'Start time';
$labels['end'] = 'Vég';
$labels['repeat'] = 'Ismétlődés';
$labels['selectdate'] = 'Válasszon dátumot';
$labels['freebusy'] = 'Foglaltság';
$labels['free'] = 'Szabad';
$labels['busy'] = 'Foglalt';
$labels['outofoffice'] = 'Házon kívűl';
$labels['tentative'] = 'Feltételes';
$labels['status'] = 'Stát.';
$labels['status-confirmed'] = 'Confirmed';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Prioritás';
$labels['sensitivity'] = 'Manánszféra';
$labels['public'] = 'publikus';
$labels['private'] = 'privát';
$labels['confidential'] = 'titkos';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Emlékeztető';
$labels['comment'] = 'Megjegyzés';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Ismeretlen foglaltság';
$labels['generated'] = 'készítve:';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Leírás nyomtatása';
$labels['parentcalendar'] = 'Szülőnaptár';
$labels['searchearlierdates'] = '< Korábbi események keresése';
$labels['searchlaterdates'] = 'Későbbi események keresése >';
$labels['andnmore'] = 'még $nr ...';
$labels['togglerole'] = 'Kattintson a szerepváltáshoz';
$labels['createfrommail'] = 'Mentés naptári eseményként';
$labels['importevents'] = 'Események importálása';
$labels['importrange'] = 'Visszamenőleg';
$labels['onemonthback'] = '1 hónapra';
$labels['nmonthsback'] = '$nr hónapra';
$labels['showurl'] = 'Naptár URL címe';
$labels['showurldescription'] = 'Ezen a címen érhető el (csak olvasásra!) a naptár más alkalmazások számára, iCal formátumban.';
$labels['caldavurldescription'] = 'Másolja be ezt a címet egy <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a>-kompatibilis kliensbe (pl. Evolution vagy Mozilla Thunderbird) hogy kétirányú szinkronizációval tudjon a naptárához hozzáférni.';
$labels['searchterms'] = 'Search terms';
$labels['calendarsubscribe'] = 'List permanently';
$labels['listrange'] = 'Megjelenítés:';
$labels['listsections'] = 'Felosztás:';
$labels['smartsections'] = 'Áttekintve';
$labels['until'] = 'eddig';
$labels['today'] = 'Ma';
$labels['tomorrow'] = 'Holnap';
$labels['thisweek'] = 'Ezen a héten';
$labels['nextweek'] = 'Jövő héten';
$labels['thismonth'] = 'Ebben a hónapban';
$labels['nextmonth'] = 'Jövő hónapban';
$labels['weekofyear'] = 'Hét:';
$labels['pastevents'] = 'Múltban';
$labels['futureevents'] = 'Jövőben';
$labels['showalarms'] = 'Emlékeztetők megjelenítése';
$labels['defaultalarmtype'] = 'Alapértelmezett emlékeztető';
$labels['defaultalarmoffset'] = 'Alapértelmezett emlékeztető ideje';
$labels['attendee'] = 'Résztvevő';
$labels['role'] = 'Szerepkör';
$labels['availability'] = 'Elérh.';
$labels['confirmstate'] = 'Stát.';
$labels['addattendee'] = 'Résztvevő meghívása';
$labels['roleorganizer'] = 'Szervező';
$labels['rolerequired'] = 'Kötelező';
$labels['roleoptional'] = 'Opcionális';
$labels['rolechair'] = 'Elnöklő';
$labels['rolenonparticipant'] = 'Hiányzó';
$labels['cutypeindividual'] = 'Egyén';
$labels['cutypegroup'] = 'Csoport';
$labels['cutyperesource'] = 'Eszköz';
$labels['cutyperoom'] = 'Helyiség';
$labels['availfree'] = 'Szabad';
$labels['availbusy'] = 'Foglalt';
$labels['availunknown'] = 'Ismeretlen foglaltság';
$labels['availtentative'] = 'Feltételes';
$labels['availoutofoffice'] = 'Házon kívül';
$labels['delegatedto'] = 'Beosztva ide: ';
$labels['delegatedfrom'] = 'Beosztva innen: ';
$labels['scheduletime'] = 'Elérhetőség';
$labels['sendinvitations'] = 'Meghívók küldése';
$labels['sendnotifications'] = 'Résztvevők értesítése a változásokról';
$labels['sendcancellation'] = 'Résztvevők értesítése a lemondásról';
$labels['onlyworkinghours'] = 'Elérhetőség figyelembevétele csak az én munkaidőmben';
$labels['reqallattendees'] = 'Mindenki részére';
$labels['prevslot'] = 'Előző idősáv';
$labels['nextslot'] = 'Következő idősáv';
$labels['noslotfound'] = 'Nem sikerült szabad idősávot találni';
$labels['invitationsubject'] = '$title';
$labels['invitationmailbody'] = "Meghívó érkezett '\$title' eseményre.\n\nIdőpont: \$date\nSzervező: \$organizer\nRésztvevők: \$attendees\n\n\nMellékletben egy iCalendar naptárbejegyzés, mely tetszőleges naptárprogramba importálható.";
$labels['invitationattendlinks'] = "Amennyiben a levelezőben nem lát elfogadó/elutasító gombokat (a levelező program nem támogatja az iTip üzeneteket), kattintson ide a meghívó elfogadására, vagy elutasítására:\n\$url";
$labels['eventupdatesubject'] = '$title - módosítva';
$labels['eventupdatesubjectempty'] = 'Egy Önt érintő esemény módosítva lett';
$labels['eventupdatemailbody'] = "Módosítás érkezett '\$title' eseményre vonatkozóan.\n\nIdőpont: \$date\nSzervező: \$organizer\nRésztvevők: \$attendees\n\n\nMellékletben egy frissített iCalendar naptárbejegyzés, mely tetszőleges naptárprogramba importálható.";
$labels['eventcancelsubject'] = '$title - lemondva';
$labels['eventcancelmailbody'] = "'\$title' eseményre \$organizer szervező visszavonta a meghívást.\n\nIdőpont: \$date\nRésztvevők: \$attendees\n\n\nMellékletben egy frissített iCalendar naptárbejegyzés, mely tetszőleges naptárprogramba importálható.";
$labels['itipobjectnotfound'] = 'Az üzenetben hivatkozott esemény nem található a naptárban.';
$labels['itipmailbodyaccepted'] = "\$sender elfogadta a meghívást '\$title' eseményre.\n\nIdőpont: \$date\nRésztvevők: \$attendees";
$labels['itipmailbodytentative'] = "\$sender feltételesen elfogadta a meghívást '\$title' eseményre.\n\nIdőpont: \$date\nRésztvevők: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender elutasította a meghívást '\$title' eseményre.\n\nIdőpont: \$date\nRésztvevők: \$attendees";
$labels['itipmailbodycancel'] = "\$sender elutasította a részvételét '\$title' eseményen, \$date időpontra";
$labels['itipdeclineevent'] = 'Biztos benne, hogy el szeretné utasítani ezt a meghívást?';
$labels['declinedeleteconfirm'] = 'Ki is szeretné törölni a saját naptárából ezt az időpontot?';
$labels['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'Ön nem szerepel az esemény meghívottai között';
$labels['eventcancelled'] = 'Az esemény le lett mondva';
$labels['saveincalendar'] = 'Mentés naptárba';
$labels['updatemycopy'] = 'Naptárbejegyzés frissítése';
$labels['resource'] = 'Eszközök';
$labels['addresource'] = 'Eszköz foglalása';
$labels['findresources'] = 'Eszközök keresése';
$labels['resourcedetails'] = 'Részletek';
$labels['resourceavailability'] = 'Elérhetőség';
$labels['resourceowner'] = 'Tulajdonos';
$labels['resourceadded'] = 'Az eszköz le lett foglalva az eseményhez';
$labels['tabsummary'] = 'Részletek';
$labels['tabrecurrence'] = 'Ismétlődés';
$labels['tabattendees'] = 'Résztvevők';
$labels['tabresources'] = 'Eszközök';
$labels['tabattachments'] = 'Csatolmányok';
$labels['tabsharing'] = 'Megosztás';
$labels['deleteobjectconfirm'] = 'Biztos benne, hogy törölni szeretné ezt az eseményt?';
$labels['deleteventconfirm'] = 'Biztos benne, hogy törölni szeretné ezt az eseményt?';
$labels['deletecalendarconfirm'] = 'Biztos benne, hogy törölni szeretné ezt a naptárat, az összes benne lévő eseménnyel?';
$labels['deletecalendarconfirmrecursive'] = 'Biztos benne, hogy törölni szeretné ezt a naptárat, az összes benne lévő al-naptárral és eseménnyel?';
$labels['savingdata'] = 'Adatok mentése...';
$labels['errorsaving'] = 'A módosításokat nem sikerült elmenteni.';
$labels['operationfailed'] = 'A műveletet nem sikerült elvégezni.';
$labels['invalideventdates'] = 'Helytelen dátumokoat adott meg! Kérem, ellenörizze a bevírt adatokat.';
$labels['invalidcalendarproperties'] = 'Helytelen naptár tulajdonságok! Kérem, adjon meg egy helyes nevet.';
$labels['searchnoresults'] = 'Nem található esemény a kiválasztott naptárakban.';
$labels['successremoval'] = 'Az esemény törlése sikerült.';
$labels['successrestore'] = 'Az esemény sikeresen vissza lett állítva.';
$labels['errornotifying'] = 'Nem sikerült meghívókat küldeni a résztvevőknek.';
$labels['errorimportingevent'] = 'Az esemény importálása sikertelen volt.';
$labels['newerversionexists'] = 'Egy újabb verzió már van ebből az eseményből! Itt abbahagytam.';
$labels['nowritecalendarfound'] = 'No calendar found to save the event';
$labels['importedsuccessfully'] = 'Az esemény a \'$calendar\' naptárhoz hozzá lett adva';
$labels['attendeupdateesuccess'] = 'A résztvevők adatai sikeresen frissítve';
$labels['itipsendsuccess'] = 'Értesítés küldve a résztvevőknek';
$labels['itipresponseerror'] = 'Nem sikerült választ küldeni erre a meghívásra';
$labels['itipinvalidrequest'] = 'Ez a meghívás már érvénytelen';
$labels['sentresponseto'] = 'Értesítésre válasz küldve: $mailto';
$labels['localchangeswarning'] = 'Ezek a változások csak az ön naptárában fognak megjelenni, az esemény szervezőjénél nem.';
$labels['importsuccess'] = '$nr esemény sikeresen importálva lett';
$labels['importnone'] = 'Nem található importálható esemény.';
$labels['importerror'] = 'Hiba importálás közben';
$labels['aclnorights'] = 'Nincs adminisztrátori joga ehhez a naptárhoz';
$labels['changeeventconfirm'] = 'Bejegyzés módosítása';
$labels['changerecurringeventwarning'] = 'Ez egy ismétlődő esemény. Csak ezt az előfordulást szeretné módosítani, esetleg ezt az előfordulást az összes következővel, netán a teljes sorozatot, vagy új eseményként legyen mentve?';
$labels['currentevent'] = 'Csak ezt';
$labels['futurevents'] = 'Ezt és a következőeket';
$labels['allevents'] = 'Egész sorozatot';
$labels['saveasnew'] = 'Mentés újként';
$labels['birthdays'] = 'Születésnapok';
$labels['birthdayscalendar'] = 'Születésnapi naptár';
$labels['displaybirthdayscalendar'] = 'Születésnapok megjelenítése';
$labels['birthdayscalendarsources'] = 'Alábbi címjegyzékekből:';
$labels['birthdayeventtitle'] = '$name születésnapja';
$labels['birthdayage'] = '$age éves';
$labels['actiondelete'] = 'Deleted';
?>

View file

@ -1,38 +1,274 @@
<?php
/**
* RoundCube Calendar
* Localizations for Kolab Calendar plugin
*
* Plugin to add a calendar to RoundCube.
* Copyright (C) 2014, Kolab Systems AG
*
* @version 0.2 BETA 2
* @author Lazlo Westerhof
* @url http://rc-calendar.lazlo.me
* @licence GNU GPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
*
**/
$labels = array();
// config
$labels['default_view'] = 'Visualizzazine di default';
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Visualizzazione predefinita';
$labels['time_format'] = 'Formato ora';
$labels['timeslots'] = 'Timeslots per ora';
$labels['first_day'] = 'Inizio settimana';
// calendar
$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';
$labels['afternothing'] = 'Nessuna azione';
$labels['aftertrash'] = 'Sposta nel cestino';
$labels['afterdelete'] = 'Cancella il messaggio';
$labels['afterflagdeleted'] = 'Segna come cancellato';
$labels['aftermoveto'] = 'Sposta in...';
$labels['itipoptions'] = 'Inviti all\'evento';
$labels['afteraction'] = 'Dopo un invito o un aggiornamento il messaggio è processato';
$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['removelist'] = 'Rimuovi dalla lista';
$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['category'] = 'Categoria';
?>
$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['starttime'] = 'Ora di inizio';
$labels['end'] = 'Fine';
$labels['endtime'] = 'Ora di fine';
$labels['repeat'] = 'Ricorrenza';
$labels['selectdate'] = 'Scegliere la data';
$labels['freebusy'] = 'Mostrami come';
$labels['free'] = 'Libero';
$labels['busy'] = 'Occupato';
$labels['outofoffice'] = 'Fuori Ufficio';
$labels['tentative'] = 'Provvisorio';
$labels['mystatus'] = 'Il mio stato';
$labels['status'] = 'Stato';
$labels['status-confirmed'] = 'Confermato';
$labels['status-cancelled'] = 'Cancellato';
$labels['priority'] = 'Priorità';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'pubblico';
$labels['private'] = 'privato';
$labels['confidential'] = 'confidenziale';
$labels['links'] = 'Riferimento';
$labels['alarms'] = 'Promemoria';
$labels['comment'] = 'Commento';
$labels['created'] = 'Creato';
$labels['changed'] = 'Ultima modifica';
$labels['unknown'] = 'Sconosciuto';
$labels['eventoptions'] = 'Opzioni';
$labels['generated'] = 'generato il';
$labels['eventhistory'] = 'Storico';
$labels['removelink'] = 'Rimuovi riferimento email';
$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.';
$labels['findcalendars'] = 'Trova calendari...';
$labels['searchterms'] = 'Cerca elemento';
$labels['calsearchresults'] = 'Calendari disponibili';
$labels['calendarsubscribe'] = 'Elenca sempre';
$labels['nocalendarsfound'] = 'Nessun calendario trovato';
$labels['nrcalendarsfound'] = '$nr calendari trovati';
$labels['quickview'] = 'Visualizza solo questo calendario';
$labels['invitationspending'] = 'Inviti in sospeso';
$labels['invitationsdeclined'] = 'Inviti scartati';
$labels['changepartstat'] = 'Cambia lo stato del partecipante';
$labels['rsvpcomment'] = 'Testo dell\'invito';
$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['prevweek'] = 'Settimana precedente';
$labels['thismonth'] = 'Questo mese';
$labels['nextmonth'] = 'Prossimo mese';
$labels['weekofyear'] = 'Settimana';
$labels['pastevents'] = 'Passato';
$labels['futureevents'] = 'Futuro';
$labels['showalarms'] = 'Mostra promemoria';
$labels['defaultalarmtype'] = 'Impostazioni predefinite dei promemoria';
$labels['defaultalarmoffset'] = 'Tempo predefinito per i promemoria';
$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['delegatedto'] = 'Delegato a:';
$labels['delegatedfrom'] = 'Delegato da:';
$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['suggestedslot'] = 'Spazio suggerito';
$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 .";
$labels['itipobjectnotfound'] = 'L\'evento al quale questo messaggio fa riferimento non è stato trovato nel tuo calendario.';
$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['itipmailbodycancel'] = "\$Il mittente ha rifiutato la tua partecipazione nel seguente evento:\n\n*\$title*\n\nQuando: \$date";
$labels['itipmailbodydelegated'] = "\$Il mittente ha delegato la partecipazione nel seguente evento:\n\n*\$title*\n\nQuando: \$date";
$labels['itipmailbodydelegatedto'] = "\$Il mittente ha delegato a te la partecipazione nel seguente evento:\n\n*\$title*\n\nQuando:\$date";
$labels['itipdeclineevent'] = 'Vuoi rifiutare l\'invito a questo evento?';
$labels['declinedeleteconfirm'] = 'Vuoi anche cancellare dal calendario l\'evento rifiutato?';
$labels['itipcomment'] = 'Commento all\'invito/notifica';
$labels['itipcommenttitle'] = 'Questo commento verrà allegato al messaggio di invito/notifica spedito ai partecipanti';
$labels['notanattendee'] = 'Non sei elencato tra i partecipanti a questo evento';
$labels['eventcancelled'] = 'L\'evento è stato annullato';
$labels['saveincalendar'] = 'salva in';
$labels['updatemycopy'] = 'Aggiorna nel mio calendario';
$labels['savetocalendar'] = 'Salva sul calendario';
$labels['openpreview'] = 'Controlla calendario';
$labels['noearlierevents'] = 'Non ci sono eventi precedenti';
$labels['nolaterevents'] = 'Non ci sono eventi successivi';
$labels['resource'] = 'Risorsa';
$labels['addresource'] = 'Prenota risorsa';
$labels['findresources'] = 'Trova risorse';
$labels['resourcedetails'] = 'Dettagli';
$labels['resourceavailability'] = 'Disponibilità';
$labels['resourceowner'] = 'Proprietario';
$labels['resourceadded'] = 'La risorsa è stata aggiunta al tuo evento';
$labels['tabsummary'] = 'Riepilogo';
$labels['tabrecurrence'] = 'Ricorrenza';
$labels['tabattendees'] = 'Partecipanti';
$labels['tabresources'] = 'Risorse';
$labels['tabattachments'] = 'Allegati';
$labels['tabsharing'] = 'Condivisione';
$labels['deleteobjectconfirm'] = 'Cancellare davvero questo evento?';
$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['importwarningexists'] = 'Una copia di questo evento esiste già nel tuo calendario';
$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['updatedsuccessfully'] = 'L\'evento è stato aggiornato con successo su \'$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.';
$labels['changeeventconfirm'] = 'Cambia evento';
$labels['removeeventconfirm'] = 'Cancella 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'] = 'Questo è un evento ricorrente. Vuoi cancellare solamente l\'evento corrente, quest\'ultimo e tutte le future ricorrenze oppure tutte le ricorrenze di questo evento?';
$labels['currentevent'] = 'Current';
$labels['futurevents'] = 'Futuro';
$labels['allevents'] = 'Tutto';
$labels['saveasnew'] = 'Salva come nuovo';
$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';
$labels['eventchangelog'] = 'Storico modifiche';
$labels['eventdiff'] = 'Cambiamenti dalle revisioni $rev';
$labels['revision'] = 'Revisione';
$labels['user'] = 'Utente';
$labels['operation'] = 'Azione';
$labels['actionappend'] = 'Salvato';
$labels['actionmove'] = 'Spostato';
$labels['actiondelete'] = 'Cancellato';
$labels['compare'] = 'Confronta';
$labels['showrevision'] = 'Mostra questa versione';
$labels['restore'] = 'Rirpistina questa versione';
$labels['eventnotfound'] = 'Caricamento dati dell\'evento fallito';
$labels['eventchangelognotavailable'] = 'Lo storico modifiche non è disponibile per questo evento';
$labels['eventdiffnotavailable'] = 'Nessun confronto possibile tra le revisioni selezionate';
$labels['eventrestoreconfirm'] = 'Vuoi veramente ripristinare la revisione $rev di questo evento? L\'evento corrente verrà sostituito dalla vecchia versione.';
$labels['arialabelminical'] = 'Selezione della data del calendario';
$labels['arialabelcalendarview'] = 'Vista calendario';
$labels['arialabelsearchform'] = 'Modulo ricerca evento';
$labels['arialabelquicksearchbox'] = 'Inserimento ricerca evento';
$labels['arialabelcalsearchform'] = 'Modulo ricerca calendari';
$labels['calendaractions'] = 'Azione calendari';
$labels['arialabeleventattendees'] = 'Lista partecipanti all\'evento';
$labels['arialabeleventresources'] = 'Lista risorse dell\'evento';
$labels['arialabelresourcesearchform'] = 'Modulo ricerca risorse';
$labels['arialabelresourceselection'] = 'Risorse disponibili';
?>

View file

@ -1,230 +1,209 @@
<?php
$labels = array();
// preferences
$labels['default_view'] = 'Default view';
$labels['time_format'] = 'Time format';
$labels['timeslots'] = 'Timeslots 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'] = 'Name';
$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'] = 'Save';
$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['location'] = 'Location';
$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.';
// 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 alarms';
$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['roleresource'] = 'Resource';
$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['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['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 personal calendar';
$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['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['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';
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'デフォルトビュー';
$labels['time_format'] = '時刻表示形式';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = '最初の平日';
$labels['first_hour'] = '最初の時間を表示';
$labels['workinghours'] = '労働時間';
$labels['add_category'] = 'カテゴリ追加';
$labels['remove_category'] = 'カテゴリ削除';
$labels['defaultcalendar'] = '新しいイベントの作成';
$labels['eventcoloring'] = 'イベントカラー';
$labels['coloringmode0'] = 'カレンダーの説明';
$labels['coloringmode1'] = 'カテゴリの説明';
$labels['coloringmode2'] = 'アウトライン用カレンダー、コンテンツ用カテゴリ';
$labels['coloringmode3'] = 'アウトライン用カレンダー、コンテンツ用カテゴリ';
$labels['calendar'] = 'カレンダー';
$labels['calendars'] = 'カレンダー';
$labels['category'] = 'カテゴリ';
$labels['categories'] = 'カテゴリ';
$labels['createcalendar'] = '新しいカレンダーの作成';
$labels['editcalendar'] = 'カレンダーのプロパティ編集';
$labels['name'] = '名前';
$labels['color'] = '色';
$labels['day'] = '日';
$labels['week'] = '週';
$labels['month'] = '月';
$labels['agenda'] = '予定表';
$labels['new'] = '新規';
$labels['new_event'] = '新規イベント';
$labels['edit_event'] = 'イベント編集';
$labels['edit'] = '編集';
$labels['save'] = '保存';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'キャンセル';
$labels['select'] = '選択';
$labels['print'] = '印刷';
$labels['printtitle'] = 'カレンダー印刷';
$labels['title'] = '要約';
$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['starttime'] = 'Start time';
$labels['end'] = '終了';
$labels['repeat'] = '繰返し';
$labels['selectdate'] = '日付選択';
$labels['freebusy'] = '表示する';
$labels['free'] = '空';
$labels['busy'] = 'ビジー';
$labels['outofoffice'] = '外出';
$labels['tentative'] = '仮';
$labels['status'] = '状態';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = '優先度';
$labels['sensitivity'] = 'プライバシー';
$labels['public'] = 'パブリック';
$labels['private'] = 'プライベート';
$labels['confidential'] = '親展';
$labels['links'] = 'Reference';
$labels['alarms'] = '通知';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = '不明';
$labels['eventoptions'] = 'オプション';
$labels['generated'] = '生成';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = '説明印刷';
$labels['parentcalendar'] = '内に挿入';
$labels['searchearlierdates'] = '<< 以前のイベントを検索';
$labels['searchlaterdates'] = '今後のイベントの検索 >>';
$labels['andnmore'] = '$nr さらに…';
$labels['togglerole'] = 'クリックでロールをトグル';
$labels['createfrommail'] = 'イベントとして保存';
$labels['importevents'] = 'イベントのインポート';
$labels['importrange'] = 'イベント元';
$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.';
$labels['searchterms'] = 'Search terms';
$labels['calendarsubscribe'] = 'List permanently';
$labels['listrange'] = '表示範囲:';
$labels['listsections'] = '分割:';
$labels['smartsections'] = 'スマートセクション';
$labels['until'] = 'いつまでに';
$labels['today'] = '今日';
$labels['tomorrow'] = '明日';
$labels['thisweek'] = '今週';
$labels['nextweek'] = '来週';
$labels['thismonth'] = '今月';
$labels['nextmonth'] = '来月';
$labels['weekofyear'] = '週';
$labels['pastevents'] = '以前';
$labels['futureevents'] = '以降';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'デフォルト通知設定';
$labels['defaultalarmoffset'] = 'デフォルト通知時間';
$labels['attendee'] = '参加者';
$labels['role'] = 'ロール';
$labels['availability'] = '利用可';
$labels['confirmstate'] = '状態';
$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'] = '不明';
$labels['availtentative'] = '仮';
$labels['availoutofoffice'] = '外出';
$labels['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$labels['scheduletime'] = '利用可検索';
$labels['sendinvitations'] = '招待を送る';
$labels['sendnotifications'] = '変更を参加者へ通知する';
$labels['sendcancellation'] = '中止を参加者へ通知する';
$labels['onlyworkinghours'] = '労働時間内の利用可検索';
$labels['reqallattendees'] = '要件/全参加者';
$labels['prevslot'] = '前のスロット';
$labels['nextslot'] = '次のスロット';
$labels['noslotfound'] = '空スロットを見つけられません';
$labels['invitationsubject'] = '"$title" に招待されました';
$labels['invitationmailbody'] = "*\$title*\n\nいつ: \$date\n\n招待者: \$attendees\n\nあなたのカレンダーアプリケーションにインポートできる全イベントの詳細がインポートできる添付されたiカレンダーファイルを見つけてください。";
$labels['invitationattendlinks'] = "この場合あなたのメールクライアントはiTip リクエストをサポートしてません、以下のリンクからこの招待を承諾もしくは辞退してください:\n\$url";
$labels['eventupdatesubject'] = '"$title" はアップデートされました';
$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['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['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'このイベントの出席者として一覧にありません';
$labels['eventcancelled'] = 'このイベントはキャンセルされました';
$labels['saveincalendar'] = '保存';
$labels['resource'] = 'リソース';
$labels['resourcedetails'] = '詳細';
$labels['tabsummary'] = '要約';
$labels['tabrecurrence'] = '繰返し';
$labels['tabattendees'] = '参加者';
$labels['tabresources'] = 'リソース';
$labels['tabattachments'] = '添付';
$labels['tabsharing'] = '共有';
$labels['deleteobjectconfirm'] = '本当にこのイベントを削除しますか?';
$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'] = '要求された操作ができませんでした。';
$labels['invalideventdates'] = '無効な日付が入力されました! 入力を確認してください。';
$labels['invalidcalendarproperties'] = '無効なカレンダーのプロパティです! 有効な名前を設定してください。';
$labels['searchnoresults'] = '選択されたカレンダーにイベントは見つかりません。';
$labels['successremoval'] = 'イベントを削除しました';
$labels['successrestore'] = 'イベントを復旧しました';
$labels['errornotifying'] = 'イベント参加者への通知が送信できませんでした';
$labels['errorimportingevent'] = 'イベントのインポートができませんでした';
$labels['newerversionexists'] = 'このイベントのより新しいヴァージョンがすでにあります。中断されました。';
$labels['nowritecalendarfound'] = 'イベントを保存するカレンダーが見つかりません';
$labels['importedsuccessfully'] = '\'$calendar\' へイベントを追加しました';
$labels['attendeupdateesuccess'] = '出席者状況を更新しました';
$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'] = 'このカレンダーの管理権限がありません。';
$labels['changeeventconfirm'] = 'イベント変更';
$labels['changerecurringeventwarning'] = 'これは繰返しイベントです。現在のイベントのみ、このイベントと今後の全イベント、全イベント、編集したい、もしくは新しいイベントとして保存したい?';
$labels['currentevent'] = '現在';
$labels['futurevents'] = '今後';
$labels['allevents'] = '全て';
$labels['saveasnew'] = '新規保存';
$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';
$labels['user'] = 'ユーザ';
?>

9
localization/ku_IQ.inc Normal file
View file

@ -0,0 +1,9 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
?>

View file

@ -1,39 +1,224 @@
<?php
/**
* RoundCube Calendar
* Localizations for Kolab Calendar plugin
*
* Plugin to add a calendar to RoundCube.
* Copyright (C) 2014, Kolab Systems AG
*
* @version 0.2 BETA 2
* @author Lazlo Westerhof
* @url http://rc-calendar.lazlo.me
* @licence GNU GPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
*
**/
$labels = array();
// config
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Standaard agenda';
$labels['time_format'] = 'Tijdsformaat';
$labels['timeslots'] = 'Timeslots per uur';
$labels['timeslots'] = 'Tijdsdelen per uur';
$labels['first_day'] = 'Eerste weekdag';
// calendar
$labels['calendar'] = 'Agenda';
$labels['first_hour'] = 'Eerste uur om weer te geven';
$labels['workinghours'] = 'Werkuren';
$labels['add_category'] = 'Categorie toevoegen';
$labels['remove_category'] = 'Categorie verwijderen';
$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';
$labels['calendar'] = 'Kalender';
$labels['calendars'] = 'Kalenders';
$labels['category'] = 'Categorie';
$labels['categories'] = 'Categorieën';
$labels['createcalendar'] = 'Maak een nieuwe kalender';
$labels['editcalendar'] = 'Wijzig kalender eigenschappen';
$labels['name'] = 'Naam';
$labels['color'] = 'Kleur';
$labels['day'] = 'Dag';
$labels['week'] = 'Week';
$labels['month'] = 'Maand';
$labels['new_event'] = 'Nieuw evenement';
$labels['edit_event'] = 'Wijzig evenement';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Nieuw';
$labels['new_event'] = 'Nieuwe afspraak';
$labels['edit_event'] = 'Wijzig afspraak';
$labels['edit'] = 'Wijzig';
$labels['save'] = 'Bewaar';
$labels['remove'] = 'Verwijder';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Terug';
$labels['select'] = 'Selecteer';
$labels['print'] = 'Afdrukken';
$labels['printtitle'] = 'Kalenders afdrukken';
$labels['title'] = 'Samenvatting';
$labels['description'] = 'Beschrijving';
$labels['description'] = 'Omschrijving';
$labels['all-day'] = 'hele dag';
$labels['export'] = 'Exporteer naar ICS';
$labels['category'] = 'Categorie';
$labels['exporttitle'] = 'Als iCalender exporteren';
$labels['exportrange'] = 'Afspraken uit';
$labels['exportattachments'] = 'Exporteer bijlages';
$labels['customdate'] = 'Aangepaste datumweergave';
$labels['location'] = 'Locatie';
?>
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Begin';
$labels['starttime'] = 'Start time';
$labels['end'] = 'Eind';
$labels['repeat'] = 'Herhaal';
$labels['selectdate'] = 'Kies datum';
$labels['freebusy'] = 'Toon mij als';
$labels['free'] = 'Vrij';
$labels['busy'] = 'Bezet';
$labels['outofoffice'] = 'Niet Aanwezig';
$labels['tentative'] = 'Misschien';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Bevestigd';
$labels['status-cancelled'] = 'Afgelast';
$labels['priority'] = 'Prioriteit';
$labels['sensitivity'] = 'Zichtbaarheid';
$labels['public'] = 'publiek';
$labels['private'] = 'prive';
$labels['confidential'] = 'vertrouwelijk';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Herinnering';
$labels['comment'] = 'Opmerking';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Onbekend';
$labels['eventoptions'] = 'Opties';
$labels['generated'] = 'gegenereerd op';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Print beschrijvingen';
$labels['parentcalendar'] = 'Voeg toe in';
$labels['searchearlierdates'] = '« Zoek voor eerdere afspraken';
$labels['searchlaterdates'] = 'Zoek voor latere afspraken »';
$labels['andnmore'] = '$nr meer...';
$labels['togglerole'] = 'Klik om van rol te wisselen';
$labels['createfrommail'] = 'Bewaar als afspraak';
$labels['importevents'] = 'Afspraken importeren';
$labels['importrange'] = 'Afspraken vanaf';
$labels['onemonthback'] = '1 maand terug';
$labels['nmonthsback'] = '$nr maanden terug';
$labels['showurl'] = 'Toon kalender URL';
$labels['showurldescription'] = 'Gebruik het volgende adres om uw kalendar te gebruiken (alleen lezen) in andere programma\'s. U kunt dit knippen en plakken in elk kalender programma dat het iCal formaat ondersteunt.';
$labels['caldavurldescription'] = 'Kopieer dit adres in een <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> programma (bijv. Evolution of Mozilla Thunderbird) om deze specifieke kalender volledig te synchronizeren met je computer of mobiel apparaat.';
$labels['findcalendars'] = 'Vind agenda\'s...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Beschikbare agenda\'s';
$labels['calendarsubscribe'] = 'Permanent weergeven';
$labels['listrange'] = 'Bereik om te tonen:';
$labels['listsections'] = 'Verdeel in:';
$labels['smartsections'] = 'Slimme secties';
$labels['until'] = 'tot';
$labels['today'] = 'Vandaag';
$labels['tomorrow'] = 'Morgen';
$labels['thisweek'] = 'Deze week';
$labels['nextweek'] = 'Volgende week';
$labels['thismonth'] = 'Deze maand';
$labels['nextmonth'] = 'Volgende maand';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Verleden';
$labels['futureevents'] = 'Toekomst';
$labels['showalarms'] = 'Toon herinneringen';
$labels['defaultalarmtype'] = 'Instelling standaard herinnering';
$labels['defaultalarmoffset'] = 'Standaard herinneringstijd';
$labels['attendee'] = 'Deelnemer';
$labels['role'] = 'Rol';
$labels['availability'] = 'Beschikb.';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Deelnemer toevoegen';
$labels['roleorganizer'] = 'Organisatie';
$labels['rolerequired'] = 'Verplicht';
$labels['roleoptional'] = 'Optioneel';
$labels['rolechair'] = 'Voorzitter';
$labels['rolenonparticipant'] = 'Afwezig';
$labels['cutypeindividual'] = 'Individueel';
$labels['cutypegroup'] = 'Groep';
$labels['cutyperesource'] = 'Middel';
$labels['cutyperoom'] = 'Kamer';
$labels['availfree'] = 'Vrij';
$labels['availbusy'] = 'Bezet';
$labels['availunknown'] = 'Onbekend';
$labels['availtentative'] = 'Misschien';
$labels['availoutofoffice'] = 'Niet Aanwezig';
$labels['delegatedto'] = 'Gedelegeerd aan';
$labels['delegatedfrom'] = 'Gedelegeerd door';
$labels['scheduletime'] = 'Vind beschikbaarheid';
$labels['sendinvitations'] = 'Verzend uitnodigingen';
$labels['sendnotifications'] = 'Verzend notificaties';
$labels['sendcancellation'] = 'Verzend annulering';
$labels['onlyworkinghours'] = 'Vind beschikbaarheid binnen mijn werkuren';
$labels['reqallattendees'] = 'Verplicht/alle deelnemers';
$labels['prevslot'] = 'vorig voorstel';
$labels['nextslot'] = 'volgend voorstel';
$labels['noslotfound'] = 'Geen voorstel gevonden';
$labels['invitationsubject'] = 'U bent uitgenodigd voor "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWanneer: \$date\n\nGenodigden: \$attendees\n\nBijgevoegd vindt u een iCalendar bestand met alle details omtrent de afspraak die u kunt importeren in uw kalender programma.";
$labels['invitationattendlinks'] = "In het geval dat uw email programma geen iTip verzoeken aankan, kunt u de volgende link gebruiken om deze uitnodiging te accepteren or af te wijzen :\n\$url";
$labels['eventupdatesubject'] = '"$title" is gewijzigd';
$labels['eventupdatesubjectempty'] = 'Een afspraak is gewijzigd';
$labels['eventupdatemailbody'] = "*\$title*\n\nWanneer: \$date\n\nGenodigden: \$attendees\n\nBijgevoegd vindt u een iCalendar bestand met de gewijzigde details omtrent de afspraak die u kunt importeren in uw kalender programma.";
$labels['eventcancelsubject'] = '"$title" is geannuleerd';
$labels['eventcancelmailbody'] = "*\$title*\n\nWanneer: \$date\n\nGenodigden: \$attendees\n\nDeze afspraak is geannuleerd door \$organizer.\n\nBijgevoegd vindt u een iCalendar bestand met de gewijzigde details omtrent de afspraak";
$labels['itipobjectnotfound'] = 'De afspraak waaraan door dit bericht wordt gereferreerd is niet gevonden in uw kalender.';
$labels['itipmailbodyaccepted'] = "\$sender heeft de uitnodiging geaccepteerd voor de volgende afspraak:\n\n*\$title*\n\nWanneer: \$date\n\nGenodigden: \$attendees";
$labels['itipmailbodytentative'] = "\$sender heeft onder voorbehoud de uitnodiging geaccepteerd voor de volgende afspraak:\n\n*\$title*\n\nWanneer: \$date\n\nGenodigden: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender heeft de uitnodiging afgewezen voor de volgende afspraak:\n\n*\$title*\n\nWanneer: \$date\n\nGenodigden: \$attendees";
$labels['itipmailbodycancel'] = "\$sender heeft je deelname afgewezen voor de volgende afspraak:\n\n*\$title*\n\nWanneer: \$date";
$labels['itipdeclineevent'] = 'Wil u de uitnodiging voor deze afspraak afwijzen?';
$labels['declinedeleteconfirm'] = 'Wilt u tevens deze afgewezen uitnodiging verwijderen uit je kalender?';
$labels['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'U staat niet op de lijst van genodigden voor deze afspraak';
$labels['eventcancelled'] = 'Dit evenement is afgelast';
$labels['saveincalendar'] = 'bewaar in';
$labels['updatemycopy'] = 'Wijzig in mijn kalender';
$labels['savetocalendar'] = 'Opslaan in kalender';
$labels['resource'] = 'Hulpmiddel';
$labels['addresource'] = 'Voeg hulpmiddel toe';
$labels['findresources'] = 'Vind hulpmiddelen';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Beschikbaarheid';
$labels['resourceowner'] = 'Eigenaar';
$labels['resourceadded'] = 'Hulpmiddel is toegevoegd aan uw afspraak';
$labels['tabsummary'] = 'Samenvatting';
$labels['tabrecurrence'] = 'Herhaling';
$labels['tabattendees'] = 'Deelnemers';
$labels['tabresources'] = 'Middelen';
$labels['tabattachments'] = 'Toebehoren';
$labels['tabsharing'] = 'Delen';
$labels['deleteobjectconfirm'] = 'Weet je zeker dat je deze afspraak wilt verwijderen?';
$labels['deleteventconfirm'] = 'Weet u zeker dat u deze afspraak wilt verwijderen?';
$labels['deletecalendarconfirm'] = 'Weet u zeker dat u deze kalender samen met alle afspraken wilt verwijderen?';
$labels['deletecalendarconfirmrecursive'] = 'Weet u zeker dat je deze kalender samen met alle afspraken en er onder hangende kalenders wilt verwijderen?';
$labels['savingdata'] = 'Data wordt opgeslagen...';
$labels['errorsaving'] = 'Opslaan mislukt.';
$labels['operationfailed'] = 'De gevraagde opdracht is mislukt.';
$labels['invalideventdates'] = 'Ongeldige datums ingevoerd! Controleer aub uw invoer.';
$labels['invalidcalendarproperties'] = 'Ongeldige kalender eigenschappen! Gebruik aub een geldige naam.';
$labels['searchnoresults'] = 'Geen afspraken gevonden in de geselecteerde kalenders.';
$labels['successremoval'] = 'De afspraak is succesvol verwijdert.';
$labels['successrestore'] = 'De afspraak is succesvol herstelt';
$labels['errornotifying'] = 'Uitnodigingen versturen naar de genodigden van de afspraak is mislukt';
$labels['errorimportingevent'] = 'Afspraak importeren is mislukt';
$labels['importwarningexists'] = 'Een kopie van deze afspraak bevindt zich al in uw kalender.';
$labels['newerversionexists'] = 'Een nieuwere versie van deze afspraak bestaat! Bewerking afgebroken.';
$labels['nowritecalendarfound'] = 'Geen kalender gevonden om de afspraak in op te slaan';
$labels['importedsuccessfully'] = 'De afspraak is succesvol toegevoegd aan \'$calendar\'';
$labels['updatedsuccessfully'] = 'Het bijwerken van de gebeurtenis in \'$calendar\' is geslaagd';
$labels['attendeupdateesuccess'] = 'Status van genodigde succesvol gewijzigd';
$labels['itipsendsuccess'] = 'Uitnodiging verstuurd aan de genodigden.';
$labels['itipresponseerror'] = 'Antwoord op deze uitnodiging versturen is mislukt';
$labels['itipinvalidrequest'] = 'Deze uitnodiging is niet langer geldig';
$labels['sentresponseto'] = 'Antwoord op deze uitnodiging was succesvol verstuurd aan $mailto';
$labels['localchangeswarning'] = 'U bent bezig wijzigingen te maken die alleen zichtbaar zijn in u eigen kalender en die niet doorgestuurd zullen worden aan de organisator van de afspraak.';
$labels['importsuccess'] = 'Succesvol $nr afspraken geïmporteerd';
$labels['importnone'] = 'Geen afspraken gevonden om te importeren';
$labels['importerror'] = 'Er is een fout tijdens het importeren opgetreden';
$labels['aclnorights'] = 'U heeft geen administratieve rechten op deze kalender.';
$labels['changeeventconfirm'] = 'Wijzig afspraak';
$labels['changerecurringeventwarning'] = 'Dit is een terugkerende afspraak. Wilt u alleen de huidige afspraak wijzigen, deze en alle toekomstige afspraken, alle afspraken of opslaan als een nieuwe afspraak?';
$labels['currentevent'] = 'Huidige';
$labels['futurevents'] = 'Toekomstige';
$labels['allevents'] = 'Alle';
$labels['saveasnew'] = 'Bewaar als nieuw';
$labels['birthdays'] = 'Verjaardagen';
$labels['birthdayscalendar'] = 'Verjaardagskalender';
$labels['displaybirthdayscalendar'] = 'Toon verjaardagskalender';
$labels['birthdayscalendarsources'] = 'Uit deze adresboeken';
$labels['birthdayeventtitle'] = 'verjaardag van $name';
$labels['birthdayage'] = 'Leeftijd $age';
$labels['user'] = 'Gebruiker';
$labels['compare'] = 'Vergelijken';
?>

103
localization/pl.inc Normal file
View file

@ -0,0 +1,103 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Domyślny widok';
$labels['time_format'] = 'Format czasu';
$labels['first_day'] = 'Pierwszy dzień tygodnia';
$labels['first_hour'] = 'Pierwsza godzina do wyświetlenia';
$labels['workinghours'] = 'Godziny pracy';
$labels['add_category'] = 'Dodaj kategorię';
$labels['remove_category'] = 'Usuń kategorię';
$labels['afternothing'] = 'Nie rób nic';
$labels['aftertrash'] = 'Przenieś do kosza';
$labels['afterdelete'] = 'Usuń wiadomość';
$labels['afterflagdeleted'] = 'Oznacz jako usunięte';
$labels['aftermoveto'] = 'Przenieś do...';
$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['new'] = 'Nowy';
$labels['new_event'] = 'Nowe zdarzenie';
$labels['edit_event'] = 'Edytuj zdarzenie';
$labels['edit'] = 'Edytuj';
$labels['save'] = 'Zapisz';
$labels['removelist'] = 'Usuń z listy';
$labels['cancel'] = 'Anuluj';
$labels['print'] = 'Drukuj';
$labels['printtitle'] = 'Drukuj kalendarze';
$labels['title'] = 'Podsumowanie';
$labels['description'] = 'Opis';
$labels['export'] = 'Eksport';
$labels['exporttitle'] = 'Eksport do iCalendar';
$labels['url'] = 'URL';
$labels['date'] = 'Data';
$labels['start'] = 'Start';
$labels['end'] = 'Koniec';
$labels['repeat'] = 'Powtórz';
$labels['selectdate'] = 'Wybierz datę';
$labels['free'] = 'Wolny';
$labels['busy'] = 'Zajęty';
$labels['outofoffice'] = 'Poza biurem';
$labels['status-cancelled'] = 'Anulowane';
$labels['priority'] = 'Priorytet';
$labels['sensitivity'] = 'Prywatność';
$labels['created'] = 'Utworzone';
$labels['changed'] = 'Ostatnia modyfikacja';
$labels['unknown'] = 'Nieznane';
$labels['eventoptions'] = 'Opcje';
$labels['eventhistory'] = 'Historia';
$labels['andnmore'] = '$nr więcej...';
$labels['createfrommail'] = 'Zapisz jako zdarzenie';
$labels['importevents'] = 'Importuj zdarzenia';
$labels['showurl'] = 'Pokaż URL kalendarza';
$labels['calsearchresults'] = 'Dostępne Kalendarze';
$labels['nocalendarsfound'] = 'Nie znaleziono kalendarzy';
$labels['quickview'] = 'Pokaż tylko ten kalendarz';
$labels['today'] = 'Dzisiaj';
$labels['tomorrow'] = 'Jutro';
$labels['thisweek'] = 'Ten tydzień';
$labels['nextweek'] = 'Następny tydzień';
$labels['prevweek'] = 'Poprzedni tydzień';
$labels['thismonth'] = 'Ten miesiąc';
$labels['nextmonth'] = 'Następny miesiąc';
$labels['weekofyear'] = 'Tydzień';
$labels['rolerequired'] = 'Wymagane';
$labels['availfree'] = 'Wolny';
$labels['availbusy'] = 'Zajęty';
$labels['availunknown'] = 'Nieznane';
$labels['availoutofoffice'] = 'Poza biurem';
$labels['saveincalendar'] = 'zapisz w';
$labels['savetocalendar'] = 'Zapisz w kalendarzu';
$labels['openpreview'] = 'Sprawdź kalendarz';
$labels['noearlierevents'] = 'Brak wcześniejszych zdarzeń';
$labels['nolaterevents'] = 'Brak późniejszych zdarzeń';
$labels['resourcedetails'] = 'Szczegóły';
$labels['resourceavailability'] = 'Dostępność';
$labels['resourceowner'] = 'Właściciel';
$labels['tabsummary'] = 'Podsumowanie';
$labels['deleteobjectconfirm'] = 'Czy na pewno chcesz usunąć to zdarzenie?';
$labels['deleteventconfirm'] = 'Czy na pewno chcesz usunąć to zdarzenie?';
$labels['deletecalendarconfirm'] = 'Czy na pewno chcesz usunąć ten kalendarz i wszystkie jego zdarzenia?';
$labels['changeeventconfirm'] = 'Zmodyfikuj zdarzenie';
$labels['removeeventconfirm'] = 'Usuń zdarzenie';
$labels['allevents'] = 'Wszystko';
$labels['saveasnew'] = 'Zapisz jako nowy';
$labels['birthdays'] = 'Urodziny';
$labels['birthdayscalendar'] = 'Kalendarz urodzin';
$labels['displaybirthdayscalendar'] = 'Wyświetl kalendarz urodzin';
$labels['birthdayage'] = 'Wiek $age';
$labels['user'] = 'Użytkownik';
?>

View file

@ -1,24 +1,32 @@
<?php
$labels = array();
// preferences
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Domyślny widok';
$labels['time_format'] = 'Format czasu';
$labels['timeslots'] = 'Okienka na godzinę';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Pierwszy dzień tygodnia';
$labels['first_hour'] = 'Pierwsza godzina do wyświetlenia';
$labels['workinghours'] = 'Godziny pracy';
$labels['first_hour'] = 'Pierwsza godzina';
$labels['workinghours'] = 'Godziny robocze';
$labels['add_category'] = 'Dodaj kategorię';
$labels['remove_category'] = 'Usuń kategorię';
$labels['defaultcalendar'] = 'Utwórz nowe zdarzenia w';
$labels['eventcoloring'] = 'Kolorowanie zdarzeń';
$labels['coloringmode0'] = 'zależnie od kalendarza';
$labels['coloringmode1'] = 'zależnie od kategorii';
$labels['coloringmode2'] = 'Kalendarz - obramowanie, kategoria - tło';
$labels['coloringmode3'] = 'Kategoria - obramowanie, kalendarz - tło';
// calendar
$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';
$labels['afternothing'] = 'Nie rób nic';
$labels['aftertrash'] = 'Przenieś do Kosza';
$labels['afterdelete'] = 'Usuń wiadomość';
$labels['afterflagdeleted'] = 'Oznacz jako usunięta';
$labels['aftermoveto'] = 'Przenieś do...';
$labels['itipoptions'] = 'Zaproszenia';
$labels['afteraction'] = 'Wiadomość jest przetwarzana po zaproszeniu lub aktualizacji';
$labels['calendar'] = 'Kalendarz';
$labels['calendars'] = 'Kalendarze';
$labels['category'] = 'Kategoria';
@ -31,194 +39,235 @@ $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['removelist'] = 'Usuń z listy';
$labels['cancel'] = 'Anuluj';
$labels['select'] = 'Wybierz';
$labels['print'] = 'Drukuj kalendarze';
$labels['print'] = 'Drukuj';
$labels['printtitle'] = 'Drukuj kalendarze';
$labels['title'] = 'Podsumowanie';
$labels['description'] = 'Opis';
$labels['all-day'] = 'cały dzień';
$labels['export'] = 'Eksport do iCalendarza';
$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['starttime'] = 'Początek';
$labels['end'] = 'Koniec';
$labels['endtime'] = 'Koniec';
$labels['repeat'] = 'Powtórz';
$labels['selectdate'] = 'Wybierz datę';
$labels['freebusy'] = 'Pokazuj mnie jako';
$labels['freebusy'] = 'Pokaż mnie jako';
$labels['free'] = 'Wolny';
$labels['busy'] = 'Zajęty';
$labels['outofoffice'] = 'Poza buirem';
$labels['outofoffice'] = 'Poza biurem';
$labels['tentative'] = 'Niepewny';
$labels['mystatus'] = 'Mój status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Potwierdzony';
$labels['status-cancelled'] = 'Anulowany';
$labels['priority'] = 'Priorytet';
$labels['sensitivity'] = 'Dostępność';
$labels['sensitivity'] = 'Poufność';
$labels['public'] = 'publiczny';
$labels['private'] = 'prywatny';
$labels['confidential'] = 'zastrzeżony';
$labels['confidential'] = 'poufny';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Przypomnienie';
$labels['comment'] = 'Komentarz';
$labels['created'] = 'Utworzono';
$labels['changed'] = 'Ostatnia modyfikacja';
$labels['unknown'] = 'Nieznany';
$labels['eventoptions'] = 'Opcje';
$labels['generated'] = 'wygenerowano';
$labels['eventhistory'] = 'Historia';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Drukuj opisy';
$labels['parentcalendar'] = 'Nadrzędny kalendarz';
$labels['searchearlierdates'] = '« Wyszukaj wcześniejsze zdarzenia';
$labels['searchlaterdates'] = 'Wyszukaj późniejsze zdarzenia »';
$labels['parentcalendar'] = 'Wstaw wewnątrz';
$labels['searchearlierdates'] = Szukaj wcześniejszych zdarzeń';
$labels['searchlaterdates'] = 'Szukaj późniejszych zdarzeń »';
$labels['andnmore'] = '$nr więcej...';
$labels['showmore'] = 'Pokaż więcej...';
$labels['togglerole'] = 'Kliknij aby zmienić rolę';
$labels['togglerole'] = 'Kliknuj aby przestawić rolę';
$labels['createfrommail'] = 'Zapisz jako zdarzenie';
$labels['importevents'] = 'Import zdarzeń';
$labels['importevents'] = 'Importuj zdarzenia';
$labels['importrange'] = 'Zdarzenia z';
$labels['onemonthback'] = '1 miesiąc wstecz';
$labels['nmonthsback'] = '$nr miesiące wstecz';
// agenda view
$labels['listrange'] = 'Zakres do wyświetlenia:';
$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.';
$labels['findcalendars'] = 'Wyszukaj kalendarze...';
$labels['searchterms'] = 'Szukana fraza';
$labels['calsearchresults'] = 'Dostępne kalendarze';
$labels['calendarsubscribe'] = 'Dodaj do listy na stałe';
$labels['nocalendarsfound'] = 'Nie znaleziono żadych kalendarzy';
$labels['nrcalendarsfound'] = 'znaleziono $nr kalendarzy';
$labels['quickview'] = 'Pokaż tylko ten kalendarz';
$labels['invitationspending'] = 'Oczekujące zaproszenia';
$labels['invitationsdeclined'] = 'Odrzucone zaproszenia';
$labels['changepartstat'] = 'Zmień status uczestnika';
$labels['rsvpcomment'] = 'Treść zaproszenia';
$labels['listrange'] = 'Zakres do pokazania:';
$labels['listsections'] = 'Podziel na:';
$labels['smartsections'] = 'Inteligentne sekcje';
$labels['until'] = 'do';
$labels['until'] = 'dopóki';
$labels['today'] = 'Dzisiaj';
$labels['tomorrow'] = 'Jutro';
$labels['thisweek'] = 'Ten tydzień';
$labels['thisweek'] = 'Bieżący tydzień';
$labels['nextweek'] = 'Następny tydzień';
$labels['thismonth'] = 'Ten miesiąc';
$labels['prevweek'] = 'Poprzedni tydzień';
$labels['thismonth'] = 'Bieżący miesiąc';
$labels['nextmonth'] = 'Następny miesiąc';
$labels['weekofyear'] = 'Tydzień';
$labels['pastevents'] = 'Przeszłość';
$labels['futureevents'] = 'Przyszłość';
// alarm/reminder settings
$labels['showalarms'] = 'Wyświetlaj alarmy';
$labels['defaultalarmtype'] = 'Domyślne ustawienia przypomnienia';
$labels['defaultalarmoffset'] = 'Domyślny czas przypomnienia';
// attendees
$labels['pastevents'] = 'Przeszłe';
$labels['futureevents'] = 'Przyszłe';
$labels['showalarms'] = 'Pokaż powiadomienia';
$labels['defaultalarmtype'] = 'Domyślne powiadomienie';
$labels['defaultalarmoffset'] = 'Domyślny czas powiadomienia';
$labels['attendee'] = 'Uczestnik';
$labels['role'] = 'Rola';
$labels['availability'] = 'Dostępn.';
$labels['availability'] = 'Dostępny';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Dodaj uczestnika';
$labels['roleorganizer'] = 'Organizator';
$labels['rolerequired'] = 'Wymagany';
$labels['roleoptional'] = 'Opcjonalny';
$labels['roleresource'] = 'Żródło';
$labels['rolechair'] = 'Przewodniczący';
$labels['rolenonparticipant'] = 'Nieobecny';
$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 buirem';
$labels['availoutofoffice'] = 'Poza biurem';
$labels['delegatedto'] = 'Oddelegowany do:';
$labels['delegatedfrom'] = 'Oddelegowany z:';
$labels['scheduletime'] = 'Sprawdź dostępność';
$labels['sendinvitations'] = 'Wyślij zaproszenia';
$labels['sendnotifications'] = 'Informuj uczestników o zmianach';
$labels['sendcancellation'] = 'Informuj uczestników o odwołaniu zdarzenia';
$labels['onlyworkinghours'] = 'Sprawdź dostępność podczas moich godzin pracy';
$labels['reqallattendees'] = 'Wymagani/wszyscy uczestnicy';
$labels['prevslot'] = 'Poprzednie okienko';
$labels['nextslot'] = 'Następne okienko';
$labels['noslotfound'] = 'Nie można znaleźć wolnego okienka';
$labels['invitationsubject'] = 'Zostałeś zaproszony na "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\nW załączeniu plik w formacie iCalendar zawierający szczegóły zdarzenia, który można zaimportować do Pana/Pani kalendarza.";
$labels['invitationattendlinks'] = "W przypadku gdy Pana/Pani program pocztowy nie obsługuje żądań iTip można użyć następującego łącza w celu akceptacji lub odrzucenia tego zdarzenia:\n\$url";
$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['suggestedslot'] = 'Sugerowany 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 ciebie dotyczy zostało zaktualizowane';
$labels['eventupdatemailbody'] = "*\$title*\n\nKiedy: \$date\n\nUczestnicy: \$attendees\n\n.W załączeniu plik w formacie iCalendar zawierający zaktualizowane szczegóły zdarzenia, który można zaimportować do Pana/Pani kalendarza.";
$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\nUczestnicy: \$attendees\n\nZdarzenie zostało anulowane przez \$organizer.\n\n.W załączeniu plik w formacie iCalendar zawierający zaktualizowane szczegóły zdarzenia.";
// invitation handling
$labels['itipinvitation'] = 'Zaproszenie dla';
$labels['itipupdate'] = 'Aktualizacja do';
$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 $name';
$labels['itipsubjectdeclined'] = '"$title" zostało odrzucone przez $name';
$labels['itipmailbodyaccepted'] = "\$sender zaakceptował zaproszenie na następującego zdarzenie:\n\n*\$title*\n\nKiedy: \$date\n\nUczestnicy: \$attendees";
$labels['itipmailbodytentative'] = "\$sender warunkowo zaakceptował zaproszenie na następujące zdarzenie:\n\n*\$title*\n\nKiedy: \$date\n\nUczestnicy: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender odrzucił zaproszenie na następujące zdarzenie:\n\n*\$title*\n\nKiedy: \$date\n\nUczestnicy: \$attendees";
$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.";
$labels['itipobjectnotfound'] = 'W twoim kalendarzu nie znaleziono zdarzenia związanego z tą wiadomością.';
$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['itipmailbodycancel'] = "\$sender odrzucił twój udział w zastępującym zdarzeniu:\n\n*\$title*\n\nKiedy: \$date";
$labels['itipdeclineevent'] = 'Czy chcesz odrzucić zaproszenie na to zdarzenie?';
$labels['importtocalendar'] = 'Zapisz w moim kalendarzu';
$labels['removefromcalendar'] = 'Usuń z mojego kalendarza';
$labels['updateattendeestatus'] = 'Aktualizuj status uczestników';
$labels['acceptinvitation'] = 'Czy akceptujesz to zaproszenie?';
$labels['youhaveaccepted'] = 'Zaakceptowałeś to zaproszenie';
$labels['youhavetentative'] = 'Zaakceptowałeś warunkowo to zaproszenie';
$labels['youhavedeclined'] = 'Odrzuciłeś to zaproszenie';
$labels['notanattendee'] = 'Nie znajdujesz się na liście uczestników tego zdarzenia';
$labels['declinedeleteconfirm'] = 'Czy chcesz także usunąć to odrzucone zdarzenie ze swojego kalendarza?';
$labels['itipcomment'] = 'Komentarz zaproszenia/powiadomienia';
$labels['itipcommenttitle'] = 'Komentarz ten będzie dołączony do wiadomości wysłanej do uczestników zdarzenia';
$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['updatemycopy'] = 'Uaktualnij w moim kalendarzu';
$labels['savetocalendar'] = 'Zapisz do kalendarza';
$labels['openpreview'] = 'Sprawdź kalendarz';
$labels['noearlierevents'] = 'Brak wcześniejszych zdarzeń';
$labels['nolaterevents'] = '« Brak póżniejszych zdarzeń';
$labels['resource'] = 'Zasób';
$labels['addresource'] = 'Rezerwuj zasób';
$labels['findresources'] = 'Wyszukaj zasoby';
$labels['resourcedetails'] = 'Szczegóły';
$labels['resourceavailability'] = 'Dostępność';
$labels['resourceowner'] = 'Właściciel';
$labels['resourceadded'] = 'Zasób został dodany do twojego zdarzenia';
$labels['tabsummary'] = 'Podsumowanie';
$labels['tabrecurrence'] = 'Powtarzalność';
$labels['tabattendees'] = 'Uczestnicy';
$labels['tabresources'] = 'Zasoby';
$labels['tabattachments'] = 'Załączniki';
$labels['tabsharing'] = 'Udostępnianie';
// messages
$labels['deleteobjectconfirm'] = 'Czy na pewno chcesz usunąć to zdarzenie?';
$labels['deleteventconfirm'] = 'Czy na pewno chcesz usunąć to zdarzenie?';
$labels['deletecalendarconfirm'] = 'Czy na pewno chcesz usunąć ten kalendarz wraz z wszystkimi zdarzeniami?';
$labels['savingdata'] = 'Zapisywanie danych...';
$labels['errorsaving'] = 'Nie udało się zapisanie zmian.';
$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'] = 'Wprowadzono błędne daty! Sprawdź dane w formularzu.';
$labels['invalidcalendarproperties'] = 'Błędne właściwości kalendarza! Proszę podać poprawną datę.';
$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 pomyślnie.';
$labels['successrestore'] = 'Zdarzenie zostało odtworzone pomyślnie.';
$labels['errornotifying'] = 'Nie udało się wysłać powiadomień do uczestników';
$labels['errorimportingevent'] = 'Nie powódł się import zdarzenia';
$labels['newerversionexists'] = 'Nowsza wersja tego zdarzenia już istnieje! Przerwano.';
$labels['nowritecalendarfound'] = 'Nie znaleziono kalendarza do zapisu zdarzenia';
$labels['importedsuccessfully'] = 'Zdarzenie zostało pomyślnie zapisane w \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Pomyślnie zaktualizowano status uczestnika';
$labels['itipresponseerror'] = 'Nie udało się wysłać odpowiedzi na to zaproszenie';
$labels['itipinvalidrequest'] = 'To zaproszenie nie jest już aktualne';
$labels['sentresponseto'] = 'Pomyślnie wysłano odpowiedź na zaproszenie do $mailto';
$labels['localchangeswarning'] = 'Próbujesz dokonać zmian, które będą widoczne tylko w twoim prywatnym kalendarzu';
$labels['importsuccess'] = 'Pomyślnie zaimportowano $nr zdarzeń';
$labels['importnone'] = 'Nie znaleziono zdarzeń do importu';
$labels['importerror'] = 'Wystąpił błąd podczas operacji importu.';
// recurrence form
$labels['repeat'] = 'Powtórz';
$labels['frequency'] = 'Częstotliwość';
$labels['never'] = 'nigdy';
$labels['daily'] = 'codziennie';
$labels['weekly'] = 'co tydzień';
$labels['monthly'] = 'co miesiąc';
$labels['yearly'] = 'co rok';
$labels['every'] = 'Każdego';
$labels['days'] = 'dni(a)';
$labels['weeks'] = 'tygodni(a)';
$labels['months'] = 'miesięcy';
$labels['years'] = 'lat 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'] = 'aż do';
$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['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['importwarningexists'] = 'Kopia tego zdarzenia już istnieje w twoim kalendarzu.';
$labels['newerversionexists'] = 'Istnieje nowsza wersja tego zdarzenia ! Przerwano.';
$labels['nowritecalendarfound'] = 'Nie znaleziono kalendarza aby zapisać zdarzenie.';
$labels['importedsuccessfully'] = 'Zdarzenie dodano do \'$calendar\'';
$labels['updatedsuccessfully'] = 'Zdarzenie zostało pomyślnie zaktualizowane w \'$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.';
$labels['changeeventconfirm'] = 'Zmień zdarzenie';
$labels['removeeventconfirm'] = 'Usuń zdarzenie';
$labels['changerecurringeventwarning'] = 'To jest zdarzenie powtarzające się. Czy chesz zmienić tylko bieżące wystąpienie, to i wszystkie przyszłe wystąpienia, czy wszystkie wystąpienia i zapisać je jako nowe zdarzenie?';
$labels['removerecurringeventwarning'] = 'To jest zdarzenie powtarzające się. Czy chesz usunąć tylko bieżące wystąpienie, to i wszystkie przyszłe wystąpienia, czy wszystkie wystąpienia tego 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'] = 'Jest to zdarzenie cykliczne. Czy chcesz usunąć wyłącznie bieżące zdarzenie i jego przyszłe wystąpienia, czy wszystkie wystąpienia tego zdarzenia?';
$labels['removerecurringallonly'] = 'Jest to zdarzenie cykliczne. Jako uczestnik, możesz jedynie usunąć całe zdarzenie ze wszystkimi jego wystąpieniami.';
$labels['currentevent'] = 'Bieżące';
$labels['futurevents'] = 'Przyszłe';
$labels['allevents'] = 'Wszystkie';
$labels['saveasnew'] = 'Zapisz jako nowy';
$labels['saveasnew'] = 'Zapisz jako nowe';
$labels['birthdays'] = 'Uruodziny';
$labels['birthdayscalendar'] = 'Kalendarz Urodzin';
$labels['displaybirthdayscalendar'] = 'Wyświetl kalendarz urodzin';
$labels['birthdayscalendarsources'] = 'Z tych książek adresowych';
$labels['birthdayeventtitle'] = 'Urodziny $name\'s';
$labels['birthdayage'] = 'Wiek $age';
$labels['eventchangelog'] = 'Historia zmian';
$labels['eventdiff'] = 'Zmiany od wersji $rev';
$labels['revision'] = 'Wersja';
$labels['user'] = 'Użytkownik';
$labels['operation'] = 'Akcja';
$labels['actionappend'] = 'Zapisane';
$labels['actionmove'] = 'Przeniesione';
$labels['actiondelete'] = 'Usunięte';
$labels['compare'] = 'Porównaj';
$labels['showrevision'] = 'Pokaż tą wersję';
$labels['restore'] = 'Przywróć tą wersję';
$labels['eventnotfound'] = 'Nie udało się wczytać zdarzenia';
$labels['eventchangelognotavailable'] = 'Historia zmian jest niedostępna dla tego zdarzenia';
$labels['eventdiffnotavailable'] = 'Nie można porównać wybranych wersji';
$labels['eventrestoreconfirm'] = 'Czy na pewno chcesz przywrócić wersję $rev tego zdarzenia? Bierzące zdarzenie zostanie zastąpione starszą wersją.';
$labels['arialabelminical'] = 'Wybór daty kalendarza';
$labels['arialabelcalendarview'] = 'Podgląd kalendarza';
$labels['arialabelsearchform'] = 'Formularz wyszukiwania zdarzeń';
$labels['arialabelquicksearchbox'] = 'Fraza wyszukiwania zdarzeń';
$labels['arialabelcalsearchform'] = 'Formularz wyszukiwania kalendarzy';
$labels['calendaractions'] = 'Akcje kalendarzy';
$labels['arialabeleventattendees'] = 'Lista uczestników zdarzenia';
$labels['arialabeleventresources'] = 'Lista zasobów zdarzenia';
$labels['arialabelresourcesearchform'] = 'Formularz wyszukiwania zasobów';
$labels['arialabelresourceselection'] = 'Dostępne zasoby';
?>

View file

@ -1,38 +1,224 @@
<?php
/**
* RoundCube Calendar
* Localizations for Kolab Calendar plugin
*
* Plugin to add a calendar to RoundCube.
* Copyright (C) 2014, Kolab Systems AG
*
* @version 0.2 BETA 2
* @author Lazlo Westerhof
* @url http://rc-calendar.lazlo.me
* @licence GNU GPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
*
**/
$labels = array();
// config
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Visualização padrão';
$labels['time_format'] = 'Formato da hora';
$labels['timeslots'] = 'Caixas de tempo por hora';
$labels['timeslots'] = 'Time slots per hour';
$labels['first_day'] = 'Primeiro dia da semana';
// calendar
$labels['first_hour'] = 'Primeira hora a mostrar';
$labels['workinghours'] = 'Horário de trabalho';
$labels['add_category'] = 'Adicionar categoria';
$labels['remove_category'] = 'Remover categoria';
$labels['defaultcalendar'] = 'Criar novos eventos em';
$labels['eventcoloring'] = 'Coloração de evento';
$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';
$labels['calendar'] = 'Calendário';
$labels['calendars'] = 'Calendários';
$labels['category'] = 'Categoria';
$labels['categories'] = 'Categorias';
$labels['createcalendar'] = 'Criar novo calendário';
$labels['editcalendar'] = 'Editar propriedades do calendário';
$labels['name'] = 'Nome';
$labels['color'] = 'Cor';
$labels['day'] = 'Dia';
$labels['week'] = 'Semana';
$labels['month'] = 'Mês';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Novo';
$labels['new_event'] = 'Novo evento';
$labels['edit_event'] = 'Editar evento';
$labels['edit'] = 'Editar';
$labels['save'] = 'Gravar';
$labels['remove'] = 'Remover';
$labels['removelist'] = 'Remove from list';
$labels['cancel'] = 'Cancelar';
$labels['select'] = 'Selecionar';
$labels['print'] = 'Imprimir';
$labels['printtitle'] = 'Imprimir calendários';
$labels['title'] = 'Sumário';
$labels['description'] = 'Descrição';
$labels['all-day'] = 'dia-a-dia';
$labels['export'] = 'Exportar para ICS';
$labels['category'] = 'Categoria';
$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['starttime'] = 'Start time';
$labels['end'] = 'Término';
$labels['repeat'] = 'Repetir';
$labels['selectdate'] = 'Escolha a data';
$labels['freebusy'] = 'Mostrar me como';
$labels['free'] = 'Disponível';
$labels['busy'] = 'Ocupado';
$labels['outofoffice'] = 'Fora de escritório';
$labels['tentative'] = 'Tentativa';
$labels['status'] = 'Situação';
$labels['status-confirmed'] = 'Confirmado';
$labels['status-cancelled'] = 'Cancalado';
$labels['priority'] = 'Prioridade';
$labels['sensitivity'] = 'Privacidade';
$labels['public'] = 'público';
$labels['private'] = 'privado';
$labels['confidential'] = 'confidencial';
$labels['links'] = 'Reference';
$labels['alarms'] = 'Lembrete';
$labels['comment'] = 'Comentário';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Desconhecido';
$labels['eventoptions'] = 'Opções';
$labels['generated'] = 'gerado em';
$labels['removelink'] = 'Remove email reference';
$labels['printdescriptions'] = 'Descrições de impressão';
$labels['parentcalendar'] = 'Inserir dentro';
$labels['searchearlierdates'] = '« Procurar por eventos anteriores';
$labels['searchlaterdates'] = 'Procurar por eventos posteriores »';
$labels['andnmore'] = '$nr mais...';
$labels['togglerole'] = 'Clique para alternar o papel';
$labels['createfrommail'] = 'Salvar como evento';
$labels['importevents'] = 'Importar eventos';
$labels['importrange'] = 'Eventos de';
$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.';
$labels['findcalendars'] = 'Buscar calendários...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Calendários disponíveis';
$labels['calendarsubscribe'] = 'Listar permanentemente';
$labels['listrange'] = 'Intervalo para exibir:';
$labels['listsections'] = 'Dividir em:';
$labels['smartsections'] = 'Seções inteligentes';
$labels['until'] = 'até';
$labels['today'] = 'Hoje';
$labels['tomorrow'] = 'Amanhã';
$labels['thisweek'] = 'Esta semana';
$labels['nextweek'] = 'Próxima semana';
$labels['thismonth'] = 'Este mês';
$labels['nextmonth'] = 'Próximo mês';
$labels['weekofyear'] = 'Semana';
$labels['pastevents'] = 'Passado';
$labels['futureevents'] = 'Futuro';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Configuração de lembrete padrão';
$labels['defaultalarmoffset'] = 'Horário padrão de lembrete';
$labels['attendee'] = 'Participante';
$labels['role'] = 'Papel';
$labels['availability'] = 'Disp.';
$labels['confirmstate'] = 'Situação';
$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';
$labels['availtentative'] = 'Tentativa';
$labels['availoutofoffice'] = 'Fora de escritório';
$labels['delegatedto'] = 'Delegado para:';
$labels['delegatedfrom'] = 'Delegado de:';
$labels['scheduletime'] = 'Procurar disponibilidade';
$labels['sendinvitations'] = 'Enviar convites';
$labels['sendnotifications'] = 'Avisar os participantes sobre as modificações';
$labels['sendcancellation'] = 'Avisar os participantes sobre o cancelamento do evento';
$labels['onlyworkinghours'] = 'Procurar disponibilidade dentro do meu horário de trabalho';
$labels['reqallattendees'] = 'Obrigatório/todos os participantes';
$labels['prevslot'] = 'Espaço anterior';
$labels['nextslot'] = 'Próximo espaço';
$labels['noslotfound'] = 'Incapaz de encontrar um horário disponível';
$labels['invitationsubject'] = 'Você foi convidado para "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nSegue em anexo um arquivo iCalendar com todos os detalhes do evento na qual você pode importar para sua aplicação de calendário.";
$labels['invitationattendlinks'] = "No caso do seu cliente de e-mail não suportar requisições iTIP você pode usar o link a seguir para aceitar ou recusar este convite:\n\$url";
$labels['eventupdatesubject'] = '"$title" foi atualizado';
$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['itipobjectnotfound'] = 'O evento referenciado por esta mensagem não foi encontrado em seu calendário.';
$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['itipmailbodycancel'] = "\$sender rejeitou sua participação no seguinte evento:\n\n*\$title*\n\nQuando: \$date";
$labels['itipdeclineevent'] = 'Você deseja recusar o convite para este evento?';
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
$labels['itipcomment'] = 'Invitation/notification comment';
$labels['notanattendee'] = 'Você não está listado como um participante deste evento';
$labels['eventcancelled'] = 'O evento foi cancelado';
$labels['saveincalendar'] = 'salvar em';
$labels['updatemycopy'] = 'Atualize em meu calendário';
$labels['savetocalendar'] = 'Gravar no calendário';
$labels['resource'] = 'Recurso';
$labels['addresource'] = 'Livro de recursos';
$labels['findresources'] = 'Encontrar recursos';
$labels['resourcedetails'] = 'Detalhes';
$labels['resourceavailability'] = 'Disponibilidade';
$labels['resourceowner'] = 'Dono';
$labels['resourceadded'] = 'O recurso foi adicionado ao seu evento';
$labels['tabsummary'] = 'Sumário';
$labels['tabrecurrence'] = 'Repetição';
$labels['tabattendees'] = 'Participantes';
$labels['tabresources'] = 'Recursos';
$labels['tabattachments'] = 'Anexos';
$labels['tabsharing'] = 'Compartilhamento';
$labels['deleteobjectconfirm'] = 'Você realmente deseja remover este evento?';
$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.';
$labels['invalideventdates'] = 'Datas inválidas inseridas! Por favor verifique a inserção.';
$labels['invalidcalendarproperties'] = 'Propriedades de calendário inválidas! Por favor defina um nome válido.';
$labels['searchnoresults'] = 'Nenhum evento encontrado nos calendários selecionados.';
$labels['successremoval'] = 'O evento foi excluído com sucesso.';
$labels['successrestore'] = 'O evento foi restaurado com sucesso.';
$labels['errornotifying'] = 'Falha ao enviar notificações para os participantes do evento.';
$labels['errorimportingevent'] = 'Falha ao importar evento';
$labels['importwarningexists'] = 'Uma cópia deste evento já existe em seu calendário.';
$labels['newerversionexists'] = 'Já existe uma nova versão deste evento! Abortado.';
$labels['nowritecalendarfound'] = 'Nenhum calendário encontrado para salvar o evento';
$labels['importedsuccessfully'] = 'O evento foi adicionado com sucesso em \'$calendar\'';
$labels['updatedsuccessfully'] = 'O evento foi atualizado com sucesso em \'$calendar\'.';
$labels['attendeupdateesuccess'] = 'O status do participante foi atualizado com sucesso.';
$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.';
$labels['changeeventconfirm'] = 'Trocar 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?';
$labels['currentevent'] = 'Atual';
$labels['futurevents'] = 'Futuro';
$labels['allevents'] = 'Todos';
$labels['saveasnew'] = 'Salvar como novo';
$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';
$labels['user'] = 'Usuário';
$labels['actiondelete'] = 'Deletado';
?>

275
localization/pt_PT.inc Normal file
View file

@ -0,0 +1,275 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Visualização padrão';
$labels['time_format'] = 'Formato da hora';
$labels['timeslots'] = 'Entradas por hora';
$labels['first_day'] = 'Primeiro dia da semana';
$labels['first_hour'] = 'Primeira hora a mostrar';
$labels['workinghours'] = 'Horário de trabalho';
$labels['add_category'] = 'Adicionar categoria';
$labels['remove_category'] = 'Remover categoria';
$labels['defaultcalendar'] = 'Criar novos eventos em';
$labels['eventcoloring'] = 'Cores dos eventos';
$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';
$labels['afternothing'] = 'Manter';
$labels['aftertrash'] = 'Enviar para o lixo';
$labels['afterdelete'] = 'Eliminar a mensagem';
$labels['afterflagdeleted'] = 'Marcar como eliminada';
$labels['aftermoveto'] = 'Mover para...';
$labels['itipoptions'] = 'Convites de eventos';
$labels['afteraction'] = 'Depois do processamento de um convite ou mensagem de alteração';
$labels['calendar'] = 'Calendário';
$labels['calendars'] = 'Calendários';
$labels['category'] = 'Categoria';
$labels['categories'] = 'Categorias';
$labels['createcalendar'] = 'Criar um novo calendário';
$labels['editcalendar'] = 'Alterar propriedades do calendário';
$labels['name'] = 'Nome';
$labels['color'] = 'Cor';
$labels['day'] = 'Dia';
$labels['week'] = 'Semana';
$labels['month'] = 'Mês';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Novo';
$labels['new_event'] = 'Novo evento';
$labels['edit_event'] = 'Alterar evento';
$labels['edit'] = 'Alterar';
$labels['save'] = 'Guardar';
$labels['removelist'] = 'Remover da lista';
$labels['cancel'] = 'Cancelar';
$labels['select'] = 'Selecionar';
$labels['print'] = 'Imprimir';
$labels['printtitle'] = 'Imprimir calendários';
$labels['title'] = 'Sumário';
$labels['description'] = 'Descrição';
$labels['all-day'] = 'dia todo';
$labels['export'] = 'Exportar';
$labels['exporttitle'] = 'Exportar para iCalendar';
$labels['exportrange'] = 'Eventos de';
$labels['exportattachments'] = 'Incluir anexos';
$labels['customdate'] = 'Definir data';
$labels['location'] = 'Local';
$labels['url'] = 'Endereço web';
$labels['date'] = 'Data';
$labels['start'] = 'Início';
$labels['starttime'] = 'Hora de início';
$labels['end'] = 'Fim';
$labels['endtime'] = 'Hora de fim';
$labels['repeat'] = 'Repetir';
$labels['selectdate'] = 'Escolher data';
$labels['freebusy'] = 'Mostrar-me como';
$labels['free'] = 'Livre';
$labels['busy'] = 'Ocupado';
$labels['outofoffice'] = 'Ausente';
$labels['tentative'] = 'Tentativa';
$labels['mystatus'] = 'O meu estado';
$labels['status'] = 'Estado';
$labels['status-confirmed'] = 'Confirmado';
$labels['status-cancelled'] = 'Cancelado';
$labels['priority'] = 'Prioridade';
$labels['sensitivity'] = 'Privacidade';
$labels['public'] = 'público';
$labels['private'] = 'privado';
$labels['confidential'] = 'confidencial';
$labels['links'] = 'Referência';
$labels['alarms'] = 'Lembrete';
$labels['comment'] = 'Comentário';
$labels['created'] = 'Criado em';
$labels['changed'] = 'Alterado em';
$labels['unknown'] = 'Desconhecido';
$labels['eventoptions'] = 'Opções';
$labels['generated'] = 'produzido a';
$labels['eventhistory'] = 'Histórico';
$labels['removelink'] = 'Remover referência de email ';
$labels['printdescriptions'] = 'Descrições de impressão';
$labels['parentcalendar'] = 'Inserir dentro';
$labels['searchearlierdates'] = '« Procurar eventos anteriores';
$labels['searchlaterdates'] = 'Procurar eventos posteriores »';
$labels['andnmore'] = '$nr mais...';
$labels['togglerole'] = 'Clique para alternar o papel';
$labels['createfrommail'] = 'Salvar como evento';
$labels['importevents'] = 'Importar eventos';
$labels['importrange'] = 'Eventos de';
$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 obter acesso (somente leitura) ao seu calendário com outras aplicações. Para isso pode copiar e colar este endereço em qualquer software que suporte o formato iCal.';
$labels['caldavurldescription'] = 'Para sincronizar este calendário com o seu computador ou dispositivos móveis deverá copiar este endereço <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> para a aplicação cliente. (ex. Evolution ou Mozilla Thunderbird)';
$labels['findcalendars'] = 'Procurar calendários...';
$labels['searchterms'] = 'Procurar termos';
$labels['calsearchresults'] = 'Calendários disponíveis';
$labels['calendarsubscribe'] = 'Listar sempre';
$labels['nocalendarsfound'] = 'Não foram encontrados calendários';
$labels['nrcalendarsfound'] = '$nr calendários encontrados';
$labels['quickview'] = 'Só mostrar este calendário';
$labels['invitationspending'] = 'Convites pendentes';
$labels['invitationsdeclined'] = 'Convites recusados';
$labels['changepartstat'] = 'Mudar estado de participante';
$labels['rsvpcomment'] = 'Mensagem de convite';
$labels['listrange'] = 'Intervalo para exibir:';
$labels['listsections'] = 'Dividir em:';
$labels['smartsections'] = 'Seções inteligentes';
$labels['until'] = 'até';
$labels['today'] = 'Hoje';
$labels['tomorrow'] = 'Amanhã';
$labels['thisweek'] = 'Esta semana';
$labels['nextweek'] = 'Próxima semana';
$labels['prevweek'] = 'Semana anterior';
$labels['thismonth'] = 'Este mês';
$labels['nextmonth'] = 'Próximo mês';
$labels['weekofyear'] = 'Semana';
$labels['pastevents'] = 'Passado';
$labels['futureevents'] = 'Futuro';
$labels['showalarms'] = 'Mostrar lembretes';
$labels['defaultalarmtype'] = 'Configuração padrão de lembrete';
$labels['defaultalarmoffset'] = 'Horário padrão de lembrete';
$labels['attendee'] = 'Participante';
$labels['role'] = 'Papel';
$labels['availability'] = 'Disp.';
$labels['confirmstate'] = 'Estado';
$labels['addattendee'] = 'Adicionar participante';
$labels['roleorganizer'] = 'Organizador';
$labels['rolerequired'] = 'Obrigatório';
$labels['roleoptional'] = 'Facultativo';
$labels['rolechair'] = 'Responsável';
$labels['rolenonparticipant'] = 'Ausente';
$labels['cutypeindividual'] = 'Individual';
$labels['cutypegroup'] = 'Grupo';
$labels['cutyperesource'] = 'Recurso';
$labels['cutyperoom'] = 'Sala';
$labels['availfree'] = 'Disponível';
$labels['availbusy'] = 'Ocupado';
$labels['availunknown'] = 'Desconhecido';
$labels['availtentative'] = 'Tentativa';
$labels['availoutofoffice'] = 'Ausente';
$labels['delegatedto'] = 'Delegado a:';
$labels['delegatedfrom'] = 'Delegado de:';
$labels['scheduletime'] = 'Procurar disponibilidade';
$labels['sendinvitations'] = 'Enviar convites';
$labels['sendnotifications'] = 'Avisar os participantes sobre as alterações';
$labels['sendcancellation'] = 'Avisar os participantes sobre o cancelamento do evento';
$labels['onlyworkinghours'] = 'Procurar disponibilidade dentro do meu horário de trabalho';
$labels['reqallattendees'] = 'Necessário/todos os participantes';
$labels['prevslot'] = 'Espaço anterior';
$labels['nextslot'] = 'Próximo espaço';
$labels['suggestedslot'] = 'Espaço sugerido';
$labels['noslotfound'] = 'Incapaz de encontrar um horário disponível';
$labels['invitationsubject'] = 'Foi convidado para "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nSegue em anexo um arquivo iCalendar com todos os detalhes de um evento, o qual pode importar para o seu calendário.";
$labels['invitationattendlinks'] = "No caso do seu cliente de e-mail não suportar pedidos do tipo iTIP, pode usar o seguinte link para aceitar ou recusar este convite:\n\$url";
$labels['eventupdatesubject'] = '"$title" foi atualizado.';
$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 atualizado com os detalhes de um evento, o qual pode importar para o seu 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['itipobjectnotfound'] = 'O evento citado nesta mensagem não foi encontrado no seu calendário.';
$labels['itipmailbodyaccepted'] = "\$sender aceitou o convite para o seguinte evento:\n\n*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees";
$labels['itipmailbodytentative'] = "\$sender aceitou o convite como \"tentativa\" 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['itipmailbodycancel'] = "\$sender rejeitou a sua participação no seguinte evento:\n\n*\$title*\n\nQuando: \$date";
$labels['itipmailbodydelegated'] = "\$sender delegou a participação no seguinte evento:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender delegou a sua participação no seguinte evento:\n\n*\$title*\n\nWhen: \$date";
$labels['itipdeclineevent'] = 'Deseja recusar o convite para este evento?';
$labels['declinedeleteconfirm'] = 'Também deseja apagar o evento recusado do seu calendário?';
$labels['itipcomment'] = 'Observações — Convite/notificação';
$labels['itipcommenttitle'] = 'Estas observações serão enviadas com o convite/notificação aos participantes.';
$labels['notanattendee'] = 'Não está listado como participante neste evento';
$labels['eventcancelled'] = 'O evento foi cancelado';
$labels['saveincalendar'] = 'guardar em';
$labels['updatemycopy'] = 'Atualizar no meu calendário';
$labels['savetocalendar'] = 'Guardar no calendário';
$labels['openpreview'] = 'Verificar calendário';
$labels['noearlierevents'] = 'Sem eventos anteriores';
$labels['nolaterevents'] = 'Sem eventos posteriores';
$labels['resource'] = 'Recurso';
$labels['addresource'] = 'Livro de recursos';
$labels['findresources'] = 'Encontrar recursos';
$labels['resourcedetails'] = 'Detalhes';
$labels['resourceavailability'] = 'Disponibilidade';
$labels['resourceowner'] = 'Dono';
$labels['resourceadded'] = 'O recurso foi adicionado ao seu evento';
$labels['tabsummary'] = 'Sumário';
$labels['tabrecurrence'] = 'Repetição';
$labels['tabattendees'] = 'Participantes';
$labels['tabresources'] = 'Recursos';
$labels['tabattachments'] = 'Anexos';
$labels['tabsharing'] = 'Partilha';
$labels['deleteobjectconfirm'] = 'Tem a certeza que quer eliminar este evento?';
$labels['deleteventconfirm'] = 'Tem a certeza que quer eliminar este evento?';
$labels['deletecalendarconfirm'] = 'Tem a certeza que quer eliminar este calendário e todos os seus eventos?';
$labels['deletecalendarconfirmrecursive'] = 'Tem a certeza que quer eliminar este calendário com todos os seus eventos e sub-calendários?';
$labels['savingdata'] = 'A guardar os dados...';
$labels['errorsaving'] = 'Falha ao guardar as alterações.';
$labels['operationfailed'] = 'A operação pedida falhou.';
$labels['invalideventdates'] = 'As datas são inválidas! Por favor, verifique novamente.';
$labels['invalidcalendarproperties'] = 'Propriedades de calendário inválidas! Por favor defina um nome válido.';
$labels['searchnoresults'] = 'Nenhum evento encontrado nos calendários selecionados.';
$labels['successremoval'] = 'O evento foi excluído com sucesso.';
$labels['successrestore'] = 'O evento foi restaurado com sucesso.';
$labels['errornotifying'] = 'Falha ao enviar notificações para os participantes do evento.';
$labels['errorimportingevent'] = 'Falha ao importar evento';
$labels['importwarningexists'] = 'Uma cópia deste evento já existe em seu calendário.';
$labels['newerversionexists'] = 'Já existe uma nova versão deste evento! Abortado.';
$labels['nowritecalendarfound'] = 'Nenhum calendário encontrado para salvar o evento';
$labels['importedsuccessfully'] = 'O evento foi adicionado com sucesso em \'$calendar\'';
$labels['updatedsuccessfully'] = 'O evento foi atualizado com sucesso em \'$calendar\'.';
$labels['attendeupdateesuccess'] = 'O status do participante foi atualizado com sucesso.';
$labels['itipsendsuccess'] = 'Convite enviado aos participantes.';
$labels['itipresponseerror'] = 'Falha ao enviar a resposta para este convite de evento';
$labels['itipinvalidrequest'] = 'Este convite já não é válido';
$labels['sentresponseto'] = 'Resposta de convite enviada com sucesso para $mailto';
$labels['localchangeswarning'] = 'As alterações que pretende efetuar só serão válidas no seu calendário e não serão enviadas ao organizador do evento.';
$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'] = 'Não tem permissão de administrador neste calendário.';
$labels['changeeventconfirm'] = 'Alterar evento';
$labels['removeeventconfirm'] = 'Eliminar evento';
$labels['changerecurringeventwarning'] = 'Este evento é recorrente. Deseja alterar a ocorrência atual, esta e todas as futuras ocorrências ou guardar como um novo evento?';
$labels['removerecurringeventwarning'] = 'Este evento é recorrente. Deseja eliminar a ocorrência atual, esta e todas as futuras ocorrências ou todas as ocorrências do evento?';
$labels['removerecurringallonly'] = 'Este evento é recorrente. Como participante, só pode apagar apagar o evento com todas as ocorrências.';
$labels['currentevent'] = 'Atual';
$labels['futurevents'] = 'Futuro';
$labels['allevents'] = 'Todos';
$labels['saveasnew'] = 'Guardar como';
$labels['birthdays'] = 'Aniversários';
$labels['birthdayscalendar'] = 'Calendário de aniversários';
$labels['displaybirthdayscalendar'] = 'Mostrar calendário de aniversários';
$labels['birthdayscalendarsources'] = 'From these address books';
$labels['birthdayeventtitle'] = 'Aniversário de $name';
$labels['birthdayage'] = 'Idade $age';
$labels['eventchangelog'] = 'Alterar histórico';
$labels['eventdiff'] = 'Changes from revisions $rev';
$labels['revision'] = 'Revisão';
$labels['user'] = 'Utilizador';
$labels['operation'] = 'Ação';
$labels['actionappend'] = 'Guardado';
$labels['actionmove'] = 'Movido';
$labels['actiondelete'] = 'Eliminado';
$labels['compare'] = 'Comparar';
$labels['showrevision'] = 'Mostrar esta versão';
$labels['restore'] = 'Restaurar esta versão';
$labels['eventnotfound'] = 'Falha ao ler os dados do evento';
$labels['eventchangelognotavailable'] = 'Não é possível alterar o histórico deste evento';
$labels['eventdiffnotavailable'] = 'Não é possível comparar as revisões selecionadas';
$labels['eventrestoreconfirm'] = 'Confirma o restauro da revisão $rev deste evento? Os dados atuais serão substituídos pelos da versão anterior.';
$labels['arialabelminical'] = 'Seleção da data do calendário';
$labels['arialabelcalendarview'] = 'Vista do calendário';
$labels['arialabelsearchform'] = 'Quadro de pesquisa de eventos';
$labels['arialabelquicksearchbox'] = 'Pesquisa de eventos';
$labels['arialabelcalsearchform'] = 'Quadro de pesquisa de calendários';
$labels['calendaractions'] = 'Ações do calendário';
$labels['arialabeleventattendees'] = 'Lista de participantes do evento';
$labels['arialabeleventresources'] = 'Lista de recursos para eventos';
$labels['arialabelresourcesearchform'] = 'Quadro de pesquisa de recursos';
$labels['arialabelresourceselection'] = 'Recursos disponíveis';
?>

9
localization/ro.inc Normal file
View file

@ -0,0 +1,9 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
?>

View file

@ -1,45 +1,33 @@
<?php
/**
* RoundCube Calendar
* Localizations for Kolab Calendar plugin
*
* Plugin to add a calendar to RoundCube.
* Copyright (C) 2014, Kolab Systems AG
*
* @version 0.2 BETA 2
* @author Lazlo Westerhof
* @url http://rc-calendar.lazlo.me
* @licence GNU GPL
* @copyright (c) 2010 Lazlo Westerhof - Netherlands
*
**/
$labels = array();
// config
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Вид по умолчанию';
$labels['time_format'] = 'Формат времени';
$labels['timeslots'] = 'Промежутков в час';
$labels['first_day'] = 'Первый день недели';
$labels['default_view'] = 'Вид по умолчанию';
$labels['first_hour'] = 'Показывать начиная с';
$labels['workinghours'] = 'Рабочие часы';
$labels['add_category'] = 'Добавить категорию';
$labels['remove_category'] = 'Удалить категорию';
$labels['defaultcalendar'] = 'Создать новое событие в';
$labels['defaultcalendar'] = 'Создавать новое событие в';
$labels['eventcoloring'] = 'Цвет события';
$labels['coloringmode0'] = 'Согласно цвета календаря';
$labels['coloringmode1'] = 'Согласно цвета категории';
$labels['coloringmode2'] = 'Календарь для внешних, категория для внутренних цветов';
$labels['coloringmode3'] = 'Категория для внешних, календарь для внутренних цветов';
// calendar
$labels['coloringmode2'] = 'Цвет календаря для рамки, цвет категории для фона';
$labels['coloringmode3'] = 'Цвет категории для рамки, цвет календаря для фона';
$labels['afternothing'] = 'Ничего не делать';
$labels['aftertrash'] = 'Переместить в корзину';
$labels['afterdelete'] = 'Удалить сообщение';
$labels['afterflagdeleted'] = 'Пометить как удалённое';
$labels['aftermoveto'] = 'Переместить в...';
$labels['itipoptions'] = 'Приглашения на события';
$labels['afteraction'] = 'После того, как приглашение или сообщение о его изменении обработано';
$labels['calendar'] = 'Календарь';
$labels['day'] = 'День';
$labels['week'] = 'Неделя';
$labels['month'] = 'Месяц';
$labels['new_event'] = 'Новое событие';
$labels['edit_event'] = 'Изменить событие';
$labels['save'] = 'Сохранить';
$labels['remove'] = 'Удалить';
$labels['cancel'] = 'Завершить';
$labels['calendars'] = 'Календари';
$labels['category'] = 'Категория';
$labels['categories'] = 'Категории';
@ -47,70 +35,103 @@ $labels['createcalendar'] = 'Создать новый календарь';
$labels['editcalendar'] = 'Редактировать свойства календаря';
$labels['name'] = 'Имя';
$labels['color'] = 'Цвет';
$labels['day'] = 'День';
$labels['week'] = 'Неделя';
$labels['month'] = 'Месяц';
$labels['agenda'] = 'Список';
$labels['new'] = 'Новый';
$labels['new_event'] = 'Новое событие';
$labels['edit_event'] = 'Изменить событие';
$labels['edit'] = 'Редактировать';
$labels['save'] = 'Сохранить';
$labels['removelist'] = 'Удалить из списка';
$labels['cancel'] = 'Отмена';
$labels['select'] = 'Выбрать';
$labels['print'] = 'Распечатать';
$labels['printtitle'] = 'Распечатать календарь';
$labels['title'] = 'Название мероприятия';
$labels['title'] = 'Сводка';
$labels['description'] = 'Описание';
$labels['all-day'] = 'целый день';
$labels['all-day'] = 'весь день';
$labels['export'] = 'Экспорт';
$labels['exporttitle'] = 'Экспорт в iCalendar';
$labels['exportrange'] = 'События начиная с';
$labels['exportattachments'] = 'С вложениями';
$labels['customdate'] = 'Специальная дата';
$labels['location'] = 'Место';
$labels['url'] = 'URL';
$labels['date'] = 'Дата';
$labels['start'] = 'Начало';
$labels['starttime'] = 'Время начала';
$labels['end'] = 'Конец';
$labels['endtime'] = 'Время окончания';
$labels['repeat'] = 'Повторить';
$labels['selectdate'] = 'Выберите дату';
$labels['freebusy'] = 'Показать как';
$labels['free'] = 'Свободен';
$labels['busy'] = 'Занят';
$labels['outofoffice'] = 'Вне офиса';
$labels['tentative'] = 'Предварительно';
$labels['tentative'] = 'Неопределённо';
$labels['mystatus'] = 'Мой статус';
$labels['status'] = 'Статус';
$labels['status-confirmed'] = 'Подтвеждённый';
$labels['status-cancelled'] = 'Отмененные';
$labels['priority'] = 'Приоритет';
$labels['sensitivity'] = 'Секретность';
$labels['public'] = 'Общедоступная';
$labels['private'] = 'Личная';
$labels['confidential'] = 'Конфиденциальная';
$labels['public'] = 'общедоступная';
$labels['private'] = 'личная';
$labels['confidential'] = 'конфиденциальная';
$labels['links'] = 'Ссылка';
$labels['alarms'] = 'Напоминание';
$labels['generated'] = 'generated at';
$labels['printdescriptions'] = 'Распечатать описание';
$labels['comment'] = 'Комментарий';
$labels['created'] = 'Создана';
$labels['changed'] = 'Изменена';
$labels['unknown'] = 'Неизвестно';
$labels['eventoptions'] = 'Опции';
$labels['generated'] = 'создан';
$labels['eventhistory'] = 'История';
$labels['removelink'] = 'Удалить ссылку на письмо';
$labels['printdescriptions'] = 'Печатать описания';
$labels['parentcalendar'] = 'Вставить внутри';
$labels['searchearlierdates'] = 'В« Искать для ранних событий';
$labels['searchlaterdates'] = 'Искать для поздних событий В»';
$labels['searchearlierdates'] = '« Искать события раньше';
$labels['searchlaterdates'] = 'Искать события позже »';
$labels['andnmore'] = '$nr больше...';
$labels['showmore'] = 'Показать больше...';
$labels['togglerole'] = 'Кликните для переключения роли';
$labels['createfrommail'] = 'Сохранить как событие';
$labels['importevents'] = 'Импортировать события';
$labels['importrange'] = 'События с';
$labels['importrange'] = 'События начиная с';
$labels['onemonthback'] = '1 месяц назад';
$labels['nmonthsback'] = '$nr месяцев назад';
$labels['nmonthsback'] = '$nr месяца(ев) назад';
$labels['showurl'] = 'Показать URL календаря';
$labels['showurldescription'] = 'Используйте следующий адрес для доступа к Вашему календарю из других приложений. Вы можете скопировать и вставить это в любое приложение которое поддерживает формат iCal.';
// agenda view
$labels['showurldescription'] = 'Используйте следующий адрес для просмотра Вашего календаря из других приложений. Вы можете скопировать и вставить это в любое приложение которое поддерживает формат iCal.';
$labels['caldavurldescription'] = 'Скопируйте этот адрес в клиент, <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">поддерживающий CalDAV</a> (например, Evolution или Mozilla Thunderbird) для полной синхронизации данного календаря со своим компьютером или мобильным устройством.';
$labels['findcalendars'] = 'Найти календари...';
$labels['searchterms'] = 'Условия поиска';
$labels['calsearchresults'] = 'Доступные календари';
$labels['calendarsubscribe'] = 'Всегда показывать';
$labels['nocalendarsfound'] = 'Календарей не найдено';
$labels['nrcalendarsfound'] = '$nr календарей найдено';
$labels['quickview'] = 'Просмотреть только этот календарь';
$labels['invitationspending'] = 'Ожидающие приглашения';
$labels['invitationsdeclined'] = 'Отклонённые приглашения';
$labels['changepartstat'] = 'Изменить статус участника';
$labels['rsvpcomment'] = 'Текст приглашения';
$labels['listrange'] = 'Диапазон:';
$labels['listsections'] = 'Разделитесь на:';
$labels['listsections'] = 'Разделить на:';
$labels['smartsections'] = 'Умные секции';
$labels['until'] = 'до';
$labels['today'] = 'Сегодня';
$labels['tomorrow'] = 'Завтра';
$labels['thisweek'] = 'Текущая неделя';
$labels['nextweek'] = 'Следующая неделя';
$labels['prevweek'] = 'Предыдущая неделя';
$labels['thismonth'] = 'Этот месяц';
$labels['nextmonth'] = 'Следующий месяц';
$labels['weekofyear'] = 'Неделя';
$labels['pastevents'] = 'Прошлое';
$labels['futureevents'] = 'Будующее';
// alarm/reminder settings
$labels['showalarms'] = 'Показать уведомление';
$labels['pastevents'] = 'Прошедшее';
$labels['futureevents'] = 'Будущее';
$labels['showalarms'] = 'Показывать напоминания';
$labels['defaultalarmtype'] = 'Настройки напоминания по умолчанию';
$labels['defaultalarmoffset'] = 'Время напоминания по умолчанию';
// attendees
$labels['attendee'] = 'Участник';
$labels['role'] = 'Роль';
$labels['availability'] = 'Доступность';
@ -118,125 +139,137 @@ $labels['confirmstate'] = 'Статус';
$labels['addattendee'] = 'Добавить участника';
$labels['roleorganizer'] = 'Организатор';
$labels['rolerequired'] = 'Обязательный';
$labels['roleoptional'] = 'Опциональный';
$labels['rolechair'] = 'Наблюдатель';
$labels['roleoptional'] = 'Необязательный';
$labels['rolechair'] = 'Место';
$labels['rolenonparticipant'] = 'Absent';
$labels['cutypeindividual'] = 'Индивидуум';
$labels['cutypegroup'] = 'Группа';
$labels['cutyperesource'] = 'Ресурс';
$labels['cutyperoom'] = 'Комната';
$labels['availfree'] = 'Свободен';
$labels['availbusy'] = 'Занят';
$labels['availunknown'] = 'Неизвестно';
$labels['availtentative'] = 'Предварительно';
$labels['availoutofoffice'] = 'Вне офиса';
$labels['delegatedto'] = 'Поручено:';
$labels['delegatedfrom'] = 'Поручено от:';
$labels['scheduletime'] = 'Найти доступность';
$labels['sendinvitations'] = 'Отправить приглашение';
$labels['sendinvitations'] = 'Отправить приглашения';
$labels['sendnotifications'] = 'Уведомить участников об изменениях';
$labels['sendcancellation'] = 'Уведомить участников об отмене события';
$labels['onlyworkinghours'] = 'Найти возможность в мои рабочие часы';
$labels['onlyworkinghours'] = 'Найти доступность в мои рабочие часы';
$labels['reqallattendees'] = 'Необходимые/все участники';
$labels['prevslot'] = 'Предыдущее время';
$labels['nextslot'] = 'Следующее время';
$labels['suggestedslot'] = 'Предлагаемое время';
$labels['noslotfound'] = 'Невозможно найти свободное время';
$labels['invitationsubject'] = 'Вы приглашены на "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nПожалуйста найдите вложения в iCalendar файл со всеми деталями события которое Вы можете импортировать в вашу программу календаря.";
$labels['invitationattendlinks'] = "В случае, если Ваш почтовый клиент не поддерживает запросы iTip, Вы можете использовать ссылку, чтобы принять или отклонить это приглашение:\n\$url";
$labels['invitationmailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nВо вложении вы найдёте файл iCalendar со всеми деталями события, который Вы можете импортировать в Вашу программу-ежедневник.";
$labels['invitationattendlinks'] = "В случае, если Ваш почтовый клиент не поддерживает запросы iTip, Вы можете использовать ссылку данную ниже, чтобы принять или отклонить это приглашение:\n\$url";
$labels['eventupdatesubject'] = '"$title" было обновлено';
$labels['eventupdatesubjectempty'] = 'Событие, которое касается Вас было обновлено';
$labels['eventupdatemailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nПожалуйста найдите вложения в iCalendar файл со всеми деталями события которое Вы можете импортировать в вашу программу календаря.";
$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 файл которое обновит детали события.";
// invitation handling
$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['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['eventcancelmailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nЭто событие отменено \$organizer.\n\nВо вложении вы найдёте файл iCalendar со всеми изменениями в событии.";
$labels['itipobjectnotfound'] = 'Событие, упомянутое в этом сообщении, не найдено в вашем календаре.';
$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['itipmailbodycancel'] = "\$sender отклонил ваше участие в событии:\n\n*\$title*\n\nДата: \$date";
$labels['itipmailbodydelegated'] = "\$sender перепоручил(а) учестие в событии:\n\n*\$title*\n\nДата: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender перепоручил(а) Вам участие в событии:\n\n*\$title*\n\nДата: \$date";
$labels['itipdeclineevent'] = 'Вы хотите отклонить приглашение на это событие?';
$labels['importtocalendar'] = 'Сохранить в мой календарь';
$labels['removefromcalendar'] = 'Удалить из моего календаря';
$labels['updateattendeestatus'] = 'Обновить статус участника';
$labels['acceptinvitation'] = 'Вы принимаете это приглашение?';
$labels['youhaveaccepted'] = 'Вы приняли это приглашение';
$labels['youhavetentative'] = 'Вы предварительно приняли это приглашение';
$labels['youhavedeclined'] = 'Вы отклонили это приглашение';
$labels['notanattendee'] = 'Вы не в списке этого события';
$labels['declinedeleteconfirm'] = 'Хотите ли вы так же удалить это отклонённое событие из вашего календаря?';
$labels['itipcomment'] = 'Комментарий к приглашению/извещению';
$labels['itipcommenttitle'] = 'Этот комментарий будет прикреплён к приглашению/оповещению, отправленному участникам';
$labels['notanattendee'] = 'Вы не в списке участников этого события';
$labels['eventcancelled'] = 'Это событие отменено';
$labels['saveincalendar'] = 'сохранить в';
// event dialog tabs
$labels['updatemycopy'] = 'Обновить в моём календаре';
$labels['savetocalendar'] = 'Сохранить в календарь';
$labels['openpreview'] = 'Проверить календарь';
$labels['noearlierevents'] = 'Нет предыдущих событий';
$labels['nolaterevents'] = 'Нет последующих событий';
$labels['resource'] = 'Ресурс';
$labels['addresource'] = 'Зарезервировать ресурс';
$labels['findresources'] = 'Найти ресурсы';
$labels['resourcedetails'] = 'Подробнее';
$labels['resourceavailability'] = 'Доступность';
$labels['resourceowner'] = 'Владелец';
$labels['resourceadded'] = 'Ресурс добавлен в ваше событие';
$labels['tabsummary'] = 'Сводка';
$labels['tabrecurrence'] = 'Повторение';
$labels['tabattendees'] = 'Участники';
$labels['tabresources'] = 'Ресурсы';
$labels['tabattachments'] = 'Вложения';
$labels['tabsharing'] = 'Совместное использование';
// messages
$labels['deleteobjectconfirm'] = 'Вы действительно хотите удалить это событие?';
$labels['deleteventconfirm'] = 'Вы действительно хотите удалить это событие?';
$labels['deletecalendarconfirm'] = 'Вы действительно хотите удалить этот календарь со всеми его событиями?';
$labels['deletecalendarconfirmrecursive'] = 'Вы действительно хотите удалить этот календарь со всеми его событиями и вложенными календарями?';
$labels['savingdata'] = 'Сохранение данных...';
$labels['errorsaving'] = 'Ошибка сохранения изменений.';
$labels['operationfailed'] = 'Ошибка запрошенной операции.';
$labels['operationfailed'] = 'Не удалось выполнить запрошенную операцию.';
$labels['invalideventdates'] = 'Неверная дата! Пожалуйста проверьте данные.';
$labels['invalidcalendarproperties'] = 'Неверные свойства календаря! Пожалуйста введите допустимые данные.';
$labels['searchnoresults'] = 'Событие не найдено в выбранном календаре.';
$labels['successremoval'] = 'Это событие успешно удалено.';
$labels['successrestore'] = 'Это событие успешно восстановлено.';
$labels['errornotifying'] = 'Ошибка в отправке уведомления участникам событий';
$labels['errorimportingevent'] = 'Ошибка при импорте события';
$labels['newerversionexists'] = 'Новая версия этого события уже существует! Отменено.';
$labels['searchnoresults'] = 'Событие не найдено в выбранных календарях.';
$labels['successremoval'] = 'Событие успешно удалено.';
$labels['successrestore'] = 'Событие успешно восстановлено.';
$labels['errornotifying'] = 'Не удалось отправить уведомления участникам событий';
$labels['errorimportingevent'] = 'Не удалось импортировать событие';
$labels['importwarningexists'] = 'Копия этого события уже есть в вашем календаре.';
$labels['newerversionexists'] = 'Обновлённая версия этого события уже существует! Отменено.';
$labels['nowritecalendarfound'] = 'Не найден календарь для записи этого события';
$labels['importedsuccessfully'] = 'Это событие успешно добавлено в \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Успешно обновлен статус участников';
$labels['itipresponseerror'] = 'Невозможно послать ответ на это приглашение';
$labels['importedsuccessfully'] = 'Событие успешно добавлено в \'$calendar\'';
$labels['updatedsuccessfully'] = 'Событие успешно обновлено в \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Успешно обновлен статус участника';
$labels['itipsendsuccess'] = 'Приглашания отправлены участникам.';
$labels['itipresponseerror'] = 'Не удалось послать ответ на это приглашение';
$labels['itipinvalidrequest'] = 'Это приглашение больше не действительно';
$labels['sentresponseto'] = 'Успешно отправлен ответ на приглашение на $mailto';
$labels['localchangeswarning'] = 'Вы собираетесь внести изменения, которые будут только отражены на Вашем личном календаре';
$labels['importsuccess'] = 'Успешно импортированы $nr событий';
$labels['localchangeswarning'] = 'Вы собираетесь внести изменения, которые отразятся только на Вашем личном календаре и не будут отправлены организатору события.';
$labels['importsuccess'] = 'Успешно импортировано $nr событий';
$labels['importnone'] = 'Не найдено событий для импорта';
$labels['importerror'] = 'Ошибка при импорте';
$labels['aclnorights'] = 'Вы не имеете прав администратора для этого календаря.';
// recurrence form
$labels['repeat'] = 'Повторить';
$labels['frequency'] = 'Повторить';
$labels['never'] = 'никогда';
$labels['daily'] = 'ежедневно';
$labels['weekly'] = 'еженедельно';
$labels['monthly'] = 'ежемесячно';
$labels['yearly'] = 'ежегодно';
$labels['every'] = 'Каждый';
$labels['days'] = 'дней';
$labels['weeks'] = 'недели';
$labels['months'] = 'месяцы';
$labels['years'] = 'годы в:';
$labels['bydays'] = 'На';
$labels['untildate'] = 'до числа';
$labels['each'] = 'Каждый';
$labels['onevery'] = 'На каждом';
$labels['onsamedate'] = 'В ту же самую дату';
$labels['forever'] = 'всегда';
$labels['recurrencend'] = 'продолжительность';
$labels['forntimes'] = '$nr дней';
$labels['first'] = 'первое';
$labels['second'] = 'второе';
$labels['third'] = 'третье';
$labels['fourth'] = 'четвертое';
$labels['last'] = 'последнее';
$labels['dayofmonth'] = 'День месяца';
$labels['changeeventconfirm'] = 'Изменить событие';
$labels['removeeventconfirm'] = 'Удалить событие';
$labels['changerecurringeventwarning'] = 'Это - повторяющееся событие. Хотели бы Вы редактировать только текущее событие, это и все будущие повторения, все события или сохранять его как новое событие?';
$labels['removerecurringeventwarning'] = 'Это - повторяющееся событие. Хотели бы Вы удалить только текущее событие, это и все будущие события или все эти события?';
$labels['removerecurringallonly'] = 'Это - повторяющееся событие. Как участник, Вы можете удалить всё событие вместе с всеми повторениями.';
$labels['currentevent'] = 'Текущее';
$labels['futurevents'] = 'Будущие';
$labels['allevents'] = 'Все';
$labels['saveasnew'] = 'Сохранить как новое';
$labels['birthdays'] = 'Дни рождения';
$labels['birthdayscalendar'] = 'Календарь Дней Рождения';
$labels['displaybirthdayscalendar'] = 'Показывать календарь Дней Рождения';
$labels['birthdayscalendarsources'] = 'Из этих адресных книг';
$labels['birthdayeventtitle'] = 'День рождения $name';
$labels['birthdayage'] = 'Возраст $age';
$labels['eventchangelog'] = 'История изменений';
$labels['eventdiff'] = 'Изменения с ревизии $rev';
$labels['revision'] = 'Ревизия';
$labels['user'] = 'Пользователь';
$labels['operation'] = 'Действие';
$labels['actionappend'] = 'Сохранено';
$labels['actionmove'] = 'Перемещено';
$labels['actiondelete'] = 'Удалено';
$labels['compare'] = 'Сравнить';
$labels['showrevision'] = 'Показать эту версию';
$labels['restore'] = 'Восстановить эту версию';
$labels['eventnotfound'] = 'Не удалось загрузить информацию о мероприятиях';
$labels['eventchangelognotavailable'] = 'История изменений для этого события недоступна';
$labels['eventdiffnotavailable'] = 'Невозможно провести сравнение выбранных ревизий ';
$labels['eventrestoreconfirm'] = 'Вы уверенны, что хотите восстановить это событие из ревизии $rev? Оно заменит текущее событие старой версией. ';
$labels['arialabelminical'] = 'Выбор даты';
$labels['arialabelcalendarview'] = 'Вид календаря';
$labels['arialabelsearchform'] = 'Форма поиска событий';
$labels['arialabelquicksearchbox'] = 'Поиск событий';
$labels['arialabelcalsearchform'] = 'Форма поиска календарей';
$labels['calendaractions'] = 'Действия с календарями';
$labels['arialabeleventattendees'] = 'Участники события';
$labels['arialabeleventresources'] = 'Ресурсы события';
$labels['arialabelresourcesearchform'] = 'Форма поиска ресурсов';
$labels['arialabelresourceselection'] = 'Доступные ресурсы';
?>

82
localization/sk.inc Normal file
View file

@ -0,0 +1,82 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Prednastavené zobrazenie';
$labels['time_format'] = 'Formát času';
$labels['timeslots'] = 'Časových úsekov za hodinu';
$labels['first_day'] = 'Prvý deň v týždni';
$labels['first_hour'] = 'Prvá hodina na zobrazenie';
$labels['workinghours'] = 'Pracovný čas';
$labels['add_category'] = 'Pridať kategóriu';
$labels['remove_category'] = 'Odstrániť kategóriu';
$labels['defaultcalendar'] = 'Vytvoriť novú udalosť v';
$labels['eventcoloring'] = 'Farba udalosti';
$labels['afternothing'] = 'Neurobiť nič';
$labels['aftertrash'] = 'Presunúť do koša';
$labels['afterdelete'] = 'Vymazať správu';
$labels['afterflagdeleted'] = 'Označiť ako vymazané';
$labels['aftermoveto'] = 'Presunúť do...';
$labels['itipoptions'] = 'Pozvánky na udalosť';
$labels['calendar'] = 'Kalendár';
$labels['calendars'] = 'Kalendáre';
$labels['category'] = 'Kategória';
$labels['categories'] = 'Kategórie';
$labels['createcalendar'] = 'Vytvoriť nový kalendár';
$labels['editcalendar'] = 'Upraviť nastavenie kalendára';
$labels['name'] = 'Meno';
$labels['color'] = 'Farba';
$labels['day'] = 'Deň';
$labels['week'] = 'Týždeň';
$labels['month'] = 'Mesiac';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Nový';
$labels['new_event'] = 'Nová udalosť';
$labels['edit_event'] = 'Upraviť udalosť';
$labels['edit'] = 'Upraviť';
$labels['save'] = 'Uložiť';
$labels['removelist'] = 'Odstrániť zo zoznamu';
$labels['cancel'] = 'Zrušiť';
$labels['select'] = 'Vybrať';
$labels['print'] = 'Vytlačiť';
$labels['printtitle'] = 'Vytlačiť kalendáre';
$labels['title'] = 'Sumár';
$labels['description'] = 'Popis';
$labels['all-day'] = 'celý deň';
$labels['export'] = 'Exportovať';
$labels['exporttitle'] = 'Exportovať do iCalendar';
$labels['exportrange'] = 'Udalosti z';
$labels['exportattachments'] = 'S prílohami';
$labels['customdate'] = 'Používateľský dátum';
$labels['location'] = 'Poloha';
$labels['url'] = 'URL';
$labels['date'] = 'Dátum';
$labels['start'] = 'Začiatok';
$labels['starttime'] = 'Čas začiatku';
$labels['end'] = 'Koniec';
$labels['endtime'] = 'Čas konca';
$labels['repeat'] = 'Opakovať';
$labels['selectdate'] = 'Vyberte dátum';
$labels['freebusy'] = 'Zobraziť ako';
$labels['free'] = 'Voľný';
$labels['busy'] = 'Zaneprázdnený';
$labels['outofoffice'] = 'Mimo kancelárie';
$labels['tentative'] = 'Nezáväzne';
$labels['mystatus'] = 'Môj stav';
$labels['status'] = 'Stav';
$labels['status-confirmed'] = 'Potvrdené';
$labels['status-cancelled'] = 'Zrušené';
$labels['priority'] = 'Priorita';
$labels['importrange'] = 'Udalosti z';
$labels['weekofyear'] = 'Týždeň';
$labels['confirmstate'] = 'Stav';
$labels['availfree'] = 'Voľný';
$labels['availbusy'] = 'Zaneprázdnený';
$labels['availtentative'] = 'Nezáväzne';
$labels['availoutofoffice'] = 'Mimo kancelárie';
$labels['tabsummary'] = 'Sumár';
?>

274
localization/sl.inc Normal file
View file

@ -0,0 +1,274 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Privzeti pogled';
$labels['time_format'] = 'Format časa';
$labels['timeslots'] = 'Časovnih oken na uro';
$labels['first_day'] = 'Prvi dan v tednu';
$labels['first_hour'] = 'Prva ura za prikaz';
$labels['workinghours'] = 'Ure dela';
$labels['add_category'] = 'Dodaj kategorijo';
$labels['remove_category'] = 'Odstrani kategorijo';
$labels['defaultcalendar'] = 'Ustvari nove dogodke v';
$labels['eventcoloring'] = 'Barva dogodka';
$labels['coloringmode0'] = 'Po koledarju';
$labels['coloringmode1'] = 'Po kategoriji';
$labels['coloringmode2'] = 'Koledar za prikaz, kategorija za vsebino';
$labels['coloringmode3'] = 'Kategorija za prikaz, koledar za vsebino';
$labels['afternothing'] = 'Ne naredi ničesar';
$labels['aftertrash'] = 'Premakni v koš';
$labels['afterdelete'] = 'Izbriši sporočilo';
$labels['afterflagdeleted'] = 'Označi kot izbrisano';
$labels['aftermoveto'] = 'Premakni v...';
$labels['itipoptions'] = 'Vabila za dogodek';
$labels['afteraction'] = 'Po obdelavi vabila ali posodobljenega sporočila';
$labels['calendar'] = 'Koledar';
$labels['calendars'] = 'Koledarji';
$labels['category'] = 'Kategorija';
$labels['categories'] = 'Kategorije';
$labels['createcalendar'] = 'Ustvari nov koledar';
$labels['editcalendar'] = 'Uredi nastavitve koledarja';
$labels['name'] = 'Ime';
$labels['color'] = 'Barva';
$labels['day'] = 'Dan';
$labels['week'] = 'Teden';
$labels['month'] = 'Mesec';
$labels['agenda'] = 'Urnik';
$labels['new'] = 'Nov';
$labels['new_event'] = 'Nov dogodek';
$labels['edit_event'] = 'Uredi dogodek';
$labels['edit'] = 'Uredi';
$labels['save'] = 'Shrani';
$labels['removelist'] = 'Odstrani iz seznama';
$labels['cancel'] = 'Prekliči';
$labels['select'] = 'Izberi';
$labels['print'] = 'Natisni';
$labels['printtitle'] = 'Natisni koledarje';
$labels['title'] = 'Pregled';
$labels['description'] = 'Opis';
$labels['all-day'] = 'cel dan';
$labels['export'] = 'Izvozi';
$labels['exporttitle'] = 'Izvozi v iCalendar';
$labels['exportrange'] = 'Dogodki od';
$labels['exportattachments'] = 'S priponkami';
$labels['customdate'] = 'Poljubni datum';
$labels['location'] = 'Lokacija';
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Začetek';
$labels['starttime'] = 'Čas začetka';
$labels['end'] = 'Konec';
$labels['endtime'] = 'Čas konca';
$labels['repeat'] = 'Ponovi';
$labels['selectdate'] = 'Izberi datum';
$labels['freebusy'] = 'Prikaži me kot';
$labels['free'] = 'Prost';
$labels['busy'] = 'Zaseden';
$labels['outofoffice'] = 'Izven pisarne';
$labels['tentative'] = 'Pogojno';
$labels['mystatus'] = 'Moj status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Potrjeno';
$labels['status-cancelled'] = 'Preklicano';
$labels['priority'] = 'Prednost';
$labels['sensitivity'] = 'Zasebnost';
$labels['public'] = 'javno';
$labels['private'] = 'zasebno';
$labels['confidential'] = 'zaupno';
$labels['links'] = 'Sklic';
$labels['alarms'] = 'Opomnik';
$labels['comment'] = 'Komentar';
$labels['created'] = 'Ustvarjeno';
$labels['changed'] = 'Nazadnje urejeno';
$labels['unknown'] = 'Neznano';
$labels['eventoptions'] = 'Nastavitve';
$labels['generated'] = 'generirano ob';
$labels['eventhistory'] = 'Zgodovina';
$labels['removelink'] = 'Odstrani email povezavo';
$labels['printdescriptions'] = 'Opis za tisk';
$labels['parentcalendar'] = 'Vstavi';
$labels['searchearlierdates'] = '« Išči po prejšnjih dogodkih';
$labels['searchlaterdates'] = 'Išči po kasnejših dogodkih »';
$labels['andnmore'] = '$nr več...';
$labels['togglerole'] = 'Klikni za prikaz vloge';
$labels['createfrommail'] = 'Shrani kot dogodek';
$labels['importevents'] = 'Uvozi dogodke';
$labels['importrange'] = 'Dogodki od';
$labels['onemonthback'] = '1 mesec nazaj';
$labels['nmonthsback'] = '$nr mesecev nazaj';
$labels['showurl'] = 'Prikaži URL koledarja';
$labels['showurldescription'] = 'Za dostop do koledarja (samo za branje) iz drugih aplikacij uporabi naslednji naslov. Funkcija kopiraj in prilepi deluje z vsakim koledarjem v iCal formatu.';
$labels['caldavurldescription'] = 'Za sinhronizacijo tega koledarja z vašim računalnikom ali mobilno napravo, v podprto aplikacijo (npr. Evolution ali Mozilla Thunderbird) kopirajte ta naslov <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> .';
$labels['findcalendars'] = 'Išči koledarje...';
$labels['searchterms'] = 'Iskalni pogoji';
$labels['calsearchresults'] = 'Razpoložljivi koledarji';
$labels['calendarsubscribe'] = 'Označi za vedno';
$labels['nocalendarsfound'] = 'Ni najdenih koledarjev';
$labels['nrcalendarsfound'] = '$nr najdenih koledarjev';
$labels['quickview'] = 'Prikaži samo ta koledar';
$labels['invitationspending'] = 'Vabila za dogodek';
$labels['invitationsdeclined'] = 'Zavrnjena vabila';
$labels['changepartstat'] = 'Spremeni status sodelujočega';
$labels['rsvpcomment'] = 'Sporočilo vabila';
$labels['listrange'] = 'Prikaži v razponu:';
$labels['listsections'] = 'Razdeli v:';
$labels['smartsections'] = 'Pametni razdelki';
$labels['until'] = 'do';
$labels['today'] = 'Danes';
$labels['tomorrow'] = 'Jutri';
$labels['thisweek'] = 'Ta teden';
$labels['nextweek'] = 'Naslednji teden';
$labels['prevweek'] = 'Prejšnji teden';
$labels['thismonth'] = 'Ta mesec';
$labels['nextmonth'] = 'Naslednji mesec';
$labels['weekofyear'] = 'Teden';
$labels['pastevents'] = 'Pretekli';
$labels['futureevents'] = 'Prihodnji';
$labels['showalarms'] = 'Prikaži opomnike';
$labels['defaultalarmtype'] = 'Privzeta nastavitev opomnika';
$labels['defaultalarmoffset'] = 'Privzeti čas opomnika';
$labels['attendee'] = 'Udeleženec';
$labels['role'] = 'Vloga';
$labels['availability'] = 'Razpol.';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Dodaj udeleženca';
$labels['roleorganizer'] = 'Organizator';
$labels['rolerequired'] = 'Zahtevano';
$labels['roleoptional'] = 'Neobvezno';
$labels['rolechair'] = 'Vodja sestanka';
$labels['rolenonparticipant'] = 'Odsoten';
$labels['cutypeindividual'] = 'Osebni';
$labels['cutypegroup'] = 'Skupina';
$labels['cutyperesource'] = 'Vir';
$labels['cutyperoom'] = 'Soba';
$labels['availfree'] = 'Prost';
$labels['availbusy'] = 'Zaseden';
$labels['availunknown'] = 'Neznano';
$labels['availtentative'] = 'Pogojno';
$labels['availoutofoffice'] = 'Izven pisarne';
$labels['delegatedto'] = 'Preneseno na:';
$labels['delegatedfrom'] = 'Preneseno od:';
$labels['scheduletime'] = 'Najdi razpoložljivost';
$labels['sendinvitations'] = 'Pošlji vabila';
$labels['sendnotifications'] = 'Sporoči udeležencem spremembe';
$labels['sendcancellation'] = 'Sporoči udeležencem odpoved dogodka';
$labels['onlyworkinghours'] = 'Najdi razpoložljivost med mojim delavnikom';
$labels['reqallattendees'] = 'Zahtevano/vsi udeleženci';
$labels['prevslot'] = 'Prejšnje mesto';
$labels['nextslot'] = 'Naslednje mesto';
$labels['suggestedslot'] = 'Predlagano mesto';
$labels['noslotfound'] = 'Ne najdem prostega mesta';
$labels['invitationsubject'] = 'Vabljeni ste v "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nProsim preglejte pripeto iCalendar datoteko z vsemi informacijami o dogodku. Datoteko lahko uvozite v vašo koledar aplikacijo.";
$labels['invitationattendlinks'] = "V kolikor vaš email klient ne podpira iTip zahtevkov lahko uporabite naslednjo povezavo za sprejem ali zavrnitev vabila:\n\$url";
$labels['eventupdatesubject'] = '"$title" je bil posodobljen';
$labels['eventupdatesubjectempty'] = 'Dogodek, ki vas zadeva je bil posodobljen';
$labels['eventupdatemailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nProsim preglejte pripeto iCalendar datoteko s posodobljenimi informacijami o dogodku. Datoteko lahko uvozite v vašo koledar aplikacijo.";
$labels['eventcancelsubject'] = '"$title" je bil preklican';
$labels['eventcancelmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nDogodek je bil preklican s strani \$organizer.\n\nProsim preglejte pripeto iCalendar datoteko s posodobljenimi informacijami o dogodku.";
$labels['itipobjectnotfound'] = 'Dogodek, na katerega se nanaša to sporočilo, ni bil najden v vašem koledarju.';
$labels['itipmailbodyaccepted'] = "\$sender je sprejel vabilo na dogodek:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender je okvirno sprejel vabilo na dogodek:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender ni sprejel vabila na dogodek:\n\n*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodycancel'] = "\$sender je zavrnil vaše sodelovanje pri dogodku:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegated'] = "\$sender je prenesel sodelovanje na dogodku:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender je na vas prenesel sodelovanje na dogodku:\n\n*\$title*\n\nWhen: \$date";
$labels['itipdeclineevent'] = 'Želite zavrniti vabilo na ta dogodek?';
$labels['declinedeleteconfirm'] = 'Ali želite tudi izbrisati zavrnjeni dogodek iz vašega koledarja?';
$labels['itipcomment'] = 'Komentar vabila/obvestila';
$labels['itipcommenttitle'] = 'Komentar bo dodan k vabilu/obvestilu, ki bo poslano sodelujočim';
$labels['notanattendee'] = 'Niste označeni kot sodelujoči na tem sestanku';
$labels['eventcancelled'] = 'Ta dogodek je bil preklican';
$labels['saveincalendar'] = 'shrani v';
$labels['updatemycopy'] = 'Posodobi v mojem koledarju';
$labels['savetocalendar'] = 'Shrani v koledar';
$labels['openpreview'] = 'Preveri Koledar';
$labels['noearlierevents'] = 'Ni predhodnjih dogodkov';
$labels['nolaterevents'] = 'Ni kasnejših dogodkov';
$labels['resource'] = 'Vir';
$labels['addresource'] = 'Označi vir';
$labels['findresources'] = 'Poišči vire';
$labels['resourcedetails'] = 'Podrobnosti';
$labels['resourceavailability'] = 'Razpoložljivost';
$labels['resourceowner'] = 'Lastnik';
$labels['resourceadded'] = 'Vir je bil dodan v vašem dogodku';
$labels['tabsummary'] = 'Pregled';
$labels['tabrecurrence'] = 'Ponovitev';
$labels['tabattendees'] = 'Sodelujoči';
$labels['tabresources'] = 'Viri';
$labels['tabattachments'] = 'Priponke';
$labels['tabsharing'] = 'Deli z ostalimi';
$labels['deleteobjectconfirm'] = 'Ali želite potrditi brisanje tega dogodka?';
$labels['deleteventconfirm'] = 'Ali želite potrditi brisanje tega dogodka?';
$labels['deletecalendarconfirm'] = 'Ali želite izbrisati ta koledar z vsemi dogodki?';
$labels['deletecalendarconfirmrecursive'] = 'Ali želite izbrisati to koledar z vsemi dogodki in pod-koledarji?';
$labels['savingdata'] = 'Shranjujem...';
$labels['errorsaving'] = 'Napaka pri shranjevanju sprememb.';
$labels['operationfailed'] = 'Zahtevana operacija ni uspela.';
$labels['invalideventdates'] = 'Vnos datumov napačen! Prosim preverite vaš vnos.';
$labels['invalidcalendarproperties'] = 'Napačne nastavitve koledarja! Prosim nastavite pravilno ime.';
$labels['searchnoresults'] = 'V izbranih koledarjih ni dogodkov.';
$labels['successremoval'] = 'Dogodek je bil uspešno izbrisan.';
$labels['successrestore'] = 'Dogodek je bil uspešno obnovljen.';
$labels['errornotifying'] = 'Napaka. Pošiljanje obvestil sodelujočim ni bilo uspešno.';
$labels['errorimportingevent'] = 'Napaka pri uvozu dogodka';
$labels['importwarningexists'] = 'Različica tega dogodka že obstaja v vašem koledarju.';
$labels['newerversionexists'] = 'Obstaja novejša verzija tega dogodka!';
$labels['nowritecalendarfound'] = 'Za shranjevanje dogodka ni na voljo nobenega koledarja';
$labels['importedsuccessfully'] = 'Dogodek je bil uspešno dodan v \'$calendar\'';
$labels['updatedsuccessfully'] = 'Dogodek je bil uspešno posodobljen v \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Posodabljanje statusa sodelujočega uspešno';
$labels['itipsendsuccess'] = 'Vabilo sodelujočim poslano';
$labels['itipresponseerror'] = 'Napaka. Pošiljanje odgovora na vabilo ni bilo uspešno';
$labels['itipinvalidrequest'] = 'To vabilo ni več veljavno';
$labels['sentresponseto'] = 'Odgovor je bil uspešno poslan na naslov $mailto';
$labels['localchangeswarning'] = 'Spremembe bodo vidne samo v vašem koledarju in ne bodo poslane organizatorju dogodka';
$labels['importsuccess'] = 'Uspešno uvoženih $nr dogodkov';
$labels['importnone'] = 'Ne najdem dogodkov za uvoz';
$labels['importerror'] = 'Pri uvozu je prišlo do napake';
$labels['aclnorights'] = 'Na tem koledarju nimate administratorskih pravic';
$labels['changeeventconfirm'] = 'Spremeni dogodek';
$labels['removeeventconfirm'] = 'Izbriši dogodek';
$labels['changerecurringeventwarning'] = 'To je ponavljajoč dogodek. Ali želite urediti samo trenutni dogodek, trenutni in vse prihodnje dogodke, vse ponavljajoče dogodke ali shraniti kot nov dogodek?';
$labels['removerecurringeventwarning'] = 'To je ponavljajoč dogodek. Ali želite izbrisati trenutni dogodek, trenutni in vse prihodnje dogodke ali vsa ponavljanja tega dogodka?';
$labels['currentevent'] = 'Trenutni';
$labels['futurevents'] = 'Prihodnji';
$labels['allevents'] = 'Vsi';
$labels['saveasnew'] = 'Shrani kot nov';
$labels['birthdays'] = 'Rojstni dnevi';
$labels['birthdayscalendar'] = 'Koledar rojstnih dnevov';
$labels['displaybirthdayscalendar'] = 'Prikaži koledar rojstnih dnevov';
$labels['birthdayscalendarsources'] = 'Iz teh imenikov';
$labels['birthdayeventtitle'] = 'Rojstni dan osebe $name';
$labels['birthdayage'] = 'Starost $age';
$labels['eventchangelog'] = 'Spremeni Zgodovino';
$labels['eventdiff'] = 'Spremembe iz verzij $rev';
$labels['revision'] = 'Verzija';
$labels['user'] = 'Uporabnik';
$labels['operation'] = 'Dejanje';
$labels['actionappend'] = 'Shranjeno';
$labels['actionmove'] = 'Premaknjeno';
$labels['actiondelete'] = 'Izbrisano';
$labels['compare'] = 'Primerjaj';
$labels['showrevision'] = 'Prikaži to verzijo';
$labels['restore'] = 'Obnovi to verzijo';
$labels['eventnotfound'] = 'Napaka pri nalaganju podatkov o dogodku';
$labels['eventchangelognotavailable'] = 'Sprememba zgodovine za ta dogodek ni na voljo';
$labels['eventdiffnotavailable'] = 'Primerjava za izbrane verzije ni na voljo';
$labels['eventrestoreconfirm'] = 'Ali želite obnoviti verzijo $rev tega dogodka? To bo nadomestilo trenutni dogodek s starejšo verzijo.';
$labels['arialabelminical'] = 'Izbira datuma v koledarju';
$labels['arialabelcalendarview'] = 'Prikaz koledarja';
$labels['arialabelsearchform'] = 'Obrazec za iskanje dogodkov';
$labels['arialabelquicksearchbox'] = 'Vnos iskanja dogodkov';
$labels['arialabelcalsearchform'] = 'Obrazec za iskanje koledarjev';
$labels['calendaractions'] = 'Dejanja koledarja';
$labels['arialabeleventattendees'] = 'Seznam sodelujočih na dogodku';
$labels['arialabeleventresources'] = 'Seznam virov za dogodek';
$labels['arialabelresourcesearchform'] = 'Obrazec za iskanje virov';
$labels['arialabelresourceselection'] = 'Viri na voljo';
?>

9
localization/sv.inc Normal file
View file

@ -0,0 +1,9 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
?>

274
localization/sv_SE.inc Normal file
View file

@ -0,0 +1,274 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Standardvy';
$labels['time_format'] = 'Tidformat';
$labels['timeslots'] = 'Tidsluckor per timme';
$labels['first_day'] = 'Första veckodag';
$labels['first_hour'] = 'Dagen börjar';
$labels['workinghours'] = 'Arbetstid';
$labels['add_category'] = 'Lägg till kategori';
$labels['remove_category'] = 'Ta bort kategori';
$labels['defaultcalendar'] = 'Skapa nya händelser i';
$labels['eventcoloring'] = 'Händelsefärg';
$labels['coloringmode0'] = 'Enligt kalender';
$labels['coloringmode1'] = 'Enligt kategori';
$labels['coloringmode2'] = 'Kalender för översikt, kategori för innehåll';
$labels['coloringmode3'] = 'Kategori för översikt, kalender för innehåll';
$labels['afternothing'] = 'Gör inget';
$labels['aftertrash'] = 'Flytta till papperskorgen';
$labels['afterdelete'] = 'Ta bort meddelandet';
$labels['afterflagdeleted'] = 'Märk som borttaget';
$labels['aftermoveto'] = 'Flytta till ...';
$labels['itipoptions'] = 'Händelseinbjudningar';
$labels['afteraction'] = 'Efter en inbjudan eller uppdatering bearbetats meddelande';
$labels['calendar'] = 'Kalender';
$labels['calendars'] = 'Kalendrar';
$labels['category'] = 'Kategori';
$labels['categories'] = 'Kategorier';
$labels['createcalendar'] = 'Skapa ny kalender';
$labels['editcalendar'] = 'Redigera kalenderegenskaper';
$labels['name'] = 'Namn';
$labels['color'] = 'Färg';
$labels['day'] = 'Dag';
$labels['week'] = 'Vecka';
$labels['month'] = 'Månad';
$labels['agenda'] = 'Agenda';
$labels['new'] = 'Ny';
$labels['new_event'] = 'Ny händelse';
$labels['edit_event'] = 'Redigera händelse';
$labels['edit'] = 'Redigera';
$labels['save'] = 'Spara';
$labels['removelist'] = 'Ta bort från lista';
$labels['cancel'] = 'Avbryt';
$labels['select'] = 'Välj';
$labels['print'] = 'Skriv ut';
$labels['printtitle'] = 'Skriv ut kalendrar';
$labels['title'] = 'Sammanfattning';
$labels['description'] = 'Beskrivning';
$labels['all-day'] = 'heldag';
$labels['export'] = 'Exportera';
$labels['exporttitle'] = 'Exportera till iCalendar';
$labels['exportrange'] = 'Händelser från';
$labels['exportattachments'] = 'Med bilagor';
$labels['customdate'] = 'Anpassat datum';
$labels['location'] = 'Plats';
$labels['url'] = 'URL';
$labels['date'] = 'Datum';
$labels['start'] = 'Start';
$labels['starttime'] = 'Starttid';
$labels['end'] = 'Slut';
$labels['endtime'] = 'Sluttid';
$labels['repeat'] = 'Upprepa';
$labels['selectdate'] = 'Välj datum';
$labels['freebusy'] = 'Visa mig som';
$labels['free'] = 'Ledig';
$labels['busy'] = 'Upptagen';
$labels['outofoffice'] = 'Frånvarande';
$labels['tentative'] = 'Preliminärt';
$labels['mystatus'] = 'Min status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Bekräftad';
$labels['status-cancelled'] = 'Inställd';
$labels['priority'] = 'Prioritet';
$labels['sensitivity'] = 'Integritet';
$labels['public'] = 'publik';
$labels['private'] = 'privat';
$labels['confidential'] = 'konfidentiell';
$labels['links'] = 'Referens';
$labels['alarms'] = 'Påminnelse';
$labels['comment'] = 'Kommentar';
$labels['created'] = 'Skapad';
$labels['changed'] = 'Senast ändrad';
$labels['unknown'] = 'Okänd';
$labels['eventoptions'] = 'Alternativ';
$labels['generated'] = 'genererad vid';
$labels['eventhistory'] = 'Historik';
$labels['removelink'] = 'Ta bort e-postreferens';
$labels['printdescriptions'] = 'Skriv ut beskrivning';
$labels['parentcalendar'] = 'Infoga inuti';
$labels['searchearlierdates'] = '« Sök efter tidigare händelser';
$labels['searchlaterdates'] = 'Sök efter senare händelser »';
$labels['andnmore'] = '$nr fler ...';
$labels['togglerole'] = 'Klicka för att växla roll';
$labels['createfrommail'] = 'Spara som händelse';
$labels['importevents'] = 'Importera händelser';
$labels['importrange'] = 'Händelser från';
$labels['onemonthback'] = '1 månad bakåt';
$labels['nmonthsback'] = '$nr månader bakåt';
$labels['showurl'] = 'Visa kalender-URL';
$labels['showurldescription'] = 'Använd följande adress för åtkomst (endast läsbar) till din kalender från andra applikationer. Du kan kopiera och klistra in adressen in i ett kalenderprogram som stöder iCal-formatet.';
$labels['caldavurldescription'] = 'Kopiera denna adress till ett <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> klientprogram (t.ex. Evolution eller Mozilla Thunderbird) för att helt synkronisera denna specifika kalender med din dator eller mobila enhet.';
$labels['findcalendars'] = 'Hitta kalendrar ...';
$labels['searchterms'] = 'Sökord';
$labels['calsearchresults'] = 'Tillgängliga kalendrar';
$labels['calendarsubscribe'] = 'Lista permanent';
$labels['nocalendarsfound'] = 'Inga kalendrar hittades';
$labels['nrcalendarsfound'] = '$nr kalendrar hittades';
$labels['quickview'] = 'Visa endast denna kalender';
$labels['invitationspending'] = 'Avvaktade inbjudningar';
$labels['invitationsdeclined'] = 'Avböjda inbjudningar';
$labels['changepartstat'] = 'Ändra deltagarstatus';
$labels['rsvpcomment'] = 'Inbjudningstext';
$labels['listrange'] = 'Intervall att visa';
$labels['listsections'] = 'Dela upp i';
$labels['smartsections'] = 'Smarta sektioner';
$labels['until'] = 'tills';
$labels['today'] = 'Idag';
$labels['tomorrow'] = 'Imorgon';
$labels['thisweek'] = 'Denna vecka';
$labels['nextweek'] = 'Nästa vecka';
$labels['prevweek'] = 'Föregående vecka';
$labels['thismonth'] = 'Denna månad';
$labels['nextmonth'] = 'Nästa månad';
$labels['weekofyear'] = 'Vecka';
$labels['pastevents'] = 'Förflutna';
$labels['futureevents'] = 'Framtida';
$labels['showalarms'] = 'Visa påminnelser';
$labels['defaultalarmtype'] = 'Standardinställning för påminnelser';
$labels['defaultalarmoffset'] = 'Standartid för påminnelser';
$labels['attendee'] = 'Deltagare';
$labels['role'] = 'Roll';
$labels['availability'] = 'Tillg.';
$labels['confirmstate'] = 'Status';
$labels['addattendee'] = 'Lägg till deltagare';
$labels['roleorganizer'] = 'Organisatör';
$labels['rolerequired'] = 'Obligatorisk';
$labels['roleoptional'] = 'Valfritt';
$labels['rolechair'] = 'Stol';
$labels['rolenonparticipant'] = 'Frånvarande';
$labels['cutypeindividual'] = 'Individuell';
$labels['cutypegroup'] = 'Grupp';
$labels['cutyperesource'] = 'Resurs';
$labels['cutyperoom'] = 'Rum';
$labels['availfree'] = 'Ledig';
$labels['availbusy'] = 'Upptagen';
$labels['availunknown'] = 'Okänd';
$labels['availtentative'] = 'Preliminärt';
$labels['availoutofoffice'] = 'Frånvarande';
$labels['delegatedto'] = 'Delegerad till:';
$labels['delegatedfrom'] = 'Delegerad från:';
$labels['scheduletime'] = 'Hitta tillgänglighet';
$labels['sendinvitations'] = 'Skicka inbjudningar';
$labels['sendnotifications'] = 'Meddela deltagare om ändringar';
$labels['sendcancellation'] = 'Meddela deltagare om att händelsen ställts in';
$labels['onlyworkinghours'] = 'Sök tillgänglighet inom min arbetstid';
$labels['reqallattendees'] = 'Obligatorisk/alla deltagare';
$labels['prevslot'] = 'Föregående lucka';
$labels['nextslot'] = 'Nästa lucka';
$labels['suggestedslot'] = 'Föreslagen lucka';
$labels['noslotfound'] = 'Det gick inte att hitta en ledig tidslucka';
$labels['invitationsubject'] = 'Du har blivit inbjuden till "$title"';
$labels['invitationmailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHärmed bifogas en iCalendar-fil med alla detaljer om händelsen som du kan importera till din kalenderapplikation.";
$labels['invitationattendlinks'] = "Om din e-postklient inte stöder iTip-förfrågningar kan du använda följande länk för att antingen tacka ja eller eller nej till denna inbjudan:\n\$url";
$labels['eventupdatesubject'] = '"$title" har uppdaterats';
$labels['eventupdatesubjectempty'] = 'En händelse som berör dig har uppdaterats';
$labels['eventupdatemailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHärmed bifogas en iCalendar-fil med uppdaterad information som du kan importera till din kalenderapplikation.";
$labels['eventcancelsubject'] = '"$title" har ställts in';
$labels['eventcancelmailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHändelsen har ställts in av \$organizer.\n\nHärmed bifogas en iCalendar-fil med uppdaterad information om händelsen.";
$labels['itipobjectnotfound'] = 'Den händelse som avses i detta meddelande hittades inte i din kalender.';
$labels['itipmailbodyaccepted'] = "\$sender har accepterat inbjudan till följande händelse:\n\n*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees";
$labels['itipmailbodytentative'] = "\$sender har preliminärt accepterat inbjudan till följande evenemang:\n\n*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender har tackat nej till inbjudan till följande händelse:\n\n*\$title*\n\nNär: \$date\n\nIbjudna: \$attendees";
$labels['itipmailbodycancel'] = "\$sender har avvisat ditt deltagande i följande händelse:\n\n*\$title*\n\nNär: \$dat";
$labels['itipmailbodydelegated'] = "\$sender har delegerat deltagandet i följande händelse:\n\n*\$title*\n\nNär: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender har delegerat deltagandet i följande händelse till dig:\n\n*\$title*\n\nNär: \$date";
$labels['itipdeclineevent'] = 'Vill du tacka nej till inbjudan till denna händelse?';
$labels['declinedeleteconfirm'] = 'Vill du även ta bort denna händelse, som du tackat nej till, från din kalender?';
$labels['itipcomment'] = 'Kommentar till inbjudan/meddelande';
$labels['itipcommenttitle'] = 'Denna kommentar kommer att bifogas i inbjudan/meddelandet som skickas till deltagarna';
$labels['notanattendee'] = 'Du är inte listad som en deltagare i denna händelse';
$labels['eventcancelled'] = 'Händelsen har ställts in';
$labels['saveincalendar'] = 'Spara i';
$labels['updatemycopy'] = 'Uppdatera i min kalender';
$labels['savetocalendar'] = 'Spara till kalender';
$labels['openpreview'] = 'Kontrollera kalender';
$labels['noearlierevents'] = 'Inga tidigare händelser';
$labels['nolaterevents'] = 'Inga senare händelser';
$labels['resource'] = 'Resurs';
$labels['addresource'] = 'Boka resurs';
$labels['findresources'] = 'Hitta resurser';
$labels['resourcedetails'] = 'Detaljer';
$labels['resourceavailability'] = 'Tillgänglighet';
$labels['resourceowner'] = 'Ägare';
$labels['resourceadded'] = 'Resursen har kopplats till din händelser ';
$labels['tabsummary'] = 'Sammanfattning';
$labels['tabrecurrence'] = 'Återkommande';
$labels['tabattendees'] = 'Deltagare';
$labels['tabresources'] = 'Resurser';
$labels['tabattachments'] = 'Bilagor';
$labels['tabsharing'] = 'Delning';
$labels['deleteobjectconfirm'] = 'Vill du verkligen ta bort denna händelse';
$labels['deleteventconfirm'] = 'Vill du verkligen ta bort denna händelse';
$labels['deletecalendarconfirm'] = 'Vill du verkligen ta bort denna kalender med alla dess händelser?';
$labels['deletecalendarconfirmrecursive'] = 'Vill du verkligen ta bort denna kalender med alla händelser och delkalendrar?';
$labels['savingdata'] = 'Sparar data ...';
$labels['errorsaving'] = 'Misslyckades att spara ändringar.';
$labels['operationfailed'] = 'Den begärda åtgärden misslyckades.';
$labels['invalideventdates'] = 'Ogiltiga datum angivna! Kontrollera din inmatning.';
$labels['invalidcalendarproperties'] = 'Ogiltiga kalenderegenskaper! Var god ange ett giltigt namn.';
$labels['searchnoresults'] = 'Inga händelser hittades i de valda kalendrarna.';
$labels['successremoval'] = 'Händelsen har tagits bort.';
$labels['successrestore'] = 'Händelsen har återställts.';
$labels['errornotifying'] = 'Det gick inte att skicka meddelande till händelsens deltagare';
$labels['errorimportingevent'] = 'Det gick inte att importera händelsen';
$labels['importwarningexists'] = 'En kopia av denna händelse finns redan i din kalender.';
$labels['newerversionexists'] = 'En nyare version av denna händelse finns redan! Åtgärd avbruten.';
$labels['nowritecalendarfound'] = 'Ingen kalender hittades att spara händelsen i';
$labels['importedsuccessfully'] = 'Händelsen har lagts till i \'$calendar\'';
$labels['updatedsuccessfully'] = 'Händelsen uppdaterades i \'$calendar\'';
$labels['attendeupdateesuccess'] = 'Uppdaterade deltagarens status';
$labels['itipsendsuccess'] = 'Inbjudan har skickats till deltagare.';
$labels['itipresponseerror'] = 'Det gick inte att skicka ett svar på inbjudan till denna händelse';
$labels['itipinvalidrequest'] = 'Denna inbjudan är inte längre giltig';
$labels['sentresponseto'] = 'Skickade svar på inbjudan till $mailto';
$labels['localchangeswarning'] = 'Du är på väg att göra ändringar som endast kommer att återspeglas i din kalender och inte skickas till organisatören av händelsen.';
$labels['importsuccess'] = 'Importerade $nr händelser';
$labels['importnone'] = 'Hittade inga händelser att importera';
$labels['importerror'] = 'Ett fel uppstod vid import';
$labels['aclnorights'] = 'Du har inga administratörsrättigheter i denna kalender.';
$labels['changeeventconfirm'] = 'Ändra händelse';
$labels['removeeventconfirm'] = 'Ta bort händelse';
$labels['changerecurringeventwarning'] = 'Detta är en återkommande händelse. Vill du redigera endast den aktuella händelsen, denna och alla framtida händelser, alla händelser eller spara den som en ny händelse?';
$labels['removerecurringeventwarning'] = 'etta är en återkommande händelse. Vill du ta bort endast den aktuella händelsen, denna och alla framtida händelser eller alla förekomster av denna händelse';
$labels['currentevent'] = 'Nuvarande';
$labels['futurevents'] = 'Framtida';
$labels['allevents'] = 'Alla';
$labels['saveasnew'] = 'Spara som ny';
$labels['birthdays'] = 'Födelsedagar';
$labels['birthdayscalendar'] = 'Födelsedagskalender';
$labels['displaybirthdayscalendar'] = 'Visa födelsedagskalender';
$labels['birthdayscalendarsources'] = 'Från dessa adressböcker';
$labels['birthdayeventtitle'] = '$name\s födelsedag';
$labels['birthdayage'] = '$age år';
$labels['eventchangelog'] = 'Ändringshistorik';
$labels['eventdiff'] = 'Ändringar från revisioner $rev';
$labels['revision'] = 'Revision';
$labels['user'] = 'Användare';
$labels['operation'] = 'Åtgärd';
$labels['actionappend'] = 'Sparad';
$labels['actionmove'] = 'Flyttad';
$labels['actiondelete'] = 'Borttagen';
$labels['compare'] = 'Jämför';
$labels['showrevision'] = 'Visa denna version';
$labels['restore'] = 'Återställ denna verson';
$labels['eventnotfound'] = 'Det gick inte att läsa in data för händelsen';
$labels['eventchangelognotavailable'] = 'Ändringshistorik är inte tillgänglig för denna händelse';
$labels['eventdiffnotavailable'] = 'Ingen jämförelse möjlig för valda revisioner';
$labels['eventrestoreconfirm'] = 'Vill du verkligen återställa revision $rev för denna händelse? Det kommer att ersätta den aktuella händelsen med den gamla versionen.';
$labels['arialabelminical'] = 'Kalender datumurval';
$labels['arialabelcalendarview'] = 'Kalender vy';
$labels['arialabelsearchform'] = 'Händelse sökformulär';
$labels['arialabelquicksearchbox'] = 'Händelse sökinmatning';
$labels['arialabelcalsearchform'] = 'Kalender sökformulär';
$labels['calendaractions'] = 'Kalender åtgärder';
$labels['arialabeleventattendees'] = 'Händelse deltagarlista';
$labels['arialabeleventresources'] = 'Händelse resurslista';
$labels['arialabelresourcesearchform'] = 'Resurser sökformulär';
$labels['arialabelresourceselection'] = 'Tillgängliga resurser';
?>

258
localization/th.inc Normal file
View file

@ -0,0 +1,258 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'มุมมองเริ่มต้น';
$labels['time_format'] = 'รูปแบบของการแสดงเวลา';
$labels['timeslots'] = 'จำนวนช่องเวลาต่อชั่วโมง';
$labels['first_day'] = 'วันแรกของสัปดาห์';
$labels['first_hour'] = 'ชั่วโมงแรกที่เริ่มแสดงผล';
$labels['workinghours'] = 'ชั่วโมงทำงาน';
$labels['add_category'] = 'เพิ่มหมวดหมู่';
$labels['remove_category'] = 'ลบหมวดหมู่';
$labels['defaultcalendar'] = 'เพิ่มนัดหมายใหม่ใน';
$labels['eventcoloring'] = 'การให้สีเหตุการณ์ต่างๆ';
$labels['coloringmode0'] = 'ตามปฎิทิน';
$labels['coloringmode1'] = 'ตามหมวดหมู่';
$labels['afternothing'] = 'ไม่ต้องทำอะไร';
$labels['aftertrash'] = 'ย้ายลงถังขยะ';
$labels['afterdelete'] = 'ลบข้อความ';
$labels['afterflagdeleted'] = 'ติดธงว่าลบแล้ว';
$labels['aftermoveto'] = 'ย้ายไปยัง...';
$labels['itipoptions'] = 'เชิญเข้าร่วมนัดหมาย';
$labels['afteraction'] = 'ภายหลังการประมวลผลข้อความ คำเชิญ หรือ ปรับปรุงสถานภาพ';
$labels['calendar'] = 'ปฎิทิน';
$labels['calendars'] = 'ปฎิทิน';
$labels['category'] = 'หมวดหมู่';
$labels['categories'] = 'หมวดหมู่';
$labels['createcalendar'] = 'สร้างปฎิทินฉบับใหม่';
$labels['editcalendar'] = 'แก้ไขคุณสมบัติของปฎิทิน';
$labels['name'] = 'ชื่อ';
$labels['color'] = 'สี';
$labels['day'] = 'วัน';
$labels['week'] = 'สัปดาห์';
$labels['month'] = 'เดือน';
$labels['new'] = 'เพิ่ม';
$labels['new_event'] = 'เพิ่มนัดหมาย';
$labels['edit_event'] = 'แก้ไขนัดหมาย';
$labels['edit'] = 'แก้ไข';
$labels['save'] = 'บันทึก';
$labels['removelist'] = 'นำออกจากรายการ';
$labels['cancel'] = 'ยกเลิก';
$labels['select'] = 'เลือก';
$labels['print'] = 'พิมพ์';
$labels['printtitle'] = 'พิมพ์ปฎิทิน';
$labels['title'] = 'สรุป';
$labels['description'] = 'คำอธิบาย';
$labels['all-day'] = 'ทั้งวัน';
$labels['export'] = 'ส่งออก';
$labels['exporttitle'] = 'ส่งออกไปยัง iCalendar';
$labels['exportrange'] = 'เหตุการณ์จาก';
$labels['exportattachments'] = 'พร้อมสิ่งที่แนบมาด้วย';
$labels['location'] = 'สถานที่';
$labels['date'] = 'วันที่';
$labels['start'] = 'เริ่ม';
$labels['starttime'] = 'เวลาเริ่ม';
$labels['end'] = 'จบ';
$labels['endtime'] = 'กำหนดเสร็จ';
$labels['repeat'] = 'เกิดซ้ำ';
$labels['selectdate'] = 'เลือกวันที่';
$labels['free'] = 'ว่าง';
$labels['busy'] = 'ติดธุระ';
$labels['outofoffice'] = 'อยู่นอกออฟฟิศ';
$labels['tentative'] = 'แนวโน้ม';
$labels['mystatus'] = 'สถานะของฉัน';
$labels['status'] = 'สถานะ';
$labels['status-confirmed'] = 'ยืนยัน';
$labels['status-cancelled'] = 'ยกเลิก';
$labels['priority'] = 'ความสำคัญ';
$labels['sensitivity'] = 'ความเป็นส่วนตัว';
$labels['public'] = 'สาธารณะ';
$labels['private'] = 'ส่วนตัว';
$labels['confidential'] = 'ลับเฉพาะ';
$labels['links'] = 'อ้างอิง';
$labels['alarms'] = 'คำแจ้งเตือน';
$labels['comment'] = 'ความคิดเห็น';
$labels['created'] = 'สร้างเมื่อ';
$labels['changed'] = 'แก้ไขครั้งสุดท้ายเมื่อ';
$labels['unknown'] = 'ไม่ทราบ';
$labels['eventoptions'] = 'ทางเลือก';
$labels['eventhistory'] = 'ประวัติ';
$labels['printdescriptions'] = 'พิมพ์คำอธิบาย';
$labels['parentcalendar'] = 'เพิ่มเข้าภายใต้';
$labels['searchearlierdates'] = '« ค้นหากำหนดการณ์ที่เกิดชึ้นก่อนหน้า';
$labels['searchlaterdates'] = 'ค้นหากำหนดการณ์ที่เกิดขึ้นหลังจาก »';
$labels['andnmore'] = 'มีอีก $nr';
$labels['togglerole'] = 'กดเพื่อเปลี่ยนสลับบทบาท';
$labels['createfrommail'] = 'บันทึกเป็นเหตุการณ์';
$labels['importevents'] = 'นำเข้าเหตุการณ์';
$labels['importrange'] = 'เหตุการณ์จาก';
$labels['onemonthback'] = 'ย้อนหลัง 1 เดือน';
$labels['nmonthsback'] = 'ย้อนหลัง $nr เดือน';
$labels['showurl'] = 'แสดงลิงค์ปฎิทิน';
$labels['showurldescription'] = 'ใช้ลิงค์ที่อยู่ต่อไปนี้เพื่อเข้าถึง (อ่านเท่านั้น) ปฎิทินของคุณจากโปรแกรมอื่น คุณสามารถคัดลอกและนำไปวางไว้ในซอฟท์แวร์ปฎิทินที่รับรองรูปแบบ iCal';
$labels['caldavurldescription'] = 'คัดลอกลิงค์ที่อยู่นี้ไปยัง <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> โปรแกรมในเครื่องลูกข่าย (เช่น Evolution หรือ Mozilla Thunderbird) เพื่อซิงค์ข้อมูลปฎิทินฉบับนี้กับคอมพิวเตอร์หรืออุปกรณ์มือถือของคุณ';
$labels['findcalendars'] = 'ค้นหาปฎิทิน...';
$labels['searchterms'] = 'ข้อความที่ต้องการค้นหา';
$labels['calsearchresults'] = 'ปฎิทินที่มีให้เลือก';
$labels['calendarsubscribe'] = 'แสดงเป็นรายการถาวร';
$labels['nocalendarsfound'] = 'ไม่พบปฎิทิน';
$labels['nrcalendarsfound'] = 'พบปฎิทิน $nr ฉบับ';
$labels['quickview'] = 'ดูเฉพาะปฎิทินฉบับนี้';
$labels['invitationspending'] = 'จดหมายเชิญที่ยังค้างอยู่';
$labels['invitationsdeclined'] = 'ปฎิเสธคำเชิญ';
$labels['changepartstat'] = 'เปลี่ยนสถานะของผู้เข้าร่วม';
$labels['rsvpcomment'] = 'คำเชิญ';
$labels['listrange'] = 'ขอบเขตุที่แสดง';
$labels['listsections'] = 'แบ่งเป็น:';
$labels['until'] = 'จนถึง';
$labels['today'] = 'วันนี้';
$labels['tomorrow'] = 'พรุ่งนี้';
$labels['thisweek'] = 'สัปดาห์นี้';
$labels['nextweek'] = 'สัปดาห์หน้า';
$labels['prevweek'] = 'สัปดาห์ที่แล้ว';
$labels['thismonth'] = 'เดือนนี้';
$labels['nextmonth'] = 'เดือนหน้า';
$labels['weekofyear'] = 'สัปดาห์';
$labels['pastevents'] = 'อดีต';
$labels['futureevents'] = 'อนาคต';
$labels['showalarms'] = 'แสดงข้อความเตือน';
$labels['defaultalarmtype'] = 'ค่าการแจ้งเตือนเริ่มต้น';
$labels['attendee'] = 'ผู้เข้าร่วม';
$labels['role'] = 'บทบาท';
$labels['confirmstate'] = 'สถานะ';
$labels['addattendee'] = 'เพิ่มผู้เข้าร่วม';
$labels['roleorganizer'] = 'ผู้จัดงาน';
$labels['rolerequired'] = 'บังคับ';
$labels['roleoptional'] = 'เลือกได้';
$labels['rolenonparticipant'] = 'ขาด';
$labels['cutypeindividual'] = 'บุคคล';
$labels['cutypegroup'] = 'กลุ่ม';
$labels['cutyperesource'] = 'ทรัพยากร';
$labels['cutyperoom'] = 'ห้อง';
$labels['availfree'] = 'ว่าง';
$labels['availbusy'] = 'ติดธุระ';
$labels['availunknown'] = 'ไม่ทราบ';
$labels['availtentative'] = 'แนวโน้ม';
$labels['availoutofoffice'] = 'ไม่อยู่ออฟฟิศ';
$labels['delegatedto'] = 'มอบหมายให้';
$labels['delegatedfrom'] = 'รับมอบจาก';
$labels['scheduletime'] = 'ค้นหาส่วนที่ว่าง';
$labels['sendinvitations'] = 'ส่งคำเชิญ';
$labels['sendnotifications'] = 'แจ้งเตือนผู้เข้าร่วมสำหรับการแก้ไข';
$labels['sendcancellation'] = 'แจ้งเตือนผู้เข้าร่วมเกี่ยวกับการยกเลิก';
$labels['onlyworkinghours'] = 'ค้นหาเวลาว่างในช่วงชั่วโมงการทำงานของฉัน';
$labels['reqallattendees'] = 'บังคับ/ผู้เข้าร่วมทุกคน';
$labels['prevslot'] = 'ช่องว่างก่อนหน้านี้';
$labels['nextslot'] = 'ช่องว่า่งถัดจากนี้';
$labels['suggestedslot'] = 'แนะนำช่องว่าง';
$labels['noslotfound'] = 'ไม่สามารถหาช่วงเวลาที่ว่าง';
$labels['invitationsubject'] = 'คุณได้รับเชิญไปยัง "$title"';
$labels['invitationattendlinks'] = "ในกรณีที่โปรแกรมอีเมล์ของคุณไม่รองรับ 'การร้องขอ iTip' คุณสามารถใช้ลิงค์ต่อไปนี้ในการตอบรับหรือปฎิเสธจดหมายเชิญฉบับนี้ :\n\$url";
$labels['eventupdatesubject'] = '"$title" ได้รับการปรับปรุงสถานะ';
$labels['eventupdatesubjectempty'] = 'เหตุการณ์ที่คุณเป็นห่วงได้ถูกปรับปรุงสถานะแล้ว';
$labels['eventcancelsubject'] = '"$title" ถูกยกเลิก';
$labels['eventcancelmailbody'] = "*\$title*\n\nเมื่อ: \$date\n\nInvitees: \$attendees\n\n เหตุการณ์ได้ถูกยกเลิกโดย \$organizer.\n\n ไฟล์ iCalendar ที่แนบมาด้วย ได้รับการปรับปรุงรายละเอียดเรียบร้อยแล้ว";
$labels['itipobjectnotfound'] = 'เหตุการณ์ที่อ้างถึงโดยข้อความนี้ไม่ถูกตรวจพบในปฎิทินของคุณ';
$labels['itipmailbodyaccepted'] = "\$sender ได้ตอบรับคำเชิญสำหรับเหตุการณ์ต่อไปนี้:\n\n*\$title*\n\nเมื่อ: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodytentative'] = "\$sender มีแนวโน้มที่จะตอบรับคำเชิญสำหรับเหตุการณ์ต่อไปนี้:\n\n*\$title*\n\nเมื่อ: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodydeclined'] = "\$sender ได้ปฎิเสธคำเชิญสำหรับเหตุการณ์ต่อไปนี้ :\n\n*\$title*\n\nเมื่อ: \$date\n\nInvitees: \$attendees";
$labels['itipmailbodycancel'] = "\$sender ปฎิเสธการเข้าร่วมของคุณในเหตุการณ์ต่อไปนี้:\n\n*\$title*\n\nเมื่อ: \$date";
$labels['itipmailbodydelegated'] = "\$sender ได้มอบหมายการเข้าร่วมเหตุการณ์ต่อไปนี้:\n\n*\$title*\n\nเมื่อ: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender ได้มอบหมายให้คุณเข้าร่วมเหตุการณ์ต่อไปนี้:\n\n*\$title*\n\nเมื่อ: \$date";
$labels['itipdeclineevent'] = 'คุณต้องการปฎิเสธคำเชิญสำหรับเหตุการณ์นี้หรือไม่';
$labels['declinedeleteconfirm'] = 'คุณต้องการลบเหตุการณ์ที่ปฎิเสธนี้ออกจากปฎิทินของคุณหรือไม่';
$labels['itipcomment'] = 'ความคิดเห็น คำเชิญ/คำแจ้งเตือน';
$labels['itipcommenttitle'] = 'ความคิดเห็นนี้จะถูกแนบไปพร้อมกับข้อความ คำเชิญ/คำแจ้งเตือน ไปยังผู้เข้าร่วม';
$labels['notanattendee'] = 'คุณไม่อยู่ในรายชื่อผุ้เข้าร่วมสำหรับเหตุการณ์นี้';
$labels['eventcancelled'] = 'เหตุการณ์ได้ถูกยกเลิก';
$labels['saveincalendar'] = 'บันทึกใน';
$labels['updatemycopy'] = 'ปรับปรุงปฎิทินของฉัน';
$labels['savetocalendar'] = 'บันทึกไปยังปฎิทินของฉัน';
$labels['openpreview'] = 'ตรวจสอบปฎิทิน';
$labels['noearlierevents'] = 'ไม่มีเหตุการณ์ก่อนหน้า';
$labels['nolaterevents'] = 'ไม่มีเหตุการณ์หลังจากนั้น';
$labels['resource'] = 'ทรัพยากร';
$labels['addresource'] = 'จองทรัพยากร';
$labels['findresources'] = 'ค้นหาทรัพยากร';
$labels['resourcedetails'] = 'รายละเอียด';
$labels['resourceavailability'] = 'ยังว่างอยู่';
$labels['resourceowner'] = 'เจ้าของ';
$labels['resourceadded'] = 'ทรัพยากรได้ถูกเพิ่มไปยังเหตุการณ์ของคุณ';
$labels['tabsummary'] = 'สรุป';
$labels['tabrecurrence'] = 'การเกิดซ้ำ';
$labels['tabattendees'] = 'ผู้เข้าร่วม';
$labels['tabresources'] = 'ทรัพยากร';
$labels['tabattachments'] = 'สิ่งที่แนบมาด้วย';
$labels['tabsharing'] = 'แบ่งปัน';
$labels['deleteobjectconfirm'] = 'คุณต้องการลบเหตุการณ์นี้หรือไม่';
$labels['deleteventconfirm'] = 'คุณต้องการลบเหตุการณ์นี้หรือไม่';
$labels['deletecalendarconfirm'] = 'คุณต้องการลบปฎิทินฉบับนี้พร้อมกับเหตุการณ์ทั้งหมดหรือไม่';
$labels['deletecalendarconfirmrecursive'] = 'คุณต้องการลบปฎิทินฉบับนี้พร้อมเหตุการณ์และปฎิทินย่อยทั้งหมดหรือไม่';
$labels['savingdata'] = 'บันทึกข้อมูล';
$labels['errorsaving'] = 'การบันทึกการเปลี่ยนแปลงล้มเหลว';
$labels['operationfailed'] = 'การทำตามคำร้องล้มเหลว';
$labels['invalideventdates'] = 'วันที่ที่ป้อนเข้ามาไม่ถูกต้อง โปรดตรวจสอบการป้อนข้อมูลของท่าน';
$labels['invalidcalendarproperties'] = 'การตั้งค่าคุณสมบัติปฎิทินไม่ถูกต้อง โปรดตั้งชื่อให้ถูกต้อง';
$labels['searchnoresults'] = 'ไม่พบเหตุการณ์ในปฎิทินฉบับที่เลือก';
$labels['successremoval'] = 'เหตุการณ์ได้ถูกลบเรียบร้อยแล้ว';
$labels['successrestore'] = 'การกู้เหตุการณ์เรียบร้อยแล้ว';
$labels['errornotifying'] = 'เกิดข้อผิดพลาดในการส่งข้อความเตือนไปยังผู้เข้าร่วมเหตุการณ์';
$labels['errorimportingevent'] = 'การนำเข้าเหตุการณ์เกิดข้อผิดพลาด';
$labels['importwarningexists'] = 'มีเหตุการณ์นี้อยู่ในปฎิทินของคุณอยู่แล้ว';
$labels['newerversionexists'] = 'มีเหตุการณ์ที่มีรุ่นควบคุมที่ใหม่กว่าอยู่แล้ว ยกเลิกการนำเข้า';
$labels['nowritecalendarfound'] = 'ไม่พบปฎิทินที่จะบันทึกเหตุการณ์นี้';
$labels['importedsuccessfully'] = 'เหตุการณ์ได้ถูกเพิ่มไปยัง \'$calendar\' เรียบร้อยแล้ว';
$labels['updatedsuccessfully'] = 'เหตุการณ์ได้ถูกปรับปรุงไปยัง \'$calendar\' เรียบร้อยแล้ว';
$labels['attendeupdateesuccess'] = 'การปรับปรุงสถานะของผู้เข้าร่วมเรียบร้อยแล้ว';
$labels['itipsendsuccess'] = 'คำเชิญถูกส่งไปยังผู้เข้าร่วมแล้ว';
$labels['itipresponseerror'] = 'การส่งคำตอบรับสำหรับคำเชิญเหตุการณ์นี้ล้มเหลว';
$labels['itipinvalidrequest'] = 'คำเชิญนี้ไม่มีผลแล้ว';
$labels['sentresponseto'] = 'การส่งคำตอบรับสำหรับคำเชิญไปยัง $mailto เรียบร้อยแล้ว';
$labels['localchangeswarning'] = 'คุณกำลังปรับเปลี่ยนรายละเอียดซึ่งมีผลกับปฎิทินของคุณเท่านั้น และ การปรับเปลี่ยนจะไม่ถูกส่งไปยังผู้จัดของเหตุการณ์นี้';
$labels['importsuccess'] = 'นำเข้า $nr เหตุการณ์เรียบร้อยแล้ว';
$labels['importnone'] = 'ไม่พบเหตุการณ์ที่จะนำเข้า';
$labels['importerror'] = 'พบข้อผิดพลาดในระหว่างนำเข้า';
$labels['aclnorights'] = 'คุณไม่มีสิทธิของผู้ดูแลระบบของปฎิทินฉบับนี้';
$labels['changeeventconfirm'] = 'เปลี่ยนเหตุการณ์';
$labels['removeeventconfirm'] = 'ลบเหตุการณ์';
$labels['changerecurringeventwarning'] = 'เหตุการณ์นี้เป็นเหตุการณ์ที่เกิดซ้ำ คุณต้องการแก้ไขเฉพาะเหตุการณ์ปัจจุบันเท่านั้น เหตุการณ์ปัจจุบันรวมทั้งในอนาคต หรือ เหตุการณ์ทั้งหมด หรือ บันทึกเป็นเหตุการณ์ใหม่';
$labels['removerecurringeventwarning'] = 'เหตุการณ์นี้เป็นเหตุการณ์ที่เกิดซ้ำ คุณต้องการลบเฉพาะเหตุการณ์ปัจจุบันเท่านั้น เหตุการณ์ปัจจุบันรวมทั้งในอนาคต หรือ เหตุการณ์ทั้งหมด';
$labels['removerecurringallonly'] = 'เหตุการณ์นี้เป็นเหตุการณ์ที่เกิดซ้ำ ในฐานะผู้เข้าร่วม คุณสามารถทำการลบได้เฉพาะแบบเหตุการณ์ทั้งหมด พร้อม กำหนดการที่จะเกิดขึ้นทั้งหมดเท่านั้น';
$labels['currentevent'] = 'ปัจจุบัน';
$labels['futurevents'] = 'อนาคต';
$labels['allevents'] = 'ทั้งหมด';
$labels['saveasnew'] = 'บันทึกเป็นเหตุการณ์ใหม่';
$labels['birthdays'] = 'วันเกิด';
$labels['birthdayscalendar'] = 'ปฎิทินวันเกิด';
$labels['displaybirthdayscalendar'] = 'แสดงปฎิทินวันเกิด';
$labels['birthdayscalendarsources'] = 'จากสมุดที่อยู่เหล่านี้';
$labels['birthdayeventtitle'] = 'วันเกิดของ $name';
$labels['birthdayage'] = 'อายุ $age ปี';
$labels['eventchangelog'] = 'ประวัติการปรับเปลี่ยน';
$labels['eventdiff'] = 'สิ่งที่เปลี่ยนจาก รุ่นการปรับปรุง $rev';
$labels['revision'] = 'รุ่นการปรับปรุง';
$labels['user'] = 'ผู้ใช้';
$labels['operation'] = 'การกระทำ';
$labels['actionappend'] = 'บันทึกเรียบร้อย';
$labels['actionmove'] = 'ย้ายเรียบร้อย';
$labels['actiondelete'] = 'ลบเรียบร้อย';
$labels['compare'] = 'เปรียบเทียบ';
$labels['showrevision'] = 'แสดงรุ่นการปรับปรุงนี้';
$labels['restore'] = 'ย้อนกลับไปยังรุ่นการปรับปรุงนี้';
$labels['eventnotfound'] = 'การโหลดข้อมูลของเหตุการณ์ล้มเหลว';
$labels['eventchangelognotavailable'] = 'ไม่มีประวัติการปรับเปลี่ยนสำหรับเหตุการณ์นี้';
$labels['eventdiffnotavailable'] = 'ไม่สามารถเปรียบเทียบรุ่นการปรับปรุงที่เลือกได้';
$labels['eventrestoreconfirm'] = 'คุณต้องการกู้คืนรุ่นการปรับปรุง $rev ของเหตุการณ์นี้หรือ นี่จะเป็นการเขียนทับข้อมูลปัจจุบันด้วยข้อมูลที่เก่ากว่า';
$labels['arialabelcalendarview'] = 'มุมมองปฎิทิน';
$labels['arialabelquicksearchbox'] = 'ป้อนข้อมูลเพื่อค้นหาเหตุการณ์';
$labels['arialabelcalsearchform'] = 'ฟอร์มค้นหาปฎิทิน';
$labels['arialabeleventattendees'] = 'รายชื่อผู้เข้าร่วมเหตุการณ์';
$labels['arialabeleventresources'] = 'รายการทรัพยากรที่ใช้ในเหตุการณ์';
$labels['arialabelresourcesearchform'] = 'ฟอร์มค้นหาทรัพยากร';
$labels['arialabelresourceselection'] = 'ทรัพยากรที่ยังว่าง';
?>

9
localization/tr_TR.inc Normal file
View file

@ -0,0 +1,9 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
?>

229
localization/uk.inc Normal file
View file

@ -0,0 +1,229 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = 'Початковий вигляд';
$labels['time_format'] = 'Формат часу';
$labels['timeslots'] = 'Проміжків на годину';
$labels['first_day'] = 'Перший день тижня';
$labels['first_hour'] = 'Показувати починаючи з';
$labels['workinghours'] = 'Робочі години';
$labels['add_category'] = 'Додати категорію';
$labels['remove_category'] = 'Вилучити категорію';
$labels['defaultcalendar'] = 'Створити нову подію в';
$labels['eventcoloring'] = 'Колір події';
$labels['coloringmode0'] = 'Згідно кольору календаря';
$labels['coloringmode1'] = 'Згідно кольору категорії';
$labels['coloringmode2'] = 'Колір календаря для рамки, колір категорії для фону';
$labels['coloringmode3'] = 'Колір категорії для рамки, колір календаря для фону';
$labels['afternothing'] = 'Нічого не робити';
$labels['aftertrash'] = 'Перемістити до смітника';
$labels['afterdelete'] = 'Вилучити повідомлення';
$labels['afterflagdeleted'] = 'Відмітити як видалене';
$labels['aftermoveto'] = 'Перемістити в ...';
$labels['itipoptions'] = 'Запрошення на події';
$labels['afteraction'] = 'Після того, як запрошення або повідомлення про його зміну оброблено';
$labels['calendar'] = 'Календар';
$labels['calendars'] = 'Календарі';
$labels['category'] = 'Категорія';
$labels['categories'] = 'Категорії';
$labels['createcalendar'] = 'Створити новий календар';
$labels['editcalendar'] = 'Змінити властивості календаря';
$labels['name'] = 'Назва';
$labels['color'] = 'Колір';
$labels['day'] = 'День';
$labels['week'] = 'Тиждень';
$labels['month'] = 'Місяць';
$labels['agenda'] = 'Розпорядок дня';
$labels['new'] = 'Новий';
$labels['new_event'] = 'Нова подія';
$labels['edit_event'] = 'Редагувати подію';
$labels['edit'] = 'Редагувати';
$labels['save'] = 'Зберегти';
$labels['removelist'] = 'Вилучити зі списку';
$labels['cancel'] = 'Відмінити';
$labels['select'] = 'Вибрати';
$labels['print'] = 'Друк';
$labels['printtitle'] = 'Друкувати календар';
$labels['title'] = 'Резюме';
$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['starttime'] = 'Час початку';
$labels['end'] = 'Закінчення';
$labels['endtime'] = 'Час закінчення';
$labels['repeat'] = 'Повторити';
$labels['selectdate'] = 'Виберіть дату';
$labels['freebusy'] = 'Показати як';
$labels['free'] = 'Вільний';
$labels['busy'] = 'Зайнятий';
$labels['outofoffice'] = 'Поза офісом';
$labels['tentative'] = 'Невизначений';
$labels['mystatus'] = 'Мій статус';
$labels['status'] = 'Статус';
$labels['status-confirmed'] = 'Підтверджений';
$labels['status-cancelled'] = 'Відмінений';
$labels['priority'] = 'Пріоритет';
$labels['sensitivity'] = 'Конфіденційність';
$labels['public'] = 'публічна';
$labels['private'] = 'приватна';
$labels['confidential'] = 'конфіденційна';
$labels['alarms'] = 'Нагадування';
$labels['comment'] = 'Коментарій';
$labels['created'] = 'Створена';
$labels['changed'] = 'Змінена';
$labels['unknown'] = 'Невідомо';
$labels['eventoptions'] = 'Опції';
$labels['generated'] = 'створений';
$labels['eventhistory'] = 'Історія';
$labels['printdescriptions'] = 'Друк опису';
$labels['parentcalendar'] = 'Вставити всередину';
$labels['searchearlierdates'] = '« Шукати події раніше';
$labels['searchlaterdates'] = 'Шукати події пізніше »';
$labels['andnmore'] = '$nr більше...';
$labels['togglerole'] = 'Клікніть для перемикання ролі';
$labels['createfrommail'] = 'Зберегти як подію';
$labels['importevents'] = 'Імпортувати подію';
$labels['importrange'] = 'Події починаючи з';
$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) для повної синхронізації даного календаря зі своїм комп\'ютером або мобільним пристроєм.';
$labels['findcalendars'] = 'Знайти календарі...';
$labels['searchterms'] = 'Умови пошуку';
$labels['calsearchresults'] = 'Доступні календарі';
$labels['calendarsubscribe'] = 'Завжди показувати';
$labels['nocalendarsfound'] = 'Не знайдено календарів';
$labels['nrcalendarsfound'] = '$nr календарів знайдено';
$labels['quickview'] = 'Подивитися тільки цей календар';
$labels['invitationspending'] = 'Очікуючі запрошення';
$labels['invitationsdeclined'] = 'Відхилені запрошення';
$labels['changepartstat'] = 'Змінити статус учасника';
$labels['rsvpcomment'] = 'Текст запрошення';
$labels['listrange'] = 'Діапазон:';
$labels['listsections'] = 'Розділити на:';
$labels['smartsections'] = 'Розумні секції';
$labels['until'] = 'до';
$labels['today'] = 'Сьогодні';
$labels['tomorrow'] = 'Завтра';
$labels['thisweek'] = 'Поточний тиждень';
$labels['nextweek'] = 'Наступний тиждень';
$labels['prevweek'] = 'Попередній тиждень';
$labels['thismonth'] = 'Поточний місяць';
$labels['nextmonth'] = 'Наступний місяць';
$labels['weekofyear'] = 'Тиждень';
$labels['pastevents'] = 'Минуле';
$labels['futureevents'] = 'Майбутнє';
$labels['showalarms'] = 'Показувати нагадування';
$labels['defaultalarmtype'] = 'Типові налаштування нагадувань';
$labels['defaultalarmoffset'] = 'Типовий час нагадувань';
$labels['attendee'] = 'Учасний';
$labels['role'] = 'Роль';
$labels['availability'] = 'Доступність';
$labels['confirmstate'] = 'Статус';
$labels['addattendee'] = 'Додати учасника';
$labels['roleorganizer'] = 'Організатор';
$labels['rolerequired'] = 'Обов\'язковий';
$labels['roleoptional'] = 'Необов\'язковий';
$labels['cutypeindividual'] = 'Окремий';
$labels['cutypegroup'] = 'Група';
$labels['cutyperesource'] = 'Ресурс';
$labels['cutyperoom'] = 'Кімната';
$labels['availfree'] = 'Вільний';
$labels['availbusy'] = 'Зайнятий';
$labels['availunknown'] = 'Невідомо';
$labels['availtentative'] = 'Невизначений';
$labels['availoutofoffice'] = 'Поза офісом';
$labels['delegatedto'] = 'Доручено:';
$labels['delegatedfrom'] = 'Доручено від:';
$labels['scheduletime'] = 'Знайти доступних';
$labels['sendinvitations'] = 'Запросити';
$labels['sendnotifications'] = 'Повідомити учасників про зміни';
$labels['sendcancellation'] = 'Повідомити учасників про скасування події';
$labels['reqallattendees'] = 'Необхідні/всі учасники';
$labels['prevslot'] = 'Попередній час';
$labels['nextslot'] = 'Наступний час';
$labels['suggestedslot'] = 'Пропонований час';
$labels['noslotfound'] = 'Неможливо знайти вільний час';
$labels['invitationsubject'] = 'Ви запрошені на ';
$labels['invitationmailbody'] = "*\$title*\n\nКоли: \$date\n\nЗапрошені: \$attendees\n\nУ вкладенні Ви знайдете файл iCalendar з усіма деталями події, який Ви можете імпортувати у Вашу програму-щоденник.";
$labels['invitationattendlinks'] = "У разі, якщо Ваш поштовий клієнт не підтримує запити iTip, Ви можете використати дане нижче посилання, щоб прийняти або відхилити це запрошення:\n\$url";
$labels['eventupdatesubject'] = '"$title" була оновлена';
$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['itipobjectnotfound'] = 'Згадану в даному повідомленні подію, не знайдено у Вашому календарі.';
$labels['itipdeclineevent'] = 'Ви хочете відхилити запрошення на дану подію?';
$labels['declinedeleteconfirm'] = 'Чи хочете Ви також видалити відхилену подію з вашого календаря?';
$labels['itipcomment'] = 'Коментар до запрошення/повідомлення';
$labels['itipcommenttitle'] = 'Даний коментар буде прикріплений до запрошення/повідомленням, надісланого учасникам';
$labels['notanattendee'] = 'Ви не в списку учасників цієї події';
$labels['eventcancelled'] = 'Дана подія відмінена';
$labels['saveincalendar'] = 'зберегти в';
$labels['updatemycopy'] = 'Оновити в моєму календарі';
$labels['savetocalendar'] = 'Зберегти в календар';
$labels['openpreview'] = 'Перевірте календар';
$labels['noearlierevents'] = 'Немає попередніх подій';
$labels['nolaterevents'] = 'Немає наступних подій';
$labels['resource'] = 'Ресурс';
$labels['addresource'] = 'Зарезервувати ресурс';
$labels['findresources'] = 'Знайти ресурс';
$labels['resourcedetails'] = 'Подробиці';
$labels['resourceavailability'] = 'Доступність';
$labels['resourceowner'] = 'Власник';
$labels['resourceadded'] = 'Ресурс доданий у Вашу подію';
$labels['tabsummary'] = 'Резюме';
$labels['tabrecurrence'] = 'Повторення';
$labels['tabattendees'] = 'Учасники';
$labels['tabresources'] = 'Ресурси';
$labels['tabattachments'] = 'Вкладення';
$labels['tabsharing'] = 'Спільне використання';
$labels['savingdata'] = 'Збереження даних...';
$labels['errorsaving'] = 'Помилка збереження змін.';
$labels['changeeventconfirm'] = 'Змінити подію';
$labels['removeeventconfirm'] = 'Вилучити подію';
$labels['currentevent'] = 'Поточну';
$labels['futurevents'] = 'Майбутню';
$labels['allevents'] = 'Всі';
$labels['birthdays'] = 'Дні Народження';
$labels['birthdayscalendar'] = 'Календар Днів Народжень';
$labels['displaybirthdayscalendar'] = 'Показувати календар Днів Народжень';
$labels['birthdayscalendarsources'] = 'З даних адресних книг';
$labels['birthdayeventtitle'] = 'День Народження $name';
$labels['birthdayage'] = 'Вік $age';
$labels['eventchangelog'] = 'Історія змін';
$labels['eventdiff'] = 'Зміни з ревізії $rev';
$labels['revision'] = 'Ревізія';
$labels['user'] = 'Користувач';
$labels['operation'] = 'Дія';
$labels['actionappend'] = 'Збережено';
$labels['actionmove'] = 'Переміщено';
$labels['actiondelete'] = 'Вилучено';
$labels['compare'] = 'Порівняти';
$labels['showrevision'] = 'Показати дану весію';
$labels['restore'] = 'Відновити дану версію';
$labels['arialabelminical'] = 'Вибір дати';
$labels['arialabelcalendarview'] = 'Вигляд календаря';
$labels['arialabelsearchform'] = 'Форма пошуку подій';
$labels['arialabelquicksearchbox'] = 'Пошук подій';
$labels['arialabelcalsearchform'] = 'Форма пошуку календарів';
$labels['calendaractions'] = 'Дії з календарями';
$labels['arialabeleventattendees'] = 'Учасники події';
$labels['arialabeleventresources'] = 'Ресурси подій';
$labels['arialabelresourcesearchform'] = 'Форма пошуку ресурсів';
$labels['arialabelresourceselection'] = 'Доступні ресурси';
?>

272
localization/vi.inc Normal file
View file

@ -0,0 +1,272 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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';
$labels['afternothing'] = 'Do nothing';
$labels['aftertrash'] = 'Move to Trash';
$labels['afterdelete'] = 'Delete the message';
$labels['afterflagdeleted'] = 'Flag as deleted';
$labels['aftermoveto'] = 'Move to...';
$labels['itipoptions'] = 'Event Invitations';
$labels['afteraction'] = 'After an invitation or update message is processed';
$labels['calendar'] = 'Calendar';
$labels['calendars'] = 'Calendars';
$labels['category'] = 'Category';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Name';
$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'] = 'Save';
$labels['removelist'] = 'Remove from list';
$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['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['endtime'] = 'End time';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['mystatus'] = 'My status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Confirmed';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['eventoptions'] = 'Options';
$labels['generated'] = 'generated at';
$labels['eventhistory'] = 'History';
$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.';
$labels['findcalendars'] = 'Find calendars...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Available Calendars';
$labels['calendarsubscribe'] = 'List permanently';
$labels['nocalendarsfound'] = 'No calendars found';
$labels['nrcalendarsfound'] = '$nr calendars found';
$labels['quickview'] = 'View only this calendar';
$labels['invitationspending'] = 'Pending invitations';
$labels['invitationsdeclined'] = 'Declined invitations';
$labels['changepartstat'] = 'Change participant status';
$labels['rsvpcomment'] = 'Invitation text';
$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['prevweek'] = 'Previous week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$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['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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['suggestedslot'] = 'Suggested 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.";
$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['itipmailbodycancel'] = "\$sender has rejected your participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegated'] = "\$sender has delegated the participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender has delegated the participation in the following event to you:\n\n*\$title*\n\nWhen: \$date";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['itipcommenttitle'] = 'This comment will be attached to the invitation/notification message sent to participants';
$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';
$labels['savetocalendar'] = 'Save to calendar';
$labels['openpreview'] = 'Check Calendar';
$labels['noearlierevents'] = 'No earlier events';
$labels['nolaterevents'] = 'No later events';
$labels['resource'] = 'Resource';
$labels['addresource'] = 'Book resource';
$labels['findresources'] = 'Find resources';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Availability';
$labels['resourceowner'] = 'Owner';
$labels['resourceadded'] = 'The resource was added to your event';
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Resources';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
$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?';
$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['importwarningexists'] = 'A copy of this event already exists in your calendar.';
$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['updatedsuccessfully'] = 'The event was successfully updated in \'$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.';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Delete 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 delete 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';
$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';
$labels['eventchangelog'] = 'Change History';
$labels['eventdiff'] = 'Changes from revisions $rev';
$labels['revision'] = 'Revision';
$labels['user'] = 'User';
$labels['operation'] = 'Action';
$labels['actionappend'] = 'Saved';
$labels['actionmove'] = 'Moved';
$labels['actiondelete'] = 'Deleted';
$labels['compare'] = 'Compare';
$labels['showrevision'] = 'Show this version';
$labels['restore'] = 'Restore this version';
$labels['eventnotfound'] = 'Failed to load event data';
$labels['eventchangelognotavailable'] = 'Change history is not available for this event';
$labels['eventdiffnotavailable'] = 'No comparison possible for the selected revisions';
$labels['eventrestoreconfirm'] = 'Do you really want to restore revision $rev of this event? This will replace the current event with the old version.';
$labels['arialabelminical'] = 'Calendar date selection';
$labels['arialabelcalendarview'] = 'Calendar view';
$labels['arialabelsearchform'] = 'Event search form';
$labels['arialabelquicksearchbox'] = 'Event search input';
$labels['arialabelcalsearchform'] = 'Calendars search form';
$labels['calendaractions'] = 'Calendar actions';
$labels['arialabeleventattendees'] = 'Event participants list';
$labels['arialabeleventresources'] = 'Event resources list';
$labels['arialabelresourcesearchform'] = 'Resources search form';
$labels['arialabelresourceselection'] = 'Available resources';
?>

272
localization/vi_VN.inc Normal file
View file

@ -0,0 +1,272 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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';
$labels['afternothing'] = 'Do nothing';
$labels['aftertrash'] = 'Move to Trash';
$labels['afterdelete'] = 'Delete the message';
$labels['afterflagdeleted'] = 'Flag as deleted';
$labels['aftermoveto'] = 'Move to...';
$labels['itipoptions'] = 'Event Invitations';
$labels['afteraction'] = 'After an invitation or update message is processed';
$labels['calendar'] = 'Calendar';
$labels['calendars'] = 'Calendars';
$labels['category'] = 'Category';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Name';
$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'] = 'Save';
$labels['removelist'] = 'Remove from list';
$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['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['endtime'] = 'End time';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['mystatus'] = 'My status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Confirmed';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['eventoptions'] = 'Options';
$labels['generated'] = 'generated at';
$labels['eventhistory'] = 'History';
$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.';
$labels['findcalendars'] = 'Find calendars...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Available Calendars';
$labels['calendarsubscribe'] = 'List permanently';
$labels['nocalendarsfound'] = 'No calendars found';
$labels['nrcalendarsfound'] = '$nr calendars found';
$labels['quickview'] = 'View only this calendar';
$labels['invitationspending'] = 'Pending invitations';
$labels['invitationsdeclined'] = 'Declined invitations';
$labels['changepartstat'] = 'Change participant status';
$labels['rsvpcomment'] = 'Invitation text';
$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['prevweek'] = 'Previous week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$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['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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['suggestedslot'] = 'Suggested 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.";
$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['itipmailbodycancel'] = "\$sender has rejected your participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegated'] = "\$sender has delegated the participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender has delegated the participation in the following event to you:\n\n*\$title*\n\nWhen: \$date";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['itipcommenttitle'] = 'This comment will be attached to the invitation/notification message sent to participants';
$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';
$labels['savetocalendar'] = 'Save to calendar';
$labels['openpreview'] = 'Check Calendar';
$labels['noearlierevents'] = 'No earlier events';
$labels['nolaterevents'] = 'No later events';
$labels['resource'] = 'Resource';
$labels['addresource'] = 'Book resource';
$labels['findresources'] = 'Find resources';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Availability';
$labels['resourceowner'] = 'Owner';
$labels['resourceadded'] = 'The resource was added to your event';
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Resources';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
$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?';
$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['importwarningexists'] = 'A copy of this event already exists in your calendar.';
$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['updatedsuccessfully'] = 'The event was successfully updated in \'$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.';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Delete 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 delete 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';
$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';
$labels['eventchangelog'] = 'Change History';
$labels['eventdiff'] = 'Changes from revisions $rev';
$labels['revision'] = 'Revision';
$labels['user'] = 'User';
$labels['operation'] = 'Action';
$labels['actionappend'] = 'Saved';
$labels['actionmove'] = 'Moved';
$labels['actiondelete'] = 'Deleted';
$labels['compare'] = 'Compare';
$labels['showrevision'] = 'Show this version';
$labels['restore'] = 'Restore this version';
$labels['eventnotfound'] = 'Failed to load event data';
$labels['eventchangelognotavailable'] = 'Change history is not available for this event';
$labels['eventdiffnotavailable'] = 'No comparison possible for the selected revisions';
$labels['eventrestoreconfirm'] = 'Do you really want to restore revision $rev of this event? This will replace the current event with the old version.';
$labels['arialabelminical'] = 'Calendar date selection';
$labels['arialabelcalendarview'] = 'Calendar view';
$labels['arialabelsearchform'] = 'Event search form';
$labels['arialabelquicksearchbox'] = 'Event search input';
$labels['arialabelcalsearchform'] = 'Calendars search form';
$labels['calendaractions'] = 'Calendar actions';
$labels['arialabeleventattendees'] = 'Event participants list';
$labels['arialabeleventresources'] = 'Event resources list';
$labels['arialabelresourcesearchform'] = 'Resources search form';
$labels['arialabelresourceselection'] = 'Available resources';
?>

76
localization/zh_CN.inc Normal file
View file

@ -0,0 +1,76 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$labels['default_view'] = '默认视图';
$labels['time_format'] = '时间格式';
$labels['workinghours'] = '工作时间';
$labels['add_category'] = '增加分类';
$labels['remove_category'] = '移除分类';
$labels['aftertrash'] = '移到回收站';
$labels['afterdelete'] = '删除此信息';
$labels['afterflagdeleted'] = '被删除标签';
$labels['aftermoveto'] = '移到...';
$labels['category'] = '分类';
$labels['categories'] = '类别';
$labels['name'] = '名称';
$labels['color'] = '颜色';
$labels['day'] = '天';
$labels['week'] = '周';
$labels['month'] = '月';
$labels['agenda'] = '议程表';
$labels['new'] = '新建';
$labels['new_event'] = '新建事件';
$labels['edit_event'] = '编辑事件';
$labels['edit'] = '编辑';
$labels['save'] = '保存';
$labels['removelist'] = '从列表中移除';
$labels['cancel'] = '取消';
$labels['select'] = '选择';
$labels['print'] = '打印';
$labels['title'] = '汇总';
$labels['description'] = '描述';
$labels['export'] = '导出';
$labels['exporttitle'] = '导出到ICalendar';
$labels['date'] = '日期';
$labels['start'] = '开始';
$labels['starttime'] = '开始时间';
$labels['end'] = '结束';
$labels['endtime'] = '结束时间';
$labels['repeat'] = '循环';
$labels['selectdate'] = '选择日期';
$labels['free'] = '空闲';
$labels['busy'] = '忙碌';
$labels['outofoffice'] = '外出';
$labels['tentative'] = '临时';
$labels['mystatus'] = '我的状态';
$labels['status'] = '状态';
$labels['status-confirmed'] = '已确认';
$labels['status-cancelled'] = '已取消';
$labels['priority'] = '优先级';
$labels['sensitivity'] = '隐私';
$labels['public'] = '公开';
$labels['private'] = '私人';
$labels['confidential'] = '保密的';
$labels['links'] = '参考';
$labels['alarms'] = '提醒';
$labels['comment'] = '注释';
$labels['created'] = '已创建';
$labels['changed'] = '最后更改';
$labels['unknown'] = '未知';
$labels['eventoptions'] = '选项';
$labels['weekofyear'] = '周';
$labels['confirmstate'] = '状态';
$labels['availfree'] = '空闲';
$labels['availbusy'] = '忙碌';
$labels['availunknown'] = '未知';
$labels['availtentative'] = '临时';
$labels['availoutofoffice'] = '外出';
$labels['tabsummary'] = '汇总';
$labels['tabsharing'] = '分享';
$labels['savingdata'] = '保存数据...';
?>

272
localization/zh_TW.inc Normal file
View file

@ -0,0 +1,272 @@
<?php
/**
* Localizations for Kolab Calendar plugin
*
* Copyright (C) 2014, Kolab Systems AG
*
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
*/
$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';
$labels['afternothing'] = 'Do nothing';
$labels['aftertrash'] = 'Move to Trash';
$labels['afterdelete'] = 'Delete the message';
$labels['afterflagdeleted'] = 'Flag as deleted';
$labels['aftermoveto'] = 'Move to...';
$labels['itipoptions'] = 'Event Invitations';
$labels['afteraction'] = 'After an invitation or update message is processed';
$labels['calendar'] = 'Calendar';
$labels['calendars'] = 'Calendars';
$labels['category'] = 'Category';
$labels['categories'] = 'Categories';
$labels['createcalendar'] = 'Create new calendar';
$labels['editcalendar'] = 'Edit calendar properties';
$labels['name'] = 'Name';
$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'] = 'Save';
$labels['removelist'] = 'Remove from list';
$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['starttime'] = 'Start time';
$labels['end'] = 'End';
$labels['endtime'] = 'End time';
$labels['repeat'] = 'Repeat';
$labels['selectdate'] = 'Choose date';
$labels['freebusy'] = 'Show me as';
$labels['free'] = 'Free';
$labels['busy'] = 'Busy';
$labels['outofoffice'] = 'Out of Office';
$labels['tentative'] = 'Tentative';
$labels['mystatus'] = 'My status';
$labels['status'] = 'Status';
$labels['status-confirmed'] = 'Confirmed';
$labels['status-cancelled'] = 'Cancelled';
$labels['priority'] = 'Priority';
$labels['sensitivity'] = 'Privacy';
$labels['public'] = 'public';
$labels['private'] = 'private';
$labels['confidential'] = 'confidential';
$labels['alarms'] = 'Reminder';
$labels['comment'] = 'Comment';
$labels['created'] = 'Created';
$labels['changed'] = 'Last Modified';
$labels['unknown'] = 'Unknown';
$labels['eventoptions'] = 'Options';
$labels['generated'] = 'generated at';
$labels['eventhistory'] = 'History';
$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.';
$labels['findcalendars'] = 'Find calendars...';
$labels['searchterms'] = 'Search terms';
$labels['calsearchresults'] = 'Available Calendars';
$labels['calendarsubscribe'] = 'List permanently';
$labels['nocalendarsfound'] = 'No calendars found';
$labels['nrcalendarsfound'] = '$nr calendars found';
$labels['quickview'] = 'View only this calendar';
$labels['invitationspending'] = 'Pending invitations';
$labels['invitationsdeclined'] = 'Declined invitations';
$labels['changepartstat'] = 'Change participant status';
$labels['rsvpcomment'] = 'Invitation text';
$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['prevweek'] = 'Previous week';
$labels['thismonth'] = 'This month';
$labels['nextmonth'] = 'Next month';
$labels['weekofyear'] = 'Week';
$labels['pastevents'] = 'Past';
$labels['futureevents'] = 'Future';
$labels['showalarms'] = 'Show reminders';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$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['delegatedto'] = 'Delegated to: ';
$labels['delegatedfrom'] = 'Delegated from: ';
$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['suggestedslot'] = 'Suggested 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.";
$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['itipmailbodycancel'] = "\$sender has rejected your participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegated'] = "\$sender has delegated the participation in the following event:\n\n*\$title*\n\nWhen: \$date";
$labels['itipmailbodydelegatedto'] = "\$sender has delegated the participation in the following event to you:\n\n*\$title*\n\nWhen: \$date";
$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['itipcomment'] = 'Invitation/notification comment';
$labels['itipcommenttitle'] = 'This comment will be attached to the invitation/notification message sent to participants';
$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';
$labels['savetocalendar'] = 'Save to calendar';
$labels['openpreview'] = 'Check Calendar';
$labels['noearlierevents'] = 'No earlier events';
$labels['nolaterevents'] = 'No later events';
$labels['resource'] = 'Resource';
$labels['addresource'] = 'Book resource';
$labels['findresources'] = 'Find resources';
$labels['resourcedetails'] = 'Details';
$labels['resourceavailability'] = 'Availability';
$labels['resourceowner'] = 'Owner';
$labels['resourceadded'] = 'The resource was added to your event';
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';
$labels['tabresources'] = 'Resources';
$labels['tabattachments'] = 'Attachments';
$labels['tabsharing'] = 'Sharing';
$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?';
$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['importwarningexists'] = 'A copy of this event already exists in your calendar.';
$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['updatedsuccessfully'] = 'The event was successfully updated in \'$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.';
$labels['changeeventconfirm'] = 'Change event';
$labels['removeeventconfirm'] = 'Delete 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 delete 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';
$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';
$labels['eventchangelog'] = 'Change History';
$labels['eventdiff'] = 'Changes from revisions $rev';
$labels['revision'] = 'Revision';
$labels['user'] = 'User';
$labels['operation'] = 'Action';
$labels['actionappend'] = 'Saved';
$labels['actionmove'] = 'Moved';
$labels['actiondelete'] = 'Deleted';
$labels['compare'] = 'Compare';
$labels['showrevision'] = 'Show this version';
$labels['restore'] = 'Restore this version';
$labels['eventnotfound'] = 'Failed to load event data';
$labels['eventchangelognotavailable'] = 'Change history is not available for this event';
$labels['eventdiffnotavailable'] = 'No comparison possible for the selected revisions';
$labels['eventrestoreconfirm'] = 'Do you really want to restore revision $rev of this event? This will replace the current event with the old version.';
$labels['arialabelminical'] = 'Calendar date selection';
$labels['arialabelcalendarview'] = 'Calendar view';
$labels['arialabelsearchform'] = 'Event search form';
$labels['arialabelquicksearchbox'] = 'Event search input';
$labels['arialabelcalsearchform'] = 'Calendars search form';
$labels['calendaractions'] = 'Calendar actions';
$labels['arialabeleventattendees'] = 'Event participants list';
$labels['arialabeleventresources'] = 'Event resources list';
$labels['arialabelresourcesearchform'] = 'Resources search form';
$labels['arialabelresourceselection'] = 'Available resources';
?>

View file

@ -1,9 +1,11 @@
/**
* Print view for the Calendar plugin
*
* @version @package_version@
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (C) 2011, Kolab Systems AG <contact@kolabsys.com>
*
* This program is free software: you can redistribute it and/or modify
@ -18,6 +20,9 @@
*
* 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/>.
*
* @licend The above is the entire license notice
* for the JavaScript code in this file.
*/
@ -38,6 +43,9 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
var src, event_sources = [];
var add_url = (rcmail.env.search ? '&q='+escape(rcmail.env.search) : '');
for (var id in rcmail.env.calendars) {
if (!rcmail.env.calendars[id].active)
continue;
source = $.extend({
url: "./?_task=calendar&_action=load_events&source=" + escape(id) + add_url,
className: 'fc-event-cal-'+id,
@ -120,8 +128,8 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
},
// event rendering
eventRender: function(event, element, view) {
if (view.name != 'month') {
var cont = element.find('div.fc-event-title');
if (view.name != 'month' && view.name != 'table') {
var cont = element.find('.fc-event-title');
if (event.location) {
cont.after('<div class="fc-event-location">@&nbsp;' + Q(event.location) + '</div>');
cont = cont.next();
@ -131,9 +139,9 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
}
/* TODO: create icons black on white
if (event.recurrence)
element.find('div.fc-event-time').append('<i class="fc-icon-recurring"></i>');
element.find('.fc-event-time').append('<i class="fc-icon-recurring"></i>');
if (event.alarms)
element.find('div.fc-event-time').append('<i class="fc-icon-alarms"></i>');
element.find('.fc-event-time').append('<i class="fc-icon-alarms"></i>');
*/
}
if (view.name == 'table' && event.description && showdesc) {

View file

@ -16,7 +16,7 @@ body.calendarmain {
#main {
position: absolute;
clear: both;
top: 90px;
top: 72px;
left: 0;
right: 0;
bottom: 10px;
@ -24,13 +24,15 @@ body.calendarmain {
#calendarsidebar {
position: absolute;
top: 37px;
top: 0px;
left: 10px;
bottom: 0;
width: 230px;
}
#datepicker {
position: relative;
top: 42px;
width: 100%;
}
@ -62,7 +64,7 @@ body.calendarmain {
position: absolute;
left: 244px;
width: 8px;
top: 37px;
top: 4px;
bottom: 0;
background: url(images/toggle.gif) 0 48% no-repeat transparent;
cursor: pointer;
@ -78,7 +80,7 @@ div.sidebarclosed {
#calendar {
position: absolute;
top: 0;
top: 4px;
left: 256px;
right: 10px;
bottom: 0;
@ -94,7 +96,7 @@ pre {
#calendars {
position: absolute;
top: 220px;
top: 228px;
left: 0;
bottom: 0;
right: 0;
@ -103,6 +105,14 @@ pre {
overflow: hidden;
}
#calendars .boxlistcontent {
top: 43px;
}
#calendars .listsearchbox {
padding: 2px 4px;
}
#calendarslist {
list-style: none;
margin: 0;
@ -120,54 +130,143 @@ pre {
cursor: default;
}
#calendarslist li label {
#calendars .treelist li {
margin: 0;
padding: 0;
position: relative;
}
#calendars .treelist ul li:last-child {
border-bottom: 0;
}
#calendars .treelist li div.folder,
#calendars .treelist li div.calendar {
position: relative;
height: 22px;
}
#calendars .treelist li span.calname {
display: block;
}
#calendarslist li span.handle {
padding: 0px 30px 2px 2px;
position: absolute;
top: 4px;
left: 38px;
right: 40px;
cursor: default;
background: url(images/calendars.png) 0 -2px no-repeat;
background: url(images/calendars.png) right 20px no-repeat;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#calendars .treelist li div.virtual > span.calname {
color: #aaa;
left: 20px;
}
#calendars .treelist.flat li span.calname {
left: 24px;
right: 22px;
}
#calendars .treelist li span.handle {
display: inline-block;
width: 20px;
position: absolute;
top: 5px;
right: 6px;
padding: 0;
width: 12px;
height: 12px;
border-radius: 3px;
font-size: 0.8em;
}
#calendarslist li input {
margin-right: 5px;
#calendars .treelist li a.subscribed {
display: inline-block;
position: absolute;
top: 2px;
right: 22px;
height: 16px;
width: 16px;
padding: 0;
background: url(images/calendars.png) -100px 0 no-repeat;
overflow: hidden;
text-indent: -5000px;
cursor: pointer;
}
#calendarslist li.selected {
#calendars .treelist div:hover > a.subscribed {
background-position: 0 -126px;
}
#calendars .treelist div.subscribed a.subscribed {
background-position: 0 -144px;
}
#calendars .treelist li input {
position: absolute;
top: 1px;
left: 18px;
}
#calendars .treelist li div.treetoggle {
top: -1px;
left: 1px !important;
}
#calendars .treelist ul li div.treetoggle {
left: 17px !important;
}
#calendars .treelist ul ul li div.treetoggle {
left: 33px !important;
}
#calendars .treelist.flat li input {
left: 4px;
}
#calendars .treelist ul li div.folder,
#calendars .treelist ul li div.calendar {
margin-left: 16px;
}
#calendars .treelist ul ul li div.folder,
#calendars .treelist ul ul li div.calendar {
margin-left: 32px;
}
#calendars .treelist ul ul ul li div.folder,
#calendars .treelist ul ul ul li div.calendar {
margin-left: 48px;
}
#calendars .treelist li.selected {
background-color: #ccc;
border-bottom: 1px solid #bbb;
}
#calendarslist li.selected span {
#calendars .treelist li.selected > span.calname {
font-weight: bold;
}
#calendarslist li.readonly span.handle {
background-position: 0 -20px;
#calendars .treelist div.readonly span.calname {
background-position: right -20px;
}
#calendarslist li.other span.handle {
background-position: 0 -38px;
}
#calendarslist li.other.readonly span.handle {
background-position: 0 -56px;
}
#calendarslist li.shared span.handle {
background-position: 0 -74px;
}
#calendarslist li.shared.readonly span.handle {
background-position: 0 -92px;
#calendars .treelist li.user > div > span.calname {
background-position: right -38px;
}
#calendarslist li.virtual span.calname {
color: #666;
}
#calendars .searchresults .boxtitle {
border-top: 1px solid #aaa;
margin-bottom: 0;
}
#calfeedurl,
#caldavurl {
width: 98%;
@ -207,8 +306,8 @@ pre {
#calendartoolbar {
position: absolute;
top: 45px;
left: 256px;
top: 0px;
left: 0px;
height: 35px;
}
@ -269,11 +368,12 @@ pre {
background-position: -128px -32px;
}
#quicksearchbar {
.calendarmain #quicksearchbar {
top: 80px;
right: 4px;
}
div.uidialog {
.calendarmain div.uidialog {
display: none;
}
@ -409,6 +509,10 @@ a.miniColors-trigger {
background-position: right -60px;
}
.event-attendees span.delegated {
background-position: right -180px;
}
.event-attendees span.organizer {
background-position: right -80px;
}
@ -422,6 +526,10 @@ a.miniColors-trigger {
/* jQuery UI overrides */
.calendarmain .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
float: left;
}
#eventshow h1 {
font-size: 20px;
margin: 0.1em 0 0.4em 0;
@ -439,6 +547,10 @@ a.miniColors-trigger {
margin: 0 -0.2em;
}
#eventshow.status-cancelled {
background: url(images/badge_cancelled.png) top right no-repeat;
}
#eventshow.sensitivity-private {
background: url(images/badge_private.png) top right no-repeat;
}
@ -466,6 +578,41 @@ a.miniColors-trigger {
text-overflow: ellipsis;
}
#event-rsvp .itip-reply-controls {
margin-top: 0.5em;
}
#eventshow .itip-reply-controls label {
font-size: 1em;
color: #333;
}
#event-partstat .changersvp {
cursor: pointer;
color: #333;
text-decoration: none;
}
#event-partstat:hover .changersvp {
text-decoration: underline;
}
#event-partstat .changersvp.accepted {
color: #589b1e;
}
#event-partstat .changersvp.tentative {
color: #f0bb1d;
}
#event-partstat .changersvp.declined {
color: #ea0000;
}
#event-partstat .changersvp.delegated {
color: #018be9;
}
#eventedit {
position: relative;
padding: 0.5em 0.1em;
@ -530,6 +677,44 @@ td.topalign {
vertical-align: top;
}
#eventedit .edit-alarm-item {
position: relative;
padding-right: 30px;
margin-bottom: 2px;
}
#eventedit .edit-alarm-buttons {
position: absolute;
top: 2px;
right: 0;
}
#eventedit .edit-alarm-buttons a.iconlink {
display: none;
width: 18px;
height: 17px;
padding: 1px;
text-indent: -5000px;
overflow: hidden;
}
#eventedit .edit-alarm-buttons a.add-alarm {
background: url(images/plus.png) 1px 1px no-repeat;
}
#eventedit .edit-alarm-buttons a.delete-alarm {
background: url(images/delete.png) 1px 1px no-repeat;
}
#eventedit .edit-alarm-buttons a.delete-alarm,
#eventedit .first .edit-alarm-buttons a.add-alarm {
display: inline-block;
}
#eventedit .first .edit-alarm-buttons a.delete-alarm {
display: none;
}
#eventedit label.weekday,
#eventedit label.monthday {
min-width: 3em;
@ -623,7 +808,7 @@ td.topalign {
border: 1px solid #C2D071;
}
#edit-attendees-table {
.edit-attendees-table {
width: 100%;
display: table;
table-layout: fixed;
@ -631,49 +816,72 @@ td.topalign {
border: 1px solid #ccc;
}
#edit-attendees-table td {
.edit-attendees-table th,
.edit-attendees-table td {
padding: 3px;
border-bottom: 1px solid #ccc;
text-align: left;
}
#edit-attendees-table td.role {
.edit-attendees-table th.role,
.edit-attendees-table td.role {
width: 8em;
}
#edit-attendees-table td.availability,
#edit-attendees-table td.confirmstate {
.edit-attendees-table th.availability,
.edit-attendees-table th.confirmstate,
.edit-attendees-table td.availability,
.edit-attendees-table td.confirmstate {
width: 4em;
}
#edit-attendees-table td.options {
width: 3em;
.edit-attendees-table th.options,
.edit-attendees-table td.options {
width: 2em;
text-align: right;
padding-right: 4px;
}
#edit-attendees-table td.name {
.edit-attendees-table th.invite,
.edit-attendees-table td.invite {
width: 24px;
padding: 2px;
white-space: nowrap;
overflow: hidden;
text-overflow: hidden;
}
#eventedit .edit-attendees-table th.invite label {
display: none;
}
.edit-attendees-table th.name,
.edit-attendees-table td.name {
width: auto;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#edit-attendees-table thead td {
.edit-attendees-table thead th,
.edit-attendees-table thead td {
background: url(images/listheader.gif) top left repeat-x #CCC;
}
#edit-attendees-form {
#edit-attendees-form,
#edit-resources-form {
position: relative;
margin-top: 1em;
}
#edit-attendees-form #edit-attendee-schedule {
#edit-attendees-form #edit-attendee-schedule,
#edit-resources-form #edit-resource-find {
position: absolute;
top: 0;
right: 0;
}
#edit-attendees-table select.edit-attendee-role {
.edit-attendees-table select.edit-attendee-role {
border: 0;
padding: 2px;
background: white;
@ -746,33 +954,37 @@ td.topalign {
vertical-align: middle;
}
#edit-attendees-table tbody td.confirmstate {
.edit-attendees-table tbody td.confirmstate {
overflow: hidden;
white-space: nowrap;
text-indent: -2000%;
}
#edit-attendees-table td.confirmstate span {
.edit-attendees-table td.confirmstate span {
display: block;
width: 20px;
background: url(images/attendee-status.gif) 5px 0 no-repeat;
}
#edit-attendees-table td.confirmstate span.needs-action {
.edit-attendees-table td.confirmstate span.needs-action {
}
#edit-attendees-table td.confirmstate span.accepted {
.edit-attendees-table td.confirmstate span.accepted {
background-position: 5px -20px;
}
#edit-attendees-table td.confirmstate span.declined {
.edit-attendees-table td.confirmstate span.declined {
background-position: 5px -40px;
}
#edit-attendees-table td.confirmstate span.tentative {
.edit-attendees-table td.confirmstate span.tentative {
background-position: 5px -60px;
}
.edit-attendees-table td.confirmstate span.delegated {
background-position: 5px -180px;
}
#attendees-freebusy-table {
width: 100%;
table-layout: fixed;
@ -834,10 +1046,14 @@ td.topalign {
background-position: 2px -117px;
}
.attendees-list .chair {
.attendees-list .non-participant {
background-position: 2px -137px;
}
.attendees-list .chair {
background-position: 2px -157px;
}
.attendees-list .loading {
background: url(images/loading_blue.gif) 1px 50% no-repeat;
}
@ -1083,12 +1299,159 @@ span.spacer {
padding-right: 10px;
}
#resource-dialog-right {
position: absolute;
top: 10px;
left: 300px;
right: 8px;
bottom: 10px;
}
#resource-info,
#resource-availability {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 48%;
border: 1px solid #999;
background-color: #F9F9F9;
overflow: auto;
}
#resource-availability {
top: auto;
bottom: 0;
height: 49%;
overflow: hidden;
}
#resource-info .boxtitle,
#resource-availability .boxtitle {
margin-top: 0;
}
#resource-freebusy-calendar {
position: absolute;
top: 20px;
left: -1px;
right: -1px;
bottom: -1px;
}
#resource-freebusy-calendar .fc-content {
top: 0;
}
#resource-freebusy-calendar .fc-content .fc-event-bg {
background: 0;
}
#resource-freebusy-calendar .fc-event.status-busy,
#resource-freebusy-calendar .status-busy .fc-event-skin {
border-color: #e26569;
background-color: #e26569;
}
#resource-freebusy-calendar .fc-event.status-tentative,
#resource-freebusy-calendar .status-tentative .fc-event-skin {
border-color: #8383fc;
background: #8383fc;
}
#resource-freebusy-calendar .fc-event.status-outofoffice,
#resource-freebusy-calendar .status-outofoffice .fc-event-skin {
border-color: #fbaa68;
background: #fbaa68;
}
#resources-list div.treetoggle {
left: 3px !important;
top: -2px;
}
#resources-list li ul div.treetoggle {
left: 23px !important;
}
#resource-selection {
position: absolute;
top: 10px;
bottom: 10px;
left: 8px;
width: 280px;
border: 1px solid #999999;
background-color: #F9F9F9;
overflow: hidden;
}
#resource-selection .boxlistcontent {
top: 25px;
border-top: 1px solid #eee;
}
#resourcequicksearch {
position: absolute;
top: 3px;
left: 7px;
right: 4px;
height: 17px;
background: #fff;
border: 1px solid #888;
border-radius: 10px;
-webkit-box-shadow: inset 1px 1px 1px 0px rgba(0, 0, 0, 0.3);
-moz-box-shadow: inset 1px 1px 1px 0px rgba(0, 0, 0, 0.3);
box-shadow: inset 1px 1px 1px 0px rgba(0, 0, 0, 0.3);
}
#resourcesearchbox {
position: absolute;
top: 1px;
left: 24px;
width: 140px;
height: 15px;
font-size: 11px;
padding: 0px;
border: none;
outline: none;
background: #fff;
}
#resourcesearchreset {
position: absolute;
top: 2px;
right: 2px;
text-decoration: none;
}
#resource-details,
#resource-details-owner {
margin: 8px;
}
#resource-details td.title,
#resource-details-owner td.title {
color: #666;
padding-right: 10px;
min-width: 10em;
}
#resource-details-owner thead td {
color: #333;
font-size: 13px;
font-weight: bold;
}
/* fullcalendar style overrides */
#calendar .fc-header-right {
padding-right: 200px;
padding-top: 0;
}
.rcube-fc-content {
position: absolute !important;
top: 37px;
top: 38px;
left: 0;
right: 0;
bottom: 0;
@ -1099,6 +1462,10 @@ span.spacer {
font-weight: bold;
}
.cal-event-status-cancelled .fc-event-title {
text-decoration: line-through;
}
.fc-event-hori .fc-event-title {
font-weight: normal;
white-space: nowrap;
@ -1111,6 +1478,21 @@ span.spacer {
padding-right: 0.6em;
}
.fc-event-vert.fc-invitation-needs-action,
.fc-event-hori.fc-invitation-needs-action {
border: 1px dashed #5757c7 !important;
}
.fc-event-vert.fc-invitation-tentative,
.fc-event-hori.fc-invitation-tentative {
border: 1px dashed #eb8900 !important;
}
.fc-event-vert.fc-invitation-declined,
.fc-event-hori.fc-invitation-declined {
border: 1px dashed #c00 !important;
}
.fc-grid .fc-event-time {
font-weight: normal !important;
padding-right: 0.3em;
@ -1120,7 +1502,7 @@ span.spacer {
font-style:italic;
}
div.fc-event-location {
.fc-event-location {
font-size: 90%;
}
@ -1165,9 +1547,17 @@ div.fc-event-location {
cursor: pointer;
}
#calendar .fc-event-vert .fc-event-head,
#calendar .fc-event-vert .fc-event-content {
position: relative;
z-index: 2;
width: 100%;
overflow: hidden;
}
.fc-view-list div.fc-list-header,
.fc-view-table td.fc-list-header,
#edit-attendees-table thead td {
.edit-attendees-table thead td {
padding: 3px;
background: #dddddd;
background-image: -moz-linear-gradient(center top, #f4f4f4, #d2d2d2);
@ -1221,7 +1611,17 @@ fieldset #calendarcategories div {
/* Invitation UI in mail */
#messagemenu li a.calendarlink {
.messagelist tbody .attachment span.ical {
display: inline-block;
vertical-align: middle;
height: 18px;
width: 20px;
padding: 0;
background: url(images/calendar-small.png) 1px 1px no-repeat;
}
#messagemenu li a.calendarlink,
#attachmentmenu li a.calendarlink {
background-image: url(images/calendars.png);
background-position: 7px -109px;
background-repeat: no-repeat;
@ -1246,8 +1646,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;
}
@ -1258,7 +1657,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;
}
@ -1271,6 +1670,7 @@ div.calendar-invitebox .rsvp-status.loading {
div.calendar-invitebox .rsvp-status.declined,
div.calendar-invitebox .rsvp-status.tentative,
div.calendar-invitebox .rsvp-status.delegated,
div.calendar-invitebox .rsvp-status.accepted {
padding: 0 0 1px 22px;
background: url(images/attendee-status.gif) 2px -20px no-repeat;
@ -1284,6 +1684,46 @@ div.calendar-invitebox .rsvp-status.tentative {
background-position: 2px -60px;
}
div.calendar-invitebox .rsvp-status.delegated {
background-position: 2px -180px;
}
div.calendar-invitebox .calendar-agenda-preview {
display: none;
border-top: 1px solid #dfdfdf;
margin-top: 1em;
padding-top: 0.6em;
}
div.calendar-invitebox .calendar-agenda-preview h3.preview-title {
margin: 0 0 0.5em 0;
font-size: 12px;
}
div.calendar-invitebox .calendar-agenda-preview .event-row {
color: #777;
padding: 2px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
div.calendar-invitebox .calendar-agenda-preview .event-row.current {
color: #000;
font-weight: bold;
}
div.calendar-invitebox .calendar-agenda-preview .event-row.no-event {
font-style: italic;
}
div.calendar-invitebox .calendar-agenda-preview .event-date {
display: inline-block;
min-width: 8em;
margin-right: 1em;
white-space: nowrap;
}
/* iTIP attend reply page */
.calendaritipattend .centerbox {

View file

@ -1,724 +0,0 @@
/*
* FullCalendar v1.5.4-rcube-0.9.0 Stylesheet
*
* Copyright (c) 2011 Adam Shaw
* Copyright (c) 2011, Kolab Systems AG
* Dual licensed under the MIT and GPL licenses, located in
* MIT-LICENSE.txt and GPL-LICENSE.txt respectively.
*
* Date: Wed Nov 7 16:28:11 2012 +0100
*
*/
.fc {
direction: ltr;
text-align: left;
}
.fc table {
border-collapse: collapse;
border-spacing: 0;
}
html .fc,
.fc table {
font-size: 1em;
}
.fc td,
.fc th {
padding: 0;
vertical-align: top;
}
/* Header
------------------------------------------------------------------------*/
.fc-header td {
white-space: nowrap;
}
.fc-header-left {
width: 25%;
text-align: left;
}
.fc-header-center {
text-align: center;
}
.fc-header-right {
width: 25%;
text-align: right;
}
.fc-header-title {
display: inline-block;
vertical-align: top;
}
.fc-header-title h2 {
margin-top: 0;
white-space: nowrap;
}
.fc .fc-header-space {
padding-left: 10px;
}
.fc-header .fc-button {
margin-bottom: 1em;
vertical-align: top;
}
/* buttons edges butting together */
.fc-header .fc-button {
margin-right: -1px;
}
.fc-header .fc-corner-right {
margin-right: 1px; /* back to normal */
}
.fc-header .ui-corner-right {
margin-right: 0; /* back to normal */
}
/* button layering (for border precedence) */
.fc-header .fc-state-hover,
.fc-header .ui-state-hover {
z-index: 2;
}
.fc-header .fc-state-down {
z-index: 3;
}
.fc-header .fc-state-active,
.fc-header .ui-state-active {
z-index: 4;
}
/* Content
------------------------------------------------------------------------*/
.fc-content {
clear: both;
}
.fc-view {
width: 100%; /* needed for view switching (when view is absolute) */
overflow: hidden;
}
/* Cell Styles
------------------------------------------------------------------------*/
.fc-widget-header, /* <th>, usually */
.fc-widget-content { /* <td>, usually */
border: 1px solid #ccc;
}
.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */
background: #ffc;
}
.fc-cell-overlay { /* semi-transparent rectangle while dragging */
background: #9cf;
opacity: .2;
filter: alpha(opacity=20); /* for IE */
}
/* Buttons
------------------------------------------------------------------------*/
.fc-button {
position: relative;
display: inline-block;
cursor: pointer;
}
.fc-state-default { /* non-theme */
border-style: solid;
border-width: 1px 0;
}
.fc-button-inner {
position: relative;
float: left;
overflow: hidden;
}
.fc-state-default .fc-button-inner { /* non-theme */
border-style: solid;
border-width: 0 1px;
}
.fc-button-content {
position: relative;
float: left;
height: 1.9em;
line-height: 1.9em;
padding: 0 .6em;
white-space: nowrap;
}
/* icon (for jquery ui) */
.fc-button-content .fc-icon-wrap {
position: relative;
float: left;
top: 50%;
}
.fc-button-content .ui-icon {
position: relative;
float: left;
margin-top: -50%;
*margin-top: 0;
*top: -50%;
}
/* gloss effect */
.fc-state-default .fc-button-effect {
position: absolute;
top: 50%;
left: 0;
}
.fc-state-default .fc-button-effect span {
position: absolute;
top: -100px;
left: 0;
width: 500px;
height: 100px;
border-width: 100px 0 0 1px;
border-style: solid;
border-color: #fff;
background: #444;
opacity: .09;
filter: alpha(opacity=9);
}
/* button states (determines colors) */
.fc-state-default,
.fc-state-default .fc-button-inner {
border-style: solid;
border-color: #ccc #bbb #aaa;
background: #F3F3F3;
color: #000;
}
.fc-state-hover,
.fc-state-hover .fc-button-inner {
border-color: #999;
}
.fc-state-down,
.fc-state-down .fc-button-inner {
border-color: #555;
background: #777;
}
.fc-state-active,
.fc-state-active .fc-button-inner {
border-color: #555;
background: #777;
color: #fff;
}
.fc-state-disabled,
.fc-state-disabled .fc-button-inner {
color: #999;
border-color: #ddd;
}
.fc-state-disabled {
cursor: default;
}
.fc-state-disabled .fc-button-effect {
display: none;
}
/* Global Event Styles
------------------------------------------------------------------------*/
.fc-event {
border-style: solid;
border-width: 0;
font-size: .85em;
cursor: default;
}
a.fc-event,
.fc-event-draggable {
cursor: pointer;
}
a.fc-event {
text-decoration: none;
}
.fc-rtl .fc-event {
text-align: right;
}
.fc-event-skin {
border-color: #36c; /* default BORDER color */
background-color: #36c; /* default BACKGROUND color */
color: #fff; /* default TEXT color */
}
.fc-event-inner {
position: relative;
width: 100%;
height: 100%;
border-style: solid;
border-width: 0;
overflow: hidden;
}
.fc-event-time,
.fc-event-title {
padding: 0 1px;
}
.fc .ui-resizable-handle { /*** TODO: don't use ui-resizable anymore, change class ***/
display: block;
position: absolute;
z-index: 99999;
overflow: hidden; /* hacky spaces (IE6/7) */
font-size: 300%; /* */
line-height: 50%; /* */
}
/* Horizontal Events
------------------------------------------------------------------------*/
.fc-event-hori {
border-width: 1px 0;
margin-bottom: 1px;
}
/* resizable */
.fc-event-hori .ui-resizable-e {
top: 0 !important; /* importants override pre jquery ui 1.7 styles */
right: -3px !important;
width: 7px !important;
height: 100% !important;
cursor: e-resize;
}
.fc-event-hori .ui-resizable-w {
top: 0 !important;
left: -3px !important;
width: 7px !important;
height: 100% !important;
cursor: w-resize;
}
.fc-event-hori .ui-resizable-handle {
_padding-bottom: 14px; /* IE6 had 0 height */
}
/* Fake Rounded Corners (for buttons and events)
------------------------------------------------------------*/
.fc-corner-left {
margin-left: 1px;
}
.fc-corner-left .fc-button-inner,
.fc-corner-left .fc-event-inner {
margin-left: -1px;
}
.fc-corner-right {
margin-right: 1px;
}
.fc-corner-right .fc-button-inner,
.fc-corner-right .fc-event-inner {
margin-right: -1px;
}
.fc-corner-top {
margin-top: 1px;
}
.fc-corner-top .fc-event-inner {
margin-top: -1px;
}
.fc-corner-bottom {
margin-bottom: 1px;
}
.fc-corner-bottom .fc-event-inner {
margin-bottom: -1px;
}
/* Fake Rounded Corners SPECIFICALLY FOR EVENTS
-----------------------------------------------------------------*/
.fc-corner-left .fc-event-inner {
border-left-width: 1px;
}
.fc-corner-right .fc-event-inner {
border-right-width: 1px;
}
.fc-corner-top .fc-event-inner {
border-top-width: 1px;
}
.fc-corner-bottom .fc-event-inner {
border-bottom-width: 1px;
}
/* Reusable Separate-border Table
------------------------------------------------------------*/
table.fc-border-separate {
border-collapse: separate;
}
.fc-border-separate th,
.fc-border-separate td {
border-width: 1px 0 0 1px;
}
.fc-border-separate th.fc-last,
.fc-border-separate td.fc-last {
border-right-width: 1px;
}
.fc-border-separate tr.fc-last th,
.fc-border-separate tr.fc-last td {
border-bottom-width: 1px;
}
.fc-border-separate tbody tr.fc-first td,
.fc-border-separate tbody tr.fc-first th {
border-top-width: 0;
}
/* Month View, Basic Week View, Basic Day View
------------------------------------------------------------------------*/
.fc-grid th {
text-align: center;
}
.fc-grid .fc-day-number {
float: right;
padding: 0 2px;
}
.fc-grid .fc-other-month .fc-day-number {
opacity: 0.3;
filter: alpha(opacity=30); /* for IE */
/* opacity with small font can sometimes look too faded
might want to set the 'color' property instead
making day-numbers bold also fixes the problem */
}
.fc-grid .fc-day-content {
clear: both;
padding: 2px 2px 1px; /* distance between events and day edges */
}
/* event styles */
.fc-grid .fc-event-time {
font-weight: bold;
}
/* right-to-left */
.fc-rtl .fc-grid .fc-day-number {
float: left;
}
.fc-rtl .fc-grid .fc-event-time {
float: right;
}
.fc-more-link {
font-size: 0.85em;
white-space: nowrap;
text-decoration: none;
cursor: pointer;
padding: 1px;
}
/* Agenda Week View, Agenda Day View
------------------------------------------------------------------------*/
.fc-agenda table {
border-collapse: separate;
}
.fc-agenda-days th {
text-align: center;
}
.fc-agenda .fc-agenda-axis {
width: 50px;
padding: 0 4px;
vertical-align: middle;
text-align: right;
white-space: nowrap;
font-weight: normal;
}
.fc-agenda .fc-day-content {
padding: 2px 2px 1px;
}
/* make axis border take precedence */
.fc-agenda-days .fc-agenda-axis {
border-right-width: 1px;
}
.fc-agenda-days .fc-col0 {
border-left-width: 0;
}
/* all-day area */
.fc-agenda-allday th {
border-width: 0 1px;
}
.fc-agenda-allday .fc-day-content {
min-height: 34px; /* TODO: doesnt work well in quirksmode */
_height: 34px;
}
/* divider (between all-day and slots) */
.fc-agenda-divider-inner {
height: 2px;
overflow: hidden;
}
.fc-widget-header .fc-agenda-divider-inner {
background: #eee;
}
/* slot rows */
.fc-agenda-slots th {
border-width: 1px 1px 0;
}
.fc-agenda-slots td {
border-width: 1px 0 0;
background: none;
}
.fc-agenda-slots td div {
height: 20px;
}
.fc-agenda-slots tr.fc-slot0 th,
.fc-agenda-slots tr.fc-slot0 td {
border-top-width: 0;
}
.fc-agenda-slots tr.fc-minor th,
.fc-agenda-slots tr.fc-minor td {
border-top-style: dotted;
}
.fc-agenda-slots tr.fc-minor th.ui-widget-header {
*border-top-style: solid; /* doesn't work with background in IE6/7 */
}
/* Vertical Events
------------------------------------------------------------------------*/
.fc-event-vert {
border-width: 0 1px;
}
.fc-event-vert .fc-event-head,
.fc-event-vert .fc-event-content {
position: relative;
z-index: 2;
width: 100%;
overflow: hidden;
}
.fc-event-vert .fc-event-time {
white-space: nowrap;
font-size: 10px;
}
.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */
position: absolute;
z-index: 1;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #fff;
opacity: .3;
filter: alpha(opacity=30);
}
.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */
.fc-select-helper .fc-event-bg {
display: none\9; /* for IE6/7/8. nested opacity filters while dragging don't work */
}
/* resizable */
.fc-event-vert .ui-resizable-s {
bottom: 0 !important; /* importants override pre jquery ui 1.7 styles */
width: 100% !important;
height: 8px !important;
overflow: hidden !important;
line-height: 8px !important;
font-size: 11px !important;
font-family: monospace;
text-align: center;
cursor: s-resize;
}
.fc-agenda .ui-resizable-resizing { /* TODO: better selector */
_overflow: hidden;
}
.fc-timeline {
position: absolute;
width: 100%;
left: 0;
margin: 0;
padding: 0;
border: none;
border-top: 2px solid #3ec400;
z-index: 999;
}
/* List view (by bruederli@kolabsys.com)
------------------------------------------------------------------------*/
.fc-view-list,
.fc-view-table {
border: 1px solid #ccc;
width: auto;
}
.fc-view-list .fc-list-header,
.fc-view-table td.fc-list-header {
border-width: 0;
border-bottom-width: 1px;
padding: 3px 5px;
}
.fc-view-table .fc-first td.fc-list-header {
border-top-width: 0;
}
.fc-list-section {
padding: 4px 2px;
border-width: 0;
border-bottom-width: 1px;
}
.fc-view-list .fc-last {
border-bottom-width: 0;
}
.fc-list-section .fc-event {
position: relative;
margin: 1px 2px 3px 2px;
}
.fc-view-table tr.fc-event td {
padding: 2px;
border-bottom: 1px solid #ccc;
}
.fc-view-table tr.fc-event td.fc-event-handle {
padding: 3px 8px 3px 3px;
}
.fc-view-table .fc-event-handle .fc-event-skin {
border-radius: 2px;
-moz-border-radius: 2px;
}
.fc-view-table .fc-event-handle .fc-event-inner {
display: block;
width: 8px;
height: 10px;
border-radius: 2px;
-moz-border-radius: 2px;
}
.fc-view-table table {
table-layout: fixed;
width: 100%;
}
.fc-view-table col.fc-event-handle {
width: 18px;
}
.fc-event-handle .fc-event-inner {
border-color: inherit;
background-color: inherit;
}
.fc-view-table col.fc-event-date {
width: 7em;
}
.fc-view-table .fc-list-day col.fc-event-date {
width: 1px;
}
.fc-view-table col.fc-event-time {
width: 8em;
}
.fc-view-table td.fc-event-date,
.fc-view-table td.fc-event-time {
white-space: nowrap;
padding-right: 1em;
}

View file

@ -0,0 +1 @@
../larry/fullcalendar.css

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -130,7 +130,7 @@ body, td, th, div, p, h3, select, input, textarea {
font-style: italic;
}
div.fc-event-location {
.fc-event-location {
font-size: 90%;
}

View file

@ -9,7 +9,7 @@
<roundcube:include file="/includes/header.html" />
<div id="partheader">
<roundcube:object name="plugin.attachmentcontrols" cellpadding="2" cellspacing="0" />
<roundcube:object name="plugin.attachmentcontrols" cellpadding="2" cellspacing="0" downloadlink="true" />
<div style="position:absolute; top:2px; right:0; width:12em; text-align:right">
[<a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>]

View file

@ -4,20 +4,35 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
<script type="text/javascript" src="/functions.js"></script>
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="./plugins/calendar/skins/classic/iehacks.css" /><![endif]-->
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="plugins/calendar/skins/classic/iehacks.css" /><![endif]-->
</head>
<body class="calendarmain">
<roundcube:if condition="env:extwin" /><body class="calendarmain extwin"><roundcube:else /><body class="calendarmain"><roundcube:endif />
<roundcube:include file="/includes/taskbar.html" />
<roundcube:include file="/includes/header.html" />
<div id="main">
<div id="calendarsidebar">
<div id="calendartoolbar">
<roundcube:button command="addevent" type="link" class="buttonPas addevent" classAct="button addevent" classSel="button addeventSel" title="calendar.new_event" content=" " />
<roundcube:button command="print" type="link" class="buttonPas print" classAct="button print" classSel="button printSel" title="calendar.print" content=" " />
<roundcube:button command="events-import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="calendar.importevents" content=" " />
<roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="calendar.export" content=" " />
<roundcube:container name="toolbar" id="calendartoolbar" />
</div>
<div id="datepicker"></div>
<div id="calendars" style="visibility:hidden">
<div class="boxtitle"><roundcube:label name="calendar.calendars" /></div>
<div class="listsearchbox">
<div class="searchbox">
<input type="text" name="q" id="calendarlistsearch" placeholder="<roundcube:label name='calendar.findcalendars' />" />
<a class="iconbutton searchicon"></a>
<roundcube:button command="reset-listsearch" id="calendarlistsearch-reset" class="reset searchreset" title="resetsearch" content="x" />
</div>
</div>
<div class="boxlistcontent">
<roundcube:object name="plugin.calendar_list" id="calendarslist" />
<roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist" />
</div>
<div class="boxfooter">
<roundcube:button command="calendar-create" type="link" title="calendar.createcalendar" class="buttonPas addgroup" classAct="button addgroup" content=" " />
@ -34,7 +49,10 @@
<div id="calendaroptionsmenu" class="popupmenu">
<ul>
<li><roundcube:button command="calendar-edit" label="calendar.edit" classAct="active" /></li>
<li><roundcube:button command="calendar-delete" label="delete" classAct="active" /></li>
<roundcube:if condition="env:calendar_driver == 'kolab'" />
<li><roundcube:button command="calendar-remove" label="calendar.remove" classAct="active" /></li>
<roundcube:endif />
<li><roundcube:button command="calendar-showurl" label="calendar.showurl" classAct="active" /></li>
<roundcube:if condition="env:calendar_driver == 'kolab'" />
<li class="separator_above"><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
@ -66,6 +84,12 @@
<h5 class="label"><roundcube:label name="calendar.tabattendees" /></h5>
<div class="event-text"></div>
</div>
<div class="event-line" id="event-partstat">
<label><roundcube:label name="calendar.mystatus" /></label>
<a href="#change" class="changersvp" title="<roundcube:label name='calendar.changepartstat' />">
<span class="event-text"></span>
</a>
</div>
<div class="event-line" id="event-calendar">
<label><roundcube:label name="calendar.calendar" /></label>
<span class="event-text">Default</span>
@ -94,8 +118,41 @@
<roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" style="display:none" />
</div>
<div id="eventoptionsmenu" class="popupmenu">
<ul>
<li><roundcube:button command="event-download" label="download" classAct="active" /></li>
<li><roundcube:button command="event-sendbymail" label="send" classAct="active" /></li>
</ul>
</div>
<roundcube:include file="/templates/eventedit.html" />
<div id="eventresourcesdialog" class="uidialog">
<div id="resource-dialog-left">
<div id="resource-selection" class="">
<div id="resourcequicksearch">
<roundcube:object name="plugin.resources_searchform" id="resourcesearchbox" />
<roundcube:button command="reset-resource-search" id="resourcesearchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
</div>
<div class="boxlistcontent">
<roundcube:object name="plugin.resources_list" id="resources-list" class="treelist" />
</div>
</div>
</div>
<div id="resource-dialog-right">
<div id="resource-info">
<h2 class="boxtitle"><roundcube:label name="calendar.resourcedetails" /></h2>
<roundcube:object name="plugin.resource_info" id="resource-details" />
</div>
<div id="resource-availability">
<h2 class="boxtitle"><roundcube:label name="calendar.resourceavailability" /></h2>
<roundcube:object name="plugin.resource_calendar" id="resource-freebusy-calendar" />
</div>
</div>
</div>
<div id="eventfreebusy" class="uidialog">
<roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table" cellspacing="0" cellpadding="0" border="0" />
@ -134,6 +191,7 @@
<span class="attendee organizer"><roundcube:label name="calendar.roleorganizer" /></span>
<span class="attendee req-participant"><roundcube:label name="calendar.rolerequired" /></span>
<span class="attendee opt-participant"><roundcube:label name="calendar.roleoptional" /></span>
<span class="attendee non-participant"><roundcube:label name="calendar.rolenonparticipant" /></span>
<span class="attendee chair"><roundcube:label name="calendar.rolechair" /></span>
</div>
</div>
@ -159,14 +217,6 @@
</div>
</div>
<div id="calendartoolbar">
<roundcube:button command="addevent" type="link" class="buttonPas addevent" classAct="button addevent" classSel="button addeventSel" title="calendar.new_event" content=" " />
<roundcube:button command="print" type="link" class="buttonPas print" classAct="button print" classSel="button printSel" title="calendar.print" content=" " />
<roundcube:button command="events-import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="calendar.importevents" content=" " />
<roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="calendar.export" content=" " />
<roundcube:container name="toolbar" id="calendartoolbar" />
</div>
<div id="quicksearchbar">
<roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass.png" />
<roundcube:object name="plugin.searchform" id="quicksearchbox" />

View file

@ -1,13 +1,14 @@
<div id="eventedit" class="uidialog">
<form id="eventtabs" action="#" method="post" enctype="multipart/form-data">
<ul>
<li><a href="#event-tab-1"><roundcube:label name="calendar.tabsummary" /></a></li>
<li id="edit-tab-recurrence"><a href="#event-tab-2"><roundcube:label name="calendar.tabrecurrence" /></a></li>
<li id="edit-tab-attendees"><a href="#event-tab-3"><roundcube:label name="calendar.tabattendees" /></a></li>
<li id="edit-tab-attachments"><a href="#event-tab-4"><roundcube:label name="calendar.tabattachments" /></a></li>
<li><a href="#event-panel-1"><roundcube:label name="calendar.tabsummary" /></a></li>
<li id="edit-tab-recurrence"><a href="#event-panel-recurrence"><roundcube:label name="calendar.tabrecurrence" /></a></li>
<li id="edit-tab-attendees"><a href="#event-panel-attendees"><roundcube:label name="calendar.tabattendees" /></a></li>
<li id="edit-tab-resources"><a href="#event-panel-resources"><roundcube:label name="calendar.tabresources" /></a></li>
<li id="edit-tab-attachments"><a href="#event-panel-attachments"><roundcube:label name="calendar.tabattachments" /></a></li>
</ul>
<!-- basic info -->
<div id="event-tab-1">
<div id="event-panel-1">
<div class="event-section">
<label for="edit-title"><roundcube:label name="calendar.title" /></label>
<br />
@ -40,8 +41,14 @@
<input type="text" name="endtime" size="6" id="edit-endtime" />
</div>
<div class="event-section" id="edit-alarms">
<label for="edit-alarm"><roundcube:label name="calendar.alarms" /></label>
<roundcube:object name="plugin.alarm_select" />
<div class="edit-alarm-item first">
<label for="edit-alarm"><roundcube:label name="calendar.alarms" /></label>
<roundcube:object name="plugin.alarm_select" />
<span class="edit-alarm-buttons">
<a href="#add" class="iconlink add add-alarm">+</a>
<a href="#delete" class="iconlink delete delete-alarm">-</a>
</span>
</div>
</div>
<div class="event-section" id="calendar-select">
<label for="edit-calendar"><roundcube:label name="calendar.calendar" /></label>
@ -51,6 +58,10 @@
<label for="edit-categories"><roundcube:label name="calendar.category" /></label>
<roundcube:object name="plugin.category_select" id="edit-categories" />
</div>
<div class="event-section">
<label for="edit-event-status"><roundcube:label name="calendar.status" /></label>
<roundcube:object name="plugin.status_select" id="edit-event-status" />
</div>
<div class="event-section">
<label for="edit-free-busy"><roundcube:label name="calendar.freebusy" /></label>
<roundcube:object name="plugin.freebusy_select" id="edit-free-busy" />
@ -65,7 +76,7 @@
</div>
</div>
<!-- recurrence settings -->
<div id="event-tab-2">
<div id="event-panel-recurrence">
<div class="event-section border-after">
<roundcube:object name="plugin.recurrence_form" part="frequency" />
</div>
@ -89,13 +100,19 @@
</div>
</div>
<!-- attendees list -->
<div id="event-tab-3">
<roundcube:object name="plugin.attendees_list" id="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" />
<div id="event-panel-attendees">
<roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" />
<roundcube:object name="plugin.attendees_form" id="edit-attendees-form" />
<roundcube:include file="/templates/freebusylegend.html" />
</div>
<!-- resources list -->
<div id="event-panel-resources">
<roundcube:object name="plugin.attendees_list" id="edit-resources-table" class="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" coltitle="resource" />
<roundcube:object name="plugin.resources_form" id="edit-resources-form" />
<roundcube:include file="/templates/freebusylegend.html" />
</div>
<!-- attachments list (with upload form) -->
<div id="event-tab-4">
<div id="event-panel-attachments">
<div id="edit-attachments" class="attachments-list">
<roundcube:object name="plugin.attachments_list" id="attachmentlist" deleteIcon="/images/icons/delete.png" cancelIcon="/images/icons/delete.png" loadingIcon="/images/display/loading_blue.gif" />
</div>

View file

@ -1,7 +1,7 @@
<div id="edit-attendees-legend" class="availability">
<span class="legend"><img class="availabilityicon free" src="./program/resources/blank.gif" /> <roundcube:label name="calendar.availfree" /></span>
<span class="legend"><img class="availabilityicon busy" src="./program/resources/blank.gif" /> <roundcube:label name="calendar.availbusy" /></span>
<span class="legend"><img class="availabilityicon tentative" src="./program/resources/blank.gif" /> <roundcube:label name="calendar.availtentative" /></span>
<span class="legend"><img class="availabilityicon out-of-office" src="./program/resources/blank.gif" /> <roundcube:label name="calendar.availoutofoffice" /></span>
<span class="legend"><img class="availabilityicon unknown" src="./program/resources/blank.gif" /> <roundcube:label name="calendar.availunknown" /></span>
<span class="legend"><img class="availabilityicon free" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availfree" /></span>
<span class="legend"><img class="availabilityicon busy" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availbusy" /></span>
<span class="legend"><img class="availabilityicon tentative" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availtentative" /></span>
<!--<span class="legend"><img class="availabilityicon out-of-office" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availoutofoffice" /></span>-->
<span class="legend"><img class="availabilityicon unknown" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availunknown" /></span>
</div>

View file

@ -13,7 +13,7 @@
<div class="centerbox">
<roundcube:object name="plugin.event_inviteform" />
<roundcube:object name="plugin.event_invitebox" class="calendar-invitebox" />
<roundcube:object name="plugin.event_rsvp_buttons" type="submit" iname="rsvp" id="event-rsvp" />
<roundcube:object name="plugin.event_rsvp_buttons" type="submit" iname="rsvp" id="event-rsvp" delegate="false" />
</form>
</div>

View file

@ -23,6 +23,6 @@
<roundcube:object name="plugin.calendar_css" printmode="true" />
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="./plugins/calendar/skins/classic/print.iehacks.css" /><![endif]-->
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="plugins/calendar/skins/classic/print.iehacks.css" /><![endif]-->
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -1,13 +1,7 @@
/*
* FullCalendar v1.5.4-rcube-0.9.0 Stylesheet
*
* Copyright (c) 2011 Adam Shaw
* Copyright (c) 2011, Kolab Systems AG
* Dual licensed under the MIT and GPL licenses, located in
* MIT-LICENSE.txt and GPL-LICENSE.txt respectively.
*
* Date: Wed Nov 7 16:28:11 2012 +0100
*
/*!
* FullCalendar v1.6.4-rcube-1.0 Stylesheet
* Docs & License: http://arshaw.com/fullcalendar/
* (c) 2013 Adam Shaw, 2014 Kolab Systems AG
*/
@ -80,11 +74,8 @@ html .fc,
margin-right: -1px;
}
.fc-header .fc-corner-right {
margin-right: 1px; /* back to normal */
}
.fc-header .ui-corner-right {
.fc-header .fc-corner-right, /* non-theme */
.fc-header .ui-corner-right { /* theme */
margin-right: 0; /* back to normal */
}
@ -111,10 +102,11 @@ html .fc,
.fc-content {
clear: both;
zoom: 1; /* for IE7, gives accurate coordinates for [un]freezeContentHeight */
}
.fc-view {
width: 100%; /* needed for view switching (when view is absolute) */
width: 100%;
overflow: hidden;
}
@ -125,17 +117,17 @@ html .fc,
.fc-widget-header, /* <th>, usually */
.fc-widget-content { /* <td>, usually */
border: 1px solid #ccc;
border: 1px solid #ddd;
}
.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */
background: #ffc;
background: #fcf8e3;
}
.fc-cell-overlay { /* semi-transparent rectangle while dragging */
background: #9cf;
opacity: .2;
filter: alpha(opacity=20); /* for IE */
background: #bce8f1;
opacity: .3;
filter: alpha(opacity=30); /* for IE */
}
@ -146,43 +138,54 @@ html .fc,
.fc-button {
position: relative;
display: inline-block;
padding: 0 .6em;
overflow: hidden;
height: 1.9em;
line-height: 1.9em;
white-space: nowrap;
cursor: pointer;
}
.fc-state-default { /* non-theme */
border-style: solid;
border-width: 1px 0;
border: 1px solid;
}
.fc-button-inner {
position: relative;
float: left;
overflow: hidden;
.fc-state-default.fc-corner-left { /* non-theme */
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.fc-state-default .fc-button-inner { /* non-theme */
border-style: solid;
border-width: 0 1px;
.fc-state-default.fc-corner-right { /* non-theme */
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.fc-button-content {
position: relative;
float: left;
height: 1.9em;
line-height: 1.9em;
padding: 0 .6em;
white-space: nowrap;
/*
Our default prev/next buttons use HTML entities like &lsaquo; &rsaquo; &laquo; &raquo;
and we'll try to make them look good cross-browser.
*/
.fc-text-arrow {
margin: 0 .1em;
font-size: 2em;
font-family: "Courier New", Courier, monospace;
vertical-align: baseline; /* for IE7 */
}
.fc-button-prev .fc-text-arrow,
.fc-button-next .fc-text-arrow { /* for &lsaquo; &rsaquo; */
font-weight: bold;
}
/* icon (for jquery ui) */
.fc-button-content .fc-icon-wrap {
.fc-button .fc-icon-wrap {
position: relative;
float: left;
top: 50%;
}
.fc-button-content .ui-icon {
.fc-button .ui-icon {
position: relative;
float: left;
margin-top: -50%;
@ -190,107 +193,102 @@ html .fc,
*top: -50%;
}
/* gloss effect */
.fc-state-default .fc-button-effect {
position: absolute;
top: 50%;
left: 0;
/*
button states
borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/)
*/
.fc-state-default {
background-color: #f5f5f5;
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
background-repeat: repeat-x;
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
color: #333;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.fc-state-default .fc-button-effect span {
position: absolute;
top: -100px;
left: 0;
width: 500px;
height: 100px;
border-width: 100px 0 0 1px;
border-style: solid;
border-color: #fff;
background: #444;
opacity: .09;
filter: alpha(opacity=9);
}
/* button states (determines colors) */
.fc-state-default,
.fc-state-default .fc-button-inner {
border-style: solid;
border-color: #ccc #bbb #aaa;
background: #F3F3F3;
color: #000;
}
.fc-state-hover,
.fc-state-hover .fc-button-inner {
border-color: #999;
}
.fc-state-down,
.fc-state-down .fc-button-inner {
border-color: #555;
background: #777;
}
.fc-state-active,
.fc-state-active .fc-button-inner {
border-color: #555;
background: #777;
color: #fff;
.fc-state-disabled {
color: #333333;
background-color: #e6e6e6;
}
.fc-state-disabled,
.fc-state-disabled .fc-button-inner {
color: #999;
border-color: #ddd;
.fc-state-hover {
color: #333333;
text-decoration: none;
background-position: 0 -15px;
-webkit-transition: background-position 0.1s linear;
-moz-transition: background-position 0.1s linear;
-o-transition: background-position 0.1s linear;
transition: background-position 0.1s linear;
}
.fc-state-down,
.fc-state-active {
background-color: #cccccc;
background-image: none;
outline: 0;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.fc-state-disabled {
cursor: default;
background-image: none;
opacity: 0.65;
filter: alpha(opacity=65);
box-shadow: none;
}
.fc-state-disabled .fc-button-effect {
display: none;
}
/* Global Event Styles
------------------------------------------------------------------------*/
.fc-event-container > * {
z-index: 8;
}
.fc-event-container > .ui-draggable-dragging,
.fc-event-container > .ui-resizable-resizing {
z-index: 9;
}
.fc-event {
border-style: solid;
border-width: 0;
border: 1px solid #3a87ad; /* default BORDER color */
background-color: #3a87ad; /* default BACKGROUND color */
color: #fff; /* default TEXT color */
font-size: .85em;
cursor: default;
}
.fc-event:focus {
outline: 2px solid ActiveBorder;
}
a.fc-event {
text-decoration: none;
}
a.fc-event,
.fc-event-draggable {
cursor: pointer;
}
a.fc-event {
text-decoration: none;
}
.fc-rtl .fc-event {
text-align: right;
}
.fc-event-skin {
border-color: #36c; /* default BORDER color */
background-color: #36c; /* default BACKGROUND color */
color: #fff; /* default TEXT color */
}
.fc-event-inner {
position: relative;
width: 100%;
height: 100%;
border-style: solid;
border-width: 0;
overflow: hidden;
}
@ -299,7 +297,7 @@ a.fc-event {
padding: 0 1px;
}
.fc .ui-resizable-handle { /*** TODO: don't use ui-resizable anymore, change class ***/
.fc .ui-resizable-handle {
display: block;
position: absolute;
z-index: 99999;
@ -317,6 +315,20 @@ a.fc-event {
border-width: 1px 0;
margin-bottom: 1px;
}
.fc-ltr .fc-event-hori.fc-event-start,
.fc-rtl .fc-event-hori.fc-event-end {
border-left-width: 1px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
.fc-ltr .fc-event-hori.fc-event-end,
.fc-rtl .fc-event-hori.fc-event-start {
border-right-width: 1px;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
/* resizable */
@ -342,66 +354,6 @@ a.fc-event {
/* Fake Rounded Corners (for buttons and events)
------------------------------------------------------------*/
.fc-corner-left {
margin-left: 1px;
}
.fc-corner-left .fc-button-inner,
.fc-corner-left .fc-event-inner {
margin-left: -1px;
}
.fc-corner-right {
margin-right: 1px;
}
.fc-corner-right .fc-button-inner,
.fc-corner-right .fc-event-inner {
margin-right: -1px;
}
.fc-corner-top {
margin-top: 1px;
}
.fc-corner-top .fc-event-inner {
margin-top: -1px;
}
.fc-corner-bottom {
margin-bottom: 1px;
}
.fc-corner-bottom .fc-event-inner {
margin-bottom: -1px;
}
/* Fake Rounded Corners SPECIFICALLY FOR EVENTS
-----------------------------------------------------------------*/
.fc-corner-left .fc-event-inner {
border-left-width: 1px;
}
.fc-corner-right .fc-event-inner {
border-right-width: 1px;
}
.fc-corner-top .fc-event-inner {
border-top-width: 1px;
}
.fc-corner-bottom .fc-event-inner {
border-bottom-width: 1px;
}
/* Reusable Separate-border Table
------------------------------------------------------------*/
@ -437,6 +389,15 @@ table.fc-border-separate {
.fc-grid th {
text-align: center;
}
.fc .fc-week-number {
width: 22px;
text-align: center;
}
.fc .fc-week-number div {
padding: 0 2px;
}
.fc-grid .fc-day-number {
float: right;
@ -499,6 +460,10 @@ table.fc-border-separate {
white-space: nowrap;
font-weight: normal;
}
.fc-agenda .fc-week-number {
font-weight: bold;
}
.fc-agenda .fc-day-content {
padding: 2px 2px 1px;
@ -573,7 +538,7 @@ table.fc-border-separate {
.fc-event-vert {
border-width: 0 1px;
}
.fc-event-vert .fc-event-head,
.fc-event-vert .fc-event-content {
position: relative;
@ -581,11 +546,28 @@ table.fc-border-separate {
width: 100%;
overflow: hidden;
}
.fc-event-vert.fc-event-start {
border-top-width: 1px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.fc-event-vert.fc-event-end {
border-bottom-width: 1px;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
.fc-event-vert .fc-event-time {
white-space: nowrap;
font-size: 10px;
}
.fc-event-vert .fc-event-inner {
position: relative;
z-index: 2;
}
.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */
position: absolute;
@ -595,8 +577,8 @@ table.fc-border-separate {
width: 100%;
height: 100%;
background: #fff;
opacity: .3;
filter: alpha(opacity=30);
opacity: .25;
filter: alpha(opacity=25);
}
.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */
@ -668,6 +650,11 @@ table.fc-border-separate {
margin: 1px 2px 3px 2px;
}
.fc-view-table tr.fc-event {
background: inherit;
color: inherit;
}
.fc-view-table tr.fc-event td {
padding: 2px;
border-bottom: 1px solid #ccc;
@ -713,7 +700,7 @@ table.fc-border-separate {
}
.fc-view-table col.fc-event-time {
width: 8em;
width: 9em;
}
.fc-view-table td.fc-event-date,

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 888 B

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 490 B

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -1,7 +1,7 @@
/*** Printing styles for Calendar plugin ***/
body {
margin: 0;
margin: 0 0 1em 0;
color: #000;
background: #fff;
}
@ -54,24 +54,41 @@ body, td, th, div, p, h3, select, input, textarea {
}
#calendarlist {
list-style-type: square;
list-style: none;
margin: 2em 0;
padding-left: 1em;
}
#calendarlist ul {
float: left;
list-style: none;
padding-left: 0;
}
#calendarlist li {
float: left;
padding-left: 0;
padding-right: 3em;
padding-right: 0;
margin-left: 0;
font-weight: bold;
}
#calendarlist li div {
float: left;
padding-right: 3em;
padding-bottom: 1em;
}
#calendarlist input,
#calendarlist .handle {
display: none;
}
#calendarlist li.x-invitations div {
color: #999;
font-style: italic;
}
.calwidth {
width: 700px;
margin: 0 auto;
@ -130,7 +147,7 @@ body, td, th, div, p, h3, select, input, textarea {
font-style: italic;
}
div.fc-event-location {
.fc-event-location {
font-size: 90%;
}
@ -203,6 +220,9 @@ div.fc-event-location {
font-style: italic;
}
.fc-view-month .fc-event-hori .fc-event-inner {
background: #fff !important;
}
.fc-view-table col.fc-event-location {
width: 20%;

View file

@ -4,30 +4,61 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
<body class="extwin attachmentwin">
<body class="extwin calendar attachmentwin">
<div id="header">
<div id="topnav">
<roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" />
<div class="topright">
<a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>
</div>
<div id="topline" role="banner" aria-labelledby="aria-label-topnav">
<div class="topleft">
<roundcube:container name="topline-left" id="topline-left" />
</div>
<br style="clear:both" />
<roundcube:container name="topline-center" id="topline-center" />
<div class="topright">
<roundcube:container name="topline-right" id="topline-right" />
<roundcube:button name="close" type="link" label="close" class="closelink" onclick="self.close()" />
</div>
</div>
</div>
<div id="mainscreen">
<div id="partheader" class="uibox">
<roundcube:object name="plugin.attachmentcontrols" class="headers-table" />
<h1 class="voice"><roundcube:label name="attachment" />: <roundcube:var name="env:filename" /></h1>
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
<div id="attachmenttoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar">
<roundcube:button command="download-attachment" type="link" class="button download disabled" classAct="button download" classSel="button download pressed" label="download" title="download" />
<roundcube:button command="print-attachment" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" title="print" />
<roundcube:container name="toolbar" id="messagetoolbar" />
</div>
<div id="mainscreencontent">
<div id="partheader" class="uibox listbox" role="contentinfo" aria-labelledby="aria-label-contentinfo">
<h2 class="boxtitle" id="aria-label-contentinfo"><roundcube:label name="properties" /></h2>
<div class="scroller">
<roundcube:object name="plugin.attachmentcontrols" class="listing" />
</div>
</div>
<div id="attachmentcontainer" class="uibox">
<roundcube:object name="plugin.attachmentframe" id="attachmentframe" class="header-table" style="width:100%" />
<div id="attachmentcontainer" class="uibox" role="main" aria-labelledby="aria-label-messagepart">
<h2 id="aria-label-messagepart" class="voice"><roundcube:label name="arialabelattachmentpreview" /></h2>
<div class="iframebox">
<roundcube:object name="plugin.attachmentframe" id="attachmentframe" frameborder="0" title="arialabelattachmentpreview" />
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
if (window.rcube_splitter) {
new rcube_splitter({ id:'mailpartsplitterv', p1:'#partheader', p2:'#attachmentcontainer',
orientation:'v', relative:true, start:226, min:150, size:12}).init();
}
});
</script>
</body>
</html>

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