mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-06-25 11:54:17 +00:00
Merge to 2.3.21
Conflicts: SoObjects/Appointments/SOGoAppointmentFolder.m
This commit is contained in:
+11
@@ -21,6 +21,7 @@ trans.hu = UI/MailerUI/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/MailerUI/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/MailerUI/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/MailerUI/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/MailerUI/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/MailerUI/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/MailerUI/Dutch.lproj/Localizable.strings
|
||||
@@ -57,6 +58,7 @@ trans.hu = UI/PreferencesUI/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/PreferencesUI/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/PreferencesUI/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/PreferencesUI/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/PreferencesUI/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/PreferencesUI/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/PreferencesUI/Dutch.lproj/Localizable.strings
|
||||
@@ -93,6 +95,7 @@ trans.hu = UI/Scheduler/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/Scheduler/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/Scheduler/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/Scheduler/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/Scheduler/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/Scheduler/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/Scheduler/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/Scheduler/Dutch.lproj/Localizable.strings
|
||||
@@ -129,6 +132,7 @@ trans.hu = UI/Contacts/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/Contacts/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/Contacts/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/Contacts/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/Contacts/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/Contacts/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/Contacts/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/Contacts/Dutch.lproj/Localizable.strings
|
||||
@@ -165,6 +169,7 @@ trans.hu = UI/MainUI/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/MainUI/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/MainUI/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/MainUI/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/MainUI/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/MainUI/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/MainUI/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/MainUI/Dutch.lproj/Localizable.strings
|
||||
@@ -201,6 +206,7 @@ trans.hu = UI/Common/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/Common/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/Common/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/Common/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/Common/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/Common/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/Common/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/Common/Dutch.lproj/Localizable.strings
|
||||
@@ -237,6 +243,7 @@ trans.hu = UI/AdministrationUI/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/AdministrationUI/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/AdministrationUI/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/AdministrationUI/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/AdministrationUI/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/AdministrationUI/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/AdministrationUI/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/AdministrationUI/Dutch.lproj/Localizable.strings
|
||||
@@ -273,6 +280,7 @@ trans.hu = SoObjects/Appointments/Hungarian.lproj/Localizable.strings
|
||||
trans.is = SoObjects/Appointments/Icelandic.lproj/Localizable.strings
|
||||
trans.it = SoObjects/Appointments/Italian.lproj/Localizable.strings
|
||||
trans.lt = SoObjects/Appointments/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = SoObjects/Appointments/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = SoObjects/Appointments/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = SoObjects/Appointments/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = SoObjects/Appointments/Dutch.lproj/Localizable.strings
|
||||
@@ -309,6 +317,7 @@ trans.hu = SoObjects/Contacts/Hungarian.lproj/Localizable.strings
|
||||
trans.is = SoObjects/Contacts/Icelandic.lproj/Localizable.strings
|
||||
trans.it = SoObjects/Contacts/Italian.lproj/Localizable.strings
|
||||
trans.lt = SoObjects/Contacts/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = SoObjects/Contacts/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = SoObjects/Contacts/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = SoObjects/Contacts/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = SoObjects/Contacts/Dutch.lproj/Localizable.strings
|
||||
@@ -345,6 +354,7 @@ trans.hu = SoObjects/Mailer/Hungarian.lproj/Localizable.strings
|
||||
trans.is = SoObjects/Mailer/Icelandic.lproj/Localizable.strings
|
||||
trans.it = SoObjects/Mailer/Italian.lproj/Localizable.strings
|
||||
trans.lt = SoObjects/Mailer/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = SoObjects/Mailer/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = SoObjects/Mailer/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = SoObjects/Mailer/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = SoObjects/Mailer/Dutch.lproj/Localizable.strings
|
||||
@@ -381,6 +391,7 @@ trans.hu = UI/MailPartViewers/Hungarian.lproj/Localizable.strings
|
||||
trans.is = UI/MailPartViewers/Icelandic.lproj/Localizable.strings
|
||||
trans.it = UI/MailPartViewers/Italian.lproj/Localizable.strings
|
||||
trans.lt = UI/MailPartViewers/Lithuanian.lproj/Localizable.strings
|
||||
trans.lv = UI/MailPartViewers/Latvian.lproj/Localizable.strings
|
||||
trans.mk_MK = UI/MailPartViewers/Macedonian.lproj/Localizable.strings
|
||||
trans.nb_NO = UI/MailPartViewers/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = UI/MailPartViewers/Dutch.lproj/Localizable.strings
|
||||
|
||||
@@ -78,11 +78,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#import <SOGo/SOGoCacheGCSObject.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
|
||||
#import <NGCards/iCalCalendar.h>
|
||||
|
||||
#import <Appointments/iCalEntityObject+SOGo.h>
|
||||
#import <Appointments/SOGoAppointmentObject.h>
|
||||
#import <Appointments/SOGoAppointmentFolder.h>
|
||||
#import <Appointments/SOGoAppointmentFolders.h>
|
||||
#import <Appointments/SOGoTaskObject.h>
|
||||
#import <Appointments/SOGoAppointmentFolder.h>
|
||||
|
||||
#import <Contacts/SOGoContactGCSEntry.h>
|
||||
#import <Contacts/SOGoContactGCSFolder.h>
|
||||
@@ -264,7 +267,26 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
return nameInCache;
|
||||
}
|
||||
|
||||
- (void) _removeAllAlarmsFromCalendar: (iCalCalendar *) theCalendar
|
||||
{
|
||||
NSArray *allComponents;
|
||||
iCalEntityObject *currentComponent;
|
||||
NSUInteger count, max;
|
||||
|
||||
if (debugOn)
|
||||
[self logWithFormat: @"EAS - Remove all alarms"];
|
||||
|
||||
allComponents = [theCalendar allObjects];
|
||||
|
||||
max = [allComponents count];
|
||||
for (count = 0; count < max; count++)
|
||||
{
|
||||
currentComponent = [allComponents objectAtIndex: count];
|
||||
if ([currentComponent isKindOfClass: [iCalEvent class]] ||
|
||||
[currentComponent isKindOfClass: [iCalToDo class]])
|
||||
[currentComponent removeAllAlarms];
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// <?xml version="1.0"?>
|
||||
@@ -1239,6 +1261,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
d = [NSCalendarDate distantFuture];
|
||||
|
||||
[dateCache setObject: d forKey: uid];
|
||||
|
||||
if (!([theCollection showCalendarAlarms]))
|
||||
[self _removeAllAlarmsFromCalendar: [componentObject parent]];
|
||||
}
|
||||
|
||||
if (updated)
|
||||
@@ -1599,7 +1624,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
[s appendString: [mailObject activeSyncRepresentationInContext: context]];
|
||||
[s appendString: @"</ApplicationData>"];
|
||||
[s appendString: @"</Add>"];
|
||||
|
||||
|
||||
[syncCache setObject: [aCacheObject sequence] forKey: [aCacheObject uid]];
|
||||
[dateCache setObject: [NSCalendarDate date] forKey: [aCacheObject uid]];
|
||||
|
||||
|
||||
@@ -2785,7 +2785,7 @@ void handle_eas_terminate(int signum)
|
||||
inResponse: (WOResponse *) theResponse
|
||||
{
|
||||
SOGoContactSourceFolder *currentFolder;
|
||||
NSArray *allKeys, *allContacts, *mails;
|
||||
NSArray *allKeys, *allContacts, *mails, *a;
|
||||
NSDictionary *systemSources, *contact;
|
||||
SOGoContactFolders *contactFolders;
|
||||
NSString *current_mail, *query;
|
||||
@@ -2795,7 +2795,10 @@ void handle_eas_terminate(int signum)
|
||||
NSData *d;
|
||||
id o;
|
||||
|
||||
int i, j, total;
|
||||
int i, j, t, v, total, minResult, maxResult, maxSize, maxPictures;
|
||||
BOOL withPhoto;
|
||||
|
||||
withPhoto = NO;
|
||||
|
||||
query = [[(id)[theDocumentElement getElementsByTagName: @"Query"] lastObject] textValue];
|
||||
|
||||
@@ -2804,6 +2807,33 @@ void handle_eas_terminate(int signum)
|
||||
systemSources = [contactFolders systemSources];
|
||||
allKeys = [systemSources allKeys];
|
||||
|
||||
// We check for the maximum number of results to return.
|
||||
a = [[[(id)[theDocumentElement getElementsByTagName: @"Range"] lastObject] textValue] componentsSeparatedByString: @"-"];
|
||||
minResult = [[a objectAtIndex: 0] intValue];
|
||||
maxResult = [[a objectAtIndex: 1] intValue];
|
||||
|
||||
if (maxResult == 0)
|
||||
maxResult = 99;
|
||||
|
||||
if ((o = [(id)[[(id)[theDocumentElement getElementsByTagName: @"Options"] lastObject] getElementsByTagName: @"Picture"] lastObject]))
|
||||
{
|
||||
withPhoto = YES;
|
||||
|
||||
// We check for a MaxSize, default to 102400.
|
||||
maxSize = [[[(id)[o getElementsByTagName: @"MaxSize"] lastObject] textValue] intValue];
|
||||
|
||||
// We check if we must overwrite the maxSize with a system preference. This can be useful
|
||||
// if we don't want to have pictures in the response.
|
||||
if ((v = [[SOGoSystemDefaults sharedSystemDefaults] maximumPictureSize]))
|
||||
maxSize = v;
|
||||
|
||||
// We check for a MaxPictures, default to 99.
|
||||
maxPictures = [[[(id)[o getElementsByTagName: @"MaxPictures"] lastObject] textValue] intValue];
|
||||
|
||||
if (maxPictures == 0)
|
||||
maxPictures = 99;
|
||||
}
|
||||
|
||||
s = [NSMutableString string];
|
||||
|
||||
[s appendString: @"<?xml version=\"1.0\" encoding=\"utf-8\"?>"];
|
||||
@@ -2825,7 +2855,7 @@ void handle_eas_terminate(int signum)
|
||||
ordering: NSOrderedAscending
|
||||
inDomain: [[context activeUser] domain]];
|
||||
|
||||
for (j = 0; j < [allContacts count]; j++)
|
||||
for (j = minResult; (j < [allContacts count] && j < maxResult) ; j++)
|
||||
{
|
||||
contact = [allContacts objectAtIndex: j];
|
||||
|
||||
@@ -2843,9 +2873,9 @@ void handle_eas_terminate(int signum)
|
||||
else
|
||||
mails = [NSArray arrayWithObjects: o ? o : @"", nil];
|
||||
|
||||
for (total = 0; total < [mails count]; total++)
|
||||
for (t = 0; t < [mails count]; t++)
|
||||
{
|
||||
current_mail = [mails objectAtIndex: total];
|
||||
current_mail = [mails objectAtIndex: t];
|
||||
|
||||
[s appendString: @"<Result xmlns=\"Search:\">"];
|
||||
[s appendString: @"<Properties>"];
|
||||
@@ -2863,7 +2893,7 @@ void handle_eas_terminate(int signum)
|
||||
[s appendFormat: @"<LastName xmlns=\"Gal:\">%@</LastName>", [o activeSyncRepresentationInContext: context]];
|
||||
|
||||
if ([current_mail length] > 0)
|
||||
[s appendFormat: @"<EmailAddress xmlns=\"Gal:\">%@</EmailAddress>", current_mail];
|
||||
[s appendFormat: @"<EmailAddress xmlns=\"Gal:\">%@</EmailAddress>", [current_mail activeSyncRepresentationInContext: context]];
|
||||
|
||||
if ((o = [contact objectForKey: @"telephonenumber"]))
|
||||
[s appendFormat: @"<Phone xmlns=\"Gal:\">%@</Phone>", [o activeSyncRepresentationInContext: context]];
|
||||
@@ -2876,9 +2906,27 @@ void handle_eas_terminate(int signum)
|
||||
|
||||
if ((o = [contact objectForKey: @"o"]))
|
||||
[s appendFormat: @"<Company xmlns=\"Gal:\">%@</Company>", [o activeSyncRepresentationInContext: context]];
|
||||
|
||||
|
||||
if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 14.1 && withPhoto)
|
||||
{
|
||||
o = [contact objectForKey: @"photo"];
|
||||
if (o && [o length] <= maxSize && total < maxPictures)
|
||||
{
|
||||
[s appendString: @"<Picture xmlns=\"Gal:\"><Status>1</Status><Data>"];
|
||||
[s appendString: [o activeSyncRepresentationInContext: context]];
|
||||
[s appendString: @"</Data></Picture>"];
|
||||
}
|
||||
else if (!o)
|
||||
[s appendString: @"<Picture xmlns=\"Gal:\"><Status>173</Status></Picture>"];
|
||||
else if ([o length] > maxSize)
|
||||
[s appendString: @"<Picture xmlns=\"Gal:\"><Status>174</Status></Picture>"];
|
||||
else if (total >= maxPictures)
|
||||
[s appendString: @"<Picture xmlns=\"Gal:\"><Status>175</Status></Picture>"];
|
||||
}
|
||||
|
||||
[s appendString: @"</Properties>"];
|
||||
[s appendString: @"</Result>"];
|
||||
total++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3532,10 +3580,14 @@ void handle_eas_terminate(int signum)
|
||||
{
|
||||
NSString *folderId, *itemId, *realCollectionId;
|
||||
SOGoMicrosoftActiveSyncFolderType folderType;
|
||||
SOGoMailAccounts *accountsFolder;
|
||||
SOGoMailFolder *currentFolder;
|
||||
SOGoUserFolder *userFolder;
|
||||
SOGoMailObject *mailObject;
|
||||
SOGoUserDefaults *ud;
|
||||
|
||||
BOOL htmlComposition, isHTML;
|
||||
id value;
|
||||
id value, currentCollection;
|
||||
|
||||
isHTML = NO;
|
||||
ud = [[context activeUser] userDefaults];
|
||||
@@ -3561,23 +3613,31 @@ void handle_eas_terminate(int signum)
|
||||
|
||||
value = [theDocumentElement getElementsByTagName: @"ReplaceMime"];
|
||||
|
||||
// We fetch the mail object from the server
|
||||
userFolder = [[context activeUser] homeFolderInContext: context];
|
||||
accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO];
|
||||
currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO];
|
||||
|
||||
currentCollection = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", realCollectionId]
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
|
||||
mailObject = [currentCollection lookupName: itemId inContext: context acquire: NO];
|
||||
|
||||
// ReplaceMime IS specified so we must NOT use the server copy
|
||||
// but rather take the data as-is from the client.
|
||||
if ([value count])
|
||||
{
|
||||
[self processSendMail: theDocumentElement
|
||||
inResponse: theResponse];
|
||||
[self processSendMail: theDocumentElement inResponse: theResponse];
|
||||
if (!isSmartForward)
|
||||
[mailObject addFlags: @"Answered"];
|
||||
else
|
||||
[mailObject addFlags: @"$Forwarded"];
|
||||
return;
|
||||
}
|
||||
|
||||
if (folderType == ActiveSyncMailFolder)
|
||||
{
|
||||
SOGoMailAccounts *accountsFolder;
|
||||
SOGoMailFolder *currentFolder;
|
||||
SOGoUserFolder *userFolder;
|
||||
SOGoMailObject *mailObject;
|
||||
id currentCollection;
|
||||
|
||||
NGMimeMessage *messageFromSmartForward, *messageToSend;
|
||||
NGMimeMessageParser *parser;
|
||||
NSData *data;
|
||||
@@ -3596,16 +3656,6 @@ void handle_eas_terminate(int signum)
|
||||
|
||||
int a;
|
||||
|
||||
userFolder = [[context activeUser] homeFolderInContext: context];
|
||||
accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO];
|
||||
currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO];
|
||||
|
||||
currentCollection = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", realCollectionId]
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
|
||||
mailObject = [currentCollection lookupName: itemId inContext: context acquire: NO];
|
||||
|
||||
parser = [[NGMimeMessageParser alloc] init];
|
||||
data = [[[[(id)[theDocumentElement getElementsByTagName: @"MIME"] lastObject] textValue] stringByDecodingBase64] dataUsingEncoding: NSUTF8StringEncoding];
|
||||
messageFromSmartForward = [parser parsePartFromData: data];
|
||||
|
||||
@@ -238,9 +238,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
}
|
||||
else
|
||||
{
|
||||
// If it's a normal event (ie, with no organizer/attendee) or we are the organizer to an event
|
||||
// invitation, we set the busy status to 2 (Busy)
|
||||
[s appendFormat: @"<BusyStatus xmlns=\"Calendar:\">%d</BusyStatus>", 2];
|
||||
// If it's a normal event (i.e. with no organizer/attendee) or we are the organizer of an event
|
||||
// invitation, we set the busy status depending on TRANSP.
|
||||
[s appendFormat: @"<BusyStatus xmlns=\"Calendar:\">%d</BusyStatus>", (([self isOpaque]) ? 2 : 0)];
|
||||
}
|
||||
|
||||
[s appendFormat: @"<MeetingStatus xmlns=\"Calendar:\">%d</MeetingStatus>", meetingStatus];
|
||||
@@ -481,7 +481,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
if ((o = [theValues objectForKey: @"BusyStatus"]))
|
||||
{
|
||||
[o intValue];
|
||||
if ([o boolValue])
|
||||
[self setTransparency: @"OPAQUE"];
|
||||
else
|
||||
[self setTransparency: @"TRANSPARENT"];
|
||||
}
|
||||
|
||||
//
|
||||
@@ -862,7 +865,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
person = [iCalPerson elementWithTag: @"attendee"];
|
||||
[person setCn: [attendee objectForKey: @"Attendee_Name"]];
|
||||
[person setEmail: [attendee objectForKey: @"Attendee_Email"]];
|
||||
|
||||
|
||||
status = [[attendee objectForKey: @"Attendee_Status"] intValue];
|
||||
|
||||
switch (status)
|
||||
@@ -879,7 +882,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
case 0:
|
||||
case 5:
|
||||
default:
|
||||
[person setPartStat: @"NEEDS-ACTION"];
|
||||
{
|
||||
[person setPartStat: @"NEEDS-ACTION"];
|
||||
[person setRsvp: @"TRUE"];
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,576 @@
|
||||
commit 875b1c9836c0dd4ef3a009038529ffa753f22177
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Jun 1 09:47:58 2017 -0400
|
||||
|
||||
Preparation for release 2.3.21
|
||||
|
||||
M Documentation/docinfo.xml
|
||||
M Documentation/includes/global-attributes.asciidoc
|
||||
M Version
|
||||
|
||||
commit 428d179b9fd12a2a89747c1fb370350069434b1c
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Jun 1 09:44:32 2017 -0400
|
||||
|
||||
(js) Update CKEditor to version 4.7.0
|
||||
|
||||
M NEWS
|
||||
M UI/WebServerResources/ckeditor/build-config.js
|
||||
M UI/WebServerResources/ckeditor/ckeditor.js
|
||||
M UI/WebServerResources/ckeditor/lang/ar.js
|
||||
M UI/WebServerResources/ckeditor/lang/ca.js
|
||||
M UI/WebServerResources/ckeditor/lang/cs.js
|
||||
M UI/WebServerResources/ckeditor/lang/cy.js
|
||||
M UI/WebServerResources/ckeditor/lang/da.js
|
||||
M UI/WebServerResources/ckeditor/lang/de.js
|
||||
M UI/WebServerResources/ckeditor/lang/en.js
|
||||
M UI/WebServerResources/ckeditor/lang/es.js
|
||||
M UI/WebServerResources/ckeditor/lang/eu.js
|
||||
M UI/WebServerResources/ckeditor/lang/fi.js
|
||||
M UI/WebServerResources/ckeditor/lang/fr.js
|
||||
A UI/WebServerResources/ckeditor/lang/he.js
|
||||
M UI/WebServerResources/ckeditor/lang/hr.js
|
||||
M UI/WebServerResources/ckeditor/lang/hu.js
|
||||
M UI/WebServerResources/ckeditor/lang/is.js
|
||||
M UI/WebServerResources/ckeditor/lang/it.js
|
||||
M UI/WebServerResources/ckeditor/lang/lt.js
|
||||
A UI/WebServerResources/ckeditor/lang/lv.js
|
||||
M UI/WebServerResources/ckeditor/lang/mk.js
|
||||
M UI/WebServerResources/ckeditor/lang/nb.js
|
||||
M UI/WebServerResources/ckeditor/lang/nl.js
|
||||
M UI/WebServerResources/ckeditor/lang/no.js
|
||||
M UI/WebServerResources/ckeditor/lang/pl.js
|
||||
M UI/WebServerResources/ckeditor/lang/pt-br.js
|
||||
M UI/WebServerResources/ckeditor/lang/pt.js
|
||||
M UI/WebServerResources/ckeditor/lang/ru.js
|
||||
M UI/WebServerResources/ckeditor/lang/sk.js
|
||||
M UI/WebServerResources/ckeditor/lang/sl.js
|
||||
M UI/WebServerResources/ckeditor/lang/sr.js
|
||||
M UI/WebServerResources/ckeditor/lang/sv.js
|
||||
M UI/WebServerResources/ckeditor/lang/tr.js
|
||||
M UI/WebServerResources/ckeditor/lang/uk.js
|
||||
M UI/WebServerResources/ckeditor/lang/zh-cn.js
|
||||
M UI/WebServerResources/ckeditor/lang/zh.js
|
||||
D UI/WebServerResources/ckeditor/plugins/clipboard/dialogs/paste.js
|
||||
M UI/WebServerResources/ckeditor/plugins/div/dialogs/div.js
|
||||
M UI/WebServerResources/ckeditor/plugins/link/dialogs/anchor.js
|
||||
M UI/WebServerResources/ckeditor/plugins/link/dialogs/link.js
|
||||
M UI/WebServerResources/ckeditor/plugins/pastefromword/filter/default.js
|
||||
A UI/WebServerResources/ckeditor/plugins/scayt/dialogs/dialog.css
|
||||
M UI/WebServerResources/ckeditor/plugins/scayt/dialogs/options.js
|
||||
A UI/WebServerResources/ckeditor/plugins/widget/images/handle.png
|
||||
M UI/WebServerResources/ckeditor/plugins/wsc/dialogs/wsc.js
|
||||
M UI/WebServerResources/ckeditor/skins/minimalist/editor.css
|
||||
M UI/WebServerResources/ckeditor/skins/minimalist/editor_gecko.css
|
||||
M UI/WebServerResources/ckeditor/skins/minimalist/editor_ie.css
|
||||
M UI/WebServerResources/ckeditor/skins/minimalist/editor_ie7.css
|
||||
M UI/WebServerResources/ckeditor/skins/minimalist/editor_ie8.css
|
||||
M UI/WebServerResources/ckeditor/skins/minimalist/editor_iequirks.css
|
||||
|
||||
commit e73a3495bb9e3caa8f8a9e142d5d942a93a14071
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Wed May 31 10:48:35 2017 -0400
|
||||
|
||||
Respect languages preferences on login page
|
||||
|
||||
Fixes #4169
|
||||
|
||||
M NEWS
|
||||
M SoObjects/SOGo/SOGoDefaults.plist
|
||||
M SoObjects/SOGo/WOContext+SOGo.m
|
||||
M UI/MainUI/SOGoRootPage.h
|
||||
M UI/MainUI/SOGoRootPage.m
|
||||
M UI/Templates/MainUI/SOGoRootPage.wox
|
||||
M UI/WebServerResources/SOGoRootPage.js
|
||||
|
||||
commit 678cf66a574b7eeda936c3df3fbc9ac0367edd71
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Wed May 31 06:32:40 2017 -0400
|
||||
|
||||
Add Latvian (lv) translation (cont'd)
|
||||
|
||||
A SoObjects/Mailer/SOGoMailLatvianForward.wo/SOGoMailLatvianForward.html
|
||||
A SoObjects/Mailer/SOGoMailLatvianForward.wo/SOGoMailLatvianForward.wod
|
||||
A SoObjects/Mailer/SOGoMailLatvianReply.wo/SOGoMailLatvianReply.html
|
||||
A SoObjects/Mailer/SOGoMailLatvianReply.wo/SOGoMailLatvianReply.wod
|
||||
|
||||
commit 0cca551c223d8406a55dee75940fd70e50e66aa9
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Tue May 30 17:27:49 2017 -0400
|
||||
|
||||
Add Latvian (lv) translation
|
||||
|
||||
M .tx/config
|
||||
M NEWS
|
||||
M SoObjects/Appointments/English.lproj/Localizable.strings
|
||||
M SoObjects/Appointments/French.lproj/Localizable.strings
|
||||
M SoObjects/Appointments/German.lproj/Localizable.strings
|
||||
A SoObjects/Appointments/Latvian.lproj/Localizable.strings
|
||||
M SoObjects/Appointments/Polish.lproj/Localizable.strings
|
||||
M SoObjects/Appointments/TurkishTurkey.lproj/Localizable.strings
|
||||
A SoObjects/Contacts/Latvian.lproj/Localizable.strings
|
||||
M SoObjects/Mailer/GNUmakefile
|
||||
A SoObjects/Mailer/Latvian.lproj/Localizable.strings
|
||||
M SoObjects/Mailer/SOGoMailForward.h
|
||||
M SoObjects/Mailer/SOGoMailForward.m
|
||||
M SoObjects/Mailer/SOGoMailReply.h
|
||||
M SoObjects/Mailer/SOGoMailReply.m
|
||||
M SoObjects/SOGo/SOGoDefaults.plist
|
||||
M Tests/Integration/preferences.py
|
||||
A UI/AdministrationUI/Latvian.lproj/Localizable.strings
|
||||
M UI/Common/Dutch.lproj/Localizable.strings
|
||||
M UI/Common/Finnish.lproj/Localizable.strings
|
||||
A UI/Common/Latvian.lproj/Localizable.strings
|
||||
M UI/Contacts/Czech.lproj/Localizable.strings
|
||||
M UI/Contacts/Dutch.lproj/Localizable.strings
|
||||
M UI/Contacts/Finnish.lproj/Localizable.strings
|
||||
M UI/Contacts/French.lproj/Localizable.strings
|
||||
A UI/Contacts/Latvian.lproj/Localizable.strings
|
||||
M UI/Contacts/Polish.lproj/Localizable.strings
|
||||
M UI/Contacts/Slovak.lproj/Localizable.strings
|
||||
M UI/Contacts/TurkishTurkey.lproj/Localizable.strings
|
||||
A UI/MailPartViewers/Latvian.lproj/Localizable.strings
|
||||
M UI/MailPartViewers/TurkishTurkey.lproj/Localizable.strings
|
||||
M UI/MailerUI/Dutch.lproj/Localizable.strings
|
||||
M UI/MailerUI/English.lproj/Localizable.strings
|
||||
M UI/MailerUI/Finnish.lproj/Localizable.strings
|
||||
M UI/MailerUI/French.lproj/Localizable.strings
|
||||
M UI/MailerUI/German.lproj/Localizable.strings
|
||||
A UI/MailerUI/Latvian.lproj/Localizable.strings
|
||||
M UI/MailerUI/Polish.lproj/Localizable.strings
|
||||
M UI/MailerUI/TurkishTurkey.lproj/Localizable.strings
|
||||
M UI/MainUI/Arabic.lproj/Localizable.strings
|
||||
M UI/MainUI/Basque.lproj/Localizable.strings
|
||||
M UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings
|
||||
M UI/MainUI/Catalan.lproj/Localizable.strings
|
||||
M UI/MainUI/ChineseTaiwan.lproj/Localizable.strings
|
||||
M UI/MainUI/Croatian.lproj/Localizable.strings
|
||||
M UI/MainUI/Czech.lproj/Localizable.strings
|
||||
M UI/MainUI/Danish.lproj/Localizable.strings
|
||||
M UI/MainUI/Dutch.lproj/Localizable.strings
|
||||
M UI/MainUI/English.lproj/Localizable.strings
|
||||
M UI/MainUI/Finnish.lproj/Localizable.strings
|
||||
M UI/MainUI/French.lproj/Localizable.strings
|
||||
M UI/MainUI/German.lproj/Localizable.strings
|
||||
M UI/MainUI/Hebrew.lproj/Localizable.strings
|
||||
M UI/MainUI/Hungarian.lproj/Localizable.strings
|
||||
M UI/MainUI/Icelandic.lproj/Localizable.strings
|
||||
M UI/MainUI/Italian.lproj/Localizable.strings
|
||||
A UI/MainUI/Latvian.lproj/Locale
|
||||
A UI/MainUI/Latvian.lproj/Localizable.strings
|
||||
M UI/MainUI/Lithuanian.lproj/Localizable.strings
|
||||
M UI/MainUI/Macedonian.lproj/Localizable.strings
|
||||
M UI/MainUI/NorwegianBokmal.lproj/Localizable.strings
|
||||
M UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings
|
||||
M UI/MainUI/Polish.lproj/Localizable.strings
|
||||
M UI/MainUI/Portuguese.lproj/Localizable.strings
|
||||
M UI/MainUI/Russian.lproj/Localizable.strings
|
||||
M UI/MainUI/Serbian.lproj/Localizable.strings
|
||||
M UI/MainUI/Slovak.lproj/Localizable.strings
|
||||
M UI/MainUI/Slovenian.lproj/Localizable.strings
|
||||
M UI/MainUI/SpanishArgentina.lproj/Localizable.strings
|
||||
M UI/MainUI/SpanishSpain.lproj/Localizable.strings
|
||||
M UI/MainUI/Swedish.lproj/Localizable.strings
|
||||
M UI/MainUI/TurkishTurkey.lproj/Localizable.strings
|
||||
M UI/MainUI/Ukrainian.lproj/Localizable.strings
|
||||
M UI/MainUI/Welsh.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Arabic.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Basque.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Catalan.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/ChineseTaiwan.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Croatian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Czech.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Danish.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Dutch.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/English.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Finnish.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/French.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/German.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Hebrew.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Hungarian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Icelandic.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Italian.lproj/Localizable.strings
|
||||
A UI/PreferencesUI/Latvian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Lithuanian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Macedonian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/NorwegianNynorsk.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Polish.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Portuguese.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Russian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Serbian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Slovak.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Slovenian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Swedish.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/TurkishTurkey.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Ukrainian.lproj/Localizable.strings
|
||||
M UI/PreferencesUI/Welsh.lproj/Localizable.strings
|
||||
M UI/SOGoUI/SOGoFolderAdvisory.h
|
||||
M UI/SOGoUI/SOGoFolderAdvisory.m
|
||||
M UI/Scheduler/Czech.lproj/Localizable.strings
|
||||
M UI/Scheduler/Dutch.lproj/Localizable.strings
|
||||
M UI/Scheduler/Finnish.lproj/Localizable.strings
|
||||
A UI/Scheduler/Latvian.lproj/Localizable.strings
|
||||
M UI/Scheduler/Slovak.lproj/Localizable.strings
|
||||
M UI/Scheduler/TurkishTurkey.lproj/Localizable.strings
|
||||
M configure
|
||||
|
||||
commit 98f042b390eb3047f4294b037b6ced4a8b9c4928
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue May 30 14:47:23 2017 -0400
|
||||
|
||||
(fix) fixed typos in tools' help (fixes #4175)
|
||||
|
||||
M Tools/SOGoToolManageEAS.m
|
||||
M Tools/SOGoToolTruncateCalendar.m
|
||||
|
||||
commit bbac4662768444a1821f72351a2c12da2878f783
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue May 30 14:44:43 2017 -0400
|
||||
|
||||
(fix) sanity check when no defaults are found (fixes #4179)
|
||||
|
||||
M Tools/SOGoToolDumpDefaults.m
|
||||
|
||||
commit d7eb75195147160957a2c865f95728cdfe430cf6
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue May 30 13:16:35 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 7cc3ff2fccb7905300456b01091286581e4b3842
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue May 30 13:15:04 2017 -0400
|
||||
|
||||
(fix) remove any trailing cr (fixes #4172)
|
||||
|
||||
M UI/Contacts/UIxContactFolderActions.m
|
||||
|
||||
commit ec397b39b04e232fbb02039f0a4f9e835fd76e60
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue May 30 10:38:31 2017 -0400
|
||||
|
||||
(feat) added custom fields support from Thunderbird's address book
|
||||
|
||||
M NEWS
|
||||
M SoObjects/Contacts/NGVCard+SOGo.h
|
||||
M SoObjects/Contacts/NGVCard+SOGo.m
|
||||
M UI/Contacts/UIxContactEditor.m
|
||||
M UI/Contacts/UIxContactView.m
|
||||
M UI/Templates/ContactsUI/UIxContactEditor.wox
|
||||
M UI/Templates/ContactsUI/UIxContactView.wox
|
||||
|
||||
commit 95d08c015057a3760adbef5f8c21cb9d22bb3c2b
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Tue May 30 09:26:30 2017 -0400
|
||||
|
||||
Newly subscribed calendars are excluded from FB
|
||||
|
||||
Fixes #3354
|
||||
|
||||
M NEWS
|
||||
M SoObjects/Appointments/SOGoAppointmentFolder.m
|
||||
M SoObjects/SOGo/SOGoGCSFolder.m
|
||||
|
||||
commit b3149ee7c23320f2e22dccf689850d0e317a751f
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed May 17 09:56:16 2017 -0400
|
||||
|
||||
Fixed typo
|
||||
|
||||
M Tools/SOGoToolManageACL.m
|
||||
|
||||
commit 20cbe3cf77b4be5641a2f423c78ed89c6e68bb1e
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed May 17 09:46:27 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit a57cad33f669f1dc03fec7f3c6463953796ad9a0
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed May 17 09:44:34 2017 -0400
|
||||
|
||||
(feat) now able to subscribe/unsubscribe folders using sogo-tool
|
||||
|
||||
M SoObjects/SOGo/SOGoGCSFolder.m
|
||||
M Tools/SOGoToolManageACL.m
|
||||
|
||||
commit 5027aabc1b0adbba6ed3177a7bc833dc7d5da352
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Wed Oct 26 15:42:50 2016 -0400
|
||||
|
||||
Improve validation of mail account delegators
|
||||
|
||||
M SoObjects/Mailer/SOGoMailAccount.m
|
||||
|
||||
commit 149997b4cd60f97c023007cd6ddb316c1b9d0580
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Mon May 8 11:23:32 2017 -0400
|
||||
|
||||
Fix mail delegation of pristine user accounts
|
||||
|
||||
Fixes #4160
|
||||
|
||||
M NEWS
|
||||
M SoObjects/Mailer/SOGoMailAccount.m
|
||||
M SoObjects/Mailer/SOGoUser+Mailer.m
|
||||
|
||||
commit 9b4dd624c6fd87295c18ffd42e958cf6f52fc7f8
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Mon May 8 10:46:12 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit c3121c50d5b99996029a4e06e63df7802b262fad
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Mon May 8 10:44:12 2017 -0400
|
||||
|
||||
(fix) make sure to use crypt as the scheme for md5/sha256/sha512 (fixes #4137)
|
||||
|
||||
M SoObjects/SOGo/LDAPSource.m
|
||||
M SoObjects/SOGo/SQLSource.m
|
||||
|
||||
commit 3f698447b912b1e4752baeb752b1df4635c2bfc8
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Apr 27 09:02:46 2017 -0400
|
||||
|
||||
Properly honor "include in freebusy"
|
||||
|
||||
Fixes #3354
|
||||
|
||||
M NEWS
|
||||
M SoObjects/Appointments/SOGoAppointmentFolder.m
|
||||
M SoObjects/Appointments/SOGoFreeBusyObject.m
|
||||
M SoObjects/SOGo/SOGoParentFolder.m
|
||||
|
||||
commit 2705b5956a06585076c9029de31edb643c50a457
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Wed Apr 26 09:42:25 2017 -0400
|
||||
|
||||
(doc) Update installation guide
|
||||
|
||||
M Documentation/SOGoInstallationGuide.asciidoc
|
||||
|
||||
commit e0cb700f54906220b6406a81e22372a4bafd6f76
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Apr 21 16:42:08 2017 -0400
|
||||
|
||||
(js) Prevent 304 HTTP status code in IE11
|
||||
|
||||
M UI/WebServerResources/generic.js
|
||||
|
||||
commit 65e735a31422eaa70ec77fb8494b36012f6e2904
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Apr 21 15:31:54 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 89400fe980515687a658e4f0a88885d9ba323df8
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Apr 21 15:29:34 2017 -0400
|
||||
|
||||
(feat) added photo support in GAL search ops
|
||||
|
||||
M ActiveSync/SOGoActiveSyncDispatcher.m
|
||||
M Documentation/SOGoInstallationGuide.asciidoc
|
||||
M SoObjects/SOGo/SOGoSystemDefaults.h
|
||||
M SoObjects/SOGo/SOGoSystemDefaults.m
|
||||
|
||||
commit e6baba445f2035ae17ec2918b289fbd6ad751dd9
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Thu Apr 20 14:35:44 2017 -0400
|
||||
|
||||
Updated comment
|
||||
|
||||
M UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
||||
|
||||
commit 341885542bf2743be39a5edc3f27a3402644703a
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Thu Apr 20 14:30:54 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 9c1e481d54d1911d0ff393e0340671ce9d069159
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Thu Apr 20 14:29:15 2017 -0400
|
||||
|
||||
(fix) handle properly windows-1255 charset (fixes #4124)
|
||||
|
||||
M UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
||||
|
||||
commit 8fc55833d299b8d8194cc75319f1548a814894b2
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Apr 12 16:37:39 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 43385ce5bf8a3dc8371289c6acd600c57fa1fa06
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Apr 12 16:13:40 2017 -0400
|
||||
|
||||
(fix) enhance display of all-day invitations (fixes #4145)
|
||||
|
||||
M SoObjects/Appointments/English.lproj/Localizable.strings
|
||||
M SoObjects/Appointments/SOGoAptMailNotification.m
|
||||
M UI/MailPartViewers/UIxMailPartICalViewer.m
|
||||
M UI/Templates/Appointments/SOGoAptMailInvitation.wox
|
||||
|
||||
commit f28b7f2f8cc91dc69b3976f5311b18bd9e51bbd5
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Apr 12 13:05:06 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 7a418582c4f2ac4dc094724662c43c201c83a469
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Apr 12 13:04:29 2017 -0400
|
||||
|
||||
(fix) avoid sending IMIP messages for all EAS clients (fixes #4022)
|
||||
|
||||
M SoObjects/Appointments/SOGoCalendarComponent.m
|
||||
|
||||
commit 34e22dad42587a5397d5f4c9b9e46d7359211985
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Apr 12 12:59:53 2017 -0400
|
||||
|
||||
(fix) set RSVP when sending events invite
|
||||
|
||||
M ActiveSync/iCalEvent+ActiveSync.m
|
||||
|
||||
commit b8ae9afbd220c9dad6803e89b0fd0da22b446d8d
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue Apr 11 10:15:32 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit be527031bc4724e1718981de69f63c400b28ea08
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue Apr 11 10:13:56 2017 -0400
|
||||
|
||||
(fix) remove over EAS alarms if we don't want them (fixes #4059)
|
||||
|
||||
M ActiveSync/SOGoActiveSyncDispatcher+Sync.m
|
||||
|
||||
commit b4f5430ac57a61bad03bb98f264e6e48590b4b2c
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Apr 7 13:45:32 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 8b307d8ac6f4647e9734057174e5c71f9ea5d437
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Apr 7 13:43:18 2017 -0400
|
||||
|
||||
(fix) correctly set flags when ReplaceMime is set (fixes #4133)
|
||||
|
||||
M ActiveSync/SOGoActiveSyncDispatcher.m
|
||||
|
||||
commit 2e8c6680fe8e80bb58eb3111e74125507c4b647e
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Thu Apr 6 14:24:25 2017 -0400
|
||||
|
||||
(fix) check if found before changing location
|
||||
|
||||
M SoObjects/SOGo/SOGoMailer.m
|
||||
|
||||
commit d9d4808d297138dc59cb5d8821819186027d0e65
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Thu Apr 6 11:02:59 2017 -0400
|
||||
|
||||
(fix) protect ourself from broken SOPE/SOGo installs (fixes #4117)
|
||||
|
||||
M SoObjects/SOGo/SOGoMailer.m
|
||||
|
||||
commit 43dc7dee8748e97819c950e54d61932eb4f43b39
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 31 15:33:19 2017 -0400
|
||||
|
||||
(fix) calendar component move across collections (fixes #4116)
|
||||
|
||||
M NEWS
|
||||
M SoObjects/Appointments/SOGoCalendarComponent.m
|
||||
|
||||
commit 9995ccc29fb4488492b784106eb83a59fca10686
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 24 11:37:54 2017 -0400
|
||||
|
||||
(fix) more fixes for #3905
|
||||
|
||||
M SoObjects/Appointments/SOGoAppointmentObject.m
|
||||
|
||||
commit 28ab0015a98dc7e22b1b19c35b884b1c8d05cd1a
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 24 11:11:10 2017 -0400
|
||||
|
||||
(fix) more fixes for #3905
|
||||
|
||||
M SoObjects/Appointments/SOGoAppointmentObject.m
|
||||
|
||||
commit 4a3f17506cdb3958f4e0f688be7f911688bfdc62
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Sun Jan 29 18:07:59 2017 -0500
|
||||
|
||||
Remove debugging output
|
||||
|
||||
M SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m
|
||||
|
||||
commit a7740dc5eddc065ba1d5904469a218431d36ee58
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Sat Mar 18 15:37:15 2017 -0400
|
||||
|
||||
Updated NEWS
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 3155ecf3251e5662f1dd87f2f885be1c08521431
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Sat Mar 18 15:34:56 2017 -0400
|
||||
|
||||
(fix) fix opacity in freebusy over EAS
|
||||
|
||||
M ActiveSync/iCalEvent+ActiveSync.m
|
||||
|
||||
commit fb8ba8f3b9ee1f669aae56f03549a9fb8f4c3aff
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 15 10:38:20 2017 -0400
|
||||
|
||||
(fix) remove old code conflicting with #3905
|
||||
|
||||
M SoObjects/Appointments/SOGoCalendarComponent.m
|
||||
|
||||
commit 4cd8a32081b8aa347327b7e5dbcdd4f435261adb
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 10 08:58:46 2017 -0500
|
||||
|
||||
Release preparation
|
||||
|
||||
M ChangeLog
|
||||
M Documentation/docinfo.xml
|
||||
M Documentation/includes/global-attributes.asciidoc
|
||||
M NEWS
|
||||
M Version
|
||||
|
||||
commit fbc6bb71a89cbfabed4b1dea1a129dc722bbbfd1
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Thu Mar 9 13:57:27 2017 -0500
|
||||
|
||||
@@ -18,13 +18,13 @@ About this Guide
|
||||
|
||||
This guide will walk you through the installation and configuration of
|
||||
the SOGo solution. It also covers the installation and configuration of
|
||||
SOGo ActiveSync support – the solution used to synchronize mobile
|
||||
SOGo ActiveSync support - the solution used to synchronize mobile
|
||||
devices with SOGo.
|
||||
|
||||
The instructions are based on version {release_version} of SOGo.
|
||||
|
||||
The latest version of this guide is available
|
||||
at http://www.sogo.nu/downloads/documentation.html.
|
||||
at http://sogo.nu/downloads/documentation.html.
|
||||
|
||||
Introduction
|
||||
------------
|
||||
@@ -50,8 +50,7 @@ the SOGo Connector and the SOGo Integrator
|
||||
device, or Outlook 2013
|
||||
|
||||
SOGo is developed by a community of developers located mainly in North
|
||||
America and Europe. More information can be found
|
||||
at http://www.sogo.nu/
|
||||
America and Europe. More information can be found at http://sogo.nu/
|
||||
|
||||
Architecture and Compatibility
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -202,6 +201,11 @@ should apply to all supported operating systems.
|
||||
Software Downloads
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
[NOTE]
|
||||
In order to access the production builds, you need a proper support contract
|
||||
from https://sogo.nu/support/index_new.html#support-plans[Inverse]. Continue
|
||||
with the configuration once you received your username and password.
|
||||
|
||||
SOGo can be installed using the `yum` utility. To do so, first create
|
||||
the `/etc/yum.repos.d/inverse.repo` configuration file with the following
|
||||
content:
|
||||
@@ -209,17 +213,22 @@ content:
|
||||
----
|
||||
[SOGo]
|
||||
name=Inverse SOGo Repository
|
||||
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
|
||||
baseurl=https://<username>:<password>@packages.inverse.ca/SOGo/release/2/rhel/6/$basearch
|
||||
gpgcheck=0
|
||||
----
|
||||
|
||||
Some of the softwares on which SOGo depends are available from the
|
||||
repository of RepoForge (previously known as RPMforge). To add RepoForge
|
||||
to your packages sources, download and install the appropriate RPM
|
||||
package from http://packages.sw.be/rpmforge-release/.
|
||||
Also make sure you enabled the "rpmforge-extras" repository.
|
||||
[NOTE]
|
||||
Any non-URL safe characters in username/password must be URL-encoded. For
|
||||
example, if your password is `so%go`, you must set the value in your
|
||||
configuration file to `so%25go` - where `%` is encoded to `%25`.
|
||||
|
||||
For more information on using RepoForge, visit http://repoforge.org/use/.
|
||||
Inverse signs its RPM packages with its GPG key. Integrity verification happens
|
||||
all by itself on package installation, all you need to do is first import the
|
||||
key into your rpm keychain:
|
||||
|
||||
----
|
||||
rpm --import "https://pgp.mit.edu/pks/lookup?op=get&search=0xCB2D3A2AA0030E2C"
|
||||
----
|
||||
|
||||
Software Installation
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -504,8 +513,8 @@ In our example, we set the default domain to `acme.com`.
|
||||
meeting participants. Possible values are:
|
||||
|
||||
[options="compact"]
|
||||
* `YES` – to send notifications
|
||||
* `NO` – to not send notifications
|
||||
* `YES` - to send notifications
|
||||
* `NO` - to not send notifications
|
||||
|
||||
Defaults to `NO` when unset.
|
||||
|
||||
@@ -578,6 +587,8 @@ for SOGo. Possible values are:
|
||||
* `Basque`
|
||||
* `BrazilianPortuguese`
|
||||
* `Catalan`
|
||||
* `ChineseTaiwan`
|
||||
* `Croatian`
|
||||
* `Czech`
|
||||
* `Danish`
|
||||
* `Dutch`
|
||||
@@ -588,14 +599,19 @@ for SOGo. Possible values are:
|
||||
* `Hungarian`
|
||||
* `Icelandic`
|
||||
* `Italian`
|
||||
* `Lithuanian`
|
||||
* `Macedonian`
|
||||
* `NorwegianBokmal`
|
||||
* `NorwegianNynorsk`
|
||||
* `Polish`
|
||||
* `Portuguese`
|
||||
* `Russian`
|
||||
* `Slovak`
|
||||
* `SpanishSpain`
|
||||
* `Slovenian`
|
||||
* `SpanishArgentina`
|
||||
* `SpanishSpain`
|
||||
* `Swedish`
|
||||
* `TurkishTurkey`
|
||||
* `Ukrainian`
|
||||
* `Welsh`
|
||||
|
||||
@@ -604,8 +620,8 @@ for SOGo. Possible values are:
|
||||
someone changes his/her own calendar. Possible values are:
|
||||
|
||||
[options="compact"]
|
||||
- `YES` – to send notifications
|
||||
- `NO` – to not send notifications
|
||||
- `YES` - to send notifications
|
||||
- `NO` - to not send notifications
|
||||
|
||||
Defaults to `NO` when unset. User can overwrite this from the calendar
|
||||
properties window.
|
||||
@@ -616,8 +632,8 @@ modification is being done to his/her own calendar by someone else.
|
||||
Possible values are:
|
||||
|
||||
[options="compact"]
|
||||
* `YES` – to send notifications
|
||||
* `NO` – to not send notifications
|
||||
* `YES` - to send notifications
|
||||
* `NO` - to not send notifications
|
||||
|
||||
Defaults to `NO` when unset. User can overwrite this from the calendar
|
||||
properties window.
|
||||
@@ -640,8 +656,8 @@ requiring not authentication) their calendars and address books.
|
||||
Possible values are:
|
||||
|
||||
[options="compact"]
|
||||
* `YES` – to allow them
|
||||
* `NO` – to prevent them from doing so
|
||||
* `YES` - to allow them
|
||||
* `NO` - to prevent them from doing so
|
||||
|
||||
Defaults to `NO` when unset.
|
||||
|
||||
@@ -652,8 +668,8 @@ SOGo.
|
||||
Possible values are:
|
||||
|
||||
[options="compact"]
|
||||
* `YES` – to allow them
|
||||
* `NO` – to prevent them from doing so
|
||||
* `YES` - to allow them
|
||||
* `NO` - to prevent them from doing so
|
||||
|
||||
Defaults to `NO` when unset.
|
||||
|
||||
@@ -683,7 +699,7 @@ Defaults to `NO` when unset.
|
||||
string (attendee completion, address book search, etc.) prior triggering
|
||||
the server-side search operation.
|
||||
|
||||
Defaults to `2` when unset – which means a search operation will be
|
||||
Defaults to `2` when unset - which means a search operation will be
|
||||
triggered on the 3rd typed character.
|
||||
|
||||
|S |SOGoMaximumFailedLoginCount
|
||||
@@ -888,7 +904,7 @@ source can contain the following values:
|
||||
|The type of this user source, set to ldap` for an LDAP source.
|
||||
|
||||
|id
|
||||
|The identification name of the LDAP repository. This must be unique –
|
||||
|The identification name of the LDAP repository. This must be unique -
|
||||
even when using multiple domains.
|
||||
|
||||
|CNFieldName
|
||||
@@ -955,8 +971,8 @@ be marked as busy the first time it is booked.
|
||||
EOQualifier. The following operators are supported:
|
||||
|
||||
[options="compact"]
|
||||
* `<>` – inequality operator
|
||||
* `=` – equality operator
|
||||
* `<>` - inequality operator
|
||||
* `=` - equality operator
|
||||
|
||||
Multiple qualifiers can be joined by using `OR` and `AND`, they can also
|
||||
be grouped together by using parenthesis. Attribute values should be
|
||||
@@ -1374,9 +1390,9 @@ SOGoProfileURL =
|
||||
Create the database user and schema using the following commands:
|
||||
|
||||
----
|
||||
su – postgres
|
||||
createuser --no-superuser --no-createdb –-no-createrole \
|
||||
–-encrypted --pwprompt sogo
|
||||
su - postgres
|
||||
createuser --no-superuser --no-createdb --no-createrole \
|
||||
--encrypted --pwprompt sogo
|
||||
(specify “sogo” as password)
|
||||
createdb -O sogo sogo
|
||||
----
|
||||
@@ -1477,7 +1493,7 @@ source can contain the following values:
|
||||
|The type of this user source, set to `sql` for a SQL source.
|
||||
|
||||
|id
|
||||
|The identification name of the SQL repository. This must be unique –
|
||||
|The identification name of the SQL repository. This must be unique -
|
||||
even when using multiple domains.
|
||||
|
||||
|viewURL
|
||||
@@ -1485,9 +1501,9 @@ even when using multiple domains.
|
||||
present. Required columns are:
|
||||
|
||||
[options="compact"]
|
||||
* `c_uid`: will be used for authentication – it's a username or
|
||||
* `c_uid`: will be used for authentication - it's a username or
|
||||
username@domain.tld
|
||||
* `c_name`: will be used to uniquely identify entries – which can be
|
||||
* `c_name`: will be used to uniquely identify entries - which can be
|
||||
identical to `c_uid`
|
||||
* `c_password`: password of the user, plain text, crypt, md5 or sha
|
||||
encoded
|
||||
@@ -1593,14 +1609,14 @@ SOGoUserSources =
|
||||
|
||||
Certain database columns must be present in the view/table, such as:
|
||||
|
||||
* `c_uid` – will be used for authentication – it's the username
|
||||
* `c_uid` - will be used for authentication - it's the username
|
||||
or username@domain.tld
|
||||
* `c_name` – which can be identical to `c_uid` – will be used to
|
||||
* `c_name` - which can be identical to `c_uid` - will be used to
|
||||
uniquely identify entries
|
||||
* `c_password` – password of the user, plain-text, md5 or sha encoded
|
||||
* `c_password` - password of the user, plain-text, md5 or sha encoded
|
||||
for now
|
||||
* `c_cn` – the user's common name – such as "John Doe"
|
||||
* `mail` – the user's mail address
|
||||
* `c_cn` - the user's common name - such as "John Doe"
|
||||
* `mail` - the user's mail address
|
||||
|
||||
Note that groups are currently not supported for SQL-based
|
||||
authentication sources.
|
||||
@@ -1620,8 +1636,8 @@ The following table describes the related parameters.
|
||||
are:
|
||||
|
||||
[options="compact"]
|
||||
* `sendmail` – to use the sendmail binary
|
||||
* `smtp` – to use the SMTP protocol
|
||||
* `sendmail` - to use the sendmail binary
|
||||
* `smtp` - to use the SMTP protocol
|
||||
|
||||
|D |SOGoSMTPServer
|
||||
|The DNS name or IP address of the SMTP server used when
|
||||
@@ -2545,6 +2561,12 @@ have unexpected behaviour with various ActiveSync clients.
|
||||
EAS command.
|
||||
|
||||
Defaults to `NO`, which means no logging is performed.
|
||||
|
||||
|S |SOGoMaximumPictureSize
|
||||
|Parameter used to overwrite the maximum number of bytes returned in the picture
|
||||
for EAS Search operations in the GAL.
|
||||
|
||||
If not set, it defaults to `102400` bytes, or 100 KB.
|
||||
|=======================================================================
|
||||
|
||||
Please be aware of the following limitations:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!-- TODO have the build system take care of this -->
|
||||
<releaseinfo>Version 2.3.20 - March 2017</releaseinfo>
|
||||
<subtitle>for version 2.3.20</subtitle>
|
||||
<date>2017-03-10</date>
|
||||
<releaseinfo>Version 2.3.21 - June 2017</releaseinfo>
|
||||
<subtitle>for version 2.3.21</subtitle>
|
||||
<date>2017-06-01</date>
|
||||
|
||||
<legalnotice>
|
||||
<para>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".</para>
|
||||
|
||||
@@ -13,6 +13,6 @@
|
||||
|
||||
// TODO have the build system take care of this
|
||||
|
||||
:release_version: 2.3.20
|
||||
:release_version: 2.3.21
|
||||
|
||||
// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab:
|
||||
|
||||
@@ -1,3 +1,29 @@
|
||||
2.3.21 (2017-06-01)
|
||||
-------------------
|
||||
|
||||
Enhancements
|
||||
- [core] improved event invitation for all day events (#4145)
|
||||
- [core] now possible to {un}subscribe to folders using sogo-tool
|
||||
- [eas] added photo support for GAL search operations
|
||||
- [web] added custom fields support from Thunderbird's address book
|
||||
- [web] updated CKEditor to version 4.7.0
|
||||
- [web] added Latvian (lv) translation - thanks to Juris Balandis
|
||||
|
||||
Bug fixes
|
||||
- [core] fixed calendar component move across collections (#4116)
|
||||
- [core] handle properly mails using windows-1255 charset (#4124)
|
||||
- [core] properly honor the "include in freebusy" setting (#3354)
|
||||
- [core] make sure to use crypt scheme when encoding md5/sha256/sha512 (#4137)
|
||||
- [core] newly subscribed calendars are excluded from freebusy (#3354)
|
||||
- [core] strip cr during LDIF import process (#4172)
|
||||
- [web] fixed mail delegation of pristine user accounts (#4160)
|
||||
- [web] respect SOGoLanguage and SOGoSupportedLanguages (#4169)
|
||||
- [eas] fixed opacity in EAS freebusy (#4033)
|
||||
- [eas] set reply/forwarded flags when ReplaceMime is set (#4133)
|
||||
- [eas] remove alarms over EAS if we don't want them (#4059)
|
||||
- [eas] correctly set RSVP on event invitations
|
||||
- [eas] avoid sending IMIP request/update messages for all EAS clients (#4022)
|
||||
|
||||
2.3.20 (2017-03-10)
|
||||
-------------------
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
iCalByDayMask *dayMask;
|
||||
BOOL hasRepeatCount;
|
||||
|
||||
[self logWithFormat: @"Weekly %@", rrule];
|
||||
// [self logWithFormat: @"Weekly %@", rrule];
|
||||
|
||||
firStart = [firstRange startDate];
|
||||
startDate = [_r startDate];
|
||||
@@ -187,7 +187,7 @@
|
||||
if ([_r doesIntersectWithDateRange: r])
|
||||
{
|
||||
[ranges addObject: r];
|
||||
[self logWithFormat: @"Add range %@ - %@", [r startDate], [r endDate]];
|
||||
// [self logWithFormat: @"Add range %@ - %@", [r startDate], [r endDate]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,10 +18,14 @@ vtodo_class2 = "(Confidential task)";
|
||||
"calendar_label" = "Calendar";
|
||||
"startDate_label" = "Start";
|
||||
"endDate_label" = "End";
|
||||
"time_label" = "Time";
|
||||
"to_label" = "to";
|
||||
"due_label" = "Due Date";
|
||||
"location_label" = "Location";
|
||||
"summary_label" = "Summary";
|
||||
"comment_label" = "Comment";
|
||||
"organizer_label" = "Organizer";
|
||||
"attendee_label" = "Attendee";
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\"";
|
||||
"(sent by %{SentBy}) " = "(sent by %{SentBy}) ";
|
||||
|
||||
@@ -18,10 +18,14 @@ vtodo_class2 = "(Tâche confidentielle)";
|
||||
"calendar_label" = "Agenda ";
|
||||
"startDate_label" = "Début ";
|
||||
"endDate_label" = "Fin ";
|
||||
"time_label" = "Date";
|
||||
"to_label" = "au";
|
||||
"due_label" = "Fin prévue :";
|
||||
"location_label" = "Lieu ";
|
||||
"summary_label" = "Titre :";
|
||||
"comment_label" = "Description :";
|
||||
"organizer_label" = "Organisateur";
|
||||
"attendee_label" = "Participants ";
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Invitation à la réunion : «%{Summary}»";
|
||||
"(sent by %{SentBy}) " = "(envoyé par %{SentBy}) ";
|
||||
|
||||
@@ -22,6 +22,8 @@ vtodo_class2 = "(Vertrauliche Aufgabe)";
|
||||
"location_label" = "Ort";
|
||||
"summary_label" = "Zusammenfassung:";
|
||||
"comment_label" = "Kommentar:";
|
||||
"organizer_label" = "Organisator";
|
||||
"attendee_label" = "Teilnehmer";
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Termineinladung: \"%{Summary}\"";
|
||||
"(sent by %{SentBy}) " = "(gesendet von %{SentBy}) ";
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
"Inviting the following persons is prohibited:" = "Šo personu uzaicināšana ir aizliegta:";
|
||||
"Personal Calendar" = "Personiskais kalendārs";
|
||||
vevent_class0 = "(Publisks notikums)";
|
||||
vevent_class1 = "(Privāts notikums)";
|
||||
vevent_class2 = "(Konfidenciāls notikums)";
|
||||
|
||||
vtodo_class0 = "(Publisks uzdevums)";
|
||||
vtodo_class1 = "(Privāts uzdevums)";
|
||||
vtodo_class2 = "(Konfidenciāls uzdevums)";
|
||||
/* Receipts */
|
||||
"The event \"%{Summary}\" was created" = "Notikums \"%{Summary}\" ir izveidots";
|
||||
"The event \"%{Summary}\" was deleted" = "Notikums \"%{Summary}\" ir dzēsts";
|
||||
"The event \"%{Summary}\" was updated" = "Notikums \"%{Summary}\" ir atjaunināts";
|
||||
"The following attendees(s) were notified" = "Paziņojums nosūtīts šiem dalībniekiem";
|
||||
"The following attendees(s) were added" = "Pievienoti šādi dalībnieki";
|
||||
"The following attendees(s) were removed" = "Dzēsti šādi dalībnieki";
|
||||
/* IMIP messages */
|
||||
"calendar_label" = "Kalendārs";
|
||||
"startDate_label" = "Sākums";
|
||||
"endDate_label" = "Beigas";
|
||||
"time_label" = "Laiks";
|
||||
"to_label" = "kam";
|
||||
"due_label" = "Gala termiņš";
|
||||
"location_label" = "Vieta";
|
||||
"summary_label" = "Kopsavilkums";
|
||||
"comment_label" = "Komentārs";
|
||||
"organizer_label" = "Organizētājs";
|
||||
"attendee_label" = "Dalībnieks";
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Pasākuma ielūgums: \"%{Summary}\"";
|
||||
"(sent by %{SentBy}) " = "(sūtīja %{SentBy}) ";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "%{Organizer} %{SentByText} ielūdza Jūs uz %{Summary}.\n\nSākums: %{StartDate}\nBeigas: %{EndDate}\nApraksts: %{Description}";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText} ielūdza Jūs uz %{Summary}.\n\nSākums: %{StartDate} %{StartTime}\nBeigas: %{EndDate} %{EndTime}\nApraksts: %{Description}";
|
||||
/* Deletion */
|
||||
"Event Cancelled: \"%{Summary}\"" = "Atcelts pasākums: \"%{Summary}\"";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText} atcēla notikumu: %{Summary}.\n\nSākums: %{StartDate}\nBeigas: %{EndDate}\nApraksts: %{Description}";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText} atcēla notikumu: %{Summary}.\n\nSākums: %{StartDate} %{StartTime}\nBeigas: %{EndDate} %{EndTime}\nApraksts: %{Description}";
|
||||
/* Update */
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} has changed"
|
||||
= "Tikšanās \"%{Summary}\" %{OldStartDate} ir mainīta";
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"
|
||||
= "Tikšanās \"%{Summary}\" %{OldStartDate} %{OldStartTime} ir mainīta";
|
||||
"The following parameters have changed in the \"%{Summary}\" meeting:"
|
||||
= "Plānotā tikšanās \"%{Summary}\" ir mainīta, ir veiktas šādas izmaiņas:";
|
||||
"Please accept or decline those changes."
|
||||
= "Lūdzu pieņemt vai noraidīt šīs izmaiņas.";
|
||||
/* Reply */
|
||||
"Accepted invitation: \"%{Summary}\"" = "Akceptēt uzaicinājumu: \"%{Summary}\"";
|
||||
"Declined invitation: \"%{Summary}\"" = "Noraidīt uzaicinājumu: \"%{Summary}\"";
|
||||
"Delegated invitation: \"%{Summary}\"" = "Deleģēt uzaicinājumu: \"%{Summary}\"";
|
||||
"Not yet decided on invitation: \"%{Summary}\"" = "Vēl nav izlemts par uzaicinājumu: \"%{Summary}\"";
|
||||
"%{Attendee} %{SentByText}has accepted your event invitation."
|
||||
= "%{Attendee} %{SentByText}ir akceptējis uzaicinājumu piedalīties pasākumā.";
|
||||
"%{Attendee} %{SentByText}has declined your event invitation."
|
||||
= "%{Attendee} %{SentByText} ir noraidījis jūsu uzaicinājumu piedalīties pasākumā.";
|
||||
"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."
|
||||
= "%{Attendee} %{SentByText} deleģējusi uzaicinājumu %{Delegate}.";
|
||||
"%{Attendee} %{SentByText}has not yet decided upon your event invitation."
|
||||
= "%{Attendee} %{SentByText} vēl nav izlemts par jūsu uzaicinājumu piedalīties pasākumā.";
|
||||
/* Resources */
|
||||
"Cannot access resource: \"%{Cn} %{SystemEmail}\"" = "Nevar piekļūt resursiem: \"%{Cn} %{SystemEmail}\"";
|
||||
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "Maksimālais skaits vienlaicīgām rezervācijām (%{NumberOfSimultaneousBookings}) sasniedza resursu \"%{Cn} %{SystemEmail}\". Strīdu notikums ir \"%{EventTitle}\", un sākas %{StartDate}.";
|
||||
@@ -18,10 +18,14 @@ vtodo_class2 = "(Zadanie poufne)";
|
||||
"calendar_label" = "Kalendarz";
|
||||
"startDate_label" = "Początek";
|
||||
"endDate_label" = "Koniec";
|
||||
"time_label" = "Data";
|
||||
"to_label" = "do";
|
||||
"due_label" = "Termin";
|
||||
"location_label" = "Miejsce";
|
||||
"summary_label" = "Podsumowanie";
|
||||
"comment_label" = "Komentarz";
|
||||
"organizer_label" = "Organizator";
|
||||
"attendee_label" = "Uczestnik";
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Zaproszenie na wydarzenie: \"%{Summary}\"";
|
||||
"(sent by %{SentBy}) " = "(wysłane przez %{SentBy}) ";
|
||||
|
||||
@@ -434,6 +434,93 @@ static Class iCalEventK = nil;
|
||||
inCategory: @"FolderShowTasks"];
|
||||
}
|
||||
|
||||
- (BOOL) subscribeUserOrGroup: (NSString *) theIdentifier
|
||||
reallyDo: (BOOL) reallyDo
|
||||
response: (WOResponse *) theResponse
|
||||
{
|
||||
NSMutableDictionary *moduleSettings, *folderShowAlarms, *freeBusyExclusions;
|
||||
NSString *subscriptionPointer;
|
||||
NSMutableArray *allUsers;
|
||||
SOGoUserSettings *us;
|
||||
NSDictionary *dict;
|
||||
SOGoUser *sogoUser;
|
||||
BOOL rc;
|
||||
int i;
|
||||
|
||||
rc = [super subscribeUserOrGroup: theIdentifier reallyDo: reallyDo response: theResponse];
|
||||
|
||||
if (rc)
|
||||
{
|
||||
dict = [[SOGoUserManager sharedUserManager] contactInfosForUserWithUIDorEmail: theIdentifier];
|
||||
|
||||
if ([[dict objectForKey: @"isGroup"] boolValue])
|
||||
{
|
||||
SOGoGroup *aGroup;
|
||||
|
||||
aGroup = [SOGoGroup groupWithIdentifier: theIdentifier
|
||||
inDomain: [[context activeUser] domain]];
|
||||
allUsers = [NSMutableArray arrayWithArray: [aGroup members]];
|
||||
|
||||
// We remove the active user from the group (if present) in order to
|
||||
// not subscribe him to their own resource!
|
||||
[allUsers removeObject: [context activeUser]];
|
||||
}
|
||||
else
|
||||
{
|
||||
sogoUser = [SOGoUser userWithLogin: theIdentifier roles: nil];
|
||||
|
||||
if (sogoUser)
|
||||
allUsers = [NSArray arrayWithObject: sogoUser];
|
||||
else
|
||||
allUsers = [NSArray array];
|
||||
}
|
||||
|
||||
for (i = 0; i < [allUsers count]; i++)
|
||||
{
|
||||
sogoUser = [allUsers objectAtIndex: i];
|
||||
us = [sogoUser userSettings];
|
||||
moduleSettings = [us objectForKey: [container nameInContainer]];
|
||||
if (!(moduleSettings
|
||||
&& [moduleSettings isKindOfClass: [NSMutableDictionary class]]))
|
||||
{
|
||||
moduleSettings = [NSMutableDictionary dictionary];
|
||||
[us setObject: moduleSettings forKey: [container nameInContainer]];
|
||||
}
|
||||
|
||||
subscriptionPointer = [self folderReference];
|
||||
|
||||
folderShowAlarms = [moduleSettings objectForKey: @"FolderShowAlarms"];
|
||||
freeBusyExclusions = [moduleSettings objectForKey: @"FreeBusyExclusions"];
|
||||
|
||||
if (reallyDo)
|
||||
{
|
||||
if (!(folderShowAlarms
|
||||
&& [folderShowAlarms isKindOfClass: [NSMutableDictionary class]]))
|
||||
{
|
||||
folderShowAlarms = [NSMutableDictionary dictionary];
|
||||
[moduleSettings setObject: folderShowAlarms
|
||||
forKey: @"FolderShowAlarms"];
|
||||
}
|
||||
|
||||
// By default, we disable alarms on subscribed calendars
|
||||
[folderShowAlarms setObject: [NSNumber numberWithBool: NO]
|
||||
forKey: subscriptionPointer];
|
||||
}
|
||||
else
|
||||
{
|
||||
[folderShowAlarms removeObjectForKey: subscriptionPointer];
|
||||
[freeBusyExclusions removeObjectForKey: subscriptionPointer];
|
||||
}
|
||||
|
||||
[us synchronize];
|
||||
|
||||
rc = YES;
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
//
|
||||
// If the user is the owner of the calendar, by default we include the freebusy information.
|
||||
//
|
||||
@@ -444,43 +531,35 @@ static Class iCalEventK = nil;
|
||||
//
|
||||
- (BOOL) includeInFreeBusy
|
||||
{
|
||||
NSString *userLogin, *subscriptionReference;
|
||||
NSNumber *excludeFromFreeBusy;
|
||||
|
||||
BOOL is_owner, is_subscription;
|
||||
NSString *userLogin, *ownerInContext;
|
||||
BOOL is_owner;
|
||||
|
||||
userLogin = [[context activeUser] login];
|
||||
is_owner = [userLogin isEqualToString: self->owner];
|
||||
ownerInContext = [[self container] ownerInContext: context];
|
||||
is_owner = [userLogin isEqualToString: ownerInContext];
|
||||
|
||||
// We check if we're subscribed. We must NOT use here [self isSubscribed] as it'll look
|
||||
// at the owner's settings, and not the activeUser's settings.
|
||||
subscriptionReference = [NSString stringWithFormat: @"%@:Calendar/%@", self->owner, [self nameInContainer]];
|
||||
is_subscription = [[[[[self->context activeUser] userSettings] objectForKey: @"Calendar"] objectForKey: @"SubscribedFolders"] containsObject: subscriptionReference];
|
||||
|
||||
// Check if the owner (not the active user) has excluded the calendar from her/his free busy data.
|
||||
excludeFromFreeBusy
|
||||
= [self folderPropertyValueInCategory: @"FreeBusyExclusions"
|
||||
forUser: [context activeUser]];
|
||||
if (is_owner)
|
||||
excludeFromFreeBusy
|
||||
= [self folderPropertyValueInCategory: @"FreeBusyExclusions"
|
||||
forUser: [context activeUser]];
|
||||
else
|
||||
excludeFromFreeBusy
|
||||
= [self folderPropertyValueInCategory: @"FreeBusyExclusions"
|
||||
forUser: [SOGoUser userWithLogin: ownerInContext]];
|
||||
|
||||
if (is_subscription)
|
||||
// User has not setting for freebusy inclusion/exclusion,
|
||||
// * include it if it's a personal folder;
|
||||
// * exclude it if it's a subscription.
|
||||
if (!excludeFromFreeBusy)
|
||||
{
|
||||
// If the user has not yet set an include/not include fb information let's EXCLUDE it.
|
||||
if (!excludeFromFreeBusy)
|
||||
if ([self isSubscription])
|
||||
return NO;
|
||||
else
|
||||
return ![excludeFromFreeBusy boolValue];
|
||||
}
|
||||
else if (is_owner)
|
||||
{
|
||||
// We are the owner but we haven't included/excluded freebusy info, let's INCLUDE it.
|
||||
if (!excludeFromFreeBusy)
|
||||
return YES;
|
||||
else
|
||||
return ![excludeFromFreeBusy boolValue];
|
||||
}
|
||||
|
||||
// It's not a subscribtion and we aren't the owner. Let's INCLUDE the freebusy info.
|
||||
return YES;
|
||||
return ![excludeFromFreeBusy boolValue];
|
||||
}
|
||||
|
||||
- (void) setIncludeInFreeBusy: (BOOL) newInclude
|
||||
|
||||
@@ -1808,16 +1808,16 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
|
||||
uid = [[event organizer] uidInContext: context];
|
||||
if (uid)
|
||||
{
|
||||
iCalPerson *attendee, *organizer;
|
||||
NSDictionary *defaultIdentity;
|
||||
SOGoUser *organizerUser;
|
||||
NSArray *allAttendees;
|
||||
iCalPerson *attendee;
|
||||
SOGoUser *organizer;
|
||||
|
||||
|
||||
organizer = [SOGoUser userWithLogin: uid];
|
||||
defaultIdentity = [organizer defaultIdentity];
|
||||
[[event organizer] setCn: [defaultIdentity objectForKey: @"fullName"]];
|
||||
[[event organizer] setEmail: [defaultIdentity objectForKey: @"email"]];
|
||||
organizerUser = [SOGoUser userWithLogin: uid];
|
||||
defaultIdentity = [organizerUser defaultIdentity];
|
||||
organizer = [[event organizer] copy];
|
||||
[organizer setCn: [defaultIdentity objectForKey: @"fullName"]];
|
||||
[organizer setEmail: [defaultIdentity objectForKey: @"email"]];
|
||||
|
||||
// We now check if one of the attendee is also the organizer. If so,
|
||||
// we remove it. See bug #3905 (https://sogo.nu/bugs/view.php?id=3905)
|
||||
@@ -1827,9 +1827,13 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
|
||||
for (j = [allAttendees count]-1; j >= 0; j--)
|
||||
{
|
||||
attendee = [allAttendees objectAtIndex: j];
|
||||
if ([organizer hasEmail: [attendee rfc822Email]])
|
||||
if ([organizerUser hasEmail: [attendee rfc822Email]])
|
||||
[event removeFromAttendees: attendee];
|
||||
}
|
||||
|
||||
// We reset the organizer
|
||||
[event setOrganizer: organizer];
|
||||
RELEASE(organizer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#import <NGObjWeb/WOActionResults.h>
|
||||
#import <NGObjWeb/WOContext+SoObjects.h>
|
||||
#import <NGObjWeb/WOResponse.h>
|
||||
#import <NGExtensions/NSCalendarDate+misc.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <NGCards/iCalEvent.h>
|
||||
#import <NGCards/iCalPerson.h>
|
||||
@@ -186,6 +187,19 @@
|
||||
return sentByText;
|
||||
}
|
||||
|
||||
- (NSTimeInterval) duration
|
||||
{
|
||||
return [[self newEndDate] timeIntervalSinceDate:[self newStartDate]];
|
||||
}
|
||||
|
||||
- (BOOL) isEndDateOnSameDay
|
||||
{
|
||||
if ([[self apt] isAllDay])
|
||||
return ([self duration] <= 86400);
|
||||
|
||||
return [[self newStartDate] isDateOnSameDay: [self newEndDate]];
|
||||
}
|
||||
|
||||
- (NSString *) formattedAptStartDate
|
||||
{
|
||||
NSString *s;
|
||||
|
||||
@@ -579,17 +579,6 @@
|
||||
[allAttendees addObject: person];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// We remove any attendees matching the organizer. Apple iCal will do that when
|
||||
// you invite someone. It'll add the organizer in the attendee list, which will
|
||||
// confuse itself!
|
||||
if ([[currentAttendee rfc822Email] caseInsensitiveCompare: organizerEmail] == NSOrderedSame)
|
||||
{
|
||||
[allAttendees removeObject: currentAttendee];
|
||||
eventWasModified = YES;
|
||||
}
|
||||
}
|
||||
|
||||
j++;
|
||||
} // while (currentAttendee ...
|
||||
@@ -799,6 +788,15 @@
|
||||
if ([object firstChildWithTag: @"X-SOGo-Send-Appointment-Notifications"])
|
||||
return;
|
||||
|
||||
// We never send IMIP inivitaton/deletion/update when the "initiator" is an EAS client.
|
||||
// That is because Outlook, iOS and Android will always issue a SendMail command
|
||||
// with the meeting details (ie., IMIP message with METHOD:REQUEST) so there's
|
||||
// no need to send it twice. Moreover, Outlook users can also choose to NOT send
|
||||
// the IMIP messsage at all, so SOGo won't send one without user's consent
|
||||
if ([[[context request] requestHandlerKey] isEqualToString: @"Microsoft-Server-ActiveSync"])
|
||||
return;
|
||||
|
||||
|
||||
ownerUser = [SOGoUser userWithLogin: owner];
|
||||
dd = [ownerUser domainDefaults];
|
||||
if ([dd appointmentSendEMailNotifications] && [object isStillRelevant])
|
||||
@@ -1208,6 +1206,36 @@
|
||||
return uids;
|
||||
}
|
||||
|
||||
- (NSException *) _copyComponent: (iCalCalendar *) calendar
|
||||
toFolder: (SOGoGCSFolder *) newFolder
|
||||
updateUID: (BOOL) updateUID
|
||||
{
|
||||
NSString *newUID;
|
||||
SOGoCalendarComponent *newComponent;
|
||||
|
||||
if (updateUID)
|
||||
{
|
||||
NSArray *elements;
|
||||
unsigned int count, max;
|
||||
|
||||
newUID = [self globallyUniqueObjectId];
|
||||
elements = [calendar allObjects];
|
||||
max = [elements count];
|
||||
for (count = 0; count < max; count++)
|
||||
[[elements objectAtIndex: count] setUid: newUID];
|
||||
}
|
||||
else
|
||||
{
|
||||
newUID = [[[calendar allObjects] objectAtIndex: 0] uid];
|
||||
}
|
||||
|
||||
newComponent = [[self class] objectWithName:
|
||||
[NSString stringWithFormat: @"%@.ics", newUID]
|
||||
inContainer: newFolder];
|
||||
|
||||
return [newComponent saveCalendar: calendar];
|
||||
}
|
||||
|
||||
- (NSException *) copyToFolder: (SOGoGCSFolder *) newFolder
|
||||
{
|
||||
return [self copyComponent: [self calendar: NO secure: NO]
|
||||
@@ -1217,51 +1245,21 @@
|
||||
- (NSException *) copyComponent: (iCalCalendar *) calendar
|
||||
toFolder: (SOGoGCSFolder *) newFolder
|
||||
{
|
||||
NSArray *elements;
|
||||
NSString *newUID;
|
||||
unsigned int count, max;
|
||||
SOGoCalendarComponent *newComponent;
|
||||
|
||||
newUID = [self globallyUniqueObjectId];
|
||||
elements = [calendar allObjects];
|
||||
max = [elements count];
|
||||
for (count = 0; count < max; count++)
|
||||
[[elements objectAtIndex: count] setUid: newUID];
|
||||
|
||||
newComponent = [[self class] objectWithName:
|
||||
[NSString stringWithFormat: @"%@.ics", newUID]
|
||||
inContainer: newFolder];
|
||||
|
||||
return [newComponent saveCalendar: calendar];
|
||||
return [self _copyComponent: calendar
|
||||
toFolder: newFolder
|
||||
updateUID: YES];
|
||||
}
|
||||
|
||||
- (NSException *) moveToFolder: (SOGoGCSFolder *) newFolder
|
||||
{
|
||||
SOGoCalendarComponent *newComponent;
|
||||
NSException *ex;
|
||||
id o;
|
||||
|
||||
// Lookup to see if the event exists in the target calendar. During a MOVE, we do
|
||||
// keep the ID of the event intact.
|
||||
o = [newFolder lookupName: [self nameInContainer]
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
ex = [self _copyComponent: [self calendar: NO secure: NO]
|
||||
toFolder: newFolder
|
||||
updateUID: NO];
|
||||
|
||||
if ([o isKindOfClass: [NSException class]])
|
||||
{
|
||||
newComponent = [[self class] objectWithName: [self nameInContainer]
|
||||
inContainer: newFolder];
|
||||
|
||||
ex = [newComponent saveCalendar: [self calendar: NO secure: NO]];
|
||||
|
||||
if (!ex)
|
||||
ex = [self delete];
|
||||
}
|
||||
else
|
||||
{
|
||||
ex = [NSException exceptionWithHTTPStatus: 409
|
||||
reason: @"Target exists - MOVE disallowed."];
|
||||
}
|
||||
if (!ex)
|
||||
ex = [self delete];
|
||||
|
||||
return ex;
|
||||
}
|
||||
|
||||
@@ -317,6 +317,7 @@
|
||||
to: (NSCalendarDate *) endDate
|
||||
{
|
||||
SOGoAppointmentFolder *calFolder;
|
||||
SOGoAppointmentFolders *calFolders;
|
||||
SOGoUser *user;
|
||||
SOGoUserDefaults *ud;
|
||||
NSArray *folders;
|
||||
@@ -326,9 +327,12 @@
|
||||
|
||||
infos = [NSMutableArray array];
|
||||
|
||||
folders = [[container lookupName: @"Calendar"
|
||||
inContext: context
|
||||
acquire: NO] subFolders];
|
||||
calFolders = [container lookupName: @"Calendar"
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
[calFolders appendSubscribedSources];
|
||||
folders = [calFolders subFolders];
|
||||
|
||||
max = [folders count];
|
||||
for (count = 0; count < max; count++)
|
||||
{
|
||||
|
||||
@@ -11,33 +11,37 @@ vtodo_class2 = "(Gizli görev)";
|
||||
"The event \"%{Summary}\" was created" = "\"%{Summary}\" etkinliği oluşturuldu";
|
||||
"The event \"%{Summary}\" was deleted" = "\"%{Summary}\" etkinliği silindi";
|
||||
"The event \"%{Summary}\" was updated" = "\"%{Summary}\" etkinliği güncellendi";
|
||||
"The following attendees(s) were notified" = "Şu katılımcı(lar) haberdar edilidi";
|
||||
"The following attendees(s) were notified" = "Şu katılımcı(lar) bilgilendirildi";
|
||||
"The following attendees(s) were added" = "Şu katılımcılar eklendi";
|
||||
"The following attendees(s) were removed" = "Şu katılımcılar çıkarıldı";
|
||||
/* IMIP messages */
|
||||
"calendar_label" = "Takvim";
|
||||
"startDate_label" = "Başlangıç";
|
||||
"endDate_label" = "Bitiş";
|
||||
"time_label" = "Saat";
|
||||
"to_label" = "alıcı";
|
||||
"due_label" = "Kapanış Tarihi";
|
||||
"location_label" = "Konum";
|
||||
"summary_label" = "Özet";
|
||||
"comment_label" = "Açıklama";
|
||||
"organizer_label" = "Düzenleyen";
|
||||
"attendee_label" = "Katılımcı";
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Etkinlik Daveti: \"%{Summary}\"";
|
||||
"(sent by %{SentBy}) " = "(%{SentBy} tarafından gönderilidi) ";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "%{Organizer} %{SentByText}sizi %{Summary} etkinliğine davet etti.\n\nBaşlangıç: %{StartDate}\nBitiş: %{EndDate}\nTanım: %{Description}";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}sizi %{Summary} etkinliğine davet etti.\n\nBaşlangıç: %{StartDate} saat %{StartTime}\nBitiş: %{EndDate} saat %{EndTime}\nTanım: %{Description}";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText} sizi %{Summary} etkinliğine davet etti.\n\nBaşlangıç Tarihi: %{StartDate} saat %{StartTime}\nBitiş Tarihi: %{EndDate} saat %{EndTime}\nAçıklama: %{Description}";
|
||||
/* Deletion */
|
||||
"Event Cancelled: \"%{Summary}\"" = "Etkinlik İptal Edildi: \"%{Summary}\"";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText}şu etkiliği iptal etti: %{Summary}.\n\nBaşlangıç: %{StartDate}\nBitiş: %{EndDate}\nTanım: %{Description}";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText}şu etkinliği iptal etti: %{Summary}.\n\nBaşlangıç: %{StartDate} saat %{StartTime}\nBitiş: %{EndDate} saat %{EndTime}\nTanım: %{Description}";
|
||||
= "%{Organizer} %{SentByText} %{Summary} etkinliğini iptal etti.\n\nBaşlangıç Tarihi: %{StartDate} saat %{StartTime}\nBitiş Tarihi: %{EndDate} saat %{EndTime}\nAçıklama: %{Description}";
|
||||
/* Update */
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} has changed"
|
||||
= "%{OldStartDate} tarihindeki \"%{Summary}\" çalışması değişti";
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"
|
||||
= " %{OldStartDate} tarihli ve %{OldStartTime} başlangıç saatli \"%{Summary}\" çalışması değişti";
|
||||
= " %{OldStartDate} tarihli ve %{OldStartTime} başlangıç saatli \"%{Summary}\" çalışması değiştirildi";
|
||||
"The following parameters have changed in the \"%{Summary}\" meeting:"
|
||||
= "\"%{Summary}\" buluşmasının şu özellikleri değişti:";
|
||||
"Please accept or decline those changes."
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
"Personal Address Book" = "Personiskā adrešu grāmata";
|
||||
"Collected Address Book" = "Savāktā adrešu grāmata";
|
||||
@@ -1,6 +1,6 @@
|
||||
/* NGVCard+SOGo.h - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2009-2014 Inverse inc.
|
||||
* Copyright (C) 2009-2017 Inverse inc.
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -45,6 +45,10 @@
|
||||
- (NSString *) pager;
|
||||
- (NSCalendarDate *) birthday;
|
||||
|
||||
- (void) addElementWithTag: (NSString *) elementTag
|
||||
ofType: (NSString *) type
|
||||
withValue: (id) value;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* NGVCARD_SOGO_H */
|
||||
|
||||
@@ -217,9 +217,9 @@ convention:
|
||||
- (void) updateFromLDIFRecord: (NSDictionary *) ldifRecord
|
||||
{
|
||||
NSInteger year, yearOfToday, month, day;
|
||||
NSArray *units, *elements;
|
||||
CardElement *element;
|
||||
NSCalendarDate *now;
|
||||
NSArray *units;
|
||||
NSString *fn, *ou;
|
||||
id o;
|
||||
|
||||
@@ -320,6 +320,43 @@ convention:
|
||||
else
|
||||
[self setCategories: [o componentsSeparatedByString: @","]];
|
||||
|
||||
// Custom fields from Thunderbird
|
||||
if ((o = [ldifRecord objectForKey: @"custom1"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom1"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom1" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
if ((o = [ldifRecord objectForKey: @"custom2"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom2"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom2" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
if ((o = [ldifRecord objectForKey: @"custom3"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom3"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom3" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
if ((o = [ldifRecord objectForKey: @"custom4"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom4"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom4" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
[self cleanupEmptyChildren];
|
||||
}
|
||||
|
||||
@@ -646,6 +683,19 @@ convention:
|
||||
dn = @"";
|
||||
[ldifRecord setObject: dn forKey: @"dn"];
|
||||
|
||||
// Custom fields from Thunderbird
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom1"];
|
||||
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom2"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom2"];
|
||||
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom3"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom3"];
|
||||
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom4"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom4"];
|
||||
|
||||
return ldifRecord;
|
||||
}
|
||||
|
||||
@@ -871,4 +921,33 @@ convention:
|
||||
return fields;
|
||||
}
|
||||
|
||||
- (void) addElementWithTag: (NSString *) elementTag
|
||||
ofType: (NSString *) type
|
||||
withValue: (id) value
|
||||
{
|
||||
NSArray *allValues;
|
||||
NSEnumerator *list;
|
||||
CardElement *element;
|
||||
|
||||
// value is either an array or a string
|
||||
if ([value isKindOfClass: [NSString class]])
|
||||
allValues = [NSArray arrayWithObject: value];
|
||||
else
|
||||
allValues = value;
|
||||
|
||||
// Add all values as separate elements
|
||||
list = [allValues objectEnumerator];
|
||||
while ((value = [list nextObject]))
|
||||
{
|
||||
if ([type length])
|
||||
element = [CardElement simpleElementWithTag: elementTag
|
||||
singleType: type
|
||||
value: value];
|
||||
else
|
||||
element = [CardElement simpleElementWithTag: elementTag
|
||||
value: value];
|
||||
[self addChild: element];
|
||||
}
|
||||
}
|
||||
|
||||
@end /* NGVCard */
|
||||
|
||||
@@ -77,6 +77,8 @@ Mailer_RESOURCE_FILES += \
|
||||
SOGoMailIcelandicReply.wo \
|
||||
SOGoMailItalianForward.wo \
|
||||
SOGoMailItalianReply.wo \
|
||||
SOGoMailLatvianForward.wo \
|
||||
SOGoMailLatvianReply.wo \
|
||||
SOGoMailLithuanianForward.wo \
|
||||
SOGoMailLithuanianReply.wo \
|
||||
SOGoMailMacedonianForward.wo \
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
"OtherUsersFolderName" = "Citi lietotāji";
|
||||
"SharedFoldersName" = "Koplietotās mapes";
|
||||
@@ -999,13 +999,20 @@ static NSString *inboxFolderName = @"INBOX";
|
||||
|
||||
- (void) _setDelegates: (NSArray *) newDelegates
|
||||
{
|
||||
NSMutableDictionary *mailSettings;
|
||||
SOGoUser *ownerUser;
|
||||
SOGoUserSettings *settings;
|
||||
|
||||
ownerUser = [SOGoUser userWithLogin: [self ownerInContext: context]];
|
||||
settings = [ownerUser userSettings];
|
||||
[[settings objectForKey: @"Mail"] setObject: newDelegates
|
||||
forKey: @"DelegateTo"];
|
||||
mailSettings = [settings objectForKey: @"Mail"];
|
||||
if (!mailSettings)
|
||||
{
|
||||
mailSettings = [NSMutableDictionary dictionaryWithCapacity: 1];
|
||||
[settings setObject: mailSettings forKey: @"Mail"];
|
||||
}
|
||||
[mailSettings setObject: newDelegates
|
||||
forKey: @"DelegateTo"];
|
||||
[settings synchronize];
|
||||
}
|
||||
|
||||
@@ -1052,11 +1059,9 @@ static NSString *inboxFolderName = @"INBOX";
|
||||
{
|
||||
currentDelegate = [oldDelegates objectAtIndex: count];
|
||||
delegateUser = [SOGoUser userWithLogin: currentDelegate];
|
||||
[delegates removeObject: currentDelegate];
|
||||
if (delegateUser)
|
||||
{
|
||||
[delegates removeObject: currentDelegate];
|
||||
[delegateUser removeMailDelegator: owner];
|
||||
}
|
||||
[delegateUser removeMailDelegator: owner];
|
||||
}
|
||||
|
||||
[self _setDelegates: delegates];
|
||||
|
||||
@@ -88,6 +88,9 @@
|
||||
@interface SOGoMailItalianForward : SOGoMailForward
|
||||
@end
|
||||
|
||||
@interface SOGoMailLatvianForward : SOGoMailForward
|
||||
@end
|
||||
|
||||
@interface SOGoMailLithuanianForward : SOGoMailForward
|
||||
@end
|
||||
|
||||
|
||||
@@ -299,6 +299,9 @@
|
||||
@implementation SOGoMailItalianForward
|
||||
@end
|
||||
|
||||
@implementation SOGoMailLatvianForward
|
||||
@end
|
||||
|
||||
@implementation SOGoMailLithuanianForward
|
||||
@end
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<#newLine/>
|
||||
<#newLine/>
|
||||
<#signaturePlacementOnTop><#newLine/>
|
||||
<#signature/><#newLine/></#signaturePlacementOnTop>
|
||||
-------- Sākotnējais ziņojums --------<#newLine/>
|
||||
Temats: <#subject/><#newLine/>
|
||||
Datums: <#date/><#newLine/>
|
||||
No: <#from/><#newLine/>
|
||||
<#hasReplyTo>Atbildēt uz: <#replyTo/></#hasReplyTo><#hasOrganization>Organizācija: <#organization/></#hasOrganization>Kam: <#to/><#newLine/>
|
||||
<#hasCc>Kopija: <#cc/></#hasCc><#hasNewsGroups>Intereškopas: <#newsgroups/></#hasNewsGroups><#hasReferences>Atsauces: <#references/></#hasReferences><#newLine/>
|
||||
<#newLine/>
|
||||
<#messageBody/><#newLine/>
|
||||
<#signaturePlacementOnBottom><#newLine/>
|
||||
<#newLine/>
|
||||
<#signature/></#signaturePlacementOnBottom>
|
||||
<#newLine/>
|
||||
@@ -0,0 +1,88 @@
|
||||
subject: WOString {
|
||||
value = subject;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
date: WOString {
|
||||
value = date;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
from: WOString {
|
||||
value = from;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
newLine: WOString {
|
||||
value = newLine;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasReplyTo: WOConditional {
|
||||
condition = hasReplyTo;
|
||||
}
|
||||
|
||||
replyTo: WOString {
|
||||
value = replyTo;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasOrganization: WOConditional {
|
||||
condition = hasOrganization;
|
||||
}
|
||||
|
||||
organization: WOString {
|
||||
value = organization;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
to: WOString {
|
||||
value = to;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasCc: WOConditional {
|
||||
condition = hasCc;
|
||||
}
|
||||
|
||||
cc: WOString {
|
||||
value = cc;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasNewsGroups: WOConditional {
|
||||
condition = hasNewsGroups;
|
||||
}
|
||||
|
||||
newsgroups: WOString {
|
||||
value = newsgroups;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasReferences: WOConditional {
|
||||
condition = hasReferences;
|
||||
}
|
||||
|
||||
references: WOString {
|
||||
value = references;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
messageBody: WOString {
|
||||
value = messageBody;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
signature: WOString {
|
||||
value = signature;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
signaturePlacementOnTop: WOConditional {
|
||||
condition = signaturePlacementOnTop;
|
||||
}
|
||||
|
||||
signaturePlacementOnBottom: WOConditional {
|
||||
condition = signaturePlacementOnTop;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<#replyPlacementOnTop><#newLine/>
|
||||
<#newLine/>
|
||||
</#replyPlacementOnTop><#signaturePlacementOnTop><#newLine/>
|
||||
<#signature/><#newLine/>
|
||||
</#signaturePlacementOnTop><#outlookMode>-------- Sākotnējais ziņojums --------<#newLine/>
|
||||
Temats: <#subject/><#newLine/>
|
||||
Datums: <#date/><#newLine/>
|
||||
No: <#from/><#newLine/>
|
||||
<#hasReplyTo>Atbildēt uz: <#replyTo/></#hasReplyTo><#hasOrganization>Organizācija: <#organization/></#hasOrganization>Kam: <#to/><#newLine/>
|
||||
<#hasCc>Kopija: <#cc/></#hasCc><#hasNewsGroups>Intereškopas: <#newsgroups/></#hasNewsGroups><#hasReferences>Atsauces: <#references/></#hasReferences></#outlookMode><#newLine/>
|
||||
<#standardMode><#date/>, <#from/> rakstīja:</#standardMode><#newLine/>
|
||||
<#newLine/>
|
||||
<#messageBody/><#newLine/>
|
||||
<#replyPlacementOnBottom><#newLine/>
|
||||
<#newLine/>
|
||||
</#replyPlacementOnBottom><#signaturePlacementOnBottom><#signature/></#signaturePlacementOnBottom><#newLine/>
|
||||
@@ -0,0 +1,106 @@
|
||||
outlookMode: WOConditional {
|
||||
condition = outlookMode;
|
||||
}
|
||||
|
||||
standardMode: WOConditional {
|
||||
condition = outlookMode;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
subject: WOString {
|
||||
value = subject;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
date: WOString {
|
||||
value = date;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
from: WOString {
|
||||
value = from;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
newLine: WOString {
|
||||
value = newLine;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasReplyTo: WOConditional {
|
||||
condition = hasReplyTo;
|
||||
}
|
||||
|
||||
replyTo: WOString {
|
||||
value = replyTo;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasOrganization: WOConditional {
|
||||
condition = hasOrganization;
|
||||
}
|
||||
|
||||
organization: WOString {
|
||||
value = organization;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
to: WOString {
|
||||
value = to;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasCc: WOConditional {
|
||||
condition = hasCc;
|
||||
}
|
||||
|
||||
cc: WOString {
|
||||
value = cc;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasNewsGroups: WOConditional {
|
||||
condition = hasNewsGroups;
|
||||
}
|
||||
|
||||
newsgroups: WOString {
|
||||
value = newsgroups;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
hasReferences: WOConditional {
|
||||
condition = hasReferences;
|
||||
}
|
||||
|
||||
references: WOString {
|
||||
value = references;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
messageBody: WOString {
|
||||
value = messageBody;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
signature: WOString {
|
||||
value = signature;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
replyPlacementOnTop: WOConditional {
|
||||
condition = replyPlacementOnTop;
|
||||
}
|
||||
|
||||
replyPlacementOnBottom: WOConditional {
|
||||
condition = replyPlacementOnTop;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
signaturePlacementOnTop: WOConditional {
|
||||
condition = signaturePlacementOnTop;
|
||||
}
|
||||
|
||||
signaturePlacementOnBottom: WOConditional {
|
||||
condition = signaturePlacementOnTop;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -87,6 +87,9 @@
|
||||
@interface SOGoMailItalianReply : SOGoMailReply
|
||||
@end
|
||||
|
||||
@interface SOGoMailLatvianReply : SOGoMailReply
|
||||
@end
|
||||
|
||||
@interface SOGoMailLithuanianReply : SOGoMailReply
|
||||
@end
|
||||
|
||||
|
||||
@@ -135,6 +135,9 @@
|
||||
@implementation SOGoMailItalianReply
|
||||
@end
|
||||
|
||||
@implementation SOGoMailLatvianReply
|
||||
@end
|
||||
|
||||
@implementation SOGoMailLithuanianReply
|
||||
@end
|
||||
|
||||
|
||||
@@ -75,11 +75,18 @@
|
||||
|
||||
- (void) _setMailDelegators: (NSArray *) newDelegators
|
||||
{
|
||||
NSMutableDictionary *mailSettings;
|
||||
SOGoUserSettings *settings;
|
||||
|
||||
settings = [self userSettings];
|
||||
[[settings objectForKey: @"Mail"] setObject: newDelegators
|
||||
forKey: @"DelegateFrom"];
|
||||
mailSettings = [settings objectForKey: @"Mail"];
|
||||
if (!mailSettings)
|
||||
{
|
||||
mailSettings = [NSMutableDictionary dictionaryWithCapacity: 1];
|
||||
[settings setObject: mailSettings forKey: @"Mail"];
|
||||
}
|
||||
[mailSettings setObject: newDelegators
|
||||
forKey: @"DelegateFrom"];
|
||||
[settings synchronize];
|
||||
}
|
||||
|
||||
|
||||
@@ -606,6 +606,13 @@ groupObjectClasses: (NSArray *) newGroupObjectClasses
|
||||
return nil;
|
||||
}
|
||||
|
||||
if ([_userPasswordAlgorithm caseInsensitiveCompare: @"md5-crypt"] == NSOrderedSame ||
|
||||
[_userPasswordAlgorithm caseInsensitiveCompare: @"sha256-crypt"] == NSOrderedSame ||
|
||||
[_userPasswordAlgorithm caseInsensitiveCompare: @"sha512-crypt"] == NSOrderedSame)
|
||||
{
|
||||
_userPasswordAlgorithm = @"crypt";
|
||||
}
|
||||
|
||||
return [NSString stringWithFormat: @"{%@}%@", _userPasswordAlgorithm, pass];
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
SOGoEnableDomainBasedUID = NO;
|
||||
|
||||
SOGoLoginModule = "Mail";
|
||||
WODefaultLanguages = ();
|
||||
SOGoLanguage = "English";
|
||||
SOGoSupportedLanguages = (
|
||||
"Arabic",
|
||||
@@ -57,6 +58,7 @@
|
||||
"Hungarian",
|
||||
"Icelandic",
|
||||
"Italian",
|
||||
"Latvian",
|
||||
"Lithuanian",
|
||||
"Macedonian",
|
||||
"NorwegianBokmal",
|
||||
|
||||
@@ -388,7 +388,9 @@ static NSArray *childRecordFields = nil;
|
||||
dd = [[context activeUser] domainDefaults];
|
||||
displayNameFormat = [dd subscriptionFolderFormat];
|
||||
|
||||
name = [folderSubscriptionValues keysWithFormat: displayNameFormat];
|
||||
// Use a format only if it was defined by the user
|
||||
if (displayNameFormat)
|
||||
name = [folderSubscriptionValues keysWithFormat: displayNameFormat];
|
||||
}
|
||||
|
||||
return name;
|
||||
@@ -968,8 +970,12 @@ static NSArray *childRecordFields = nil;
|
||||
|
||||
folderSubscription = [moduleSettings objectForKey: @"SubscribedFolders"];
|
||||
subscriptionPointer = [self folderReference];
|
||||
|
||||
|
||||
// We used to set "show alarms" for any type of folder, so we remove it
|
||||
// here and let the subclass handle it (SOGoAppointmentFolder).
|
||||
folderShowAlarms = [moduleSettings objectForKey: @"FolderShowAlarms"];
|
||||
if (folderShowAlarms)
|
||||
[folderShowAlarms removeObjectForKey: subscriptionPointer];
|
||||
|
||||
if (reallyDo)
|
||||
{
|
||||
@@ -981,30 +987,17 @@ static NSArray *childRecordFields = nil;
|
||||
forKey: @"SubscribedFolders"];
|
||||
}
|
||||
|
||||
if (!(folderShowAlarms
|
||||
&& [folderShowAlarms isKindOfClass: [NSMutableDictionary class]]))
|
||||
{
|
||||
folderShowAlarms = [NSMutableDictionary dictionary];
|
||||
[moduleSettings setObject: folderShowAlarms
|
||||
forKey: @"FolderShowAlarms"];
|
||||
}
|
||||
|
||||
[self setFolderPropertyValue: [self _displayNameFromSubscriber]
|
||||
inCategory: @"FolderDisplayNames"
|
||||
settings: us];
|
||||
|
||||
[folderSubscription addObjectUniquely: subscriptionPointer];
|
||||
|
||||
// By default, we disable alarms on subscribed calendars
|
||||
[folderShowAlarms setObject: [NSNumber numberWithBool: NO]
|
||||
forKey: subscriptionPointer];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self removeFolderSettings: moduleSettings
|
||||
withReference: subscriptionPointer];
|
||||
[folderSubscription removeObject: subscriptionPointer];
|
||||
[folderShowAlarms removeObjectForKey: subscriptionPointer];
|
||||
}
|
||||
|
||||
[us synchronize];
|
||||
|
||||
@@ -369,9 +369,13 @@
|
||||
|
||||
// It does not, let's search in the entire headers
|
||||
if (r1.location == NSNotFound)
|
||||
r1 = [cleaned_message rangeOfCString: "\r\nBcc: "
|
||||
options: 0
|
||||
range: NSMakeRange(0,limit)];
|
||||
{
|
||||
r1 = [cleaned_message rangeOfCString: "\r\nBcc: "
|
||||
options: 0
|
||||
range: NSMakeRange(0,limit)];
|
||||
if (r1.location != NSNotFound)
|
||||
r1.location += 2;
|
||||
}
|
||||
|
||||
if (r1.location != NSNotFound)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SOGoParentFolder.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2006-2015 Inverse inc.
|
||||
* Copyright (C) 2006-2017 Inverse inc.
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -323,6 +323,12 @@ static SoSecurityManager *sm = nil;
|
||||
int i;
|
||||
BOOL dirty;
|
||||
|
||||
if (!subscribedSubFolders)
|
||||
subscribedSubFolders = [NSMutableDictionary new];
|
||||
|
||||
if (!subFolderClass)
|
||||
subFolderClass = [[self class] subFolderClass];
|
||||
|
||||
error = nil; /* we ignore non-DB errors at this time... */
|
||||
dirty = NO;
|
||||
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
- (int) internalSyncInterval;
|
||||
- (int) maximumSyncWindowSize;
|
||||
- (int) maximumSyncResponseSize;
|
||||
- (int) maximumPictureSize;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -699,4 +699,19 @@ _injectConfigurationFromFile (NSMutableDictionary *defaultsDict,
|
||||
return v;
|
||||
}
|
||||
|
||||
//
|
||||
// See https://msdn.microsoft.com/en-us/library/gg672032(v=exchg.80).aspx
|
||||
//
|
||||
- (int) maximumPictureSize
|
||||
{
|
||||
int v;
|
||||
|
||||
v = [self integerForKey: @"SOGoMaximumPictureSize"];
|
||||
|
||||
if (!v)
|
||||
v = 102400;
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -197,6 +197,13 @@
|
||||
return nil;
|
||||
}
|
||||
|
||||
if ([_userPasswordAlgorithm caseInsensitiveCompare: @"md5-crypt"] == NSOrderedSame ||
|
||||
[_userPasswordAlgorithm caseInsensitiveCompare: @"sha256-crypt"] == NSOrderedSame ||
|
||||
[_userPasswordAlgorithm caseInsensitiveCompare: @"sha512-crypt"] == NSOrderedSame)
|
||||
{
|
||||
_userPasswordAlgorithm = @"crypt";
|
||||
}
|
||||
|
||||
if (_prependPasswordScheme)
|
||||
result = [NSString stringWithFormat: @"{%@}%@", _userPasswordAlgorithm, pass];
|
||||
else
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#import <NGObjWeb/WOSession.h>
|
||||
|
||||
#import "SOGoDomainDefaults.h"
|
||||
#import "SOGoSystemDefaults.h"
|
||||
#import "SOGoUser.h"
|
||||
#import "SOGoUserDefaults.h"
|
||||
|
||||
@@ -36,34 +37,43 @@
|
||||
- (NSArray *) resourceLookupLanguages
|
||||
{
|
||||
NSMutableArray *languages;
|
||||
NSArray *browserLanguages;
|
||||
NSArray *browserLanguages, *supportedLanguages;
|
||||
SOGoSystemDefaults *sd;
|
||||
SOGoUser *user;
|
||||
NSString *language;
|
||||
|
||||
languages = [NSMutableArray array];
|
||||
user = [self activeUser];
|
||||
|
||||
// Retrieve language parameter
|
||||
language = [[self request] formValueForKey: @"language"];
|
||||
if ([language length] > 0)
|
||||
[languages addObject: language];
|
||||
|
||||
if (!user || [[user login] isEqualToString: @"anonymous"])
|
||||
{
|
||||
// Use browser's languages
|
||||
browserLanguages = [[self request] browserLanguages];
|
||||
[languages addObjectsFromArray: browserLanguages];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use user's language or domain's language
|
||||
language = [[user userDefaults] language];
|
||||
[languages addObject: language];
|
||||
language = [[user domainDefaults] language];
|
||||
[languages addObject: language];
|
||||
}
|
||||
|
||||
// if (activeUser && [activeUser language])
|
||||
// [languages addObject: [activeUser language]];
|
||||
|
||||
// if ([self hasSession])
|
||||
// [languages addObjectsFromArray: [[self session] languages]];
|
||||
// else
|
||||
// [languages addObjectsFromArray: [[self request] browserLanguages]];
|
||||
// Return the first language matching a supported language or the SOGoLanguage
|
||||
// default if none is matching.
|
||||
sd = [SOGoSystemDefaults sharedSystemDefaults];
|
||||
supportedLanguages = [sd supportedLanguages];
|
||||
language = [languages firstObjectCommonWithArray: supportedLanguages];
|
||||
if (!(language && [language isKindOfClass: [NSString class]]))
|
||||
language = [sd stringForKey: @"SOGoLanguage"];
|
||||
|
||||
return languages;
|
||||
return [NSArray arrayWithObject: language];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -12,7 +12,7 @@ import sogoLogin
|
||||
# this should probably be fetched magically...
|
||||
SOGoSupportedLanguages = [ "Arabic", "Basque", "Catalan", "ChineseTaiwan", "Croatian", "Czech", "Dutch", "Danish", "Welsh", "English", "Finnish",
|
||||
"SpanishSpain", "SpanishArgentina", "French", "German", "Hebrew",
|
||||
"Icelandic", "Italian", "Lithuanian", "Macedonian", "Hungarian", "Portuguese", "BrazilianPortuguese",
|
||||
"Icelandic", "Italian", "Latvian", "Lithuanian", "Macedonian", "Hungarian", "Portuguese", "BrazilianPortuguese",
|
||||
"NorwegianBokmal", "NorwegianNynorsk", "Polish", "Russian", "Serbian", "Slovak",
|
||||
"Slovenian", "Swedish", "TurkishTurkey", "Ukrainian" ];
|
||||
daysBetweenResponseList=[1,2,3,5,7,14,21,30]
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
|
||||
- (NSString *) processDefaults: (BOOL)allDefaults
|
||||
{
|
||||
NSUserDefaults *ud;
|
||||
NSDictionary *defaultsDict;
|
||||
NSUserDefaults *ud;
|
||||
NSData *plistData;
|
||||
|
||||
ud = [NSUserDefaults standardUserDefaults];
|
||||
@@ -83,6 +83,9 @@
|
||||
defaultsDict = [ud persistentDomainForName: @"sogod"];
|
||||
}
|
||||
|
||||
if (!defaultsDict)
|
||||
return @"No defaults found. Try to use -f.";
|
||||
|
||||
plistData = [NSPropertyListSerialization dataFromPropertyList: (id) defaultsDict
|
||||
format: NSPropertyListOpenStepFormat
|
||||
errorDescription: 0 ];
|
||||
|
||||
+50
-11
@@ -35,12 +35,17 @@
|
||||
#import <SOGo/SOGoUserManager.h>
|
||||
#import <SOGo/NSArray+Utilities.h>
|
||||
#import <SOGo/NSString+Utilities.h>
|
||||
#import <SOGo/SOGoGCSFolder.h>
|
||||
#import <SOGo/SOGoParentFolder.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
#import <SOGo/SOGoUserFolder.h>
|
||||
#import <SOGo/SOGoSystemDefaults.h>
|
||||
|
||||
#import <NGCards/iCalCalendar.h>
|
||||
#import <NGCards/NGVCard.h>
|
||||
|
||||
#import <NGObjWeb/WOContext+SoObjects.h>
|
||||
|
||||
#import "SOGoTool.h"
|
||||
|
||||
typedef enum
|
||||
@@ -49,6 +54,8 @@ typedef enum
|
||||
ManageACLGet = 0,
|
||||
ManageACLAdd = 1,
|
||||
ManageACLRemove = 2,
|
||||
ManageACLSubscribe = 3,
|
||||
ManageACLUnsubscribe = 3,
|
||||
} SOGoManageACLCommand;
|
||||
|
||||
@interface SOGoToolManageACL : SOGoTool
|
||||
@@ -99,14 +106,16 @@ typedef enum
|
||||
|
||||
- (void) usage
|
||||
{
|
||||
fprintf (stderr, "manage-acl get|add|remove owner folder user <rights>\n\n"
|
||||
" get get ACL information of folder for user\n"
|
||||
" add add ACL information of folder for user\n"
|
||||
" remove remove all ACL information of folder for user\n"
|
||||
" owner the user owning the folder\n"
|
||||
" folder the folder - Calendar/<ID> or Contacst/<ID>\n"
|
||||
" user the user to get/set rights for - 'ALL', '<default>', 'anonymous' are supported\n"
|
||||
" rights rights to add\n\n"
|
||||
fprintf (stderr, "manage-acl get|add|remove|subscribe|unsubscribe owner folder user <rights>\n\n"
|
||||
" get get ACL information of folder for user\n"
|
||||
" add add ACL information of folder for user\n"
|
||||
" remove remove all ACL information of folder for user\n"
|
||||
" subscribe subscribe user to owner's folder\n"
|
||||
" unsubscribe unsubscribe user to owner's folder\n"
|
||||
" owner the user owning the folder\n"
|
||||
" folder the folder - Calendar/<ID> or Contacst/<ID>\n"
|
||||
" user the user to get/set rights for - 'ALL', '<default>', 'anonymous' are supported\n"
|
||||
" rights rights to add\n\n"
|
||||
"Example: sogo-tool manage-acl get jdoe Calendar/personal\n\n"
|
||||
"Note: You can add only one access right at the time. To set them all at once,\n"
|
||||
" invoke 'remove' first to remove them all.\n\n");
|
||||
@@ -131,6 +140,10 @@ typedef enum
|
||||
}
|
||||
else if ([s isEqualToString: @"remove"])
|
||||
command = ManageACLRemove;
|
||||
else if ([s isEqualToString: @"subscribe"])
|
||||
command = ManageACLSubscribe;
|
||||
else if ([s isEqualToString: @"unsubscribe"])
|
||||
command = ManageACLUnsubscribe;
|
||||
else
|
||||
{
|
||||
[self usage];
|
||||
@@ -349,9 +362,7 @@ typedef enum
|
||||
if ([theUser isEqualToString: @"ALL"])
|
||||
qs = [NSString stringWithFormat: @"c_uid LIKE '\%'", theUser];
|
||||
else
|
||||
{
|
||||
qs = [NSString stringWithFormat: @"c_uid = '%@'", theUser];
|
||||
}
|
||||
qs = [NSString stringWithFormat: @"c_uid = '%@'", theUser];
|
||||
|
||||
qualifier = [EOQualifier qualifierWithQualifierFormat: qs];
|
||||
|
||||
@@ -363,6 +374,30 @@ typedef enum
|
||||
forPath: path];
|
||||
}
|
||||
|
||||
- (void) subscribeOrUnsubscribeUser: (NSString *) theUser
|
||||
toFolder: (GCSFolder *) theFolder
|
||||
reallyDo: (BOOL) reallyDo
|
||||
{
|
||||
SOGoParentFolder *parentFolder;
|
||||
SOGoUserFolder *userFolder;
|
||||
SOGoGCSFolder *gcsFolder;
|
||||
WOContext *localContext;
|
||||
NSArray *components;
|
||||
|
||||
localContext = [WOContext context];
|
||||
[localContext setActiveUser: [SOGoUser userWithLogin: owner]];
|
||||
userFolder = [SOGoUserFolder objectWithName: owner inContainer: nil];
|
||||
components = [folder componentsSeparatedByString: @"/"];
|
||||
parentFolder = [userFolder lookupName: [components objectAtIndex: 0]
|
||||
inContext: localContext
|
||||
acquire: NO];
|
||||
|
||||
gcsFolder = [parentFolder lookupPersonalFolder: [components objectAtIndex: 1]
|
||||
ignoringRights: YES];
|
||||
|
||||
[gcsFolder subscribeUserOrGroup: user reallyDo: reallyDo response: nil];
|
||||
}
|
||||
|
||||
- (BOOL) proceed
|
||||
{
|
||||
NSAutoreleasePool *pool;
|
||||
@@ -391,6 +426,10 @@ typedef enum
|
||||
[self removeACLForUser: user folder: f];
|
||||
else if (command == ManageACLAdd)
|
||||
[self addACLForUser: user folder: f];
|
||||
else if (command == ManageACLSubscribe)
|
||||
[self subscribeOrUnsubscribeUser: user toFolder: f reallyDo: YES];
|
||||
else if (command == ManageACLUnsubscribe)
|
||||
[self subscribeOrUnsubscribeUser: user toFolder: f reallyDo: NO];
|
||||
else
|
||||
[self usage];
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ NSURL *folderTableURL;
|
||||
|
||||
- (void) usage
|
||||
{
|
||||
fprintf (stderr, "manage-eas listdevices|resetdevice|resetfolder|mergevcard|mergevevent user <devinceId | folderId> <YES | NO>\n\n"
|
||||
fprintf (stderr, "manage-eas listdevices|resetdevice|resetfolder|mergevcard|mergevevent user <deviceId | folderId> <YES | NO>\n\n"
|
||||
" user the user of whom to reset the whole device or a single folder\n"
|
||||
" Examples:\n"
|
||||
" sogo-tool manage-eas listdevices janedoe\n"
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
- (void) usage
|
||||
{
|
||||
fprintf (stderr, "Usage: truncate-calendar USER FOLDER DATE\n\n"
|
||||
" USER the owner of the contact folder\n"
|
||||
" USER the owner of the calendar folder\n"
|
||||
" FOLDER the id of the folder to clean up\n"
|
||||
" DATE UTC datetime - non-recurring events older than this date will be removed (ex: \"2016-06-27T17:38:56\")\n\n");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/* this file is in UTF-8 format! */
|
||||
|
||||
"Help" = "Palīdzība";
|
||||
"Close" = "Aizvērt";
|
||||
"Modules" = "Moduļi";
|
||||
/* Modules short names */
|
||||
"ACLs" = "ACLs";
|
||||
/* Modules titles */
|
||||
"ACLs_title" = "Lietotāju mapes ACLs pārvaldība";
|
||||
/* Modules descriptions */
|
||||
"ACLs_description" = "<p>Access Control Lists administrēšanas modulis ļauj mainīt ACL lietotāja kalendāru un adrešu grāmatu.</p> <p>Lai modificētu ACL lietotāja mapi ierakstiet lietotāja vārdu meklēšanas laukā loga augšdaļā un veiciet dubultklikšķi uz vajadzīgās mapes.</p>";
|
||||
"Name or Email" = "Vārds vai e-pasts";
|
||||
/* Rights module: initial search message */
|
||||
"Start a search to edit the rights" = "Sākt meklēšanu, lai rediģētu tiesības";
|
||||
/* Rights module: Empty search result */
|
||||
"No matching user" = "Neviens atbilstošs lietotājs";
|
||||
/* Rights module: no selection */
|
||||
"No resource selected" = "Nav atlasīts resurss";
|
||||
"Add User" = "Pievienot lietotāju";
|
||||
"Subscribe User" = "Abonēt lietotāju";
|
||||
"Rights" = "Tiesības";
|
||||
"Search Users" = "Meklēt lietotājus";
|
||||
"users found" = "atrasti lietotāji";
|
||||
"No resource" = "Nav resursu";
|
||||
"Any Authenticated User" = "Visi autentificētie lietotāji";
|
||||
"Public Access" = "Publiska piekļuve";
|
||||
@@ -69,14 +69,6 @@
|
||||
"delegate is organizer" = "De gedelegeerde is de organisator. Geef een andere gedelegeerde op.";
|
||||
"delegate is a participant" = "De gedelegeerde is al een deelnemer.";
|
||||
"delegate is a group" = "U heeft een groepsadres opgegeven. U kunt alleen delegeren aan een uniek persoon.";
|
||||
"Snooze for " = "Sluimer nog ";
|
||||
"5 minutes" = "5 minuten";
|
||||
"10 minutes" = "10 minuten";
|
||||
"15 minutes" = "15 minuten";
|
||||
"30 minutes" = "30 minuten";
|
||||
"45 minutes" = "45 minuten";
|
||||
"1 hour" = "1 uur";
|
||||
"1 day" = "1 dag";
|
||||
|
||||
/* common buttons */
|
||||
"OK" = "OK";
|
||||
@@ -89,6 +81,15 @@
|
||||
"Start" = "Begin";
|
||||
"Due Date" = "Verloopdatum";
|
||||
"Location" = "Plaats";
|
||||
"Snooze" = "Sluimeren";
|
||||
"Snooze for " = "Sluimer nog ";
|
||||
"5 minutes" = "5 minuten";
|
||||
"10 minutes" = "10 minuten";
|
||||
"15 minutes" = "15 minuten";
|
||||
"30 minutes" = "30 minuten";
|
||||
"45 minutes" = "45 minuten";
|
||||
"1 hour" = "1 uur";
|
||||
"1 day" = "1 dag";
|
||||
|
||||
/* mail labels */
|
||||
"Important" = "Belangrijk";
|
||||
@@ -118,18 +119,27 @@
|
||||
/* Authentication failed */
|
||||
"Wrong username or password." = "Onjuiste gebruikersnaam of wachtwoord.";
|
||||
|
||||
/* Error message display bellow search field when the search string has less than the required number of characters */
|
||||
/* Error message displayed bellow search field when the search string has less than the required number of characters */
|
||||
"Enter at least %{minimumSearchLength} characters" = "Voer minstens %{minimumSearchLength} tekens in";
|
||||
|
||||
/* Error message displayed when a file upload exceeds WOMaxUploadSize */
|
||||
"File size upload limit reached" = "Bestand grote limiet is bereikt";
|
||||
|
||||
/* Toggle visibility (ex: mail account in left navigation menu) */
|
||||
"Toggle visibility" = "Tonen/verbergen";
|
||||
|
||||
/* Toggle multiple items at the same time (hotkeys cheatsheet) */
|
||||
"Toggle range of items" = "Reeks items schakelen";
|
||||
|
||||
/* Question mark shows list of hotkeys */
|
||||
"Show or hide this help" = "Toon of verberg deze hulp";
|
||||
|
||||
/* Space key */
|
||||
"key_space" = "space";
|
||||
|
||||
/* Shift and space key */
|
||||
"key_shift+space" = "shift + spatie";
|
||||
|
||||
/* Up arrow key */
|
||||
"key_up" = "↑";
|
||||
|
||||
|
||||
@@ -69,14 +69,6 @@
|
||||
"delegate is organizer" = "Valtuutettu on järjestäjä. Ole hyvä ja valitse toinen valtuutettu.";
|
||||
"delegate is a participant" = "Valtuutettu on jo osallistuja.";
|
||||
"delegate is a group" = "Annettu osoite on ryhmäosoite. Voit valtuuttaa vain yksittäisiä henkilöitä.";
|
||||
"Snooze for " = "Torku";
|
||||
"5 minutes" = "5 minuuttia";
|
||||
"10 minutes" = "10 minuuttia";
|
||||
"15 minutes" = "15 minuuttia";
|
||||
"30 minutes" = "30 minuuttia";
|
||||
"45 minutes" = "45 minuuttia";
|
||||
"1 hour" = "1 tunti";
|
||||
"1 day" = "1 päivä";
|
||||
|
||||
/* common buttons */
|
||||
"OK" = "OK";
|
||||
@@ -89,6 +81,15 @@
|
||||
"Start" = "Alkaa";
|
||||
"Due Date" = "Päättyy";
|
||||
"Location" = "Sijainti";
|
||||
"Snooze" = "Torkku";
|
||||
"Snooze for " = "Torku";
|
||||
"5 minutes" = "5 minuuttia";
|
||||
"10 minutes" = "10 minuuttia";
|
||||
"15 minutes" = "15 minuuttia";
|
||||
"30 minutes" = "30 minuuttia";
|
||||
"45 minutes" = "45 minuuttia";
|
||||
"1 hour" = "1 tunti";
|
||||
"1 day" = "1 päivä";
|
||||
|
||||
/* mail labels */
|
||||
"Important" = "Tärkeä";
|
||||
@@ -118,18 +119,27 @@
|
||||
/* Authentication failed */
|
||||
"Wrong username or password." = "Väärä käyttäjätunnus tai salasana.";
|
||||
|
||||
/* Error message display bellow search field when the search string has less than the required number of characters */
|
||||
/* Error message displayed bellow search field when the search string has less than the required number of characters */
|
||||
"Enter at least %{minimumSearchLength} characters" = "Syötä vähintään %{minimumSearchLength} merkkiä";
|
||||
|
||||
/* Error message displayed when a file upload exceeds WOMaxUploadSize */
|
||||
"File size upload limit reached" = "Tiedostolatauksen kokorajoitus saavutettu";
|
||||
|
||||
/* Toggle visibility (ex: mail account in left navigation menu) */
|
||||
"Toggle visibility" = "Vaihda näkyvyyttä";
|
||||
|
||||
/* Toggle multiple items at the same time (hotkeys cheatsheet) */
|
||||
"Toggle range of items" = "Valitse kohteet";
|
||||
|
||||
/* Question mark shows list of hotkeys */
|
||||
"Show or hide this help" = "Näytä tai piilota tämä apu";
|
||||
|
||||
/* Space key */
|
||||
"key_space" = "space";
|
||||
|
||||
/* Shift and space key */
|
||||
"key_shift+space" = "vaihto + välilyönti";
|
||||
|
||||
/* Up arrow key */
|
||||
"key_up" = "↑";
|
||||
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
/* this file is in UTF-8 format! */
|
||||
|
||||
/* toolbars */
|
||||
"Save" = "Saglabāt";
|
||||
"Close" = "Aizvērt";
|
||||
"Edit User Rights" = "Rediģēt lietotāja tiesības";
|
||||
"Home" = "Sākums";
|
||||
"Calendar" = "Kalendārs";
|
||||
"Address Book" = "Adrešu grāmata";
|
||||
"Mail" = "E-pasts";
|
||||
"Preferences" = "Preferences";
|
||||
"Administration" = "Administrēšana";
|
||||
"Disconnect" = "Atvienot";
|
||||
"Toggle Menu" = "Pārslēgt izvēlni";
|
||||
"Right Administration" = "Tiesību administrēšana";
|
||||
"Log Console (dev.)" = "Log konsole (dev.)";
|
||||
"User" = "Lietotājs";
|
||||
"Vacation message is enabled" = "Atvaļinājuma ziņa ir iespējota";
|
||||
"Help" = "Palīdzība";
|
||||
"noJavascriptError" = "SOGo prasa Javascript, lai palaistu. Lūdzu, pārliecinieties, vai šī opcija ir aktivizēta un pieejama, pārlūkprogrammas iestatījumos.";
|
||||
"noJavascriptRetry" = "Mēģināt vēlreiz";
|
||||
"Owner" = "Īpašnieks";
|
||||
"Publish the Free/Busy information" = "Publicēt informāciju Brīvs / Aizņemts ";
|
||||
"Add..." = "Pievienot...";
|
||||
"Remove" = "Noņemt";
|
||||
"Subscribe User" = "Abonēt lietotāju";
|
||||
"Any Authenticated User" = "Visi autentificētie lietotāji";
|
||||
"Public Access" = "Publiska piekļuve";
|
||||
"Any user not listed above" = "Jebkurš lietotājs, kas nav iepriekš minētas";
|
||||
"Anybody accessing this resource from the public area" = "Ikviena piekļuvei šim resursam publiskajā zonā";
|
||||
"Sorry, the user rights can not be configured for that object." = "Atvainojiet, lietotāja tiesības nevar konfigurēt šo objektu.";
|
||||
"Any user with an account on this system will be able to access your mailbox \"%{0}\". Are you certain you trust them all?"
|
||||
= "Jebkurš lietotājs, kuram ir konts šajā sistēmā varēs piekļūt jūsu pastkastei \"%{0}\". Vai esat pārliecināts, ka uzticaties viņiem visiem?";
|
||||
"Any user with an account on this system will be able to access your calendar \"%{0}\". Are you certain you trust them all?"
|
||||
= "Jebkurš lietotājs, kuram ir konts šajā sistēmā varēs piekļūt jūsu kalendāram \"%{0}\". Vai esat pārliecināts, ka uzticaties viņiem visiem?";
|
||||
"Potentially anyone on the Internet will be able to access your calendar \"%{0}\", even if they do not have an account on this system. Is this information suitable for the public Internet?"
|
||||
= "Potenciāli ikviens interneta lietotājs varēs piekļūt jūsu kalendāram \"%{0}\", pat ja tiem nav konta šajā sistēmā. Vai šī informācija ir piemērota publiskajam internetam?";
|
||||
"Any user with an account on this system will be able to access your address book \"%{0}\". Are you certain you trust them all?"
|
||||
= "Jebkurš lietotājs, kuram ir konts šajā sistēmā varēs piekļūt jūsu adrešu grāmatai \"%{0}\". Vai esat pārliecināts, ka uzticaties viņiem visiem?";
|
||||
"Potentially anyone on the Internet will be able to access your address book \"%{0}\", even if they do not have an account on this system. Is this information suitable for the public Internet?"
|
||||
= "Potenciāli ikviens interneta lietotājs varēs piekļūt jūsu adrešu grāmatai \"%{0}\", pat ja tiem nav konta šajā sistēmā. Vai šī informācija ir piemērota publiskajam internetam?";
|
||||
"Give Access" = "Dot piekļuvi";
|
||||
"Keep Private" = "Turēt privātu";
|
||||
|
||||
/* generic.js */
|
||||
"Unable to subscribe to that folder!"
|
||||
= "Nevar pierakstīties uz šo mapi!";
|
||||
"You cannot subscribe to a folder that you own!"
|
||||
= "Jūs nevarat abonēt mapi, kas tev pieder!";
|
||||
"Unable to unsubscribe from that folder!"
|
||||
= "Nevar atcelt šīs mapes abonēšanu !";
|
||||
"You cannot unsubscribe from a folder that you own!"
|
||||
= "Nevar atcelt abonēšanu mapei, kas tev pieder!";
|
||||
"Unable to rename that folder!" = "Nevar pārdēvēt šo mapi!";
|
||||
"You have already subscribed to that folder!"
|
||||
= "Jūs jau esat abonējis šo mapi!";
|
||||
"The user rights cannot be edited for this object!"
|
||||
= "Lietotāja tiesības, nevar rediģēt, šo objektu!";
|
||||
"A folder by that name already exists." = "Mape ar šādu nosaukumu jau pastāv.";
|
||||
"You cannot create a list in a shared address book."
|
||||
= "Nevar izveidot sarakstu koplietojamā adrešu grāmatā.";
|
||||
"Warning" = "Brīdinājums";
|
||||
"Can't contact server" = "Radās kļūda, sazinoties ar serveri. Lūdzu, vēlāk mēģiniet vēlreiz.";
|
||||
"You are not allowed to access this module or this system. Please contact your system administrator."
|
||||
= "Jums nav atļaujas piekļūt šim modulim vai sistēmai. Lūdzu, sazinieties ar sistēmas administratoru.";
|
||||
"You don't have the required privileges to perform the operation."
|
||||
= "Jums nav nepieciešamo tiesību, lai veiktu šo darbību.";
|
||||
"noEmailForDelegation" = "Norādiet adresi, uz kuru vēlaties deleģēt jūsu uzaicinājumu.";
|
||||
"delegate is organizer" = "Delegāts ir organizators. Lūdzu, norādiet citu pārstāvi.";
|
||||
"delegate is a participant" = "Delegāts ir jau dalībnieks.";
|
||||
"delegate is a group" = "Norādītā adrese sakrīt ar grupu. Var tikai deleģēt unikāla persona.";
|
||||
|
||||
/* common buttons */
|
||||
"OK" = "OK";
|
||||
"Cancel" = "Atcelt";
|
||||
"Yes" = "Jā";
|
||||
"No" = "Nē";
|
||||
|
||||
/* alarms */
|
||||
"Reminder" = "Atgādinājums";
|
||||
"Start" = "Sākums";
|
||||
"Due Date" = "Izpildes datums";
|
||||
"Location" = "Vieta";
|
||||
"Snooze" = "Atlikt";
|
||||
"Snooze for " = "Atlikt uz";
|
||||
"5 minutes" = "5 minūtes";
|
||||
"10 minutes" = "10 minūtes";
|
||||
"15 minutes" = "15 minūtes";
|
||||
"30 minutes" = "30 minūtes";
|
||||
"45 minutes" = "45 minūtes";
|
||||
"1 hour" = "1 stunda";
|
||||
"1 day" = "1 diena";
|
||||
|
||||
/* mail labels */
|
||||
"Important" = "Svarīgs";
|
||||
"Work" = "Darbs";
|
||||
"Personal" = "Personisks";
|
||||
"To Do" = "Uzdevums";
|
||||
"Later" = "Vēlāk";
|
||||
"a2_Sunday" = "Sv";
|
||||
"a2_Monday" = "Pr";
|
||||
"a2_Tuesday" = "Ot";
|
||||
"a2_Wednesday" = "Tr";
|
||||
"a2_Thursday" = "Ce";
|
||||
"a2_Friday" = "Pi";
|
||||
"a2_Saturday" = "Se";
|
||||
"Access Rights" = "Piekļuves tiesības";
|
||||
"Add User" = "Pievienot lietotāju";
|
||||
"Loading" = "Ielādēšana";
|
||||
"No such user." = "Nav šādu lietotāju.";
|
||||
"You cannot (un)subscribe to a folder that you own!" = "Nevar (ne) abonēt mapi, kas tev pieder!";
|
||||
|
||||
/* Authentication username */
|
||||
"Username" = "Lietotājvārds";
|
||||
|
||||
/* Authentication password */
|
||||
"Password" = "Parole";
|
||||
|
||||
/* Authentication failed */
|
||||
"Wrong username or password." = "Nepareizs lietotājvārds vai parole.";
|
||||
|
||||
/* Error message displayed bellow search field when the search string has less than the required number of characters */
|
||||
"Enter at least %{minimumSearchLength} characters" = "Jāievada vismaz %{minimumSearchLength} rakstzīmes";
|
||||
|
||||
/* Error message displayed when a file upload exceeds WOMaxUploadSize */
|
||||
"File size upload limit reached" = "Sasniegts augšupielādes faila lielums";
|
||||
|
||||
/* Toggle visibility (ex: mail account in left navigation menu) */
|
||||
"Toggle visibility" = "Pārslēgt redzamību";
|
||||
|
||||
/* Toggle multiple items at the same time (hotkeys cheatsheet) */
|
||||
"Toggle range of items" = "Pārslēgt vienību diapazonu";
|
||||
|
||||
/* Question mark shows list of hotkeys */
|
||||
"Show or hide this help" = "Parādīt vai paslēpt šo palīdzība";
|
||||
|
||||
/* Space key */
|
||||
"key_space" = "space";
|
||||
|
||||
/* Shift and space key */
|
||||
"key_shift+space" = "shift + space";
|
||||
|
||||
/* Up arrow key */
|
||||
"key_up" = "↑";
|
||||
|
||||
/* Down arrow key */
|
||||
"key_down" = "↓";
|
||||
|
||||
/* Left arrow key */
|
||||
"key_left" = "←";
|
||||
|
||||
/* Right arrow key */
|
||||
"key_right" = "→";
|
||||
|
||||
/* Shift and up arrow combo keys */
|
||||
"key_shift+up" = "shift + ↑";
|
||||
|
||||
/* Shift and down arrow combo keys */
|
||||
"key_shift+down" = "shift + ↓";
|
||||
|
||||
/* Backspace key */
|
||||
"key_backspace" = "backspace";
|
||||
|
||||
/* Hotkey to start a search */
|
||||
"hotkey_search" = "s";
|
||||
|
||||
/* Hotkey description to select next list item */
|
||||
"View next item" = "Apskatīt nākamo punktu";
|
||||
|
||||
/* Hotkey description to select previous list item */
|
||||
"View previous item" = "Skatīt iepriekšējo punktu";
|
||||
|
||||
/* Hotkey description to add next list item to selection */
|
||||
"Add next item to selection" = "Pievienot nākamo vienību atlasei";
|
||||
|
||||
/* Hotkey description to add previous list item to selection */
|
||||
"Add previous item to selection" = "Pievienot iepriekšējo vienību atlasei";
|
||||
|
||||
/* Hotkey description to move backward in current view */
|
||||
"Move backward" = "Atpakaļ";
|
||||
|
||||
/* Hotkey description to move forward in current view */
|
||||
"Move forward" = "Uz priekšu";
|
||||
@@ -175,7 +175,7 @@
|
||||
"%{0} card(s) copied" = "%{0} kontakt(ů) zkopírováno";
|
||||
"%{0} card(s) moved" = "%{0} kontakt(ů) přesunuto";
|
||||
"SoAccessDeniedException" = "Nemůžete zapisovat do tohoto adresáře.";
|
||||
"Forbidden" = "Nemůžete zapisovat do tohoto adresáře.";
|
||||
"Forbidden" = "Zakázané";
|
||||
"Invalid Contact" = "Označený kontakt již neexistuje.";
|
||||
"Unknown Destination Folder" = "Zvolený cílový adresář již neexistuje.";
|
||||
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
"%{0} card(s) copied" = "%{0} kaart(en) gekopieerd";
|
||||
"%{0} card(s) moved" = "%{0} kaart(en) verplaatst";
|
||||
"SoAccessDeniedException" = "U kunt niet naar dit adresboek schrijven.";
|
||||
"Forbidden" = "U kunt niet naar dit adresboek schrijven.";
|
||||
"Forbidden" = "Toegang geweigerd";
|
||||
"Invalid Contact" = "De geselecteerde contactpersoon bestaat niet meer.";
|
||||
"Unknown Destination Folder" = "Het geselecteerde doeladresboek bestaat niet meer.";
|
||||
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
"%{0} card(s) copied" = "%{0} osoitekortti(a) kopioitu";
|
||||
"%{0} card(s) moved" = "%{0} osoitekortti(a) siirretty";
|
||||
"SoAccessDeniedException" = "Et voi kirjoittaa tähän osoitekirjaan.";
|
||||
"Forbidden" = "Et voi kirjoittaa tähän osoitekirjaan.";
|
||||
"Forbidden" = "Kielletty";
|
||||
"Invalid Contact" = "Valittua yhteystietoa ei enää ole. ";
|
||||
"Unknown Destination Folder" = "Valittua kohdeosoitekirjaa ei enää ole.";
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@
|
||||
"Move To" = "Déplacer vers";
|
||||
"Copy To" = "Copier vers";
|
||||
"Add to" = "Ajouter à";
|
||||
"To" = "Destinataire";
|
||||
"Carbon Copy (Cc)" = "Copie carbone";
|
||||
"Blind Carbon Copy (Bcc)" = "C. carbone cachée";
|
||||
|
||||
/* Subheader of empty addressbook */
|
||||
"No contact" = "Aucun contact";
|
||||
@@ -258,4 +261,4 @@
|
||||
"key_create_card" = "c";
|
||||
|
||||
/* Hotkey to create a new list */
|
||||
"key_create_list" = "l";
|
||||
"key_create_list" = "l";
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
/* this file is in UTF-8 format! */
|
||||
|
||||
"Contact" = "Kontakts";
|
||||
"Address" = "Adrese";
|
||||
"Photos" = "Fotoattēli";
|
||||
"Other" = "Cits";
|
||||
"Address Books" = "Adrešu grāmatas";
|
||||
"Addressbook" = "Adrešu grāmata";
|
||||
"Addresses" = "Adreses";
|
||||
"Update" = "Atjaunināt";
|
||||
"Cancel" = "Atcelt";
|
||||
"Common" = "Kopīgs";
|
||||
"Contact editor" = "Kontaktpersonu redaktors";
|
||||
"Contact viewer" = "Kontaktpersona skatītājs";
|
||||
"Email" = "E-pasts";
|
||||
"Screen Name" = "Ekrāna vārds";
|
||||
"Extended" = "Paplašināts";
|
||||
"Fax" = "Fax";
|
||||
"Firstname" = "Vārds";
|
||||
"Home" = "Mājas";
|
||||
"HomePhone" = "Mājas tālrunis";
|
||||
"Lastname" = "Uzvārds";
|
||||
"Location" = "Vieta";
|
||||
"Add a category" = "Pievienot kategorijai";
|
||||
"MobilePhone" = "Mobilais tālrunis";
|
||||
"Name" = "Nosaukums";
|
||||
"OfficePhone" = "Darba tālrunis";
|
||||
"Organization" = "Organizācija";
|
||||
"Work Phone" = "Tālrunis darbā";
|
||||
"Phone" = "Tālrunis";
|
||||
"Phones" = "Tālruņi";
|
||||
"Postal" = "Pasts";
|
||||
"Save" = "Saglabāt";
|
||||
"Internet" = "Internets";
|
||||
"Unit" = "Vienība";
|
||||
"delete" = "dzēst";
|
||||
"edit" = "labot";
|
||||
"invalidemailwarn" = "Norādītā e-pasta adrese ir nederīga";
|
||||
"new" = "jauns";
|
||||
"Preferred Phone" = "Vēlamais tālrunis";
|
||||
"Move To" = "Pārvietot uz";
|
||||
"Copy To" = "Kopēt uz";
|
||||
"Add to" = "Pievienot";
|
||||
"To" = "Kam";
|
||||
"Carbon Copy (Cc)" = "Kopija (Cc)";
|
||||
"Blind Carbon Copy (Bcc)" = "Diskrētā kopija (Bcc)";
|
||||
|
||||
/* Subheader of empty addressbook */
|
||||
"No contact" = "Nav kontaktpersonas";
|
||||
|
||||
/* Subheader of system addressbook */
|
||||
"Start a search to browse this address book" = "Sākt meklēt, lai pārlūkotu šo adrešu grāmatu";
|
||||
|
||||
/* Number of contacts in addressbook; string is prefixed by number */
|
||||
"contacts" = "kontakti";
|
||||
|
||||
/* No contact matching search criteria */
|
||||
"No matching contact" = "Neviens atbilstošs kontakts";
|
||||
|
||||
/* Number of contacts matching search criteria; string is prefixed by number */
|
||||
"matching contacts" = "atbilstoši kontakti";
|
||||
|
||||
/* Number of selected contacts in list */
|
||||
"selected" = "atlasīts";
|
||||
|
||||
/* Empty right pane */
|
||||
"No contact selected" = "Nav atlasīta neviena kontaktpersona";
|
||||
|
||||
/* Tooltips */
|
||||
"Create a new address book card" = "Izveidot jaunu adrešu grāmatas kartiņu";
|
||||
"Create a new list" = "Izveidot jaunu sarakstu";
|
||||
"Edit the selected card" = "Rediģēt atlasīto kartiņu";
|
||||
"Send a mail message" = "Nosūtīt e-pasta ziņojumu";
|
||||
"Delete selected card or address book" = "Dzēst izvēlēto kartiņu vai adrešu grāmatu";
|
||||
"Reload all contacts" = "Pārlādēt visus kontaktus";
|
||||
"htmlMailFormat_UNKNOWN" = "Nezināms";
|
||||
"htmlMailFormat_FALSE" = "Plain Text";
|
||||
"htmlMailFormat_TRUE" = "HTML";
|
||||
"Name or Email" = "Vārds vai e-pasts";
|
||||
"Category" = "Kategorija";
|
||||
"Personal Addressbook" = "Personiskā adrešu grāmata";
|
||||
"Search in Addressbook" = "Meklēt adrešu grāmatā";
|
||||
"New Card" = "Jauna kartiņa";
|
||||
"New List" = "Jauns saraksts";
|
||||
"Edit" = "Labot";
|
||||
"Properties" = "Rekvizīti";
|
||||
"Sharing..." = "Koplieto...";
|
||||
"Write" = "Rakstīt";
|
||||
"Delete" = "Dzēst";
|
||||
"Instant Message" = "Tūlītējais ziņojums";
|
||||
"Add..." = "Pievienot...";
|
||||
"Remove" = "Noņemt";
|
||||
"Please wait..." = "Lūdzu, uzgaidiet...";
|
||||
"No possible subscription" = "Nav iespējams abonēt";
|
||||
"Preferred" = "Vēlamais";
|
||||
"Display" = "Rādīt";
|
||||
"Display Name" = "Parādāmais nosaukums";
|
||||
"Additional Email" = "Papildu e-pasts";
|
||||
"Phone Number" = "Tālruņa numurs";
|
||||
"Prefers to receive messages formatted as" = "Vēlas saņemt ziņojumus formātā";
|
||||
"Categories" = "Kategorijas";
|
||||
"First" = "Vārds";
|
||||
"Last" = "Uzvārds";
|
||||
"Nickname" = "Iesauka";
|
||||
"Telephone" = "Tālrunis";
|
||||
"Work" = "Darbs";
|
||||
"Mobile" = "Mobilais";
|
||||
"Pager" = "Peidžeris";
|
||||
|
||||
/* categories */
|
||||
"contacts_category_labels" = "Kolēģi, konkurenti, klienti, draugi, ģimene, biznesa partneri, piegādātāji, Prese, VIP";
|
||||
"New category" = "Jauna kategorija";
|
||||
|
||||
/* adresses */
|
||||
"Title" = "Nosaukums";
|
||||
"Service" = "Pakalpojums";
|
||||
"Company" = "Uzņēmums";
|
||||
"Department" = "Departaments";
|
||||
"City" = "Pilsēta";
|
||||
"State_Province" = "Štats / province";
|
||||
"ZIP_Postal Code" = "ZIP/Pasta indekss";
|
||||
"Country" = "Valsts";
|
||||
"Web Page" = "Interneta lappuse";
|
||||
"Other Infos" = "Cita informācija";
|
||||
"Note" = "Piezīme";
|
||||
"Timezone" = "Laika josla";
|
||||
"Birthday" = "Dzimšanas diena";
|
||||
"Birthday (yyyy-mm-dd)" = "Dzimšanas diena (yyyy-mm-dd)";
|
||||
"Freebusy URL" = "Aizņemtības URL";
|
||||
"Add as..." = "Pievienot kā...";
|
||||
"Recipient" = "Adresāts";
|
||||
"Carbon Copy" = "Kopija";
|
||||
"Blind Carbon Copy" = "Diskrētā kopija";
|
||||
"New Addressbook..." = "Jauna adrešu grāmata...";
|
||||
"Subscribe to an Addressbook..." = "Parakstīties uz adrešu grāmatu...";
|
||||
"Remove the selected Addressbook" = "Noņemt atlasīto adrešu katalogu";
|
||||
"Subscribe to a shared folder" = "Parakstīties uz koplietojamu mapi";
|
||||
"Search User" = "Meklēt lietotāju";
|
||||
"Name of the Address Book" = "Adrešu grāmatas nosaukums";
|
||||
"Are you sure you want to delete the selected address book?"
|
||||
= "Vai tiešām vēlaties izdzēst atlasīto adrešu grāmatu?";
|
||||
"Are you sure you want to delete the addressbook \"%{0}\"?"
|
||||
= "Vai tiešām vēlaties dzēst adrešu grāmatu \"%{0}\"?";
|
||||
"You cannot remove nor unsubscribe from a public addressbook."
|
||||
= "Nevar noņemt nedz atteikties no publiskā adrešu kataloga.";
|
||||
"You cannot remove nor unsubscribe from your personal addressbook."
|
||||
= "Jūs nevarat noņemt abonementu, no jūsu personiskās adrešu grāmatas.";
|
||||
"Are you sure you want to delete the selected contacts?"
|
||||
= "Vai tiešām vēlaties izdzēst atlasītās kontaktpersonas?";
|
||||
"Are you sure you want to delete the card of %{0}?" = "Vai tiešām vēlaties izdzēst šo kartiņu %{0}?";
|
||||
"You cannot delete the card of \"%{0}\"."
|
||||
= "Nevar dzēst kartiņu \"%{0}\".";
|
||||
"You cannot subscribe to a folder that you own!"
|
||||
= "Jūs nevarat abonēt mapi, kas jums pieder.";
|
||||
"Unable to subscribe to that folder!"
|
||||
= "Nevar parakstīties uz šo mapi.";
|
||||
|
||||
/* acls */
|
||||
"Access rights to" = "Piekļuves tiesības";
|
||||
"For user" = "Lietotājam";
|
||||
"Any Authenticated User" = "Visi autentificētie lietotāji";
|
||||
"Public Access" = "Publiska piekļuve";
|
||||
"This person can add cards to this addressbook."
|
||||
= "Šī persona var pievienot ierakstus adrešu katalogā.";
|
||||
"This person can edit the cards of this addressbook."
|
||||
= "Šī persona var rediģēt ierakstus adrešu katalogā.";
|
||||
"This person can list the content of this addressbook."
|
||||
= "Šī persona var skatīt adrešu grāmatas saturu.";
|
||||
"This person can read the cards of this addressbook."
|
||||
= "Šīs personas var lasīt ierakstus no adrešu kataloga.";
|
||||
"This person can erase cards from this addressbook."
|
||||
= "Šī persona var dzēst ierakstus no adrešu kataloga.";
|
||||
"The selected contact has no email address."
|
||||
= "Izvēlētajam kontaktam nav e-pasta adreses.";
|
||||
"Please select a contact." = "Lūdzu, atlasiet kontaktpersonu.";
|
||||
|
||||
/* Messages for move and copy */
|
||||
"%{0} card(s) copied" = "%{0} kartiņa(s) ir nokopēta/s";
|
||||
"%{0} card(s) moved" = "%{0} kartiņa(s) ir pārvietota/s";
|
||||
"SoAccessDeniedException" = "Jūs nevarat rakstīt adrešu grāmatā.";
|
||||
"Forbidden" = "Aizliegts";
|
||||
"Invalid Contact" = "Atlasītā kontaktpersona vairs nepastāv.";
|
||||
"Unknown Destination Folder" = "Izvēlētais adresāts adrešu grāmatā vairs nepastāv.";
|
||||
|
||||
/* Lists */
|
||||
"List details" = "Saraksta detaļas";
|
||||
"List name" = "Saraksta nosaukums";
|
||||
"List nickname" = "Saraksta segvārds";
|
||||
"List description" = "Saraksta apraksts";
|
||||
"Members" = "Locekļi";
|
||||
"Contacts" = "Kontakti";
|
||||
"Add" = "Pievienot";
|
||||
"Lists can't be moved or copied." = "Sarakstus nevar pārvietot vai kopēt.";
|
||||
"Export" = "Eksportēt";
|
||||
"Export Address Book..." = "Eksportēt adrešu grāmatu...";
|
||||
"View Raw Source" = "Apskatīt RAW avotu";
|
||||
|
||||
/* Import */
|
||||
"Import Cards" = "Importēt kartiņas";
|
||||
"Select a vCard or LDIF file." = "Izvēlieties vCard vai LDIF failu";
|
||||
"Upload" = "Augšupielādēt";
|
||||
"Uploading" = "Augšupielāde";
|
||||
"Done" = "Darīts";
|
||||
"An error occured while importing contacts." = "Importējot kontaktpersonas radās kļūda.";
|
||||
"No card was imported." = "Nav kartiņa importēta.";
|
||||
"A total of %{0} cards were imported in the addressbook." = "Kopumā no % {0} kartiņas tika importētas adrešu grāmatā.";
|
||||
"Reload" = "Pārlādēt";
|
||||
|
||||
/* Properties window */
|
||||
"Address Book Name" = "Adrešu grāmatas nosaukums";
|
||||
"Links to this Address Book" = "Saites uz šo adrešu grāmatu";
|
||||
"Authenticated User Access" = "Autentificēto lietotāju piekļuve";
|
||||
"CardDAV URL" = "CardDAV URL";
|
||||
"Options" = "Opcijas";
|
||||
"Rename" = "Pārdēvēt";
|
||||
"Subscriptions" = "Abonementi";
|
||||
"Global Addressbooks" = "Globāla adrešu grāmata";
|
||||
"Search" = "Meklēšana";
|
||||
"Sort" = "Kārtot";
|
||||
"Descending Order" = "Dilstoša secība";
|
||||
"Back" = "Atpakaļ";
|
||||
"Select All" = "Atlasīt visu";
|
||||
"Copy contacts" = "Kopēt kontaktus";
|
||||
"More messages options" = "Vairāk ziņojumu opciju";
|
||||
"New Contact" = "Jauns kontakts";
|
||||
"Close" = "Aizvērt";
|
||||
"More contact options" = "Vairāk kontaktu iespējas";
|
||||
"Organization Unit" = "Organizācijas vienība";
|
||||
"Add Organizational Unit" = "Pievienot organizācijas vienību";
|
||||
"Type" = "Tips";
|
||||
"Email Address" = "E-pasta adrese";
|
||||
"New Email Address" = "Jauna e-pasta adrese";
|
||||
"New Phone Number" = "Jauns tālruņa numurs";
|
||||
"URL" = "URL";
|
||||
"New URL" = "Jauns URL";
|
||||
"street" = "iela";
|
||||
"Postoffice" = "Pasts";
|
||||
"Region" = "Reģions";
|
||||
"Postal Code" = "Pasta indekss";
|
||||
"New Address" = "Jauna adrese";
|
||||
"Reset" = "Atiestatīt";
|
||||
"Description" = "Apraksts";
|
||||
"Add Member" = "Pievienot dalībnieku";
|
||||
"Subscribe" = "Abonēt";
|
||||
"Add Birthday" = "Pievienot dzimšanas dienu";
|
||||
"Import" = "Importēt";
|
||||
"More options" = "Papildu opcijas";
|
||||
"Role" = "Loma";
|
||||
"Add Screen Name" = "Pievienot ekrāna vārdu";
|
||||
"Synchronization" = "Sinhronizācija";
|
||||
"Synchronize" = "Sinhronizēt";
|
||||
"Sucessfully subscribed to address book" = "Sekmīgi abonējis adrešu grāmatu";
|
||||
|
||||
/* Aria label for scope of search on contacts */
|
||||
"Search scope" = "Meklēšanas tvērums";
|
||||
|
||||
/* Aria label for avatar button to select and unselect a card */
|
||||
"Toggle item" = "Pārslēgt vienumu";
|
||||
|
||||
/* Hotkey to create a new card */
|
||||
"key_create_card" = "c";
|
||||
|
||||
/* Hotkey to create a new list */
|
||||
"key_create_list" = "l";
|
||||
@@ -41,6 +41,9 @@
|
||||
"Move To" = "Przenieś do";
|
||||
"Copy To" = "Kopiuj do";
|
||||
"Add to" = "Dodaj do";
|
||||
"To" = "Do";
|
||||
"Carbon Copy (Cc)" = "Do wiadomości (Cc)";
|
||||
"Blind Carbon Copy (Bcc)" = "Ukryte DW (Bcc)";
|
||||
|
||||
/* Subheader of empty addressbook */
|
||||
"No contact" = "Brak kontaktów";
|
||||
@@ -258,4 +261,4 @@
|
||||
"key_create_card" = "c";
|
||||
|
||||
/* Hotkey to create a new list */
|
||||
"key_create_list" = "l";
|
||||
"key_create_list" = "l";
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
"%{0} card(s) copied" = "%{0} kontakt(ov) skopírovaných";
|
||||
"%{0} card(s) moved" = "%{0} kontakt(ov) presunutých";
|
||||
"SoAccessDeniedException" = "Nemôžete písať do tohoto adresára.";
|
||||
"Forbidden" = "Nemôžete písať do tohoto adresára.";
|
||||
"Forbidden" = "Zakázané";
|
||||
"Invalid Contact" = "Zvolený kontakt už neexistuje.";
|
||||
"Unknown Destination Folder" = "Vybraný adresár už neexistuje.";
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@
|
||||
"Move To" = "Taşı";
|
||||
"Copy To" = "Kopyala";
|
||||
"Add to" = "Ekle";
|
||||
"To" = "Alıcı";
|
||||
"Carbon Copy (Cc)" = "Karbon Kopya (Cc)";
|
||||
"Blind Carbon Copy (Bcc)" = "Gizli Karbon Kopya (Bcc)";
|
||||
|
||||
/* Subheader of empty addressbook */
|
||||
"No contact" = "Adres defteri boş";
|
||||
@@ -258,4 +261,4 @@
|
||||
"key_create_card" = "c";
|
||||
|
||||
/* Hotkey to create a new list */
|
||||
"key_create_list" = "l";
|
||||
"key_create_list" = "l";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (C) 2004-2005 SKYRIX Software AG
|
||||
Copyright (C) 2005-2015 Inverse inc.
|
||||
Copyright (C) 2005-2017 Inverse inc.
|
||||
|
||||
This file is part of SOGo
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ static NSArray *photoTags = nil;
|
||||
id value;
|
||||
|
||||
NSRange r;
|
||||
int i, j, count, linesCount;
|
||||
int i, j, count, linesCount, len;
|
||||
int rc;
|
||||
|
||||
folder = [self clientObject];
|
||||
@@ -184,6 +184,11 @@ static NSArray *photoTags = nil;
|
||||
for (j = 0; j < linesCount; j++)
|
||||
{
|
||||
line = [lines objectAtIndex: j];
|
||||
len = [line length];
|
||||
|
||||
/* we check for trailing \r and we strip them */
|
||||
if (len && [line characterAtIndex: len-1] == '\r')
|
||||
line = [line substringToIndex: len-1];
|
||||
|
||||
/* skip embedded comment lines */
|
||||
if ([line hasPrefix: @"#"])
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (C) 2004 SKYRIX Software AG
|
||||
Copyright (C) 2005-2015 Inverse inc.
|
||||
Copyright (C) 2005-2017 Inverse inc.
|
||||
|
||||
This file is part of SOGo.
|
||||
|
||||
@@ -573,11 +573,55 @@
|
||||
return [self _urlOfType: @"work"];
|
||||
}
|
||||
|
||||
- (NSString *) custom1
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 1" value: value];
|
||||
}
|
||||
|
||||
- (NSString *) custom2
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom2"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 2" value: value];
|
||||
}
|
||||
|
||||
- (NSString *) custom3
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom3"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 3" value: value];
|
||||
}
|
||||
|
||||
- (NSString *) custom4
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom4"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 4" value: value];
|
||||
}
|
||||
|
||||
- (BOOL) hasOtherInfos
|
||||
{
|
||||
return ([[card note] length] > 0
|
||||
|| [[card bday] length] > 0
|
||||
|| [[card tz] length] > 0);
|
||||
|| [[card tz] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0);
|
||||
}
|
||||
|
||||
- (NSString *) bday
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
ACCEPTED = "akceptēts";
|
||||
COMPLETED = "pabeigts";
|
||||
DECLINED = "noraidīts";
|
||||
DELEGATED = "deleģēts";
|
||||
"IN-PROCESS" = "procesā";
|
||||
"NEEDS-ACTION" = "nepieciešama darbība";
|
||||
TENTATIVE = "varbūtējs";
|
||||
organized_by_you = "ko jūs organizējat";
|
||||
you_are_an_attendee = "jūs esat dalībnieks";
|
||||
add_info_text = "iMIP 'ADD' pieprasījumi nav pagaidām SOGo atbalstīti.";
|
||||
publish_info_text = "Sūtītājs jūs informē par pievienoto notikumu.";
|
||||
cancel_info_text = "Jūsu uzaicinājums vai viss pasākums tika atcelts.";
|
||||
request_info_no_attendee = "ierosina tikšanos ar apmeklētājiem. Jūs saņemat šo e-pasta ziņojumu kā paziņojumu, tu neesi ieplānots kā dalībnieks.";
|
||||
Appointment = "Tikšanās";
|
||||
"Status Update" = "Atjaunināt statusu";
|
||||
was = "bija";
|
||||
|
||||
Organizer = "Organizētājs";
|
||||
Time = "Laiks";
|
||||
Attendees = "Dalībnieki";
|
||||
request_info = "aicina Jūs piedalīties sanāksmē.";
|
||||
"Add to calendar" = "Pievienot kalendāram";
|
||||
"Delete from calendar" = "Dzēst no kalendāra";
|
||||
"Update status" = "Atjaunināt statusu";
|
||||
Accept = "Akceptēt";
|
||||
Decline = "Noraidīt";
|
||||
Tentative = "Varbūtējs";
|
||||
"Delegate ..." = "Deleģēt ...";
|
||||
"Delegated to" = "Deleģēt";
|
||||
"Update status in calendar" = "Atjaunināt kalendāra statusu";
|
||||
"delegated from" = "deleģēts no";
|
||||
reply_info_no_attendee = "Jūs saņēmāt atbildi uz plānoto notikumu, bet atbildes sūtītājs nav dalībnieks.";
|
||||
reply_info = "Šī ir atbilde uz uzaicinājumu piedalīties pasākumā.";
|
||||
"to" = "kam";
|
||||
"Untitled" = "Nenosaukts";
|
||||
"Size" = "Izmērs";
|
||||
"Digital signature is not valid" = "Ciparparaksts nav derīgs";
|
||||
"Message is signed" = "Ziņojums ir parakstīts";
|
||||
"Subject" = "Temats";
|
||||
"From" = "No";
|
||||
"Date" = "Datums";
|
||||
"To" = "Kam";
|
||||
"Issuer" = "Izdevējs";
|
||||
/* Tooltips */
|
||||
"View Attachment" = "Skatīt pielikumu";
|
||||
"Save Attachment" = "Saglabāt pielikumu";
|
||||
"CC" = "Kopija";
|
||||
"Cancel" = "Atcelt";
|
||||
"OK" = "OK";
|
||||
"Comment" = "Komentārs";
|
||||
@@ -16,7 +16,7 @@ Appointment = "Çalışma";
|
||||
was = "önceden";
|
||||
|
||||
Organizer = "Düzenleyen";
|
||||
Time = "Zaman";
|
||||
Time = "Saat";
|
||||
Attendees = "Katılımcılar";
|
||||
request_info = "sizi toplantıya katılmaya davet ediyor. ";
|
||||
"Add to calendar" = "Takvime ekle";
|
||||
|
||||
@@ -84,6 +84,7 @@ _xmlCharsetForCharset (NSString *charset)
|
||||
{ @"koi8-r", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger koi8-r -> utf8 conversion
|
||||
{ @"windows-1250", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger windows-1250 -> utf8 conversion
|
||||
{ @"windows-1251", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger windows-1251 -> utf8 conversion
|
||||
{ @"windows-1255", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger windows-1255 -> utf8 conversion
|
||||
{ @"windows-1257", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger windows-1257 -> utf8 conversion
|
||||
{ @"gb2312", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger gb2312 -> utf8 conversion
|
||||
{ @"gbk", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger gb2312 -> utf8 conversion
|
||||
|
||||
@@ -221,21 +221,19 @@
|
||||
return [[self dateFormatter] formattedTime: [self endCalendarDate]];
|
||||
}
|
||||
|
||||
- (BOOL) isEndDateOnSameDay
|
||||
{
|
||||
NSCalendarDate *aDate;
|
||||
if ([[self inEvent] isAllDay])
|
||||
aDate = [[self endCalendarDate] dateByAddingYears:0 months:0 days:0 hours:0 minutes:0 seconds:-1];
|
||||
else
|
||||
aDate = [self endCalendarDate];
|
||||
return [[self startCalendarDate] isDateOnSameDay: aDate];
|
||||
}
|
||||
|
||||
- (NSTimeInterval) duration
|
||||
{
|
||||
return [[self endCalendarDate] timeIntervalSinceDate:[self startCalendarDate]];
|
||||
}
|
||||
|
||||
- (BOOL) isEndDateOnSameDay
|
||||
{
|
||||
if ([[self inEvent] isAllDay])
|
||||
return [self duration] <= 86400;
|
||||
|
||||
return [[self startCalendarDate] isDateOnSameDay: [self endCalendarDate]];
|
||||
}
|
||||
|
||||
/* calendar folder support */
|
||||
|
||||
- (SOGoAppointmentFolder *) calendarFolder
|
||||
|
||||
@@ -53,7 +53,13 @@
|
||||
/* Mail account main windows */
|
||||
"Welcome to the SOGo Mailer. Use the folder tree on the left to browse your mail accounts!" = "Welkom bij de SOGo Mailer. Gebruik de mappenlijst aan de linkerkant om door uw e-mailaccounts te bladeren.";
|
||||
"Read messages" = "Gelezen berichten";
|
||||
|
||||
/* Tooltip for fab button */
|
||||
"Write a new message" = "Een nieuw bericht opstellen";
|
||||
|
||||
/* Tooltip for fab button */
|
||||
"Write a message in new window" = "Bericht maken in een nieuw scherm";
|
||||
|
||||
"Share" = "Delen";
|
||||
"Account" = "Account";
|
||||
"Shared Account" = "Gedeeld account";
|
||||
@@ -217,6 +223,12 @@
|
||||
/* Message view "more" menu: create a task from message */
|
||||
"Convert To Task" = "Omzetten naar taak";
|
||||
|
||||
/* Message view "more" menu: download all attachments as a zip archive */
|
||||
"Download all attachments" = "Download alle bijlagen";
|
||||
|
||||
/* Filename prefix when downloading all attachments as a zip archive */
|
||||
"attachments" = "bijlagen";
|
||||
|
||||
"Print..." = "Afdrukken...";
|
||||
"Delete Message" = "Bericht verwijderen";
|
||||
"Delete Selected Messages" = "Geselecteerde berichten verwijderen";
|
||||
@@ -315,6 +327,7 @@
|
||||
/* Error when uploading a file attachment */
|
||||
"Error while uploading the file \"%{0}\":" = "Fout bij uploaden van bestand \"%{0}\":";
|
||||
"There is an active file upload. Closing the window will interrupt it." = "Een bestandsupload is actief. Sluiten van het venster zal hem onderbreken.";
|
||||
"Message is too big" = "Bericht is te groot";
|
||||
|
||||
/* Appears while sending the message */
|
||||
"Sending" = "Verzenden";
|
||||
|
||||
@@ -70,6 +70,8 @@
|
||||
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
|
||||
"No mailbox selected" = "No mailbox selected";
|
||||
|
||||
"An error occured while communicating with the mail server" = "An error occured while communicating with the mail server";
|
||||
|
||||
/* Mailbox actions */
|
||||
/* Compact Folder success message */
|
||||
"Folder compacted" = "Folder compacted";
|
||||
|
||||
@@ -53,7 +53,13 @@
|
||||
/* Mail account main windows */
|
||||
"Welcome to the SOGo Mailer. Use the folder tree on the left to browse your mail accounts!" = "Tervetuloa SOGo Sähköpostiin. Käytä vasemmanpuoleista hakupuuta sähköpostitiliesi selaamiseen.";
|
||||
"Read messages" = "Luetut viestit";
|
||||
|
||||
/* Tooltip for fab button */
|
||||
"Write a new message" = "Kirjoita uusi viesti";
|
||||
|
||||
/* Tooltip for fab button */
|
||||
"Write a message in new window" = "Kirjoita viesti uudessa ikkunassa";
|
||||
|
||||
"Share" = "Jaa";
|
||||
"Account" = "Tili";
|
||||
"Shared Account" = "Jaettu tili";
|
||||
@@ -217,6 +223,12 @@
|
||||
/* Message view "more" menu: create a task from message */
|
||||
"Convert To Task" = "Muunna tehtäväksi";
|
||||
|
||||
/* Message view "more" menu: download all attachments as a zip archive */
|
||||
"Download all attachments" = "Lataa kaikki liitteet";
|
||||
|
||||
/* Filename prefix when downloading all attachments as a zip archive */
|
||||
"attachments" = "liitteet";
|
||||
|
||||
"Print..." = "Tulosta...";
|
||||
"Delete Message" = "Poista viesti";
|
||||
"Delete Selected Messages" = "Poista valitut viestit";
|
||||
@@ -315,6 +327,7 @@
|
||||
/* Error when uploading a file attachment */
|
||||
"Error while uploading the file \"%{0}\":" = "Virhe tiedoston \"%{0}\" latauksessa: ";
|
||||
"There is an active file upload. Closing the window will interrupt it." = "Tiedoston lataus on käynnissä. Ikkunan sulkeminen pysäyttää latauksen.";
|
||||
"Message is too big" = "Viesti on liian iso";
|
||||
|
||||
/* Appears while sending the message */
|
||||
"Sending" = "Lähettää";
|
||||
|
||||
@@ -70,6 +70,8 @@
|
||||
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
|
||||
"No mailbox selected" = "Aucune boîte sélectionnée";
|
||||
|
||||
"An error occured while communicating with the mail server" = "Une erreur est survenue lors de la connexion au serveur de courrier.";
|
||||
|
||||
/* Mailbox actions */
|
||||
/* Compact Folder success message */
|
||||
"Folder compacted" = "Dossier compressé";
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
"Set as Junk" = "Als Spam markieren";
|
||||
|
||||
"Sort" = "Sortieren";
|
||||
"Order Received" = "Anweisung erhalten";
|
||||
"Order Received" = "Nach Empfang sortieren";
|
||||
"Descending Order" = "Absteigende Sortierung";
|
||||
"Back" = "Zurück";
|
||||
"Copy messages" = "Nachrichten kopieren";
|
||||
|
||||
@@ -0,0 +1,409 @@
|
||||
/* this file is in UTF-8 format! */
|
||||
|
||||
/* Icon's label */
|
||||
"Create" = "Izveidot";
|
||||
"Empty Trash" = "Tukša atkritne";
|
||||
"Delete" = "Dzēst";
|
||||
"Expunge" = "Izdzēst";
|
||||
"Forward" = "Pārsūtīt";
|
||||
"Get Mail" = "Saņemt e-pastu";
|
||||
"Junk" = "Nevēlams";
|
||||
"Not junk" = "Nav nevēlams";
|
||||
"Reply" = "Atbildēt";
|
||||
"Reply All" = "Atbildēt visiem";
|
||||
"Print" = "Drukāt";
|
||||
"Stop" = "Stop";
|
||||
"Write" = "Rakstīt";
|
||||
"Search" = "Meklēt";
|
||||
"Send" = "Sūtīt";
|
||||
"Contacts" = "Kontakti";
|
||||
"Attach" = "Pievienot";
|
||||
"Save" = "Saglabāt";
|
||||
"Options" = "Opcijas";
|
||||
"Close" = "Aizvērt";
|
||||
"Size" = "Izmērs";
|
||||
|
||||
/* Tooltips */
|
||||
"Send this message now" = "Sūtīt šo ziņojumu tūlīt";
|
||||
"Select a recipient from an Address Book" = "Izvēlieties adresātu no adrešu grāmatas";
|
||||
"Include an attachment" = "Pielikuma iekļaušana";
|
||||
"Save this message" = "Saglabāt šo ziņojumu";
|
||||
"Get new messages" = "Jaunu ziņojumu saņemšana";
|
||||
"Create a new message" = "Izveidot jaunu ziņu";
|
||||
"Go to address book" = "Atveriet adrešu grāmatu";
|
||||
"Reply to the message" = "Atbildēt uz ziņu";
|
||||
"Reply to sender and all recipients" = "Atbildēt sūtītājam un visiem adresātiem";
|
||||
"Forward selected message" = "Pārsūtīt izvēlēto ziņu";
|
||||
"Delete selected message or folder" = "Izdzēsiet izvēlēto ziņu vai mapi";
|
||||
"Print this message" = "Drukāt šo ziņojumu";
|
||||
"Stop the current transfer" = "Apturēt pašreizējo pārraidi";
|
||||
"Attachment" = "Pielikums";
|
||||
"Unread" = "Nelasīts";
|
||||
"Flagged" = "Ar karodziņu";
|
||||
"Search multiple mailboxes" = "Vairāku pastkastu meklēšana";
|
||||
|
||||
/* Main Frame */
|
||||
"Home" = "Sākums";
|
||||
"Calendar" = "Kalendārs";
|
||||
"Addressbook" = "Adrešu grāmata";
|
||||
"Mail" = "E-pasts";
|
||||
"Right Administration" = "Tiesību administrēšana";
|
||||
"Help" = "Palīdzība";
|
||||
|
||||
/* Mail account main windows */
|
||||
"Welcome to the SOGo Mailer. Use the folder tree on the left to browse your mail accounts!" = "Esiet sveicināts SOGo Mailer. Izmantojiet mapes koku par kreisi, lai pārlūkotu jūsu pasta kontus!";
|
||||
"Read messages" = "Lasīt ziņas";
|
||||
|
||||
/* Tooltip for fab button */
|
||||
"Write a new message" = "Rakstīt jaunu ziņu";
|
||||
|
||||
/* Tooltip for fab button */
|
||||
"Write a message in new window" = "Rakstīt ziņojumu jaunā logā";
|
||||
|
||||
"Share" = "Koplietot";
|
||||
"Account" = "Konts";
|
||||
"Shared Account" = "Kopējs konts";
|
||||
|
||||
/* A mailbox is selected, but no message (only shown on large screens) */
|
||||
"No message selected" = "Nav izvēlēta ziņa";
|
||||
|
||||
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
|
||||
"No mailbox selected" = "Neviena pastkaste nav atlasīta";
|
||||
|
||||
"An error occured while communicating with the mail server" = "Radās kļūda, sazinoties ar serveri";
|
||||
|
||||
/* Mailbox actions */
|
||||
/* Compact Folder success message */
|
||||
"Folder compacted" = "Mape saspiesta";
|
||||
/* Empty Trash success message */
|
||||
"Trash emptied" = "Atkritne iztukšota";
|
||||
|
||||
/* acls */
|
||||
"Access rights to" = "Piekļuves tiesības";
|
||||
"For user" = "Lietotājam";
|
||||
"Any Authenticated User" = "Visi autentificētie lietotāji";
|
||||
"List and see this folder" = "Attēlot un skatīt šo mapi";
|
||||
"Read mails from this folder" = "Lasīt pastu no šīs mapes";
|
||||
"Mark mails read and unread" = "Atzīmēt lasītās un nelasītās ziņas";
|
||||
"Modify the flags of the mails in this folder" = "Modificēt e-pasta karogus šajā mapē";
|
||||
"Insert, copy and move mails into this folder" = "Ievietot, kopēt un pārvietot pasta ziņas šajā mapē";
|
||||
"Post mails" = "Pasta ziņas";
|
||||
"Add subfolders to this folder" = "Pievienot mapei apakšmapes";
|
||||
"Remove this folder" = "Noņemt šo mapi";
|
||||
"Erase mails from this folder" = "Dzēst pastu no šīs mapes";
|
||||
"Expunge this folder" = "Izdzēst šo mapi";
|
||||
"Export This Folder" = "Eksportēt šo mapi";
|
||||
"Modify the acl of this folder" = "Mainīt šīs mapes ACL";
|
||||
"Saved Messages.zip" = "Saglabāts Ziņas*.zip";
|
||||
"Update" = "Atjaunināt";
|
||||
"Cancel" = "Atcelt";
|
||||
|
||||
/* Mail edition */
|
||||
"From" = "No";
|
||||
"Subject" = "Temats";
|
||||
"To" = "Kam";
|
||||
"Cc" = "Kopija";
|
||||
"Bcc" = "Diskrētā kopija";
|
||||
"Reply-To" = "Atbildēt uz";
|
||||
"Add address" = "Pievienot adresi";
|
||||
"Body" = "Korpuss";
|
||||
"Open" = "Atvērt";
|
||||
"Select All" = "Atlasīt visu";
|
||||
"Select Message" = "Izvēlieties ziņojumu";
|
||||
"Attach Web Page..." = "Pievienot tīmekļa lapu...";
|
||||
"file" = "fails";
|
||||
"files" = "faili";
|
||||
"Save all" = "Saglabāt visu";
|
||||
"to" = "Kam";
|
||||
"cc" = "Cc";
|
||||
"bcc" = "Bcc";
|
||||
"Add a recipient" = "Pievienot adresātu";
|
||||
"Edit Draft..." = "Melnraksta rediģēšana...";
|
||||
"Load Images" = "Ielādēt attēlus";
|
||||
"Return Receipt" = "Saņemšanas paziņojums";
|
||||
"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "Šī ziņojuma nosūtītājs ir pieprasījis, lai tiktu paziņots, kad izlasīsiet šo ziņojumu. Vai vēlaties apstiprināt ?";
|
||||
"Return Receipt (displayed) - %@"= "Saņemšanas paziņojums (parādīts) - %@";
|
||||
"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "Šis ir saņemšanas paziņojums e-pastam ko jūs nosūtījāt %@.\n\nPiezīme: šī ziņojuma saņemšanas paziņojums tikai apstiprināts, ka ziņojums tika parādīts adresāta datorā. Bet nav garantijas, ka adresāts ir izlasījis un sapratis šo ziņojumu saturu.";
|
||||
"Priority" = "Prioritāte";
|
||||
"highest" = "Augstākā";
|
||||
"high" = "Augsts";
|
||||
"normal" = "Normāls";
|
||||
"low" = "Zems";
|
||||
"lowest" = "Zemākā";
|
||||
"This mail is being sent from an unsecure network!" = "Šis e-pasta ziņojums tiek sūtīts no nedroša tīkla!";
|
||||
"Address Book" = "Adrešu grāmata";
|
||||
"Search For" = "Meklēt";
|
||||
|
||||
/* Popup "show" */
|
||||
"all" = "visi";
|
||||
"read" = "lasīts";
|
||||
"unread" = "nelasīts";
|
||||
"deleted" = "dzēsts";
|
||||
"flagged" = "ar karodziņu";
|
||||
|
||||
/* MailListView */
|
||||
"Sender" = "Sūtītājs";
|
||||
"Subject or Sender" = "Tēma vai sūtītājs";
|
||||
"To or Cc" = "Kam vai Kopija";
|
||||
"Entire Message" = "Visu ziņojumu";
|
||||
"Date" = "Datums";
|
||||
"View" = "Skatīt";
|
||||
"All" = "Viss";
|
||||
"No message" = "Ziņu nav";
|
||||
"messages" = "ziņojumi";
|
||||
"Yesterday" = "Vakar";
|
||||
"first" = "Pirmais";
|
||||
"previous" = "Iepriekšējais";
|
||||
"next" = "Nākamais";
|
||||
"last" = "Pēdējais";
|
||||
"msgnumber_to" = "kam";
|
||||
"msgnumber_of" = "no";
|
||||
"Mark Unread" = "Atzīmēt kā nelasītu";
|
||||
"Mark Read" = "Atzīmēt kā lasītu";
|
||||
"Untitled" = "Nenosaukts";
|
||||
|
||||
/* Tree */
|
||||
"SentFolderName" = "Sūtīt";
|
||||
"TrashFolderName" = "Atkritne";
|
||||
"InboxFolderName" = "Iesūtne";
|
||||
"DraftsFolderName" = "Melnraksti";
|
||||
"JunkFolderName" = "Nevēlams";
|
||||
"SieveFolderName" = "Filtri";
|
||||
"Folders" = "Mapes"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
"MoveTo" = "Pārvietot …";
|
||||
|
||||
/* Address Popup menu */
|
||||
"Add to Address Book..." = "... pievienot adrešu grāmatai";
|
||||
"Compose Mail To" = "Rakstīt pastu";
|
||||
"Create Filter From Message..." = "Izveidot filtru no ziņojuma...";
|
||||
|
||||
/* Image Popup menu */
|
||||
"Save Image" = "Saglabāt attēlu";
|
||||
"Save Attachment" = "Saglabāt pielikumu";
|
||||
|
||||
/* Mailbox popup menus */
|
||||
"Open in New Mail Window" = "Atvērt jaunā epasta logā";
|
||||
"Copy Folder Location" = "Kopēt mapes atrašanās vietu";
|
||||
"Subscribe..." = "Abonēt...";
|
||||
"Mark Folder Read" = "Atzīmēt mapi kā lasītu";
|
||||
"New Folder..." = "Jauna mape...";
|
||||
"Compact This Folder" = "Saspiest šo mapi";
|
||||
"Search Messages..." = "Ziņu meklēšana...";
|
||||
"Sharing..." = "Koplieto...";
|
||||
"New Subfolder..." = "Jauna apakšmape...";
|
||||
"Rename Folder..." = "Pārdēvēt mapi...";
|
||||
"Delete Folder" = "Dzēst mapi";
|
||||
"Use This Folder For" = "Lietojiet šo mapi";
|
||||
"Get Messages for Account" = "Saņemt ziņojumus kontam";
|
||||
"Properties..." = "Rekvizīti...";
|
||||
"Delegation..." = "Deleģēšana...";
|
||||
|
||||
/* Use This Folder menu */
|
||||
"Sent Messages" = "Nosūtīt ziņojumus";
|
||||
"Drafts" = "Melnraksti";
|
||||
"Deleted Messages" = "Dzēst ziņojumus";
|
||||
"Junk Messages" = "Nevēlamā e-pasta ziņojumi";
|
||||
|
||||
/* Message list popup menu */
|
||||
"Open Message In New Window" = "Atvērt ziņu jaunā logā";
|
||||
"Reply to Sender Only" = "Atbildēt tikai sūtītājam";
|
||||
"Reply to All" = "Atbildēt visiem";
|
||||
"Edit As New..." = "Labot kā jaunu...";
|
||||
"Move To" = "Pārvietot uz";
|
||||
"Copy To" = "Kopēt uz";
|
||||
"Label" = "Etiķete";
|
||||
"Mark" = "Atzīmēt";
|
||||
"Save As..." = "Saglabāt kā...";
|
||||
"Print Preview" = "Drukas priekšskatījums";
|
||||
"View Message Source" = "Skatīt ziņojuma avotu";
|
||||
|
||||
/* Message view "more" menu: create an event from message */
|
||||
"Convert To Event" = "Pārvērst par notikumu";
|
||||
|
||||
/* Message view "more" menu: create a task from message */
|
||||
"Convert To Task" = "Pārvērst par uzdevumu";
|
||||
|
||||
/* Message view "more" menu: download all attachments as a zip archive */
|
||||
"Download all attachments" = "Lejupielādēt visus pielikumus";
|
||||
|
||||
/* Filename prefix when downloading all attachments as a zip archive */
|
||||
"attachments" = "pielikumi";
|
||||
|
||||
"Print..." = "Drukāt...";
|
||||
"Delete Message" = "Dzēst ziņojumu";
|
||||
"Delete Selected Messages" = "Izdzēst atlasītos ziņojumus";
|
||||
"Mark the selected messages as junk" = "Atzīmēt atlasīto ziņojumu kā nevēlamu";
|
||||
"Mark the selected messages as not junk" = "Atzīmēt atlasīto ziņojumu kā vēlamu";
|
||||
|
||||
/* Text appended to the recipients list when there are too many recipients */
|
||||
"and %{0} more..." = "un %{0} vairāk...";
|
||||
|
||||
/* Button label to hide extended list of recipients */
|
||||
"Hide" = "Paslēpt";
|
||||
|
||||
/* Number of selected messages in list */
|
||||
"selected" = "atlasīts";
|
||||
|
||||
"This Folder" = "Šī mape";
|
||||
|
||||
/* Label popup menu */
|
||||
"None" = "Neviens";
|
||||
|
||||
/* Mark popup menu */
|
||||
"As Read" = "Kā lasītu";
|
||||
"Thread As Read" = "Pavedienu kā lasītu";
|
||||
"As Read By Date..." = "Kā lasīts pēc datuma...";
|
||||
"All Read" = "Visi izlasītie";
|
||||
"Flag" = "Karogs";
|
||||
"As Junk" = "Kā nevēlamu";
|
||||
"As Not Junk" = "Kā vēlamu";
|
||||
"Run Junk Mail Controls" = "Palaist Mēstuļu kontroli";
|
||||
"Search messages in" = "Meklēt ziņu";
|
||||
"Search" = "Meklēt";
|
||||
"Search subfolders" = "Meklēt apakšmapēs";
|
||||
"Match any of the following" = "Atbilst jebkuram no ";
|
||||
"Match all of the following" = "Atbilst viss no";
|
||||
"contains" = "satur";
|
||||
"does not contain" = "nesatur";
|
||||
"No matches found" = "Nav atrasta neviena atbilstība";
|
||||
"results found" = "atrastie rezultāti";
|
||||
"result found" = "atrastie rezultāti";
|
||||
"Please specify at least one filter" = "Lūdzu, norādiet vismaz vienu filtru";
|
||||
|
||||
/* Folder operations */
|
||||
"Name" = "Vārds";
|
||||
"Enter the new name of your folder"
|
||||
="Ievadiet jaunu mapes nosaukumu";
|
||||
"Do you really want to move this folder into the trash ?"
|
||||
= "Vai tiešām vēlaties šo mapi pārvietot uz atkritni?";
|
||||
"Operation failed" = "Darbība neizdevās";
|
||||
"Quota" = "Kvota:";
|
||||
"quotasFormat" = "%{0}% izmantoti no %{1} MB";
|
||||
"Unable to move/delete folder." = "Nevar pārvietot vai dzēst mapi.";
|
||||
|
||||
/* Alternative operation when folder cannot be deleted */
|
||||
"The mailbox could not be moved to the trash folder. Would you like to delete it immediately?"
|
||||
= "Pastkasti nevarēja pārvietot uz atkritni. Vai vēlaties dzēst to tūlīt?";
|
||||
|
||||
/* Confirmation message when deleting multiple messages */
|
||||
"Are you sure you want to delete the selected messages?" = "Vai tiešām vēlaties izdzēst atlasītos ziņojumus?";
|
||||
|
||||
/* Notification on the number of messages successfuly copied */
|
||||
"%{0} message(s) copied" = "%{0} ziņojums(i) nokopēts";
|
||||
|
||||
/* Notification on the number of messages successfuly movied */
|
||||
"%{0} message(s) moved" = "%{0} ziņojumus(i) pārvietots";
|
||||
|
||||
"Please select a message." = "Izvēlieties ziņu.";
|
||||
"Please select a message to print." = "Izvēlieties ziņu, lai to varētu izdrukāt.";
|
||||
"Please select only one message to print." = "Lūdzu, izvēlieties tikai vienu ziņu, lai drukātu.";
|
||||
"The message you have selected doesn't exist anymore." = "Atlasītais ziņojums vairs neeksistē.";
|
||||
"The folder with name \"%{0}\" could not be created."
|
||||
= "Mapi ar nosaukumu \"%{0}\" nevar izveidot.";
|
||||
"This folder could not be renamed to \"%{0}\"."
|
||||
= "Šo mapi nevar pārdēvēt par \"%{0}\".";
|
||||
"The folder could not be deleted."
|
||||
= "Mapi nevarēja dzēst.";
|
||||
"The trash could not be emptied."
|
||||
= "Atkritni nevar iztukšot.";
|
||||
"The folder functionality could not be changed."
|
||||
= "Mapes funkciju nevar mainīt.";
|
||||
"You need to choose a non-virtual folder!" = "Ir jāizvēlas non-virtual mape!";
|
||||
"Moving a message into its own folder is impossible!"
|
||||
= "Ziņas pārvietošana uz savu mapi nav iespējama!";
|
||||
"Copying a message into its own folder is impossible!"
|
||||
= "Kopēt ziņu uz savu mapi nav iespējams!";
|
||||
|
||||
/* Message operations */
|
||||
"The messages could not be moved to the trash folder. Would you like to delete them immediately?"
|
||||
= "Ziņas nevarēja pārvietot uz atkritni. Vai vēlaties dzēst tās tūlīt?";
|
||||
|
||||
/* Message editing */
|
||||
"error_missingsubject" = "Šim ziņojumam nav tēmas. Vai tiešām vēlaties to nosūtīt?";
|
||||
"error_missingrecipients" = "Lūdzu, norādiet vismaz vienu adresātu.";
|
||||
"Send Anyway" = "Tomēr nosūtīt";
|
||||
"Error while saving the draft" = "Melnraksta saglabāšanas kļūda";
|
||||
|
||||
/* Error when uploading a file attachment */
|
||||
"Error while uploading the file \"%{0}\":" = "Kļūda, augšupielādējot failu \"%{0}\":";
|
||||
"There is an active file upload. Closing the window will interrupt it." = "Ir aktīva failu augšupielāde. Loga aizvēršana pārtrauc to.";
|
||||
"Message is too big" = "Ziņojums ir pārāk liels.";
|
||||
|
||||
/* Appears while sending the message */
|
||||
"Sending" = "Sūtīšana";
|
||||
|
||||
/* Appears when the message is successfuly sent */
|
||||
"Sent" = "Sūtīt";
|
||||
|
||||
"cannot send message: (smtp) all recipients discarded" = "Nevar nosūtīt ziņu: visi adresāti ir nederīgi.";
|
||||
"cannot send message (smtp) - recipients discarded" = "Nevar nosūtīt ziņu. Šī adrese ir nederīga";
|
||||
"cannot send message: (smtp) error when connecting" = "Nevar nosūtīt ziņu: kļūda, veidojot savienojumu ar SMTP serveri.";
|
||||
|
||||
/* Contacts list in mail editor */
|
||||
"Email" = "E-pasts";
|
||||
"More mail options" = "Papildus e-pasta opcijas";
|
||||
"Delegation" = "Deleģēšana";
|
||||
"Add User" = "Pievienot lietotāju";
|
||||
"Add a tag" = "Pievienot birku";
|
||||
"reply" = "atbildēt";
|
||||
"Edit" = "Labot";
|
||||
"Yes" = "Jā";
|
||||
"No" = "Nē";
|
||||
"Location" = "Vieta";
|
||||
"Rename" = "Pārdēvēt";
|
||||
"Compact" = "Kompakts";
|
||||
"Export" = "Eksportēt";
|
||||
"Set as Drafts" = "Iestatīt kā projektu";
|
||||
"Set as Sent" = "Iestatīt kā nosūtīts";
|
||||
"Set as Trash" = "Iestatīt kā drazu";
|
||||
|
||||
/* Set the folder as the one holding Junk mails */
|
||||
"Set as Junk" = "Iestatīt kā nevēlamu";
|
||||
|
||||
"Sort" = "Kārtot";
|
||||
"Order Received" = "Saņemšanas apstiprinājums";
|
||||
"Descending Order" = "Dilstoša secība";
|
||||
"Back" = "Atpakaļ";
|
||||
"Copy messages" = "Kopēt ziņojumus";
|
||||
"More messages options" = "Vairāk ziņojumu opcijas";
|
||||
"Mark as Unread" = "Atzīmēt kā nelasītu";
|
||||
"Mark as Read" = "Atzīmēt kā lasītu";
|
||||
"Closing Window ..." = "... loga aizvēršana";
|
||||
"Tried to send too many mails. Please wait." = "Mēģinājāt nosūtīt pārāk daudz e-pastu. Lūdzu, uzgaidiet.";
|
||||
"View Mail" = "Skatīt pastu";
|
||||
"This message contains external images." = "Šis ziņojums satur ārējos attēlus.";
|
||||
"Expanded" = "Izvērsts";
|
||||
"Add a Criteria" = "Pievienot kritēriju";
|
||||
"More search options" = "Papildu meklēšanas opcijas";
|
||||
"Your email has been saved" = "Jūsu e-pasts ir saglabāts";
|
||||
"Your email has been sent" = "Jūsu e-pasts ir nosūtīts";
|
||||
"Folder compacted" = "Mape saspiesta";
|
||||
|
||||
/* Aria label for scope of search on messages */
|
||||
"Search scope" = "Meklēšanas joma";
|
||||
|
||||
/* Subscriptions Dialog */
|
||||
"Manage Subscriptions" = "Pārvaldīt abonementus";
|
||||
|
||||
/* Label of filter input field in subscriptions dialog */
|
||||
"Filter" = "Filtrs";
|
||||
|
||||
/* Hotkey to write a new message */
|
||||
"hotkey_compose" = "w";
|
||||
|
||||
/* Hotkey to mark selected message(s) as junk */
|
||||
"hotkey_junk" = "j";
|
||||
|
||||
/* Hotkey to flag a message */
|
||||
"hotkey_flag" = "*";
|
||||
|
||||
/* Hotkey to reply to a message */
|
||||
"hotkey_reply" = "r";
|
||||
|
||||
/* Hotkey to reply to all recipients of a message */
|
||||
"hotkey_replyall" = "a";
|
||||
|
||||
/* Hotkey to forward to a message */
|
||||
"hotkey_forward" = "f";
|
||||
@@ -70,6 +70,8 @@
|
||||
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
|
||||
"No mailbox selected" = "Nie wybrano skrzynki";
|
||||
|
||||
"An error occured while communicating with the mail server" = "Wystąpił błąd w trakcie komunikacji z serwerem pocztowym";
|
||||
|
||||
/* Mailbox actions */
|
||||
/* Compact Folder success message */
|
||||
"Folder compacted" = "Folder zkompaktowany";
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"Write a new message" = "Yeni ileti yaz";
|
||||
|
||||
/* Tooltip for fab button */
|
||||
"Write a message in new window" = "Yeni pencerede bir ileti yaz";
|
||||
"Write a message in new window" = "Yeni pencerede ileti yaz";
|
||||
|
||||
"Share" = "Paylaşım";
|
||||
"Account" = "Hesap";
|
||||
@@ -70,6 +70,8 @@
|
||||
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
|
||||
"No mailbox selected" = "Seçili e-posta klasörü yok";
|
||||
|
||||
"An error occured while communicating with the mail server" = "E-posta sunucusu ile iletişime geçerken bir hata oluştu";
|
||||
|
||||
/* Mailbox actions */
|
||||
/* Compact Folder success message */
|
||||
"Folder compacted" = "Klasör sıkıştırıldı";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
"NorwegianNynorsk" = "Norsk nynorsk";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
"NorwegianNynorsk" = "Norsk nynorsk";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/* Latvian */
|
||||
{
|
||||
NSLanguageName = "Latvian";
|
||||
NSFormalName = "Latvijas";
|
||||
NSLocaleCode = "lv"; /* ISO 639-1 */
|
||||
NSLanguageCode = "lav"; /* ISO 639-2 */
|
||||
NSParentContext = "";
|
||||
|
||||
NSAMPMDesignation = (AM, PM);
|
||||
NSCurrencySymbol = "€";
|
||||
NSDateFormatString = "%A, %B %e, %Y";
|
||||
NSDateTimeOrdering = MDYH;
|
||||
NSDecimalDigits = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
|
||||
NSDecimalSeparator = ".";
|
||||
NSEarlierTimeDesignations = (pirms, "pēdējais", "pēc", sen);
|
||||
NSHourNameDesignations = ((0, pusnakts), (10, "rīts"), (12, pusdienlaiks, pusdienas), (14, "pēcpusdienā"), (19, "vakariņas"));
|
||||
NSInternationalCurrencyString = EUR; /* ISO 4217 */
|
||||
NSLaterTimeDesignations = ("nākamais");
|
||||
NSMonthNameArray = ("Janvāris", "Februāris", Marts, "Aprīlis", Maijs, "Jūnijs", "Jūlijs", Augusts, Septembris, Oktobris, Novembris, Decembris);
|
||||
NSNextDayDesignations = ("rīt");
|
||||
NSNextNextDayDesignations = ("nākamā diena");
|
||||
NSPriorDayDesignations = (vakar);
|
||||
NSShortDateFormatString = "%m.%e.%y";
|
||||
NSShortMonthNameArray = (Jan, Feb, Mar, Apr, Mai, "Jūn", "Jūl", Aug, Sept, Okt, Nov, Dec);
|
||||
NSShortTimeDateFormatString = "%m.%e.%y %I:%M %p";
|
||||
NSShortWeekDayNameArray = (Sv, Pr, Ot, Tr, Ce, Pk, Se);
|
||||
NSThisDayDesignations = ("šodien", tagad);
|
||||
NSThousandsSeparator = ",";
|
||||
NSTimeDateFormatString = "%A, %B %e, %Y %I:%M:%S %p %Z";
|
||||
NSTimeFormatString = "%I:%M:%S %p";
|
||||
NSWeekDayNameArray = ("Svētdiena", Pirmdiena, Otrdiena, "Trešdiena", Ceturtdiena, Piektdiena, Sestdiena);
|
||||
NSYearMonthWeekDesignations = (gads, "mēnesis", "nedēļa");
|
||||
NSPositiveCurrencyFormatString = "€9,999.00";
|
||||
NSNegativeCurrencyFormatString = "-€9,999.00";
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
/* this file is in UTF-8 format! */
|
||||
|
||||
"title" = "SOGo";
|
||||
"Username" = "Lietotājvārds";
|
||||
"Password" = "Parole";
|
||||
"Domain" = "Domēns";
|
||||
"Remember username" = "Atcerēties lietotājvārdu";
|
||||
"Connect" = "Savienot";
|
||||
|
||||
/* Appears while authentication is in progress */
|
||||
"Authenticating" = "Autentificēšana";
|
||||
|
||||
/* Appears when authentication succeeds */
|
||||
"Welcome" = "Sveicināti";
|
||||
|
||||
"Authentication Failed" = "Autentifikācija neizdevās";
|
||||
"Wrong username or password." = "Nepareizs lietotājvārds vai parole.";
|
||||
"Retry" = "Mēģināt vēlreiz";
|
||||
"cookiesNotEnabled" = "Jūs nevarat pieteikties, jo jūsu pārlūkprogrammas sīkfaili ir atspējoti. Lūdzu, iespējojiet sīkfailus savā pārlūkprogrammas iestatījumos un mēģiniet vēlreiz.";
|
||||
"browserNotCompatible" = "Mēs esam noteikuši, ka jūsu pārlūkprogrammas versija pašlaik netiek atbalstīta šajā vietnē. Mūsu ieteikums ir izmantot Firefox. Noklikšķiniet uz tālāk norādītās saites, lai lejupielādētu visjaunāko šīs pārlūkprogrammas versiju.";
|
||||
"alternativeBrowsers" = "Alternatīvi var izmantot arī šādas saderīgas pārlūkprogrammas";
|
||||
"alternativeBrowserSafari" = "Alternatīvi, jūs varat arī izmantot Safari.";
|
||||
"Download" = "Lejupielādēt";
|
||||
"Language" = "Valoda";
|
||||
"choose" = "Izvēlieties...";
|
||||
"Arabic" = "العربية";
|
||||
"Basque" = "Euskara";
|
||||
"Catalan" = "Català";
|
||||
"ChineseTaiwan" = "Chinese (Taiwan)";
|
||||
"Croatian" = "Hrvatski";
|
||||
"Czech" = "Česky";
|
||||
"Danish" = "Dansk (Danmark)";
|
||||
"Dutch" = "Nederlands";
|
||||
"English" = "English";
|
||||
"Finnish" = "Suomi";
|
||||
"French" = "Français";
|
||||
"German" = "Deutsch";
|
||||
"Hebrew" = "עברית";
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
"NorwegianNynorsk" = "Norsk nynorsk";
|
||||
"Polish" = "Polski";
|
||||
"Portuguese" = "Português";
|
||||
"BrazilianPortuguese" = "Português brasileiro";
|
||||
"Russian" = "Русский";
|
||||
"Serbian" = "Српски";
|
||||
"Slovak" = "Slovensky";
|
||||
"Slovenian" = "Slovenščina";
|
||||
"SpanishSpain" = "Español (España)";
|
||||
"SpanishArgentina" = "Español (Argentina)";
|
||||
"Swedish" = "Svenska";
|
||||
"TurkishTurkey" = "Türkçe (Türkiye)";
|
||||
"Ukrainian" = "Українська";
|
||||
"Welsh" = "Cymraeg";
|
||||
|
||||
"About" = "Par";
|
||||
"AboutBox" = "SOGo izstrādātās inversā, bezmaksas grupprogrammatūras serveris ar uzsvaru uz mērogojamību un vienkāršību.<br/><br/>\nAJAX-based sniedz bagātu SOGo Web interfeisu un atbalsta vairāki klienti, izmantojot standarta protokolus CalDAV un CardDAV.<br/><br/>\nSOGo tiek izplatīts saskaņā ar <a href=\"http://gnu.org/licenses/gpl.html\">GNU GPL</a> versiju 2 vai jaunāku un detaļas tiek izplatītas saskaņā ar GNU LGPL versiju 2. Šī ir bezmaksas programmatūra: tu vari to mainīt un izplatīt. Nav NEKĀDAS GARANTIJAS, likums to atļauj.<br/><br/>\nSkatīt <a href=\"http://www.sogo.nu/en/support/community.html\">šo lapu</a> par dažādām atbalsta iespējām.";
|
||||
"Your account was locked due to too many failed attempts." = "Jūsu konts ir bloķēts, jo tika veikti pārāk daudz nesekmīgu mēģinājumu.";
|
||||
"Your account was locked due to an expired password." = "Jūsu konts ir bloķēts, jo ir beidzies paroles derīguma termiņš.";
|
||||
"Login failed due to unhandled error case" = "Pieteikšanās neizdevās nezināmas kļūdas dēļ";
|
||||
"Change your Password" = "Mainīt paroli";
|
||||
"The password was changed successfully." = "Parole sekmīgi nomainīta.";
|
||||
"Your password has expired, please enter a new one below" = "Jūsu paroles derīguma termiņš ir beidzies, lūdzu, ievadiet jaunu";
|
||||
"Password must not be empty." = "Parole nedrīkst būt tukša.";
|
||||
"The passwords do not match. Please try again." = "Paroles nesakrīt. Lūdzu, mēģiniet vēlreiz.";
|
||||
"Password Grace Period" = "Paroles derīguma periods";
|
||||
"You have %{0} logins remaining before your account is locked. Please change your password in the preference dialog." = "Jums ir % {0} pieteikšanās atlikušas pirms jūsu konts tiks bloķēts. Lūdzu, nomainiet savu paroli preferenču logā.";
|
||||
"Password about to expire" = "Paroles derīguma termiņa beigas";
|
||||
"Your password is going to expire in %{0} %{1}." = "Jūsu paroles termiņš beidzas %{0} %{1}.";
|
||||
"days" = "dienas";
|
||||
"hours" = "stundas";
|
||||
"minutes" = "minūtes";
|
||||
"seconds" = "sekundes";
|
||||
"Password change failed" = "Paroles maiņa neizdevās";
|
||||
"Password change failed - Permission denied" = "Paroles maiņa neizdevās - Atļauja liegta";
|
||||
"Password change failed - Insufficient password quality" = "Paroles maiņa neizdevās - Nepietiekama paroles kvalitāte";
|
||||
"Password change failed - Password is too short" = "Paroles maiņa neizdevās - parole ir pārāk īsa";
|
||||
"Password change failed - Password is too young" = "Paroles maiņa neizdevās - parole ir pārāk maza, jauna";
|
||||
"Password change failed - Password is in history" = "Paroles maiņa neizdevās - parole atrodas vēsturē";
|
||||
"Unhandled policy error: %{0}" = "Neapstrādāta politikas kļūda: %{0}";
|
||||
"Unhandled error response" = "Neapstrādāta kļūda";
|
||||
"Password change is not supported." = "Paroles maiņa nav atbalstīta.";
|
||||
"Unhandled HTTP error code: %{0}" = "Neparedzēts HTTP kļūdas kods: %{0}";
|
||||
"New password" = "Jauna parole";
|
||||
"Confirmation" = "Apstiprinājums";
|
||||
"Cancel" = "Atcelt";
|
||||
"Please wait..." = "Lūdzu, uzgaidiet...";
|
||||
"Close" = "Aizvērt";
|
||||
"Missing search parameter" = "Trūkst meklēšanas parametru";
|
||||
"Missing type parameter" = "Trūkst tipa parametru";
|
||||
@@ -28,8 +28,9 @@
|
||||
"German" = "Deutsch";
|
||||
"Hebrew" = "עברית";
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "\nÍslenska";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
"NorwegianNynorsk" = "Norsk nynorsk";
|
||||
"Polish" = "Polski";
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"Hungarian" = "Magyar";
|
||||
"Icelandic" = "Íslenska";
|
||||
"Italian" = "Italiano";
|
||||
"Latvian" = "Latvijas";
|
||||
"Lithuanian" = "Lietuvių";
|
||||
"Macedonian" = "Македонски";
|
||||
"NorwegianBokmal" = "Norsk bokmål";
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user