diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m
index a6f653f4b..9ac8c824d 100644
--- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m
+++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m
@@ -366,8 +366,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// the case, let's just update it. This can happen if for example, an iOS based device receives the
// invitation email and choses "Add to calendar" BEFORE actually syncing the calendar. That would
// create a duplicate on the server.
- if ([allValues objectForKey: @"UID"])
- serverId = [allValues objectForKey: @"UID"];
+ if ([allValues objectForKey: ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0) ? @"ClientUid" : @"UID"])
+ serverId = [allValues objectForKey: ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0) ? @"ClientUid" : @"UID"];
else
serverId = [theCollection globallyUniqueObjectId];
@@ -402,9 +402,33 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
case ActiveSyncMailFolder:
default:
{
- // FIXME - what to do?
- [self errorWithFormat: @"Fatal error occured - tried to call -processSyncAddCommand: ... on a mail folder. We abort."];
- abort();
+ // Support SMS to Exchange eMail sync.
+ NSString *serverId;
+ sogoObject = [SOGoMailObject objectWithName: @"Mail" inContainer: theCollection];
+ serverId = [sogoObject storeMail: allValues inContext: context];
+ if (serverId)
+ {
+ // Everything is fine, lets generate our response
+ // serverId = clientId - There is no furhter processing after adding the SMS to the inbox.
+ [theBuffer appendString: @""];
+ [theBuffer appendFormat: @"%@", clientId];
+ [theBuffer appendFormat: @"%@", serverId];
+ [theBuffer appendFormat: @"%d", 1];
+ [theBuffer appendString: @""];
+
+ folderMetadata = [self _folderMetadataForKey: [self _getNameInCache: theCollection withType: theFolderType]];
+ syncCache = [folderMetadata objectForKey: @"SyncCache"];
+ [syncCache setObject: @"0" forKey: serverId];
+ [self _setFolderMetadata: folderMetadata forKey: [self _getNameInCache: theCollection withType: theFolderType]];
+
+ continue;
+ }
+ else
+ {
+ // FIXME - what to do?
+ [self errorWithFormat: @"Fatal error occured - tried to call -processSyncAddCommand: ... on a mail folder. We abort."];
+ abort();
+ }
}
}
diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m
index 0094f8210..e0727a353 100644
--- a/ActiveSync/SOGoActiveSyncDispatcher.m
+++ b/ActiveSync/SOGoActiveSyncDispatcher.m
@@ -1177,38 +1177,45 @@ void handle_eas_terminate(int signum)
name = [NSString stringWithFormat: @"vtodo/%@", [[folders objectAtIndex:fi] nameInContainer]];
type = ([[[folders objectAtIndex:fi] nameInContainer] isEqualToString: personalFolderName] ? 7 : 15);
- [commands appendFormat: @"<%@>%@%@%@%d%@>", operation,
- [name stringByEscapingURL], @"0", [[[folders objectAtIndex:fi] displayName] activeSyncRepresentationInContext: context], type, operation];
- command_count++;
- key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], name];
-
- o = [SOGoCacheGCSObject objectWithName: key inContainer: nil];
- [o setObjectType: ActiveSyncFolderCacheObject];
- [o setTableUrl: [self folderTableURL]];
- [o reloadIfNeeded];
- [[o properties ] setObject: [[folders objectAtIndex:fi] displayName] forKey: @"displayName"];
-
- if ([operation isEqualToString: @"Add"])
+ // We always sync the "Default Tasks folder" (7). For "User-created Tasks folder" (15), we check if we include it in
+ // the sync process by checking if "Show tasks" is enabled. If not, we skip the folder entirely.
+ if (type == 7 ||
+ (type == 15 && [[folders objectAtIndex: fi] showCalendarTasks]))
{
- // clean cache content to avoid stale data
- [[o properties] removeObjectForKey: @"SyncKey"];
- [[o properties] removeObjectForKey: @"SyncCache"];
- [[o properties] removeObjectForKey: @"DateCache"];
- [[o properties] removeObjectForKey: @"UidCache"];
- [[o properties] removeObjectForKey: @"MoreAvailable"];
- [[o properties] removeObjectForKey: @"BodyPreferenceType"];
- [[o properties] removeObjectForKey: @"SupportedElements"];
- [[o properties] removeObjectForKey: @"SuccessfulMoveItemsOps"];
- [[o properties] removeObjectForKey: @"InitialLoadSequence"];
- [[o properties] removeObjectForKey: @"FirstIdInCache"];
- [[o properties] removeObjectForKey: @"LastIdInCache"];
- [[o properties] removeObjectForKey: @"MergedFoldersSyncKeys"];
- [[o properties] removeObjectForKey: @"MergedFolder"];
- [[o properties] removeObjectForKey: @"CleanoutDate"];
- }
+ [commands appendFormat: @"<%@>%@%@%@%d%@>", operation,
+ [name stringByEscapingURL], @"0", [[[folders objectAtIndex:fi] displayName] activeSyncRepresentationInContext: context], type, operation];
- [o save];
+ command_count++;
+
+ key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], name];
+ o = [SOGoCacheGCSObject objectWithName: key inContainer: nil];
+ [o setObjectType: ActiveSyncFolderCacheObject];
+ [o setTableUrl: [self folderTableURL]];
+ [o reloadIfNeeded];
+ [[o properties ] setObject: [[folders objectAtIndex:fi] displayName] forKey: @"displayName"];
+
+ if ([operation isEqualToString: @"Add"])
+ {
+ // clean cache content to avoid stale data
+ [[o properties] removeObjectForKey: @"SyncKey"];
+ [[o properties] removeObjectForKey: @"SyncCache"];
+ [[o properties] removeObjectForKey: @"DateCache"];
+ [[o properties] removeObjectForKey: @"UidCache"];
+ [[o properties] removeObjectForKey: @"MoreAvailable"];
+ [[o properties] removeObjectForKey: @"BodyPreferenceType"];
+ [[o properties] removeObjectForKey: @"SupportedElements"];
+ [[o properties] removeObjectForKey: @"SuccessfulMoveItemsOps"];
+ [[o properties] removeObjectForKey: @"InitialLoadSequence"];
+ [[o properties] removeObjectForKey: @"FirstIdInCache"];
+ [[o properties] removeObjectForKey: @"LastIdInCache"];
+ [[o properties] removeObjectForKey: @"MergedFoldersSyncKeys"];
+ [[o properties] removeObjectForKey: @"MergedFolder"];
+ [[o properties] removeObjectForKey: @"CleanoutDate"];
+ }
+
+ [o save];
+ }
}
else if ([[folders objectAtIndex:fi] isKindOfClass: [SOGoContactGCSFolder class]])
{
@@ -1241,8 +1248,8 @@ void handle_eas_terminate(int signum)
[o save];
}
- }
- }
+ } // if (operation)
+ } // for (fi = 0; fi <= count ; fi++)
// set a new syncKey if there are folder changes
diff --git a/ActiveSync/SOGoMailObject+ActiveSync.h b/ActiveSync/SOGoMailObject+ActiveSync.h
index 44ceec168..dc1633fbe 100644
--- a/ActiveSync/SOGoMailObject+ActiveSync.h
+++ b/ActiveSync/SOGoMailObject+ActiveSync.h
@@ -42,6 +42,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- (NSString *) activeSyncRepresentationInContext: (WOContext *) context;
- (void) takeActiveSyncValues: (NSDictionary *) theValues
inContext: (WOContext *) context;
+- (NSString *) storeMail: (NSDictionary *) theValues
+ inContext: (WOContext *) _context;
@end
diff --git a/ActiveSync/SOGoMailObject+ActiveSync.m b/ActiveSync/SOGoMailObject+ActiveSync.m
index 4907eb60d..2c33b6ae5 100644
--- a/ActiveSync/SOGoMailObject+ActiveSync.m
+++ b/ActiveSync/SOGoMailObject+ActiveSync.m
@@ -35,6 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import
#import
#import
+#import
#import
#import
@@ -46,9 +47,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import
#import
#import
+#import
#import
#import
#import
+#import
+#import
#import
#import
@@ -63,6 +67,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import
#import
+#import
#include "iCalTimeZone+ActiveSync.h"
#include "NSData+ActiveSync.h"
@@ -73,6 +78,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include
#include
#include
+#import
+#import
+#import
+#import
+#import
+
#include
#include
@@ -962,7 +973,12 @@ struct GlobalObjectId {
// Location
if ([[event location] length])
- [s appendFormat: @"%@", [[event location] activeSyncRepresentationInContext: context]];
+ {
+ if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0)
+ [s appendFormat: @"%@", [[event location] activeSyncRepresentationInContext: context]];
+ else
+ [s appendFormat: @"%@", [[event location] activeSyncRepresentationInContext: context]];
+ }
[s appendFormat: @"%@", [[[event organizer] mailAddress] activeSyncRepresentationInContext: context]];
@@ -1422,4 +1438,104 @@ struct GlobalObjectId {
}
}
+- (NSString *) storeMail: (NSDictionary *) theValues
+ inContext: (WOContext *) _context
+{
+ NSString *dateReceived, *folder, *s;
+ NGMimeMessageGenerator *generator;
+ NGMimeMessage *bounceMessage;
+ NSDictionary *identity;
+ NGMutableHashMap *map;
+ NGImap4Client *client;
+ NSData *message_data;
+
+ id o, result;
+ int bodyType;
+
+ identity = [[context activeUser] primaryIdentity];
+ message_data = nil;
+ bodyType = 1;
+
+ if ((o = [[theValues objectForKey: @"Body"] objectForKey: @"Type"]))
+ bodyType = [o intValue];
+
+ if (bodyType == 4)
+ {
+ s = [[theValues objectForKey: @"Body"] objectForKey: @"Data"];
+ message_data = [s dataUsingEncoding: NSUTF8StringEncoding];
+ }
+
+ if (bodyType == 1 || bodyType == 2)
+ {
+ map = [[[NGMutableHashMap alloc] initWithCapacity: 1] autorelease];
+
+ [map setObject: [NSString stringWithFormat: @"%@ <%@>", [identity objectForKey: @"fullName"], [identity objectForKey: @"email"]] forKey: @"from"];
+ if ((o = [theValues objectForKey: @"To"]))
+ [map setObject: o forKey: @"to"];
+
+ if ((o = [theValues objectForKey: @"Subject"]))
+ [map setObject: o forKey: @"subject"];
+
+ o = [[theValues objectForKey: @"DateReceived"] calendarDate];
+
+ if (!o)
+ o = [NSCalendarDate date];
+
+#if GNUSTEP_BASE_MINOR_VERSION < 21
+ dateReceived = [o descriptionWithCalendarFormat: @"%a, %d %b %Y %H:%M:%S %z"
+ timeZone: [NSTimeZone timeZoneWithName: @"GMT"]
+ locale: nil];
+#else
+ dateReceived = [o descriptionWithCalendarFormat: @"%a, %d %b %Y %H:%M:%S %z"
+ timeZone: [NSTimeZone timeZoneWithName: @"GMT"]
+ locale: [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSArray arrayWithObjects: @"Jan", @"Feb", @"Mar", @"Apr",
+ @"May", @"Jun", @"Jul", @"Aug",
+ @"Sep", @"Oct", @"Nov", @"Dec", nil],
+ @"NSShortMonthNameArray",
+ [NSArray arrayWithObjects: @"Sun", @"Mon", @"Tue", @"Wed", @"Thu",
+ @"Fri", @"Sat", nil],
+ @"NSShortWeekDayNameArray",
+ nil]];
+#endif
+
+ [map setObject: dateReceived forKey: @"date"];
+ [map setObject: [NSString generateMessageID] forKey: @"message-id"];
+ [map setObject: (bodyType == 1 ? @"text/plain; charset=utf-8" : @"text/html; charset=utf-8")
+ forKey: @"content-type"];
+ [map setObject: @"quoted-printable" forKey: @"content-transfer-encoding"];
+
+ bounceMessage = [[[NGMimeMessage alloc] initWithHeader: map] autorelease];
+
+ [bounceMessage setBody: [[NSString stringWithFormat: @"%@", [[theValues objectForKey: @"Body"] objectForKey: @"Data"] ] dataUsingEncoding: NSUTF8StringEncoding]];
+
+ generator = [[[NGMimeMessageGenerator alloc] init] autorelease];
+ message_data = [generator generateMimeFromPart: bounceMessage];
+ }
+
+ if (message_data)
+ {
+ client = [[self imap4Connection] client];
+
+ if (![imap4 doesMailboxExistAtURL: [container imap4URL]])
+ {
+ [[self imap4Connection] createMailbox: [[self imap4Connection] imap4FolderNameForURL: [container imap4URL]]
+ atURL: [[self mailAccountFolder] imap4URL]];
+ [imap4 flushFolderHierarchyCache];
+ }
+
+ folder = [imap4 imap4FolderNameForURL: [container imap4URL]];
+
+ result = [client append: message_data
+ toFolder: folder
+ withFlags: [NSArray arrayWithObjects: @"draft", nil]];
+
+ if ([[result objectForKey: @"result"] boolValue])
+ return [NSString stringWithFormat: @"%d", [self IMAP4IDFromAppendResult: result]];
+ }
+
+ return nil;
+}
+
+
@end
diff --git a/ActiveSync/iCalEvent+ActiveSync.m b/ActiveSync/iCalEvent+ActiveSync.m
index a9988caed..755d2d20e 100644
--- a/ActiveSync/iCalEvent+ActiveSync.m
+++ b/ActiveSync/iCalEvent+ActiveSync.m
@@ -251,7 +251,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Location
if ([[self location] length])
- [s appendFormat: @"%@", [[self location] activeSyncRepresentationInContext: context]];
+ {
+ if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0)
+ [s appendFormat: @"%@", [[self location] activeSyncRepresentationInContext: context]];
+ else
+ [s appendFormat: @"%@", [[self location] activeSyncRepresentationInContext: context]];
+ }
// Importance - NOT SUPPORTED - DO NOT ENABLE
//o = [self priority];
@@ -458,7 +463,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
occurences = [NSMutableArray arrayWithArray: [[self parent] events]];
- if ((o = [theValues objectForKey: @"UID"]))
+ if ((o = [theValues objectForKey: ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0) ? @"ClientUid" : @"UID"]))
[self setUid: o];
// FIXME: merge with iCalToDo
@@ -537,8 +542,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[self setComment: o];
}
- if ((o = [theValues objectForKey: @"Location"]))
+ if ([[context objectForKey: @"ASProtocolVersion"] floatValue] < 16.0 && (o = [theValues objectForKey: @"Location"]))
[self setLocation: o];
+ else if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0 && (o = [theValues objectForKey: @"Location"]) && [o isKindOfClass: [NSDictionary class]])
+ [self setLocation: [o objectForKey: @"DisplayName"]];
deltasecs = 0;
start = nil;
@@ -589,7 +596,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{
// Ignore the alarm for now
}
- else if ((o = [theValues objectForKey: @"Reminder"]))
+ else if ((o = [theValues objectForKey: @"Reminder"]) && [o length])
{
// NOTE: Outlook sends a 15 min reminder (18 hour for allday) if no reminder is specified
// although no default reminder is defined (File -> Options -> Clendar -> Calendar Options - > Default Reminders)
@@ -840,7 +847,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}
}
-
// Attendees - we don't touch the values if we're an attendee. This is gonna
// be done automatically by the ActiveSync client when invoking MeetingResponse.
if (![self userIsAttendee: [context activeUser]])
diff --git a/ChangeLog b/ChangeLog
index 8a09b80da..3217fa1f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,367 @@
+commit 938fd3a6f44973de06a4e897e46ebbab3c368beb
+Author: Francis Lachapelle
+Date: Thu Jul 20 14:02:37 2017 -0400
+
+ Preparation for release 2.3.22
+
+M Documentation/docinfo.xml
+M Documentation/includes/global-attributes.asciidoc
+M NEWS
+M Version
+
+commit a15765df7b9f9914b72ad4adbc05d0c150bf5ff0
+Author: Francis Lachapelle
+Date: Wed Jul 5 10:44:27 2017 -0400
+
+ Use xsltproc instead of fop to generate XSL-FO
+
+M Documentation/Makefile
+M Documentation/docbook/xsl/sogo-fo.xsl
+
+commit d536f090d1b806f583cc0e72f20fe5334ed3d4b7
+Author: Francis Lachapelle
+Date: Thu Jul 20 13:49:49 2017 -0400
+
+ (js) Update CKEditor to version 4.7.1
+
+M UI/WebServerResources/ckeditor/build-config.js
+M UI/WebServerResources/ckeditor/ckeditor.js
+M UI/WebServerResources/ckeditor/config.js
+M UI/WebServerResources/ckeditor/lang/de.js
+M UI/WebServerResources/ckeditor/lang/fr.js
+M UI/WebServerResources/ckeditor/lang/he.js
+M UI/WebServerResources/ckeditor/lang/hr.js
+M UI/WebServerResources/ckeditor/lang/lv.js
+M UI/WebServerResources/ckeditor/lang/nb.js
+M UI/WebServerResources/ckeditor/lang/pl.js
+M UI/WebServerResources/ckeditor/lang/sv.js
+M UI/WebServerResources/ckeditor/lang/tr.js
+M UI/WebServerResources/ckeditor/plugins/link/dialogs/anchor.js
+M UI/WebServerResources/ckeditor/plugins/pastefromword/filter/default.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
+M UI/WebServerResources/ckeditor/styles.js
+
+commit d0898879ca033c55d026ce17f1caf6075c5961cc
+Author: Francis Lachapelle
+Date: Thu Jul 20 13:36:52 2017 -0400
+
+ (i18n) Update translations
+
+M SoObjects/Appointments/German.lproj/Localizable.strings
+M SoObjects/Appointments/Hebrew.lproj/Localizable.strings
+M SoObjects/Appointments/Hungarian.lproj/Localizable.strings
+M SoObjects/Appointments/Macedonian.lproj/Localizable.strings
+M SoObjects/Appointments/Russian.lproj/Localizable.strings
+M SoObjects/Appointments/TurkishTurkey.lproj/Localizable.strings
+M SoObjects/Appointments/Welsh.lproj/Localizable.strings
+M SoObjects/Contacts/Welsh.lproj/Localizable.strings
+M SoObjects/Mailer/Hebrew.lproj/Localizable.strings
+M SoObjects/Mailer/Welsh.lproj/Localizable.strings
+M UI/AdministrationUI/Hebrew.lproj/Localizable.strings
+M UI/AdministrationUI/Welsh.lproj/Localizable.strings
+M UI/Common/Hebrew.lproj/Localizable.strings
+M UI/Common/Hungarian.lproj/Localizable.strings
+M UI/Common/Macedonian.lproj/Localizable.strings
+M UI/Common/Welsh.lproj/Localizable.strings
+M UI/Contacts/English.lproj/Localizable.strings
+M UI/Contacts/French.lproj/Localizable.strings
+M UI/Contacts/German.lproj/Localizable.strings
+M UI/Contacts/Hebrew.lproj/Localizable.strings
+M UI/Contacts/Hungarian.lproj/Localizable.strings
+M UI/Contacts/Latvian.lproj/Localizable.strings
+M UI/Contacts/Macedonian.lproj/Localizable.strings
+M UI/Contacts/Polish.lproj/Localizable.strings
+M UI/Contacts/Russian.lproj/Localizable.strings
+M UI/Contacts/TurkishTurkey.lproj/Localizable.strings
+M UI/Contacts/Welsh.lproj/Localizable.strings
+M UI/MailPartViewers/Hungarian.lproj/Localizable.strings
+M UI/MailPartViewers/Welsh.lproj/Localizable.strings
+M UI/MailerUI/German.lproj/Localizable.strings
+M UI/MailerUI/Hebrew.lproj/Localizable.strings
+M UI/MailerUI/Hungarian.lproj/Localizable.strings
+M UI/MailerUI/Macedonian.lproj/Localizable.strings
+M UI/MailerUI/Russian.lproj/Localizable.strings
+M UI/MailerUI/TurkishTurkey.lproj/Localizable.strings
+M UI/MailerUI/Welsh.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
+M 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
+M 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/Scheduler/English.lproj/Localizable.strings
+M UI/Scheduler/Hebrew.lproj/Localizable.strings
+M UI/Scheduler/Hungarian.lproj/Localizable.strings
+M UI/Scheduler/Macedonian.lproj/Localizable.strings
+M UI/Scheduler/TurkishTurkey.lproj/Localizable.strings
+M UI/Scheduler/Welsh.lproj/Localizable.strings
+
+commit 12993e45bed4ceb98edf08fd1d4909820650b66a
+Author: Ludovic Marcotte
+Date: Thu Jul 13 10:45:18 2017 -0400
+
+ (fix) fixed forwarding mails with attachments containing slashes in file names
+
+M NEWS
+M SoObjects/Mailer/SOGoDraftObject.m
+
+commit 00948f5753389aaff8d89374e018e1b36a3c1a88
+Author: Ludovic Marcotte
+Date: Wed Jul 5 11:08:00 2017 -0400
+
+ (fix) support Squeeze + minor cleanups
+
+M SoObjects/SOGo/SOGoSystemDefaults.h
+M SoObjects/SOGo/SOGoSystemDefaults.m
+
+commit 6272cb5a8554f27133948ec0e00b0a83d9592532
+Author: Francis Lachapelle
+Date: Tue Jul 4 17:22:01 2017 -0400
+
+ (js) Improve regular expression for email address
+
+M UI/WebServerResources/generic.js
+
+commit 98064259a22280545b96495f4ceb2e293c54507f
+Author: Ludovic Marcotte
+Date: Tue Jul 4 13:20:37 2017 -0400
+
+ Updated NEWS
+
+M NEWS
+
+commit 67fef9502468fcf64718a7ed8142d1aa9cc42725
+Author: Ludovic Marcotte
+Date: Tue Jul 4 13:15:29 2017 -0400
+
+ (fix) silence sogo-ealarms-notify verbose output (fixes #4170)
+
+ Conflicts:
+ Tools/SOGoEAlarmsNotifier.m
+
+M Tools/SOGoEAlarmsNotifier.m
+
+commit a9d9e114aa40b8f94b99c969d7a367b3b9ca75ec
+Author: Ludovic Marcotte
+Date: Tue Jul 4 11:02:14 2017 -0400
+
+ Updated NEWS
+
+M NEWS
+
+commit 8d1b02d52ba8cf3df45bd43964c819837085ec4c
+Author: Ludovic Marcotte
+Date: Tue Jul 4 11:00:06 2017 -0400
+
+ (fix) enable S/MIME even when using GNU TLS (fixes #4201)
+
+ Conflicts:
+ UI/MailPartViewers/UIxMailPartSignedViewer.m
+
+M UI/MailPartViewers/GNUmakefile.preamble
+M UI/MailPartViewers/UIxMailPartSignedViewer.m
+
+commit 722c813909ae0af4c9dc2fa6fbc70832a9f2f534
+Author: Ludovic Marcotte
+Date: Tue Jul 4 09:57:05 2017 -0400
+
+ (fix) respect disabled state of sending rate-limiting (fixes #4198)
+
+M SoObjects/SOGo/SOGoSystemDefaults.m
+M UI/MailerUI/UIxMailEditor.m
+
+commit 4bcc6d128ad6a2d751bb56809ca294c9e4fdc93d
+Author: Ludovic Marcotte
+Date: Tue Jul 4 09:26:08 2017 -0400
+
+ (fix) avoid advertising EAS 16 support until libwbxml is fixed
+
+M ActiveSync/SOGoActiveSyncDispatcher.m
+M ActiveSync/SoObjectWebDAVDispatcher+ActiveSync.m
+
+commit b0e5d330e52fb16c99265b1c85d6287c495e7dc9
+Author: Ludovic Marcotte
+Date: Thu Jun 29 15:41:23 2017 -0400
+
+ (doc) improve iOS doc
+
+M Documentation/SOGoInstallationGuide.asciidoc
+
+commit b3650d61e187fe25d5ba70f3bc1a016869ff0d95
+Author: Francis Lachapelle
+Date: Wed Jun 28 11:02:02 2017 -0400
+
+ Update NEWS file
+
+M NEWS
+
+commit a7d07b2a129073a6d8012fe6cd616fee893e93e4
+Author: Francis Lachapelle
+Date: Wed Jun 28 10:57:18 2017 -0400
+
+ (fix) Update settings of active user only
+
+ Fixes #3988
+
+M SoObjects/SOGo/SOGoParentFolder.m
+
+commit a30efc6cc708918ddb021f6f078f6ddd606a19f5
+Author: Ludovic Marcotte
+Date: Thu Jun 22 10:20:54 2017 -0400
+
+ (fix) check cache before using it (fixes #3988)
+
+M SoObjects/SOGo/SOGoGCSFolder.m
+
+commit 31d131f4d3c75d6d262b364170a8f771c28a8fe5
+Author: Ludovic Marcotte
+Date: Fri Jun 16 08:37:34 2017 -0400
+
+ (fix) not using cleaned data when sending mails (#4199)
+
+M NEWS
+M SoObjects/SOGo/SOGoMailer.m
+
+commit fc740b1c9f69a4155575e97a791f81ea4b735417
+Author: Ludovic Marcotte
+Date: Thu Jun 15 11:23:26 2017 -0400
+
+ Updated NEWS
+
+M NEWS
+
+commit a5a40b2ea018ab5adc4c7ae4f90fc3f291757291
+Author: Ludovic Marcotte
+Date: Thu Jun 15 11:21:41 2017 -0400
+
+ (fix) don't include task folders over EAS if we are hiding them (fixes #4164)
+
+M ActiveSync/SOGoActiveSyncDispatcher.m
+
+commit 5b70632de062c02949896f85a4c23da6f463bdcc
+Author: Ludovic Marcotte
+Date: Fri Jun 9 11:19:57 2017 -0400
+
+ (doc) updates for MySQL's max_allowed_packet parameter (fixes #4119 and #4142)
+
+M Documentation/SOGoInstallationGuide.asciidoc
+
+commit 842188744c878660e7e17580ad0575dae9f44a19
+Author: Ludovic Marcotte
+Date: Fri Jun 9 10:01:11 2017 -0400
+
+ (fix) improvements for Drafts handling
+
+M ActiveSync/SOGoMailObject+ActiveSync.m
+
+commit a84b55f36cd346b28f0eafd6d026f5e6c01f480c
+Author: Ludovic Marcotte
+Date: Tue Jun 6 11:10:31 2017 -0400
+
+ (fix) use the organizer's alarm by default when accepting IMIP messages (fixes #3934)
+
+M NEWS
+M UI/MailPartViewers/UIxMailPartICalActions.m
+
+commit 636264d78209495c36ad04cd8ff2133c4ccf3782
+Author: Ludovic Marcotte
+Date: Thu Jun 1 16:12:35 2017 -0400
+
+ Updated NEWS
+
+M NEWS
+
+commit 1666048da57ad81f866c125e5e8699744f808f55
+Author: Ludovic Marcotte
+Date: Thu Jun 1 16:07:34 2017 -0400
+
+ (feat) first pas at EAS v16 support and save in drafts
+
+ Conflicts:
+ ActiveSync/SOGoMailObject+ActiveSync.m
+
+M ActiveSync/SOGoActiveSyncDispatcher+Sync.m
+M ActiveSync/SOGoActiveSyncDispatcher.m
+M ActiveSync/SOGoMailObject+ActiveSync.h
+M ActiveSync/SOGoMailObject+ActiveSync.m
+M ActiveSync/SoObjectWebDAVDispatcher+ActiveSync.m
+M ActiveSync/iCalEvent+ActiveSync.m
+
+commit 71fe42e8c38aaef2697694f46811e91d09d9c2d6
+Author: Francis Lachapelle
+Date: Thu Jun 1 09:48:48 2017 -0400
+
+ Update ChangeLog
+
+M ChangeLog
+
commit 875b1c9836c0dd4ef3a009038529ffa753f22177
Author: Francis Lachapelle
Date: Thu Jun 1 09:47:58 2017 -0400
diff --git a/Documentation/Makefile b/Documentation/Makefile
index ee7246fba..03a484995 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -2,7 +2,8 @@ all: $(patsubst %.asciidoc,%.pdf,$(wildcard *.asciidoc))
%.pdf : %.asciidoc
asciidoc -a docinfo1 -b docbook -d book -o $<.docbook $<
- fop -c fonts/fop-config.xml -xsl docbook/xsl/sogo-fo.xsl -xml $<.docbook -pdf $@
+ xsltproc -o $<.fo docbook/xsl/sogo-fo.xsl $<.docbook
+ fop -c fonts/fop-config.xml $<.fo -pdf $@
clean:
- rm *.asciidoc.docbook *.pdf
+ rm -f *.asciidoc.fo *.asciidoc.docbook *.pdf
diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc
index 729949878..3104279c0 100644
--- a/Documentation/SOGoInstallationGuide.asciidoc
+++ b/Documentation/SOGoInstallationGuide.asciidoc
@@ -47,7 +47,7 @@ and the data of Mozilla Thunderbird and Lightning
the SOGo Connector and the SOGo Integrator
* Native compatibility for Microsoft Outlook 2003, 2007, 2010, and 2013
* Two-way synchronization support with any Microsoft ActiveSync-capable
-device, or Outlook 2013
+device, or Outlook 2013/2016
SOGo is developed by a community of developers located mainly in North
America and Europe. More information can be found at http://sogo.nu/
@@ -2571,9 +2571,9 @@ If not set, it defaults to `102400` bytes, or 100 KB.
Please be aware of the following limitations:
-* Outlook 2013 does not search the GAL. One possible alternative
+* Outlook 2013/2016 does not search the GAL. One possible alternative
solution is to configure Outlook to use a LDAP server (over SSL) with
-authentication. Outlook 2013 also does not seem to support multiple
+authentication. Outlook 2013/2016 also does not seem to support multiple
address books over ActiveSync.
* To successfully synchronize Outlook email categories, a corresponding
mail label (Preferences->Mail Options) has to be created manually in SOGo
@@ -2589,9 +2589,9 @@ to handle many clients. Make sure you tune your SOGo server when having
lots of ActiveSync clients.
* Repetitive events with occurrences exceptions are currently not
supported.
-* Outlook 2013 Autodiscovery is currently not supported.
-* Outlook 2013 freebusy lookups are supported using the Internet
-Free/Busy feature of Outlook 2013. Please
+* Outlook 2013/2016 Autodiscovery is currently not supported.
+* Outlook 2013/2016 freebusy lookups are supported using the Internet
+Free/Busy feature of Outlook 2013/2016. Please
see http://support.microsoft.com/kb/291621 for configuration
instructions. On the SOGo side, _SOGoEnablePublicAccess_ must be set to
`YES` and the URL to use must be of the following format:
@@ -2600,6 +2600,9 @@ instructions. On the SOGo side, _SOGoEnablePublicAccess_ must be set to
need to adjust the word size of your IMAP server. In Dovecot, the parameter
to increase is "imap_max_line_length" while under Cyrus IMAP Server, the
parameter is "maxword". We suggest a buffer of 2MB.
+* If you are using MySQL, make sure you set "max_allowed_packet" to a large value
+since the EAS cache size can be large for mailboxes with thousands of messages.
+A 64M or even 128M value is recommended.
In order to use the SOGo ActiveSync support code in production
environments, you need to get a proper usage license from Microsoft.
@@ -2748,17 +2751,18 @@ To access your personal calendar:
`http://localhost/SOGo/dav/jdoe/Calendar/personal/`
* Click on Continue.
-Apple iCal
-~~~~~~~~~~
+Apple Calendar and iOS
+~~~~~~~~~~~~~~~~~~~~~~
-Apple iCal can also be used as a client application for SOGo.
+Apple Calendar and Mac OS X and the calendar application on iOS can also be used
+as a client application for SOGo.
-To configure it so it works with SOGo, create a new account and specify,
+To configure the application so it works with SOGo, create a new account and specify,
as the Account URL, an URL such as:
http://localhost/SOGo/dav/jdoe/
-Note that the trailing slash is important for Apple iCal 3.
+Note that the trailing slash is important for the old Apple iCal 3 application.
Apple AddressBook
~~~~~~~~~~~~~~~~~
diff --git a/Documentation/docbook/xsl/sogo-fo.xsl b/Documentation/docbook/xsl/sogo-fo.xsl
index 5ab3c7396..e8635b714 100644
--- a/Documentation/docbook/xsl/sogo-fo.xsl
+++ b/Documentation/docbook/xsl/sogo-fo.xsl
@@ -121,9 +121,9 @@
-
+
- square
+ square
diff --git a/Documentation/docinfo.xml b/Documentation/docinfo.xml
index ed0782cd5..04a0ace58 100644
--- a/Documentation/docinfo.xml
+++ b/Documentation/docinfo.xml
@@ -1,7 +1,7 @@
-Version 2.3.21 - June 2017
-for version 2.3.21
-2017-06-01
+Version 2.3.22 - July 2017
+for version 2.3.22
+2017-07-20Permission 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".
diff --git a/Documentation/includes/global-attributes.asciidoc b/Documentation/includes/global-attributes.asciidoc
index b2ec05ad1..5b9e59bd0 100644
--- a/Documentation/includes/global-attributes.asciidoc
+++ b/Documentation/includes/global-attributes.asciidoc
@@ -13,6 +13,6 @@
// TODO have the build system take care of this
-:release_version: 2.3.21
+:release_version: 2.3.22
// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab:
diff --git a/NEWS b/NEWS
index a8f066a25..998868461 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,21 @@
+2.3.22 (2017-07-20)
+-------------------
+
+New features
+ - [eas] initial EAS v16 and email drafts support
+
+Enhancements
+ - [web] updated CKEditor to version 4.7.1
+
+Bug fixes
+ - [web] use the organizer's alarm by default when accepting IMIP messages (#3934)
+ - [web] fixed forwarding mails with attachments containing slashes in file names
+ - [eas] don't include task folders if we hide them in SOGo (#4164)
+ - [core] not using cleaned data when sending mails (#4199)
+ - [core] don't update subscriptions when owner is not the active user (#3988)
+ - [core] enable S/MIME even when using GNU TLS (#4201)
+ - [core] silence verbose output for sogo-ealarms-notify (#4170)
+
2.3.21 (2017-06-01)
-------------------
diff --git a/SoObjects/Appointments/German.lproj/Localizable.strings b/SoObjects/Appointments/German.lproj/Localizable.strings
index ecec438dd..23599671c 100644
--- a/SoObjects/Appointments/German.lproj/Localizable.strings
+++ b/SoObjects/Appointments/German.lproj/Localizable.strings
@@ -18,6 +18,8 @@ vtodo_class2 = "(Vertrauliche Aufgabe)";
"calendar_label" = "Kalender";
"startDate_label" = "Beginn";
"endDate_label" = "Ende";
+"time_label" = "Zeit";
+"to_label" = "bis";
"due_label" = "Fälligkeit:";
"location_label" = "Ort";
"summary_label" = "Zusammenfassung:";
diff --git a/SoObjects/Appointments/Hebrew.lproj/Localizable.strings b/SoObjects/Appointments/Hebrew.lproj/Localizable.strings
index 7a088fadc..13caf8bed 100644
--- a/SoObjects/Appointments/Hebrew.lproj/Localizable.strings
+++ b/SoObjects/Appointments/Hebrew.lproj/Localizable.strings
@@ -18,10 +18,14 @@ vtodo_class2 = "(משימה סודית)";
"calendar_label" = "לוח שנה";
"startDate_label" = "התחלה";
"endDate_label" = "סיום";
+"time_label" = "זמן";
+"to_label" = "עבור";
"due_label" = "תאריך להגשה";
"location_label" = "מיקום";
"summary_label" = "תקציר";
"comment_label" = "הערה";
+"organizer_label" = "מארגן";
+"attendee_label" = "משתתפים";
/* Invitation */
"Event Invitation: \"%{Summary}\"" = "הזמנה לאירוע: \"{Summary}%\"";
"(sent by %{SentBy}) " = "(מאת {SentBy}%)";
diff --git a/SoObjects/Appointments/Hungarian.lproj/Localizable.strings b/SoObjects/Appointments/Hungarian.lproj/Localizable.strings
index 7af72ddbf..da9c193dc 100644
--- a/SoObjects/Appointments/Hungarian.lproj/Localizable.strings
+++ b/SoObjects/Appointments/Hungarian.lproj/Localizable.strings
@@ -18,10 +18,14 @@ vtodo_class2 = "(Bizalmas feladat)";
"calendar_label" = "Naptár";
"startDate_label" = "Kezdete";
"endDate_label" = "Vége";
+"time_label" = "Idő";
+"to_label" = "-";
"due_label" = "Lejárat napja:";
"location_label" = "Hely";
"summary_label" = "Összegzés:";
"comment_label" = "Megjegyzés:";
+"organizer_label" = "Szervező";
+"attendee_label" = "Résztvevő";
/* Invitation */
"Event Invitation: \"%{Summary}\"" = "Meghívás eseményre: \"%{Summary}\"";
"(sent by %{SentBy}) " = "(%{SentBy} által elküldve) ";
diff --git a/SoObjects/Appointments/Macedonian.lproj/Localizable.strings b/SoObjects/Appointments/Macedonian.lproj/Localizable.strings
index b1a6f4bff..ec217c849 100644
--- a/SoObjects/Appointments/Macedonian.lproj/Localizable.strings
+++ b/SoObjects/Appointments/Macedonian.lproj/Localizable.strings
@@ -18,10 +18,14 @@ vtodo_class2 = "(Доверлива задача)";
"calendar_label" = "Календар:";
"startDate_label" = "Почеток:";
"endDate_label" = "Крај:";
+"time_label" = "Време";
+"to_label" = "до";
"due_label" = "Краен датум:";
"location_label" = "Локација";
"summary_label" = "Резиме:";
"comment_label" = "Коментар:";
+"organizer_label" = "Организатор";
+"attendee_label" = "Учесник";
/* Invitation */
"Event Invitation: \"%{Summary}\"" = "Покана за настанот: \"%{Summary}\"";
"(sent by %{SentBy}) " = "(испратено од %{SentBy}) ";
diff --git a/SoObjects/Appointments/Russian.lproj/Localizable.strings b/SoObjects/Appointments/Russian.lproj/Localizable.strings
index f115f37ab..5e37cc071 100644
--- a/SoObjects/Appointments/Russian.lproj/Localizable.strings
+++ b/SoObjects/Appointments/Russian.lproj/Localizable.strings
@@ -18,10 +18,14 @@ vtodo_class2 = "(Конфиденциальная задача)";
"calendar_label" = "Календарь";
"startDate_label" = "Начало";
"endDate_label" = "Конец";
+"time_label" = "Время";
+"to_label" = "кому";
"due_label" = "Должно быть готово к:";
"location_label" = "Местонахождение";
"summary_label" = "Краткое содержание:";
"comment_label" = "Комментарий";
+"organizer_label" = "Организатор";
+"attendee_label" = "Участник";
/* Invitation */
"Event Invitation: \"%{Summary}\"" = "Приглашение на мероприятие: \"%{Summary}\"";
"(sent by %{SentBy}) " = "(послал %{SentBy}) ";
diff --git a/SoObjects/Appointments/TurkishTurkey.lproj/Localizable.strings b/SoObjects/Appointments/TurkishTurkey.lproj/Localizable.strings
index 6250d182b..467b50f17 100644
--- a/SoObjects/Appointments/TurkishTurkey.lproj/Localizable.strings
+++ b/SoObjects/Appointments/TurkishTurkey.lproj/Localizable.strings
@@ -1,4 +1,4 @@
-"Inviting the following persons is prohibited:" = "Bu kişileri davet etmek yasaklanmış:";
+"Inviting the following persons is prohibited:" = "Bu kişileri davet etmek engellenmiş:";
"Personal Calendar" = "Kişisel Takvim";
vevent_class0 = "(Herkese açık etkinlik)";
vevent_class1 = "(Kişisel etkinlik)";
diff --git a/SoObjects/Appointments/Welsh.lproj/Localizable.strings b/SoObjects/Appointments/Welsh.lproj/Localizable.strings
index 4c17fc2b3..11b21167b 100644
--- a/SoObjects/Appointments/Welsh.lproj/Localizable.strings
+++ b/SoObjects/Appointments/Welsh.lproj/Localizable.strings
@@ -1,3 +1,4 @@
+"Inviting the following persons is prohibited:" = "Ni chaniateir gwahodd y personau canlynol:";
"Personal Calendar" = "Calendr Personol";
vevent_class0 = "(Digwyddiad cyhoeddus)";
vevent_class1 = "(Digwyddiad preifat)";
@@ -7,48 +8,57 @@ vtodo_class0 = "(Tasg gyhoeddus)";
vtodo_class1 = "(Tasg breifat)";
vtodo_class2 = "(Tasg gyfrinachol)";
/* Receipts */
-"Title:" = "Title:";
-"Start:" = "Start:";
-"End:" = "End:";
-"Receipt: users invited to a meeting" = "Receipt: users invited to a meeting";
-"You have invited the following attendees(s):" = "You have invited the following attendees(s):";
-"... to attend the following event:" = "... to attend the following event:";
-"Receipt: invitation updated" = "Receipt: invitation updated";
-"The following attendees(s):" = "The following attendees(s):";
-"... have been notified of the changes to the following event:" = "... have been notified of the changes to the following event:";
-"Receipt: attendees removed from an event" = "Receipt: attendees removed from an event";
-"You have removed the following attendees(s):" = "You have removed the following attendees(s):";
-"... from the following event:" = "... from the following event:";
+"The event \"%{Summary}\" was created" = "Crëwyd y digwyddiad \"%{Summary}\"";
+"The event \"%{Summary}\" was deleted" = "Dilëwyd y digwyddiad \"%{Summary}\"";
+"The event \"%{Summary}\" was updated" = "Diweddarwyd y digwyddiad \"%{Summary}\"";
+"The following attendees(s) were notified" = "Hysbyswyd y mynychwr/mynychwyr canlynol";
+"The following attendees(s) were added" = "Ychwanegwyd y mynychwr/mynychwyr canlynol";
+"The following attendees(s) were removed" = "Dilëwyd y mynychwr/mynychwyr canlynol";
/* IMIP messages */
-"startDate_label" = "Start";
-"endDate_label" = "End";
-"due_label" = "Due Date:";
-"location_label" = "Location";
-"summary_label" = "Summary:";
-"comment_label" = "Comment:";
+"calendar_label" = "Calendr";
+"startDate_label" = "Dechrau";
+"endDate_label" = "Diwedd";
+"time_label" = "Amser";
+"to_label" = "at";
+"due_label" = "Dyddiad Disgwyliedig";
+"location_label" = "Lleoliad";
+"summary_label" = "Crynodeb";
+"comment_label" = "Sylw";
+"organizer_label" = "Trefnydd";
+"attendee_label" = "Mynychwr";
/* Invitation */
-"Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\"";
-"(sent by %{SentBy}) " = "(anfon gan %{SentBy}) ";
-"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}";
+"Event Invitation: \"%{Summary}\"" = "Gwahoddiad i Ddigwyddiad: \"%{Summary}\"";
+"(sent by %{SentBy}) " = "(anfonwyd gan %{SentBy})";
+"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "Mae %{Organizer} %{SentByText}wedi eich gwahodd i %{Summary}.\n\nDechrau: %{StartDate}\nDiwedd: %{EndDate}\nDisgrifiad: %{Description}";
+"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "Mae %{Organizer} %{SentByText}wedi eich gwahodd i %{Summary}.\n\nDechrau: %{StartDate} am %{StartTime}\nDiwedd: %{EndDate} am %{EndTime}\nDisgrifiad: %{Description}";
/* Deletion */
-"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\"";
+"Event Cancelled: \"%{Summary}\"" = "Digwyddiad wedi'i Ganslo: \"%{Summary}\"";
+"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}"
+= "Mae %{Organizer} %{SentByText}wedi canslo'r digwyddiad hwn: %{Summary}.\n\nDechrau: %{StartDate}\nDiwedd: %{EndDate}\nDisgrifiad: %{Description}";
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
-= "%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}";
+= "Mae %{Organizer} %{SentByText}wedi canslo'r digwyddiad hwn: %{Summary}.\n\nDechrau: %{StartDate} am %{StartTime}\nDiwedd: %{EndDate} am %{EndTime}\nDisgrifiad: %{Description}";
/* Update */
+"The appointment \"%{Summary}\" for the %{OldStartDate} has changed"
+= "Mae'r apwyntiad \"%{Summary}\" ar gyfer %{OldStartDate} wedi newid";
"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"
-= "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed";
+= "Mae'r apwyntiad \"%{Summary}\" ar gyfer %{OldStartDate} am %{OldStartTime} wedi newid";
"The following parameters have changed in the \"%{Summary}\" meeting:"
-= "The following parameters have changed in the \"%{Summary}\" meeting:";
+= "Mae'r paramedrau canlynol wedi newid yng nghyfarfod \"%{Summary}\":";
"Please accept or decline those changes."
-= "Please accept or decline those changes.";
+= "Derbyniwch neu gwrthodwch y newidiadau hynny.";
/* Reply */
+"Accepted invitation: \"%{Summary}\"" = "Wedi derbyn y gwahoddiad: \"%{Summary}\"";
+"Declined invitation: \"%{Summary}\"" = "Wedi gwrthod y gwahoddiad: \"%{Summary}\"";
+"Delegated invitation: \"%{Summary}\"" = "Wedi dirprwyo'r gwahoddiad: \"%{Summary}\"";
+"Not yet decided on invitation: \"%{Summary}\"" = "Heb benderfynu ar y gwahoddiad eto: \"%{Summary}\"";
"%{Attendee} %{SentByText}has accepted your event invitation."
-= "%{Attendee} %{SentByText}wedi derbyn.";
+= "Mae %{Attendee} %{SentByText}wedi derbyn eich gwahoddiad.";
"%{Attendee} %{SentByText}has declined your event invitation."
-= "%{Attendee} %{SentByText}wedi gwrthod.";
+= "Mae %{Attendee} %{SentByText}wedi gwrthod eich gwahoddiad.";
"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."
-= "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}.";
+= "Mae %{Attendee} %{SentByText}wedi dirprwyo eich gwahoddiad i %{Delegate}";
"%{Attendee} %{SentByText}has not yet decided upon your event invitation."
-= "%{Attendee} %{SentByText}heb benderfynu ar eich gwahoddiad eto.";
+= "Dydy %{Attendee} %{SentByText}ddim wedi penderfynu ar eich gwahoddiad eto.";
/* Resources */
-"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\"." = "Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\".";
+"Cannot access resource: \"%{Cn} %{SystemEmail}\"" = "Methu cael mynediad at adnodd: \"%{Cn} %{SystemEmail}\"";
+"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "Wedi cyrraedd uchafswm nifer yr achebion sy'n bosib ar yr un pryd (%{NumberOfSimultaneousBookings}) ar gyfer adnodd \"%{Cn} %{SystemEmail}\". Y digwyddiad sy'n cyd-daro yw \"%{EventTitle}\", sy'n dechrau ar %{StartDate}.";
diff --git a/SoObjects/Contacts/Welsh.lproj/Localizable.strings b/SoObjects/Contacts/Welsh.lproj/Localizable.strings
index 98aec4fa3..22674bbb4 100644
--- a/SoObjects/Contacts/Welsh.lproj/Localizable.strings
+++ b/SoObjects/Contacts/Welsh.lproj/Localizable.strings
@@ -1 +1,2 @@
"Personal Address Book" = "Llyfr Cyfeiriadau Personol";
+"Collected Address Book" = "Llyfr Cyfeiriadau wedi'u Casglu";
diff --git a/SoObjects/Mailer/Hebrew.lproj/Localizable.strings b/SoObjects/Mailer/Hebrew.lproj/Localizable.strings
index aa7ff6505..f130ab7cc 100644
--- a/SoObjects/Mailer/Hebrew.lproj/Localizable.strings
+++ b/SoObjects/Mailer/Hebrew.lproj/Localizable.strings
@@ -1,2 +1,2 @@
-"OtherUsersFolderName" = "משתשמשים אחרים";
+"OtherUsersFolderName" = "משתמשים אחרים";
"SharedFoldersName" = "תיקיות משותפות";
diff --git a/SoObjects/Mailer/SOGoDraftObject.m b/SoObjects/Mailer/SOGoDraftObject.m
index 1b21ff364..7bd3565fd 100644
--- a/SoObjects/Mailer/SOGoDraftObject.m
+++ b/SoObjects/Mailer/SOGoDraftObject.m
@@ -1158,7 +1158,14 @@ static NSString *userAgent = nil;
name = [name substringFromIndex: r.location + 1];
if (![self isValidAttachmentName: name])
- return [self invalidAttachmentNameError: name];
+ {
+ if ([name rangeOfString: @"/"].length)
+ {
+ name = [name stringByReplacingOccurrencesOfString: @"/" withString: @"-"];
+ }
+ else
+ return [self invalidAttachmentNameError: name];
+ }
p = [self pathToAttachmentWithName: name];
if (![_attach writeToFile: p atomically: YES])
diff --git a/SoObjects/Mailer/Welsh.lproj/Localizable.strings b/SoObjects/Mailer/Welsh.lproj/Localizable.strings
index 2d9cbd25e..884925b6f 100644
--- a/SoObjects/Mailer/Welsh.lproj/Localizable.strings
+++ b/SoObjects/Mailer/Welsh.lproj/Localizable.strings
@@ -1,2 +1,2 @@
-"SieveFolderName" = "Ffilteri";
-"OtherUsersFolderName" = "Other Users";
+"OtherUsersFolderName" = "Defnyddwyr Eraill";
+"SharedFoldersName" = "Ffolderi a Rennir";
diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m
index 48cea27be..6f0d66c17 100644
--- a/SoObjects/SOGo/SOGoGCSFolder.m
+++ b/SoObjects/SOGo/SOGoGCSFolder.m
@@ -447,7 +447,9 @@ static NSArray *childRecordFields = nil;
cache = [SOGoCache sharedCache];
record = [[cache valueForKey: _path] objectFromJSONString];
- if (!record)
+ // We check if we got a cache miss or a potentially bogus
+ // entry from the cache
+ if (!record || ![record objectForKey: @"c_folder_type"])
{
record = [[self folderManager] recordAtPath: _path];
diff --git a/SoObjects/SOGo/SOGoMailer.m b/SoObjects/SOGo/SOGoMailer.m
index 95a06d874..03dcf6de9 100644
--- a/SoObjects/SOGo/SOGoMailer.m
+++ b/SoObjects/SOGo/SOGoMailer.m
@@ -397,11 +397,11 @@
}
if ([mailingMechanism isEqualToString: @"sendmail"])
- result = [self _sendmailSendData: data
+ result = [self _sendmailSendData: cleaned_message
toRecipients: recipients
sender: [sender pureEMailAddress]];
else
- result = [self _smtpSendData: data
+ result = [self _smtpSendData: cleaned_message
toRecipients: recipients
sender: [sender pureEMailAddress]
withAuthenticator: authenticator
diff --git a/SoObjects/SOGo/SOGoParentFolder.m b/SoObjects/SOGo/SOGoParentFolder.m
index fbed6bd1d..5ba5c15b0 100644
--- a/SoObjects/SOGo/SOGoParentFolder.m
+++ b/SoObjects/SOGo/SOGoParentFolder.m
@@ -316,7 +316,7 @@ static SoSecurityManager *sm = nil;
NSMutableDictionary *folderDisplayNames;
NSMutableArray *subscribedReferences;
SOGoUserSettings *settings;
- NSString *currentKey;
+ NSString *activeUser, *currentKey;
SOGoUser *ownerUser;
NSException *error;
id o;
@@ -332,6 +332,7 @@ static SoSecurityManager *sm = nil;
error = nil; /* we ignore non-DB errors at this time... */
dirty = NO;
+ activeUser = [[context activeUser] login];
ownerUser = [SOGoUser userWithLogin: owner];
settings = [ownerUser userSettings];
@@ -352,7 +353,9 @@ static SoSecurityManager *sm = nil;
// remove it from the current list.
[subscribedReferences removeObject: currentKey];
[folderDisplayNames removeObjectForKey: currentKey];
- dirty = YES;
+ if ([owner isEqualToString: activeUser])
+ // Synchronize settings only if the subscription is owned by the active user
+ dirty = YES;
}
}
diff --git a/SoObjects/SOGo/SOGoSystemDefaults.h b/SoObjects/SOGo/SOGoSystemDefaults.h
index 5a9c8dff3..9c00010c0 100644
--- a/SoObjects/SOGo/SOGoSystemDefaults.h
+++ b/SoObjects/SOGo/SOGoSystemDefaults.h
@@ -94,8 +94,8 @@
- (int) maximumMessageSizeLimit;
-- (int) maximumMessageSubmissionCount;
-- (int) maximumRecipientCount;
+- (NSUInteger) maximumMessageSubmissionCount;
+- (NSUInteger) maximumRecipientCount;
- (int) maximumSubmissionInterval;
- (int) messageSubmissionBlockInterval;
diff --git a/SoObjects/SOGo/SOGoSystemDefaults.m b/SoObjects/SOGo/SOGoSystemDefaults.m
index 161083553..9cb032e9c 100644
--- a/SoObjects/SOGo/SOGoSystemDefaults.m
+++ b/SoObjects/SOGo/SOGoSystemDefaults.m
@@ -48,6 +48,10 @@ typedef void (*NSUserDefaultsInitFunction) ();
#define DIR_SEP "/"
+#ifndef NSUIntegerMax
+#define NSUIntegerMax UINTPTR_MAX
+#endif
+
static void
BootstrapNSUserDefaults ()
{
@@ -576,14 +580,28 @@ _injectConfigurationFromFile (NSMutableDictionary *defaultsDict,
//
//
//
-- (int) maximumMessageSubmissionCount
+- (NSUInteger) maximumMessageSubmissionCount
{
- return [self integerForKey: @"SOGoMaximumMessageSubmissionCount"];
+ NSUInteger v;
+
+ v = [self integerForKey: @"SOGoMaximumMessageSubmissionCount"];
+
+ if (!v)
+ return NSUIntegerMax;
+
+ return v;
}
-- (int) maximumRecipientCount
+- (NSUInteger) maximumRecipientCount
{
- return [self integerForKey: @"SOGoMaximumRecipientCount"];
+ NSUInteger v;
+
+ v = [self integerForKey: @"SOGoMaximumRecipientCount"];
+
+ if (!v)
+ return NSUIntegerMax;
+
+ return v;
}
- (int) maximumSubmissionInterval
diff --git a/Tools/SOGoEAlarmsNotifier.m b/Tools/SOGoEAlarmsNotifier.m
index 382e25675..4f358c399 100644
--- a/Tools/SOGoEAlarmsNotifier.m
+++ b/Tools/SOGoEAlarmsNotifier.m
@@ -196,6 +196,8 @@
NSString *credsFilename;
int count, max;
+ [[SOGoProductLoader productLoader] loadAllProducts: NO];
+
if ([[NSUserDefaults standardUserDefaults] stringForKey: @"h"])
{
[self usage];
diff --git a/UI/AdministrationUI/Hebrew.lproj/Localizable.strings b/UI/AdministrationUI/Hebrew.lproj/Localizable.strings
index 2fb3f6b8f..baef11d36 100644
--- a/UI/AdministrationUI/Hebrew.lproj/Localizable.strings
+++ b/UI/AdministrationUI/Hebrew.lproj/Localizable.strings
@@ -22,5 +22,5 @@
"Search Users" = "חיפוש משתמשים";
"users found" = "נמצאו תוצאות";
"No resource" = "לא קיים משאב";
-"Any Authenticated User" = "כל משתמש מאומת";
+"Any Authenticated User" = "כל משתמש מורשה";
"Public Access" = "נקודת גישה פתוחה";
diff --git a/UI/AdministrationUI/Welsh.lproj/Localizable.strings b/UI/AdministrationUI/Welsh.lproj/Localizable.strings
index 680d2145f..4dadc367f 100644
--- a/UI/AdministrationUI/Welsh.lproj/Localizable.strings
+++ b/UI/AdministrationUI/Welsh.lproj/Localizable.strings
@@ -1,11 +1,26 @@
/* this file is in UTF-8 format! */
-"Help" = "Help";
-"Close" = "Close";
-"Modules" = "Modules";
+"Help" = "Cymorth";
+"Close" = "Cau";
+"Modules" = "Modiwlau";
/* Modules short names */
-"ACLs" = "ACLs";
+"ACLs" = "Rhestrau Rheoli Mynediad";
/* Modules titles */
-"ACLs_title" = "Users folders ACLs management";
+"ACLs_title" = "Rhestrau Rheoli Mynediad ar gyfer ffolderi defnyddwyr";
/* Modules descriptions */
-"ACLs_description" = "
The Access Control Lists administration module allows to change the ACLs of each user's Calendars and Address books.
To modify the ACLs of a user's folder, type the name of the user in the search field at the top of the window and double-click on the desired folder.
";
+"ACLs_description" = "
Mae'r modiwl gweinyddu Rhestrau Rheoli Mynediad yn caniatáu newid Rhestrau Rheoli Mynediad Calendrau a Llyfrau Cyfeiriadau pob defnyddiwr.
Er mwyn newid Rhestrau Rheoli Mynediad ffolder defnyddiwr, teipiwch enw'r defnyddiwr yn y maes chwilio ar ben y ffenestr a chliciwch ddwywaith ar y ffolder berthnasol.
";
+"Name or Email" = "Enw neu Gyfeiriad E-bost";
+/* Rights module: initial search message */
+"Start a search to edit the rights" = "Cychwyn chwiliad i olygu'r hawliau";
+/* Rights module: Empty search result */
+"No matching user" = "Dim defnyddwyr sy'n cyfateb";
+/* Rights module: no selection */
+"No resource selected" = "Dim adnodd wedi'i ddewis";
+"Add User" = "Ychwanegu Defnyddiwr";
+"Subscribe User" = "Tanysgrifio Defnyddiwr";
+"Rights" = "Hawliau";
+"Search Users" = "Chwilio Defnyddwyr";
+"users found" = "o ddefnyddwyr wedi'u canfod";
+"No resource" = "Dim adnodd";
+"Any Authenticated User" = "Unrhyw Ddefnyddiwr a Ddilyswyd";
+"Public Access" = "Mynediad Cyhoeddus";
diff --git a/UI/Common/Hebrew.lproj/Localizable.strings b/UI/Common/Hebrew.lproj/Localizable.strings
index c2a55d50d..c15381282 100644
--- a/UI/Common/Hebrew.lproj/Localizable.strings
+++ b/UI/Common/Hebrew.lproj/Localizable.strings
@@ -8,7 +8,7 @@
"Calendar" = "לוח שנה";
"Address Book" = "אנשי קשר";
"Mail" = "מייל";
-"Preferences" = "מועדפים";
+"Preferences" = "העדפות";
"Administration" = "אפשרויות ניהול";
"Disconnect" = "התנתקות";
"Toggle Menu" = "פתח/סגור תפריט";
@@ -24,7 +24,7 @@
"Add..." = "הוספה";
"Remove" = "הסרה";
"Subscribe User" = "רישום משתמש";
-"Any Authenticated User" = "כל משתמש מאומת";
+"Any Authenticated User" = "כל משתמש מורשה";
"Public Access" = "נקודת גישה פתוחה";
"Any user not listed above" = "כל משתמש לא מפורט לעיל";
"Anybody accessing this resource from the public area" = "כל הניגש למשאב זה מאזור פומבי";
diff --git a/UI/Common/Hungarian.lproj/Localizable.strings b/UI/Common/Hungarian.lproj/Localizable.strings
index c3a8d35df..1936ad693 100644
--- a/UI/Common/Hungarian.lproj/Localizable.strings
+++ b/UI/Common/Hungarian.lproj/Localizable.strings
@@ -69,14 +69,6 @@
"delegate is organizer" = "Az átruházott személy nem lehet a szervező, kérem adjon meg mást.";
"delegate is a participant" = "Az átruházott személy nem lehet résztvevő.";
"delegate is a group" = "A megadott cím egy csoporté, átruházni csak egy személyre lehet.";
-"Snooze for " = "Szundi:";
-"5 minutes" = "5 perc";
-"10 minutes" = "10 perc";
-"15 minutes" = "15 perc";
-"30 minutes" = "30 perc";
-"45 minutes" = "45 perc";
-"1 hour" = "1 óra";
-"1 day" = "1 nap";
/* common buttons */
"OK" = "Ok";
@@ -89,6 +81,15 @@
"Start" = "Kezdés";
"Due Date" = "Lejárat dátuma";
"Location" = "Helyszín";
+"Snooze" = "Szundi";
+"Snooze for " = "Szundi:";
+"5 minutes" = "5 perc";
+"10 minutes" = "10 perc";
+"15 minutes" = "15 perc";
+"30 minutes" = "30 perc";
+"45 minutes" = "45 perc";
+"1 hour" = "1 óra";
+"1 day" = "1 nap";
/* mail labels */
"Important" = "Fontos";
@@ -118,18 +119,27 @@
/* Authentication failed */
"Wrong username or password." = "Hibás felhasználónév vagy jelszó";
-/* 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" = "Adjon meg legalább %{minimumSearchLength} karaktert";
+/* Error message displayed when a file upload exceeds WOMaxUploadSize */
+"File size upload limit reached" = "Elérte a maximális állomány feltöltési méretkorlátot";
+
/* Toggle visibility (ex: mail account in left navigation menu) */
"Toggle visibility" = "Láthatóság összecsukása";
+/* Toggle multiple items at the same time (hotkeys cheatsheet) */
+"Toggle range of items" = "Több elem módosítása";
+
/* Question mark shows list of hotkeys */
"Show or hide this help" = "Mutassa vagy elrejtse ezt a súgót";
/* Space key */
"key_space" = "space";
+/* Shift and space key */
+"key_shift+space" = "shift + space";
+
/* Up arrow key */
"key_up" = "↑";
diff --git a/UI/Common/Macedonian.lproj/Localizable.strings b/UI/Common/Macedonian.lproj/Localizable.strings
index 530014bfe..a464d3e11 100644
--- a/UI/Common/Macedonian.lproj/Localizable.strings
+++ b/UI/Common/Macedonian.lproj/Localizable.strings
@@ -69,14 +69,6 @@
"delegate is organizer" = "Делегираниот е и организатор. Ве молиме одберете друг делегат.";
"delegate is a participant" = "Овој делегат е веќе учесник.";
"delegate is a group" = "Адресата не коренспондира со групата. Можете да делегирате на единствена личност.";
-"Snooze for " = "Паузирај го за";
-"5 minutes" = "5 минути";
-"10 minutes" = "10 минути";
-"15 minutes" = "15 минути";
-"30 minutes" = "30 минути";
-"45 minutes" = "45 минути";
-"1 hour" = "1 час";
-"1 day" = "1 ден";
/* common buttons */
"OK" = "Во ред";
@@ -89,6 +81,15 @@
"Start" = "Почеток";
"Due Date" = "Краен датум";
"Location" = "Локација";
+"Snooze" = "Паузирај";
+"Snooze for " = "Паузирај го за";
+"5 minutes" = "5 минути";
+"10 minutes" = "10 минути";
+"15 minutes" = "15 минути";
+"30 minutes" = "30 минути";
+"45 minutes" = "45 минути";
+"1 hour" = "1 час";
+"1 day" = "1 ден";
/* mail labels */
"Important" = "Важно";
@@ -118,18 +119,27 @@
/* Authentication failed */
"Wrong username or password." = "Погрешно корисничко име или лозинка.";
-/* 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" = "Внесете барем %{minimumSearchLength} карактери";
+/* Error message displayed when a file upload exceeds WOMaxUploadSize */
+"File size upload limit reached" = "Достигнат е максиналната големина за прикачување на фајлови";
+
/* Toggle visibility (ex: mail account in left navigation menu) */
"Toggle visibility" = "Промени ја видливоста";
+/* Toggle multiple items at the same time (hotkeys cheatsheet) */
+"Toggle range of items" = "Промени го рангот на поставките";
+
/* Question mark shows list of hotkeys */
"Show or hide this help" = "Прикажи или сокриј ја оваа помош";
/* Space key */
"key_space" = "space";
+/* Shift and space key */
+"key_shift+space" = "shift + space";
+
/* Up arrow key */
"key_up" = "↑";
diff --git a/UI/Common/Welsh.lproj/Localizable.strings b/UI/Common/Welsh.lproj/Localizable.strings
index 58538b5ac..28f2ca142 100644
--- a/UI/Common/Welsh.lproj/Localizable.strings
+++ b/UI/Common/Welsh.lproj/Localizable.strings
@@ -7,67 +7,95 @@
"Home" = "Hafan";
"Calendar" = "Calendr";
"Address Book" = "Llyfr Cyfeiriadau";
-"Mail" = "Post";
+"Mail" = "E-byst";
"Preferences" = "Dewisiadau";
-"Administration" = "Administration";
+"Administration" = "Gweinyddu";
"Disconnect" = "Datgysylltu";
-"Right Administration" = "Hawl Gweinyddu";
-"Log Console (dev.)" = "Consol Log (dev.)";
+"Toggle Menu" = "Toglo Dewislen";
+"Right Administration" = "Gweinyddu Hawl";
+"Log Console (dev.)" = "Consol Log (datbl.)";
"User" = "Defnyddiwr";
-"Help" = "Help";
-"noJavascriptError" = "Mae angen Javascript ar SOGo i redeg. Sicrhewch fod yr opsiwn ar gael ac yn actifedig yn newisiadau eich porwr.";
+"Vacation message is enabled" = "Galluogwyd neges gwyliau";
+"Help" = "Cymorth";
+"noJavascriptError" = "Mae angen Javascript ar SOGo i redeg. Gwnewch yn siŵr fod y dewis ar gael ac wedi'i weithredu yn newisiadau eich porwr.";
"noJavascriptRetry" = "Ailgynnig";
-"Owner" = "Owner";
-"Publish the Free/Busy information" = "Cyhoddwch y wybodaeth Rhydd/Brysur";
+"Owner" = "Perchennog";
+"Publish the Free/Busy information" = "Cyhoddi'r wybodaeth Rhydd/Brysur";
"Add..." = "Ychwanegu...";
"Remove" = "Dileu";
-"Subscribe User" = "Subscribe User";
-"Any Authenticated User" = "Any Authenticated User";
-"Public Access" = "Public Access";
-"Any user not listed above" = "Any user not listed above";
-"Anybody accessing this resource from the public area" = "Anybody accessing this resource from the public area";
-"Sorry, the user rights can not be configured for that object." = "Sori, ni all hawliau'r defnyddiwr cael ei newid ar gyfer y gwrthrych hwn.";
+"Subscribe User" = "Tanysgrifio Defnyddiwr";
+"Any Authenticated User" = "Unrhyw Ddefnyddiwr a Ddilyswyd";
+"Public Access" = "Mynediad Cyhoeddus";
+"Any user not listed above" = "Unrhyw ddefnyddiwr sydd heb ei restru uchod";
+"Anybody accessing this resource from the public area" = "Unrhyw un sy'n defnyddio'r adnodd hwn o'r ardal gyhoeddus";
+"Sorry, the user rights can not be configured for that object." = "Ymddiheuriadau, ni all hawliau'r defnyddiwr gael eu newid ar gyfer y gwrthrych hwn.";
+"Any user with an account on this system will be able to access your mailbox \"%{0}\". Are you certain you trust them all?"
+ = "Bydd unrhyw ddefnyddiwr sydd â chyfrif ar y system hon yn gallu mynd at eich blwch derbyn \"%{0}\". Ydych chi'n siŵr eich bod yn ymddiried ynddyn nhw i gyd?";
+"Any user with an account on this system will be able to access your calendar \"%{0}\". Are you certain you trust them all?"
+ = "Bydd unrhyw ddefnyddiwr sydd â chyfrif ar y system hon yn gallu mynd at eich calendr \"%{0}\". Ydych chi'n siŵr eich bod yn ymddiried ynddyn nhw i gyd?";
+"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?"
+ = "Mae'n bosib y bydd unrhyw un ar y Rhyngrwyd yn gallu cael mynediad at eich calendr \"%{0}\", hyd yn oed os nad oes ganddynt gyfrif ar y system hon. A yw'r wybodaeth hon yn addas ar gyfer y Rhyngrwyd gyhoeddus?";
+"Any user with an account on this system will be able to access your address book \"%{0}\". Are you certain you trust them all?"
+ = "Bydd unrhyw ddefnyddiwr sydd â chyfrif ar y system hon yn gallu mynd at eich llyfr cyfeiriadau \"%{0}\". Ydych chi'n siŵr eich bod yn ymddiried ynddyn nhw i gyd?";
+"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?"
+ = "Mae'n bosib y bydd unrhyw un ar y Rhyngrwyd yn gallu cael mynediad at eich llyfr cyfeiriadau \"%{0}\", hyd yn oed os nad oes ganddynt gyfrif ar y system hon. A yw'r wybodaeth hon yn addas ar gyfer y Rhyngrwyd gyhoeddus?";
+"Give Access" = "Rhoi Mynediad";
+"Keep Private" = "Cadw'n Breifat";
+
/* generic.js */
"Unable to subscribe to that folder!"
= "Methu tanysgrifio i'r ffolder yna!";
"You cannot subscribe to a folder that you own!"
- = "Ni fedrwch danysgrifio i ffolder yr ydych yn ei berchen!";
+ = "Allwch chi ddim tanysgrifio i ffolder yr ydych yn berchen arni!";
"Unable to unsubscribe from that folder!"
- = "Methu dad-danysgrifio i'r ffolder yna!";
+ = "Methu dad-danysgrifio o'r ffolder yna!";
"You cannot unsubscribe from a folder that you own!"
- = "Ni fedrwch dad-danysgrifio i ffolder yr ydych yn ei berchen!";
+ = "Allwch chi ddim dad-danysgrifio o ffolder rydych chi'n berchen arni!";
"Unable to rename that folder!" = "Methu ail-enwi'r ffolder yna!";
"You have already subscribed to that folder!"
- = "Yr ydych wedi tanysgrifio eisoes i'r ffolder yna!";
+ = "Rydych wedi tanysgrifio i'r ffolder yna eisoes!";
"The user rights cannot be edited for this object!"
- = "Ni all hawliau'r defnyddiwr cael eu golygu ar gyfer y gwrthrych hwn!";
-"A folder by that name already exists." = "A folder by that name already exists.";
-"You cannot create a list in a shared address book."
- = "You cannot create a list in a shared address book.";
-"Warning" = "Warning";
+ = "Ni ellir golygu hawliau'r defnyddiwr ar gyfer y gwrthrych hwn!";
+"A folder by that name already exists." = "Mae ffolder gyda'r enw yna'n bodoli eisoes.";
+"You cannot create a list in a shared address book."
+ = "Allwch chi ddim creu rhestr mewn llyfr cyfeiriadau a rennir.";
+"Warning" = "Rhybudd";
+"Can't contact server" = "Digwyddodd gwall wrth gysylltu â'r gweinydd. Rhowch gynnig arall arni yn nes mlaen.";
"You are not allowed to access this module or this system. Please contact your system administrator."
-= "Nid oes gennych caniatad mynediad i'r modiwl hwn na'r system hwn. Cysylltwch a'r Gweinyddwr Systemau os gwelwch yn dda.";
+= "Nid oes gennych hawl i gael mynediad at y modiwl hwn na'r system hon. Cysylltwch â'ch gweinyddwr systemau.";
"You don't have the required privileges to perform the operation."
-= "Nid oes gennych y breintiau gofynnol i berfformio'r gweithrediad.";
-"noEmailForDelegation" = "You must specify the address to which you want to delegate your invitation.";
-"delegate is organizer" = "The delegate is the organizer. Please specify a different delegate.";
-"delegate is a participant" = "The delegate is already a participant.";
-"delegate is a group" = "The specified address corresponds to a group. You can only delegate to a unique person.";
+= "Nid yw'r breintiau gofynnol gennych i gyflawni'r weithred.";
+"noEmailForDelegation" = "Rhaid i chi nodi i ba gyfeiriad yr hoffech ddirprwyo eich gwahoddiad.";
+"delegate is organizer" = "Y dirprwy yw'r trefnydd. Nodwch ddirprwy arall.";
+"delegate is a participant" = "Mae'r dirprwy yn gyfranogwr eisoes.";
+"delegate is a group" = "Mae'r cyfeiriad a nodwyd yn gyfeiriad grŵp. Dim ond unigolyn all fod yn ddirprwy.";
+
/* common buttons */
-"OK" = "OK";
-"Cancel" = "Cancel";
-"Yes" = "Yes";
-"No" = "No";
+"OK" = "Iawn";
+"Cancel" = "Canslo";
+"Yes" = "Ie";
+"No" = "Na";
+
/* alarms */
-"Reminder" = "Atgoffa";
+"Reminder" = "Atgoffeb";
"Start" = "Dechrau";
-"Due Date" = "Dyddiad dyledus";
+"Due Date" = "Dyddiad Disgwyliedig";
"Location" = "Lleoliad";
-/* Mail labels */
+"Snooze" = "Cysgu";
+"Snooze for " = "Cysgu am";
+"5 minutes" = "5 munud";
+"10 minutes" = "10 munud";
+"15 minutes" = "15 munud";
+"30 minutes" = "30 munud";
+"45 minutes" = "45 munud";
+"1 hour" = "1 awr";
+"1 day" = "1 diwrnod";
+
+/* mail labels */
"Important" = "Pwysig";
"Work" = "gwaith";
"Personal" = "Personol";
-"To Do" = "I'w wneud";
+"To Do" = "I'w Wneud";
"Later" = "Hwyrach";
"a2_Sunday" = "Su";
"a2_Monday" = "Ll";
@@ -76,3 +104,80 @@
"a2_Thursday" = "Ia";
"a2_Friday" = "Gw";
"a2_Saturday" = "Sa";
+"Access Rights" = "Hawliau Mynediad";
+"Add User" = "Ychwanegu Defnyddiwr";
+"Loading" = "Wrthi'n llwytho";
+"No such user." = "Does dim defnyddiwr o'r fath.";
+"You cannot (un)subscribe to a folder that you own!" = "Allwch chi ddim tanysgrifio na dad-danysgrifio o ffolder rydych chi'n berchen arni!";
+
+/* Authentication username */
+"Username" = "Enw defnyddiwr";
+
+/* Authentication password */
+"Password" = "Cyfrinair";
+
+/* Authentication failed */
+"Wrong username or password." = "Enw defnyddiwr neu gyfrinair anghywir.";
+
+/* Error message displayed bellow search field when the search string has less than the required number of characters */
+"Enter at least %{minimumSearchLength} characters" = "Teipiwch o leiaf %{minimumSearchLength} o nodau";
+
+/* Error message displayed when a file upload exceeds WOMaxUploadSize */
+"File size upload limit reached" = "Wedi cyrraedd uchafswm maint ffeil";
+
+/* Toggle visibility (ex: mail account in left navigation menu) */
+"Toggle visibility" = "Toglo amlygrwydd";
+
+/* Toggle multiple items at the same time (hotkeys cheatsheet) */
+"Toggle range of items" = "Toglo ystod o eitemau";
+
+/* Question mark shows list of hotkeys */
+"Show or hide this help" = "Dangos neu guddio'r cymorth hwn";
+
+/* Space key */
+"key_space" = "bylchwr";
+
+/* Shift and space key */
+"key_shift+space" = "shift + bylchwr";
+
+/* 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" = "ôl-fysell";
+
+/* Hotkey to start a search */
+"hotkey_search" = "s";
+
+/* Hotkey description to select next list item */
+"View next item" = "Gweld yr eitem nesaf";
+
+/* Hotkey description to select previous list item */
+"View previous item" = "Gweld yr eitem ddiwethaf";
+
+/* Hotkey description to add next list item to selection */
+"Add next item to selection" = "Ychwanegu'r eitem nesaf i'r detholiad";
+
+/* Hotkey description to add previous list item to selection */
+"Add previous item to selection" = "Ychwanegu'r eitem ddiwethaf i'r detholiad";
+
+/* Hotkey description to move backward in current view */
+"Move backward" = "Symud yn ôl";
+
+/* Hotkey description to move forward in current view */
+"Move forward" = "Symud ymlaen";
diff --git a/UI/Contacts/English.lproj/Localizable.strings b/UI/Contacts/English.lproj/Localizable.strings
index 2a11c1c60..0f2a804bf 100644
--- a/UI/Contacts/English.lproj/Localizable.strings
+++ b/UI/Contacts/English.lproj/Localizable.strings
@@ -247,6 +247,12 @@
"More options" = "More options";
"Role" = "Role";
"Add Screen Name" = "Add Screen Name";
+"Custom 1" = "Custom 1";
+"Custom 2" = "Custom 2";
+"Custom 3" = "Custom 3";
+"Custom 4" = "Custom 4";
+"Custom Value" = "Custom Value";
+"New Custom Value" = "New Custom Value";
"Synchronization" = "Synchronization";
"Synchronize" = "Synchronize";
"Sucessfully subscribed to address book" = "Successfully subscribed to address book";
diff --git a/UI/Contacts/French.lproj/Localizable.strings b/UI/Contacts/French.lproj/Localizable.strings
index db414cbdf..45cee9aa0 100644
--- a/UI/Contacts/French.lproj/Localizable.strings
+++ b/UI/Contacts/French.lproj/Localizable.strings
@@ -247,6 +247,12 @@
"More options" = "Options supplémentaires";
"Role" = "Rôle";
"Add Screen Name" = "Ajouter un surnom";
+"Custom 1" = "Autre 1";
+"Custom 2" = "Autre 2";
+"Custom 3" = "Autre 3";
+"Custom 4" = "Autre 4";
+"Custom Value" = "Valeur";
+"New Custom Value" = "Ajouter un champs personnalisé";
"Synchronization" = "Synchronisation";
"Synchronize" = "Synchroniser";
"Sucessfully subscribed to address book" = "Abonnement au carnet d'adresses complété";
diff --git a/UI/Contacts/German.lproj/Localizable.strings b/UI/Contacts/German.lproj/Localizable.strings
index 260b65b2b..d09a72f60 100644
--- a/UI/Contacts/German.lproj/Localizable.strings
+++ b/UI/Contacts/German.lproj/Localizable.strings
@@ -41,6 +41,9 @@
"Move To" = "Verschieben in";
"Copy To" = "Kopieren nach";
"Add to" = "Hinzufügen zu";
+"To" = "An";
+"Carbon Copy (Cc)" = "Kopie an (CC)";
+"Blind Carbon Copy (Bcc)" = "Blindkopie an (BCC)";
/* Subheader of empty addressbook */
"No contact" = "Kein Kontakt";
@@ -244,6 +247,12 @@
"More options" = "Weiter Optionen";
"Role" = "Rolle";
"Add Screen Name" = "Spitzname hinzufügen";
+"Custom 1" = "Benutzerdefiniert 1";
+"Custom 2" = "Benutzerdefiniert 2";
+"Custom 3" = "Benutzerdefiniert 3";
+"Custom 4" = "Benutzerdefiniert 4";
+"Custom Value" = "Benutzerdefinierter Wert";
+"New Custom Value" = "Neuer benutzerdefinierter Wert";
"Synchronization" = "Synchronisierung";
"Synchronize" = "Synchronisieren";
"Sucessfully subscribed to address book" = "Adressbuch erfolgreich abonniert";
@@ -258,4 +267,4 @@
"key_create_card" = "c";
/* Hotkey to create a new list */
-"key_create_list" = "l";
\ No newline at end of file
+"key_create_list" = "l";
diff --git a/UI/Contacts/Hebrew.lproj/Localizable.strings b/UI/Contacts/Hebrew.lproj/Localizable.strings
index a97d9e28a..816e5cab9 100644
--- a/UI/Contacts/Hebrew.lproj/Localizable.strings
+++ b/UI/Contacts/Hebrew.lproj/Localizable.strings
@@ -41,6 +41,9 @@
"Move To" = "העבר ל";
"Copy To" = "העתק ל";
"Add to" = "הוסף ל";
+"To" = "עבור";
+"Carbon Copy (Cc)" = "עותק (CC)";
+"Blind Carbon Copy (Bcc)" = "עותק מוסתר (Bcc)";
/* Subheader of empty addressbook */
"No contact" = "אין איש קשר";
@@ -155,7 +158,7 @@
/* acls */
"Access rights to" = "הרשאות גישה ל";
"For user" = "עבור משתמש";
-"Any Authenticated User" = "כל משתמש מאומת";
+"Any Authenticated User" = "כל משתמש מורשה";
"Public Access" = "גישה פומבית";
"This person can add cards to this addressbook."
= "המשתמש הנ\"ל יכול להוסיף כרטיסיות ברשימת אנשי קשר הזו.";
@@ -175,7 +178,7 @@
"%{0} card(s) copied" = "{0}% כרטיסיות הועתקו";
"%{0} card(s) moved" = "{0}% כרטיסיות הועברו";
"SoAccessDeniedException" = "אין אפשרות לכתוב ברשימת אנשי קשר זו.";
-"Forbidden" = "אין אפשרות לכתוב ברשימת אנשי קשר זו.";
+"Forbidden" = "אסורה";
"Invalid Contact" = "איש הקשר הנבחר אינו קיים עוד.";
"Unknown Destination Folder" = "רשימת אנשי קשר נבחרת אינה קיימת עוד.";
@@ -210,8 +213,8 @@
"CardDAV URL" = "CardDAV URL";
"Options" = "אפשרויות";
"Rename" = "שינוי שם";
-"Subscriptions" = "מנויים";
-"Global Addressbooks" = "רישמות אנשי קשר גלובליים";
+"Subscriptions" = "הרשמות";
+"Global Addressbooks" = "רשימת אנשי קשר גלובלית";
"Search" = "חיפוש";
"Sort" = "מיון";
"Descending Order" = "סדר יורד";
@@ -244,6 +247,12 @@
"More options" = "אפשרויות נוספות";
"Role" = "תפקיד";
"Add Screen Name" = "הוספת שם תצוגה";
+"Custom 1" = "מותאם אישית 1";
+"Custom 2" = "מותאם אישית 2";
+"Custom 3" = "מותאם אישית 3";
+"Custom 4" = "מותאם אישית 4";
+"Custom Value" = "ערך מותאם אישית";
+"New Custom Value" = "ערך מותאם אישית חדש";
"Synchronization" = "סינכרון";
"Synchronize" = "סינכרון";
"Sucessfully subscribed to address book" = "מנוי לרשימת אנשי קשר נרשם בהצלחה";
@@ -258,4 +267,4 @@
"key_create_card" = "c";
/* Hotkey to create a new list */
-"key_create_list" = "l";
\ No newline at end of file
+"key_create_list" = "l";
diff --git a/UI/Contacts/Hungarian.lproj/Localizable.strings b/UI/Contacts/Hungarian.lproj/Localizable.strings
index fb30f7ec2..01abe3387 100644
--- a/UI/Contacts/Hungarian.lproj/Localizable.strings
+++ b/UI/Contacts/Hungarian.lproj/Localizable.strings
@@ -13,7 +13,7 @@
"Contact editor" = "Kapcsolatszerkesztő";
"Contact viewer" = "Kapcsolat betekintő";
"Email" = "Email";
-"Screen Name" = "Fedőnév";
+"Screen Name" = "Megjelenített név";
"Extended" = "Kiterjesztett";
"Fax" = "Fax";
"Firstname" = "Keresztnév";
@@ -41,6 +41,9 @@
"Move To" = "Áthelyezés";
"Copy To" = "Másolás";
"Add to" = "Add to";
+"To" = "Címzett";
+"Carbon Copy (Cc)" = "Másolat (Cc)";
+"Blind Carbon Copy (Bcc)" = "Titkos másolat (Bcc)";
/* Subheader of empty addressbook */
"No contact" = "Nincs kapcsolat";
@@ -175,7 +178,7 @@
"%{0} card(s) copied" = "%{0} névjegy másolva";
"%{0} card(s) moved" = "%{0} névjegy átmozgatva";
"SoAccessDeniedException" = "Ön nem írhat ebbe a címjegyzékbe.";
-"Forbidden" = "Ön nem írhat ebbe a címjegyzékbe.";
+"Forbidden" = "Tiltott";
"Invalid Contact" = "A kijelölt kapcsolat már nem létezik.";
"Unknown Destination Folder" = "A kijelölt címjegyzék már nem elérhető.";
@@ -239,11 +242,17 @@
"Description" = "Leírás";
"Add Member" = "Résztvevő hozzáadása";
"Subscribe" = "Feliratkozás";
-"Add Birthday" = "Születésnap hozzáadása";
+"Add Birthday" = "Új születésnap";
"Import" = "Importálás";
"More options" = "További tulajdonságok";
"Role" = "Szerepkör";
-"Add Screen Name" = "Fedőnév hozzáadása";
+"Add Screen Name" = "Új becenév";
+"Custom 1" = "Kiegészítés 1";
+"Custom 2" = "Kiegészítés 2";
+"Custom 3" = "Kiegészítés 3";
+"Custom 4" = "Kiegészítés 4";
+"Custom Value" = "Kiegészítő adat";
+"New Custom Value" = "Új kiegészítő adat";
"Synchronization" = "Szinkronizálás";
"Synchronize" = "Szinkronizálás";
"Sucessfully subscribed to address book" = "Sikeresen feliratkozott a címjegyzékre";
@@ -258,4 +267,4 @@
"key_create_card" = "c";
/* Hotkey to create a new list */
-"key_create_list" = "l";
\ No newline at end of file
+"key_create_list" = "l";
diff --git a/UI/Contacts/Latvian.lproj/Localizable.strings b/UI/Contacts/Latvian.lproj/Localizable.strings
index c44c6fd35..85e2e2023 100644
--- a/UI/Contacts/Latvian.lproj/Localizable.strings
+++ b/UI/Contacts/Latvian.lproj/Localizable.strings
@@ -247,6 +247,12 @@
"More options" = "Papildu opcijas";
"Role" = "Loma";
"Add Screen Name" = "Pievienot ekrāna vārdu";
+"Custom 1" = "Pielāgots 1";
+"Custom 2" = "Pielāgots 2";
+"Custom 3" = "Pielāgots 3";
+"Custom 4" = "Pielāgots 4";
+"Custom Value" = "Pielāgota vērtība";
+"New Custom Value" = "Jauna pielāgota vērtība";
"Synchronization" = "Sinhronizācija";
"Synchronize" = "Sinhronizēt";
"Sucessfully subscribed to address book" = "Sekmīgi abonējis adrešu grāmatu";
diff --git a/UI/Contacts/Macedonian.lproj/Localizable.strings b/UI/Contacts/Macedonian.lproj/Localizable.strings
index 4e4b81805..d4ba4f67c 100644
--- a/UI/Contacts/Macedonian.lproj/Localizable.strings
+++ b/UI/Contacts/Macedonian.lproj/Localizable.strings
@@ -41,6 +41,9 @@
"Move To" = "Префрли во ";
"Copy To" = "Копирај во";
"Add to" = "Додади во";
+"To" = "До";
+"Carbon Copy (Cc)" = "Копија до (Cc)";
+"Blind Carbon Copy (Bcc)" = "Скриена копија до (Bcc)";
/* Subheader of empty addressbook */
"No contact" = "Нема контакт";
@@ -175,7 +178,7 @@
"%{0} card(s) copied" = "%{0} картичка(и) се ископирани";
"%{0} card(s) moved" = "%{0} картичка(и) се префрлени";
"SoAccessDeniedException" = "Не можете да запишувате во овој адресар.";
-"Forbidden" = "Не можете да запишувате во овој адресар.";
+"Forbidden" = "Забранет";
"Invalid Contact" = "Одбраниот контакт повеќе не постои.";
"Unknown Destination Folder" = "Одбраниот адресар повеќе не постои како одредница.";
@@ -244,6 +247,12 @@
"More options" = "Повеќе опции";
"Role" = "Улога";
"Add Screen Name" = "Додади прекар";
+"Custom 1" = "Прилагодено 1";
+"Custom 2" = "Прилагодено 2";
+"Custom 3" = "Прилагодено 3";
+"Custom 4" = "Прилагодено 4";
+"Custom Value" = "Прилагодена вредност";
+"New Custom Value" = "Нова прилагодена вредност";
"Synchronization" = "Синхронизација";
"Synchronize" = "Синхронизирај";
"Sucessfully subscribed to address book" = "Успешно се претплативте на адресната книга";
@@ -258,4 +267,4 @@
"key_create_card" = "c";
/* Hotkey to create a new list */
-"key_create_list" = "l";
\ No newline at end of file
+"key_create_list" = "l";
diff --git a/UI/Contacts/Polish.lproj/Localizable.strings b/UI/Contacts/Polish.lproj/Localizable.strings
index b62e3e8d5..4f9902b0e 100644
--- a/UI/Contacts/Polish.lproj/Localizable.strings
+++ b/UI/Contacts/Polish.lproj/Localizable.strings
@@ -247,6 +247,12 @@
"More options" = "Więcej opcji";
"Role" = "Rola";
"Add Screen Name" = "Dodaj nazwę ekranową";
+"Custom 1" = "Własna 1";
+"Custom 2" = "Własna 2";
+"Custom 3" = "Własna 3";
+"Custom 4" = "Własna 4";
+"Custom Value" = "Własna wartość";
+"New Custom Value" = "Nowa własna wartość";
"Synchronization" = "Synchronizacja";
"Synchronize" = "Synchronizuj";
"Sucessfully subscribed to address book" = "Subskrypcja książki adresowej zakończona powodzeniem";
diff --git a/UI/Contacts/Russian.lproj/Localizable.strings b/UI/Contacts/Russian.lproj/Localizable.strings
index 6f9c1547c..72e4f4e9c 100644
--- a/UI/Contacts/Russian.lproj/Localizable.strings
+++ b/UI/Contacts/Russian.lproj/Localizable.strings
@@ -41,6 +41,9 @@
"Move To" = "Переместить в";
"Copy To" = "Копировать";
"Add to" = "Добавить в";
+"To" = "Кому";
+"Carbon Copy (Cc)" = "Копия (Cc)";
+"Blind Carbon Copy (Bcc)" = "Скрытая копия (Bcc)";
/* Subheader of empty addressbook */
"No contact" = "Нет контакта";
@@ -175,7 +178,7 @@
"%{0} card(s) copied" = "%{0} карточка(ек) скопирована(о)";
"%{0} card(s) moved" = "%{0} карточка(ек) перемещена(о)";
"SoAccessDeniedException" = "Вы не можете писать в эту адресную книгу.";
-"Forbidden" = "Вы не можете писать в эту адресную книгу.";
+"Forbidden" = "Запрещено";
"Invalid Contact" = "Выбранный контакт более не существует.";
"Unknown Destination Folder" = "Выбранная адресная книга более не существует.";
@@ -244,6 +247,12 @@
"More options" = "Больше опций";
"Role" = "Роль";
"Add Screen Name" = "Добавить имя экрана";
+"Custom 1" = "Настраиваемое 1";
+"Custom 2" = "Настраиваемое 2";
+"Custom 3" = "Настраиваемое 3";
+"Custom 4" = "Настраиваемое 4";
+"Custom Value" = "Настраиваемое значение";
+"New Custom Value" = "Новое настраиваемое значение";
"Synchronization" = "Синхронизация";
"Synchronize" = "Синхронизировать";
"Sucessfully subscribed to address book" = "Успешная подписка на адресную книгу";
@@ -258,4 +267,4 @@
"key_create_card" = "c";
/* Hotkey to create a new list */
-"key_create_list" = "l";
\ No newline at end of file
+"key_create_list" = "l";
diff --git a/UI/Contacts/TurkishTurkey.lproj/Localizable.strings b/UI/Contacts/TurkishTurkey.lproj/Localizable.strings
index fda68b0ef..356bb47b3 100644
--- a/UI/Contacts/TurkishTurkey.lproj/Localizable.strings
+++ b/UI/Contacts/TurkishTurkey.lproj/Localizable.strings
@@ -64,7 +64,7 @@
"selected" = "kişi seçildi";
/* Empty right pane */
-"No contact selected" = "Seçili kişi yok";
+"No contact selected" = "Kişi seçilmemiş";
/* Tooltips */
"Create a new address book card" = "Yeni adres kartı oluştur";
@@ -86,10 +86,10 @@
"Properties" = "Özellikler";
"Sharing..." = "Paylaşım...";
"Write" = "Yaz";
-"Delete" = "Sil";
+"Delete" = "SİL";
"Instant Message" = "Anlık İleti";
"Add..." = "Ekle...";
-"Remove" = "Sil";
+"Remove" = "Çıkart";
"Please wait..." = "Lütfen bekleyin...";
"No possible subscription" = "Mümkün olan bir üyelik yok";
"Preferred" = "Tercih edilen";
@@ -247,6 +247,12 @@
"More options" = "Diğer seçenekler";
"Role" = "Görev";
"Add Screen Name" = "Görünen İsim Ekle";
+"Custom 1" = "Özel 1";
+"Custom 2" = "Özel 2";
+"Custom 3" = "Özel 3";
+"Custom 4" = "Özel 4";
+"Custom Value" = "Özel Değer";
+"New Custom Value" = "Yeni Özel Değer";
"Synchronization" = "Eşitleme";
"Synchronize" = "Eşitle";
"Sucessfully subscribed to address book" = "Adres defterine başarıyla üye olundu";
diff --git a/UI/Contacts/Welsh.lproj/Localizable.strings b/UI/Contacts/Welsh.lproj/Localizable.strings
index 4ed1daaa4..d47e7eb94 100644
--- a/UI/Contacts/Welsh.lproj/Localizable.strings
+++ b/UI/Contacts/Welsh.lproj/Localizable.strings
@@ -1,161 +1,270 @@
/* this file is in UTF-8 format! */
-"Contact" = "Contact";
-"Address" = "Address";
-"Photos" = "Photos";
-"Other" = "Other";
-"Addressbook" = "Llyfr cyfeiriadau";
+"Contact" = "Cyswllt";
+"Address" = "Cyfeiriad";
+"Photos" = "Lluniau";
+"Other" = "Arall";
+"Address Books" = "Llyfrau Cyfeiriadau";
+"Addressbook" = "Llyfr Cyfeiriadau";
"Addresses" = "Cyfeiriadau";
"Update" = "Diweddaru";
"Cancel" = "Canslo";
"Common" = "Cyffredin";
"Contact editor" = "Golygydd cyswllt";
-"Contact viewer" = "Syllwr cyswllt";
-"Email" = "Ebost";
-"Screen Name" = "Enw'r sgrin";
+"Contact viewer" = "Dangosydd cysyltiadau";
+"Email" = "E-bost";
+"Screen Name" = "Enw sgrin";
"Extended" = "Estynedig";
"Fax" = "Ffacs";
"Firstname" = "Enw cyntaf";
"Home" = "Cartref";
-"HomePhone" = "Rhif adref";
+"HomePhone" = "Rhif cartref";
"Lastname" = "Cyfenw";
"Location" = "Lleoliad";
+"Add a category" = "Ychwanegu categori";
"MobilePhone" = "RhifSymudol";
"Name" = "Enw";
"OfficePhone" = "RhifSwyddfa";
"Organization" = "Sefydliad";
-"Work Phone" = "Rhif gwaith";
-"Phone" = "Teleffon";
-"Phones" = "Teleffonau";
+"Work Phone" = "Rhif Gwaith";
+"Phone" = "Ffôn";
+"Phones" = "Ffonau";
"Postal" = "Post";
"Save" = "Cadw";
-"URL" = "URL";
+"Internet" = "Rhyngrwyd";
"Unit" = "Uned";
"delete" = "dileu";
"edit" = "golygu";
-"invalidemailwarn" = "Mae'r ebost a nodwyd yn annilys";
+"invalidemailwarn" = "Mae'r e-bost a nodwyd yn annilys";
"new" = "newydd";
-"Preferred Phone" = "Rhif ffafriedig";
+"Preferred Phone" = "Rhif ffôn gorau";
+"Move To" = "Symud i";
+"Copy To" = "Copïo i";
+"Add to" = "Ychwanegu at";
+"To" = "At";
+"Carbon Copy (Cc)" = "Copi Carbon (Cc)";
+"Blind Carbon Copy (Bcc)" = "Copi Carbon Cudd (Bcc)";
+
+/* Subheader of empty addressbook */
+"No contact" = "Dim cysylltiadau";
+
+/* Subheader of system addressbook */
+"Start a search to browse this address book" = "Dechrau chwiliad i bori'r llyfr cyfeiriadau hwn";
+
+/* Number of contacts in addressbook; string is prefixed by number */
+"contacts" = "o gysylltiadau";
+
+/* No contact matching search criteria */
+"No matching contact" = "Dim cyswllt sy'n cyfateb";
+
+/* Number of contacts matching search criteria; string is prefixed by number */
+"matching contacts" = "o gysylltiadau sy'n cyfateb";
+
+/* Number of selected contacts in list */
+"selected" = "wedi'u dewis";
+
+/* Empty right pane */
+"No contact selected" = "Dim cysylltiadau wedi'u dewis";
+
/* Tooltips */
"Create a new address book card" = "Creu cerdyn llyfr cyfeiriadau newydd";
"Create a new list" = "Creu rhestr newydd";
-"Edit the selected card" = "Golygu'r cerdyn dewisol";
-"Send a mail message" = "Anfon neges ebost";
-"Delete selected card or address book" = "Dileu y cerdyn dewisol neu'r llyfr cyfeiriadau";
-"Reload all contacts" = "Reload all contacts";
+"Edit the selected card" = "Golygu'r cerdyn a ddewiswyd";
+"Send a mail message" = "Anfon neges e-bost";
+"Delete selected card or address book" = "Dileu'r cerdyn neu'r llyfr cyfeiriadau a ddewiswyd";
+"Reload all contacts" = "Ail-lwytho pob cyswllt";
"htmlMailFormat_UNKNOWN" = "Anhysbys";
"htmlMailFormat_FALSE" = "Testun plaen";
"htmlMailFormat_TRUE" = "HTML";
-"Name or Email" = "Enw neu Ebost";
-"Category" = "Category";
+"Name or Email" = "Enw neu E-bost";
+"Category" = "Categori";
"Personal Addressbook" = "Llyfr Cyfeiriadau Personol";
-"Search in Addressbook" = "Chwilio yn Llyfr Cyfeiriadau";
+"Search in Addressbook" = "Chwilio yn y Llyfr Cyfeiriadau";
"New Card" = "Cerdyn Newydd";
"New List" = "Rhestr Newydd";
+"Edit" = "Golygu";
"Properties" = "Nodweddion";
"Sharing..." = "Rhannu...";
-"Write" = "ysgrifennu";
+"Write" = "Ysgrifennu";
"Delete" = "Dileu";
-"Instant Message" = "Neges bwysig";
+"Instant Message" = "Neges gyflym";
"Add..." = "Ychwanegu...";
"Remove" = "Dileu";
"Please wait..." = "Arhoswch...";
-"No possible subscription" = "Dim tanysgrifiad posibl";
-"Preferred" = "Fafriedig";
-"Card for %@" = "Cerdyn i %@";
+"No possible subscription" = "Dim tanysgrifiad posib";
+"Preferred" = "Dymunol";
+"Display" = "Dangos";
"Display Name" = "Dangos Enw ";
-"Email" = "Cyfeiriad ebost";
-"Additional Email" = "Additional Email";
-"Screen Name" = "Screen Name";
-"Categories" = "Categories";
+"Additional Email" = "E-bost Ychwanegol";
+"Phone Number" = "Rhif Ffôn";
+"Prefers to receive messages formatted as" = "Yn dymuno cael negeseuon wedi'u fformatio fel";
+"Categories" = "Categorïau";
"First" = "Enw cyntaf";
"Last" = "Cyfenw";
"Nickname" = "Llysenw ";
-"Telephone" = "Teleffon";
+"Telephone" = "Ffôn";
"Work" = "Gwaith";
-"Home" = "Adref";
"Mobile" = "Symudol";
"Pager" = "Peiriant galw";
+
/* categories */
-"contacts_category_labels" = "Colleague, Competitor, Customer, Friend, Family, Business Partner, Provider, Press, VIP";
-"New category" = "New category";
+"contacts_category_labels" = "Cydweithiwr, Cystadleuydd, Cwsmer, Ffrind, Teulu, Partner Busnes, Darparwr, Y Wasg, Pwysigyn";
+"New category" = "Categori newydd";
+
/* adresses */
"Title" = "Teitl ";
"Service" = "Gwasanaeth";
"Company" = "Cwmni";
-"Street Address" = "Cyfeiriad Stryd";
+"Department" = "Adran";
"City" = "Dinas ";
"State_Province" = "Sir/Talaith";
-"ZIP_Postal Code" = "ZIP/Cod Post";
+"ZIP_Postal Code" = "Cod Post";
"Country" = "Gwlad";
-"Web" = "We";
-"Work" = "gwaith";
+"Web Page" = "Tudalen Gwe";
"Other Infos" = "Gwybodaeth Arall";
"Note" = "Nodyn ";
"Timezone" = "Cylchfa Amser";
-"Birthday" = "Penblwydd";
-"Birthday (yyyy-mm-dd)" = "Penblwydd (yyyy-mm-dd)";
+"Birthday" = "Pen-blwydd";
+"Birthday (yyyy-mm-dd)" = "Pen-blwydd (bbbb-mm-dd)";
"Freebusy URL" = "Freebusy URL";
"Add as..." = "Ychwanegu fel...";
"Recipient" = "Derbynnydd";
"Carbon Copy" = "Copi Carbon";
-"Blind Carbon Copy" = "Copi Carbon Dall";
+"Blind Carbon Copy" = "Copi Carbon Cudd";
"New Addressbook..." = "Llyfr Cyfeiriadau Newydd...";
"Subscribe to an Addressbook..." = "Tanysgrifio i Lyfr Cyfeiriadau...";
-"Remove the selected Addressbook" = "Dileu'r Llyfr Cyfeiriadau Dewisol";
+"Remove the selected Addressbook" = "Dileu'r Llyfr Cyfeiriadau a ddewiswyd";
+"Subscribe to a shared folder" = "Tanysgrifio i ffolder a rennir";
+"Search User" = "Chwilio Defnyddiwr";
"Name of the Address Book" = "Enw'r Llyfr Cyfeiriadau";
"Are you sure you want to delete the selected address book?"
-= "A ydych yn sicr eich bod eisiau dileu'r llyfr cyfeiriadau dewisol?";
+= "Ydych chi'n siŵr eich bod eisiau dileu'r llyfr cyfeiriadau a ddewiswyd?";
+"Are you sure you want to delete the addressbook \"%{0}\"?"
+= "Ydych chi'n siŵr eich bod am ddileu'r llyfr cyfeiriadau \"%{0}\"?";
"You cannot remove nor unsubscribe from a public addressbook."
-= "Ni fedrwch dileu na dad-danysgrifio i lyfr cyfeiriadau cyhoeddus.";
+= "Allwch chi ddim dileu na dad-danysgrifio o lyfr cyfeiriadau cyhoeddus.";
"You cannot remove nor unsubscribe from your personal addressbook."
-= "Ni fedrwch dileu na dad-danysgrifio i'ch llyfr cyfeiriadau personol.";
+= "Allwch chi ddim dileu na dad-danysgrifio o'ch llyfr cyfeiriadau personol.";
"Are you sure you want to delete the selected contacts?"
-= "A ydych yn sicr eich bod eisiau dileu'r cyswllt dewisol?";
+= "Ydych chi'n siŵr eich bod eisiau dileu'r cyswllt a ddewiswyd?";
+"Are you sure you want to delete the card of %{0}?" = "Ydych chi'n siŵr eich bod am ddileu cerdyn %{0}?";
"You cannot delete the card of \"%{0}\"."
-= "Ni fedrwch dileu cerdyn \"%{0}\".";
-"Address Book Name" = "Enw Llyfr Cyfeiriadau";
+= "Allwch chi ddim dileu cerdyn \"%{0}\".";
"You cannot subscribe to a folder that you own!"
-= "Ni fedrwch danysgrifio i ffolder yr ydych yn ei berchen.";
+= "Allwch chi ddim tanysgrifio i ffolder rydych chi'n berchen arni.";
"Unable to subscribe to that folder!"
= "Methu tanysgrifio i'r ffolder yna.";
-"User rights for" = "Hawliau defnyddiwr i";
-"Any Authenticated User" = "Any Authenticated User";
-"Public Access" = "Public Access";
+
+/* acls */
+"Access rights to" = "Hawliau mynediad i";
+"For user" = "Ar gyfer defnyddiwr";
+"Any Authenticated User" = "Unrhyw Ddefnyddiwr a Ddilyswyd";
+"Public Access" = "Mynediad Cyhoeddus";
"This person can add cards to this addressbook."
= "Gall y person hwn ychwanegu cardiau i'r llyfr cyfeiriadau yma.";
"This person can edit the cards of this addressbook."
-= "Gall y person hwn golygu cardiau'r llyfr cyfeiriadau yma.";
+= "Gall y person hwn olygu cardiau'r llyfr cyfeiriadau yma.";
"This person can list the content of this addressbook."
-= "Gall y person hwn rhesri cynnwys y llyfr cyfeiriadau yma.";
+= "Gall y person hwn restru cynnwys y llyfr cyfeiriadau yma.";
"This person can read the cards of this addressbook."
-= "Gall y person hwn darllen y cardiau yn y llyfr cyfeiriadau yma.";
+= "Gall y person hwn ddarllen y cardiau yn y llyfr cyfeiriadau yma.";
"This person can erase cards from this addressbook."
-= "Gall y person hwn dileu cardiau o'r llyfr cyfeiriadau yma.";
+= "Gall y person hwn ddileu cardiau o'r llyfr cyfeiriadau yma.";
"The selected contact has no email address."
-= "Nid oes cyfeiriad ebost gan y cyswllt dewisol hwn.";
-"Please select a contact." = "Dewiswch cyswllt.";
-/* Error messages for move and copy */
-"SoAccessDeniedException" = ".";
-"Forbidden" = "Ni fedrwch ysgrifennu i'r llyfr cyfeiriadau hwn.";
-"Invalid Contact" = "Nid yw'r cyswllt dewisol yn bodoli mwyach.";
-"Unknown Destination Folder" = "Nid yw'r llyfr cyfeiriadau dewisol yn bodoli mwyach.";
+= "Does gan y cyswllt a ddewiswyd ddim cyfeiriad e-bost.";
+"Please select a contact." = "Dewiswch gyswllt.";
+
+/* Messages for move and copy */
+"%{0} card(s) copied" = "%{0} o gardiau wedi'u copïo";
+"%{0} card(s) moved" = "%{0} o gardiau wedi'u symud";
+"SoAccessDeniedException" = "Allwch chi ddim ysgrifennu i'r llyfr cyfeiriadau hwn.";
+"Forbidden" = "Gwaharddwyd";
+"Invalid Contact" = "Dydy'r cyswllt a ddewiswyd ddim yn bodoli bellach.";
+"Unknown Destination Folder" = "Dydy'r llyfr cyfeiriadau targed a ddewiswyd ddim yn bodoli bellach.";
+
/* Lists */
-"List details" = "List details";
-"List name" = "List name";
-"List nickname" = "List nickname";
-"List description" = "List description";
-"Members" = "Members";
-"Contacts" = "Contacts";
-"Add" = "Add";
-"Lists can't be moved or copied." = "Lists can't be moved or copied.";
-"Export" = "Export";
-"Export Address Book..." = "Export Address Book...";
-"Import Cards" = "Import Cards";
-"Select a vCard or LDIF file." = "Select a vCard or LDIF file.";
-"Upload" = "Upload";
-"Done" = "Done";
-"An error occured while importing contacts." = "An error occured while importing contacts.";
-"No card was imported." = "No card was imported.";
-"A total of %{0} cards were imported in the addressbook." = "A total of %{0} cards were imported in the addressbook.";
-"Reload" = "Reload";
+"List details" = "Manylion y rhestr";
+"List name" = "Enw'r rhestr";
+"List nickname" = "Llysenw'r rhestr";
+"List description" = "Disgrifiad o'r rhestr";
+"Members" = "Aelodau";
+"Contacts" = "Cysylltiadau";
+"Add" = "Ychwanegu";
+"Lists can't be moved or copied." = "Nid oes modd symud na chopïo rhestrau.";
+"Export" = "Allgludo";
+"Export Address Book..." = "Allgludo Llyfr Cyfeiriadau...";
+"View Raw Source" = "Gweld Cod Crai";
+
+/* Import */
+"Import Cards" = "Mewngludo Cardiau";
+"Select a vCard or LDIF file." = "Dewis vCard neu ffeil LDIF.";
+"Upload" = "Uwchlwytho";
+"Uploading" = "Yn uwchlwytho";
+"Done" = "Cwblhawyd";
+"An error occured while importing contacts." = "Digwyddodd gwall wrth fewngludo cysylltiadau.";
+"No card was imported." = "Dim carden wedi'i mewngludo.";
+"A total of %{0} cards were imported in the addressbook." = "Mewngludwyd cyfanswm o %{0} carden i'r llyfr cyfeiriadau.";
+"Reload" = "Ail-lwytho";
+
+/* Properties window */
+"Address Book Name" = "Enw Llyfr Cyfeiriadau";
+"Links to this Address Book" = "Cysylltiadau â'r Llyfr Cyfeiriadau hwn";
+"Authenticated User Access" = "Mynediad i Ddefnyddwyr a Ddilyswyd";
+"CardDAV URL" = "URL CardDAV";
+"Options" = "Dewisiadau";
+"Rename" = "Ailenwi";
+"Subscriptions" = "Tanysgrifiadau";
+"Global Addressbooks" = "Llyfrau Cyfeiriadau Byd-eang";
+"Search" = "Chwilio";
+"Sort" = "Trefnu";
+"Descending Order" = "O'r Diwedd i'r Dechrau";
+"Back" = "Yn ôl";
+"Select All" = "Dewis Popeth";
+"Copy contacts" = "Copïo cysylltiadau";
+"More messages options" = "Rhagor o ddewisiadau negeseuon";
+"New Contact" = "Cyswllt Newydd";
+"Close" = "Cau";
+"More contact options" = "Rhagor o ddewisiadau cysylltiadau";
+"Organization Unit" = "Uned Drefnu";
+"Add Organizational Unit" = "Ychwanegu Uned Drefnu";
+"Type" = "Math";
+"Email Address" = "Cyfeiriad E-bost";
+"New Email Address" = "Cyfeiriad E-bost Newydd";
+"New Phone Number" = "Rhif Ffôn Newydd";
+"URL" = "URL";
+"New URL" = "URL Newydd";
+"street" = "stryd";
+"Postoffice" = "Swyddfa bost";
+"Region" = "Rhanbarth";
+"Postal Code" = "Cod Post";
+"New Address" = "Cyfeiriad Newydd";
+"Reset" = "Ailosod";
+"Description" = "Disgrifiad";
+"Add Member" = "Ychwanegu Aelod";
+"Subscribe" = "Tanysgrifio";
+"Add Birthday" = "Ychwanegu Pen-blwydd";
+"Import" = "Mewngludo";
+"More options" = "Rhagor o ddewisiadau";
+"Role" = "Swyddogaeth";
+"Add Screen Name" = "Ychwanegu Enw Sgrin";
+"Custom 1" = "Personol 1";
+"Custom 2" = "Personol 2";
+"Custom 3" = "Personol 3";
+"Custom 4" = "Personol 4";
+"Custom Value" = "Gwerth Personol";
+"New Custom Value" = "Gwerth Personol Newydd";
+"Synchronization" = "Cysoni";
+"Synchronize" = "Cysoni";
+"Sucessfully subscribed to address book" = "Wedi tanysgrifio'n llwyddiannus i'r llyfr cyfeiriadau";
+
+/* Aria label for scope of search on contacts */
+"Search scope" = "Cwmpas chwilio";
+
+/* Aria label for avatar button to select and unselect a card */
+"Toggle item" = "Toglo eitem";
+
+/* Hotkey to create a new card */
+"key_create_card" = "c";
+
+/* Hotkey to create a new list */
+"key_create_list" = "l";
diff --git a/UI/MailPartViewers/GNUmakefile.preamble b/UI/MailPartViewers/GNUmakefile.preamble
index 15440fbdd..ea7a2d465 100644
--- a/UI/MailPartViewers/GNUmakefile.preamble
+++ b/UI/MailPartViewers/GNUmakefile.preamble
@@ -1,3 +1,13 @@
+ifeq ($(HAS_LIBRARY_gnutls),yes)
+ADDITIONAL_CPPFLAGS += -DHAVE_GNUTLS=1
+SOGo_LIBRARIES_DEPEND_UPON += -lgnutls
+else
+ifeq ($(HAS_LIBRARY_ssl),yes)
+ADDITIONAL_CPPFLAGS += -DHAVE_OPENSSL=1
+SOGo_LIBRARIES_DEPEND_UPON += -lcrypto
+endif
+endif
+
ifeq ($(HAS_LIBRARY_ssl),yes)
ADDITIONAL_CPPFLAGS += -DHAVE_OPENSSL=1
BUNDLE_LIBS += -lcrypto
diff --git a/UI/MailPartViewers/Hungarian.lproj/Localizable.strings b/UI/MailPartViewers/Hungarian.lproj/Localizable.strings
index 3966a8793..583cb3c77 100644
--- a/UI/MailPartViewers/Hungarian.lproj/Localizable.strings
+++ b/UI/MailPartViewers/Hungarian.lproj/Localizable.strings
@@ -31,7 +31,7 @@ Tentative = "Bizonytalan";
"delegated from" = "Jogok átruházója:";
reply_info_no_attendee = "Ön választ kapott egy találkozóra, a feladó azonban nem résztvevő.";
reply_info = "Ez egy válasz az ön által kiküldött meghívásra.";
-"to" = "címzett";
+"to" = "-";
"Untitled" = "Névtelen";
"Size" = "Méret";
"Digital signature is not valid" = "Az elektronikus aláírás nem érvényes";
diff --git a/UI/MailPartViewers/UIxMailPartICalActions.m b/UI/MailPartViewers/UIxMailPartICalActions.m
index 3bd57f3db..0d804b03d 100644
--- a/UI/MailPartViewers/UIxMailPartICalActions.m
+++ b/UI/MailPartViewers/UIxMailPartICalActions.m
@@ -240,21 +240,21 @@
- (WOResponse *) _changePartStatusAction: (NSString *) newStatus
withDelegate: (iCalPerson *) delegate
{
- WOResponse *response;
SOGoAppointmentObject *eventObject;
iCalEvent *chosenEvent;
- //NSException *ex;
+ WOResponse *response;
+ iCalAlarm *alarm;
chosenEvent = [self _setupChosenEventAndEventObject: &eventObject];
if (chosenEvent)
{
+ // For invitations, we take the organizers's alarm to start with
+ alarm = [[chosenEvent alarms] lastObject];
response = (WOResponse*)[eventObject changeParticipationStatus: newStatus
withDelegate: delegate
- alarm: nil
+ alarm: alarm
forRecurrenceId: [chosenEvent recurrenceId]];
-// if (ex)
-// response = ex; //[self responseWithStatus: 500];
-// else
+
if (!response)
response = [self responseWith204];
}
diff --git a/UI/MailPartViewers/UIxMailPartSignedViewer.m b/UI/MailPartViewers/UIxMailPartSignedViewer.m
index 16692657a..a8f149a9d 100644
--- a/UI/MailPartViewers/UIxMailPartSignedViewer.m
+++ b/UI/MailPartViewers/UIxMailPartSignedViewer.m
@@ -21,8 +21,7 @@
* Boston, MA 02111-1307, USA.
*/
-#include
-#ifdef HAVE_OPENSSL
+#if defined(HAVE_OPENSSL) || defined(HAVE_GNUTLS)
#include
#include
#include
@@ -37,7 +36,8 @@
@implementation UIxMailPartSignedViewer : UIxMailPartMixedViewer
-#ifdef HAVE_OPENSSL
+
+#if defined(HAVE_OPENSSL) || defined(HAVE_GNUTLS)
- (BOOL) supportsSMIME
{
return YES;
diff --git a/UI/MailPartViewers/Welsh.lproj/Localizable.strings b/UI/MailPartViewers/Welsh.lproj/Localizable.strings
index a4fd41a4d..babf82af3 100644
--- a/UI/MailPartViewers/Welsh.lproj/Localizable.strings
+++ b/UI/MailPartViewers/Welsh.lproj/Localizable.strings
@@ -1,41 +1,50 @@
-ACCEPTED = "Derbynwyd";
-COMPLETED = "Cwblhawyd";
+ACCEPTED = "derbyniwyd";
+COMPLETED = "cwblhawyd";
DECLINED = "gwrthodwyd";
DELEGATED = "dirprwyedig";
-"IN-PROCESS" = "mewn proses";
+"IN-PROCESS" = "ar waith";
"NEEDS-ACTION" = "angen gweithred";
-TENTATIVE = "petrus";
+TENTATIVE = "ansicr";
organized_by_you = "trefnwyd gennych chi";
-you_are_an_attendee = "yr ydych yn mynychu";
-add_info_text = "iMIP 'ADD' requests are not yet supported by SOGo.";
-publish_info_text = "Mae'r anfonwr yn eich hysbysu o'r digwyddiad atodol.";
-cancel_info_text = "Cafodd eich gwahoddiad i'r holl ddigwyddiad ei ganslo.";
-request_info_no_attendee = "yn cynnig cyfarfod i'r holl rhai sy'n mynychu. Rydych yn derbyn yr ebost yma fel hysbysiad, nid ydych wedi cael eich rhestri fel cyfrannogwr.";
+you_are_an_attendee = "rydych yn mynychu";
+add_info_text = "Nid oes cefnogaeth i geisiadau 'Ychwanegu' iMIP ar SOGo hyd yma.";
+publish_info_text = "Mae'r anfonwr yn eich hysbysu o'r digwyddiad atodedig.";
+cancel_info_text = "Cafodd eich gwahoddiad i'r digwyddiad cyfan ei ganslo.";
+request_info_no_attendee = "yn cynnig cyfarfod i'r rhai sy'n mynychu. Rydych yn cael yr e-bost yma fel hysbysiad, nid ydych wedi cael eich rhestru fel cyfranogwr.";
Appointment = "Apwyntiad";
+"Status Update" = "Diweddariad Statws";
+was = "oedd";
-Organizer = "Trefnwr";
+Organizer = "Trefnydd";
Time = "Amser";
Attendees = "Mynychwyr";
request_info = "yn eich gwahodd i gyfarfod.";
-"Add to calendar" = "Ychwanegu i'r calendr";
+"Add to calendar" = "Ychwanegu at y calendr";
"Delete from calendar" = "Dileu o'r calendr";
"Update status" = "Diweddaru statws";
Accept = "Derbyn";
Decline = "Gwrthod";
-Tentative = "Petrus";
-"Delegate ..." = "Delegate ...";
-"Delegated to" = "Delegated to";
+Tentative = "Ansicr";
+"Delegate ..." = "Dirprwyo ...";
+"Delegated to" = "Dirprwywyd i";
"Update status in calendar" = "Diweddaru statws yn y calendr";
-"delegated from" = "delegated from";
-reply_info_no_attendee = "Rydych wedi derbyn ymateb i digwyddiad ond nid yw'r anfonwr yn cyfranogwr.";
-reply_info = "Dyma ymateb i wahoddiad i digwyddiad a wnaed gennych chi.";
+"delegated from" = "dirprwywyd gan";
+reply_info_no_attendee = "Rydych wedi cael ymateb i ddigwyddiad ond nid yw'r anfonwr yn gyfranogwr.";
+reply_info = "Dyma ymateb i wahoddiad i ddigwyddiad a wnaed gennych chi.";
"to" = "at";
-"Untitled" = "heb deitl";
-"Size" = "maint";
-"Digital signature is not valid" = "Digital signature is not valid";
-"Message is signed" = "Message is signed";
-"Subject" = "Subject";
-"From" = "From";
-"Date" = "Date";
-"To" = "To";
-"Issuer" = "Issuer";
+"Untitled" = "Di-deitl";
+"Size" = "Maint";
+"Digital signature is not valid" = "Dydy'r llofnod digidol ddim yn ddilys";
+"Message is signed" = "Llofnodwyd y neges";
+"Subject" = "Pwnc";
+"From" = "Oddi wrth";
+"Date" = "Dyddiad";
+"To" = "At";
+"Issuer" = "Trosglwyddydd";
+/* Tooltips */
+"View Attachment" = "Gweld Atodiad";
+"Save Attachment" = "Cadw Atodiad";
+"CC" = "CC";
+"Cancel" = "Canslo";
+"OK" = "Iawn";
+"Comment" = "Sylw";
diff --git a/UI/MailerUI/German.lproj/Localizable.strings b/UI/MailerUI/German.lproj/Localizable.strings
index 41e0eddaa..ae61d972b 100644
--- a/UI/MailerUI/German.lproj/Localizable.strings
+++ b/UI/MailerUI/German.lproj/Localizable.strings
@@ -70,6 +70,8 @@
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
"No mailbox selected" = "Keine Mailbox ausgewählt";
+"An error occured while communicating with the mail server" = "Bei der Kommunikation mit dem E-Mail-Server ist ein Fehler aufgetreten";
+
/* Mailbox actions */
/* Compact Folder success message */
"Folder compacted" = "Ordner komprimiert";
diff --git a/UI/MailerUI/Hebrew.lproj/Localizable.strings b/UI/MailerUI/Hebrew.lproj/Localizable.strings
index 404ac9016..836320f13 100644
--- a/UI/MailerUI/Hebrew.lproj/Localizable.strings
+++ b/UI/MailerUI/Hebrew.lproj/Localizable.strings
@@ -70,6 +70,8 @@
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
"No mailbox selected" = "לא נבחר תא דואר";
+"An error occured while communicating with the mail server" = "התקבלה שגיאה בהתחברות לשרת. נסו שנית מאוחר יותר.";
+
/* Mailbox actions */
/* Compact Folder success message */
"Folder compacted" = "התיקייה נדחסה";
@@ -79,7 +81,7 @@
/* acls */
"Access rights to" = "מתן גישה ל";
"For user" = "למשתמש";
-"Any Authenticated User" = "כל משתמש מאומת";
+"Any Authenticated User" = "כל משתמש מורשה";
"List and see this folder" = "פרוס וצפה בתיקייה";
"Read mails from this folder" = "קרא מיילים מתיקייה";
"Mark mails read and unread" = "סמן מיילים כנקראו ולא נקראו";
@@ -189,7 +191,7 @@
"New Folder..." = "תיקייה חדשה...";
"Compact This Folder" = "דחוס תיקייה";
"Search Messages..." = "חפש הודעות...";
-"Sharing..." = "משתף...";
+"Sharing..." = "שיתוף...";
"New Subfolder..." = "תת תיקייה חדשה...";
"Rename Folder..." = "שנה שם לתיקייה...";
"Delete Folder" = "מחק תיקייה";
@@ -351,7 +353,7 @@
"No" = "לא";
"Location" = "מיקום";
"Rename" = "שנה שם";
-"Compact" = "דחוס";
+"Compact" = "דחיסת הודעות";
"Export" = "יצוא";
"Set as Drafts" = "סמן כטיוטה";
"Set as Sent" = "סמן כנשלח";
diff --git a/UI/MailerUI/Hungarian.lproj/Localizable.strings b/UI/MailerUI/Hungarian.lproj/Localizable.strings
index 0b94c1474..14d71db3e 100644
--- a/UI/MailerUI/Hungarian.lproj/Localizable.strings
+++ b/UI/MailerUI/Hungarian.lproj/Localizable.strings
@@ -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!" = "Üdvözöljük a SOGo levelező rendszerben. A baloldali fában tallózhat a levelező fiókjai között.";
"Read messages" = "Üzenetek olvasása";
+
+/* Tooltip for fab button */
"Write a new message" = "Új üzenet írása";
+
+/* Tooltip for fab button */
+"Write a message in new window" = "Üzenet írása új ablakban";
+
"Share" = "Megosztás";
"Account" = "Fiók";
"Shared Account" = "Megosztott fiók";
@@ -64,6 +70,8 @@
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
"No mailbox selected" = "Nincs kijelölt postafiók";
+"An error occured while communicating with the mail server" = "Hiba történt a levelező kiszolgálóval történő kapcsolattartás során";
+
/* Mailbox actions */
/* Compact Folder success message */
"Folder compacted" = "Mappa tömörítve";
@@ -217,6 +225,12 @@
/* Message view "more" menu: create a task from message */
"Convert To Task" = "Feladatnak konvertál";
+/* Message view "more" menu: download all attachments as a zip archive */
+"Download all attachments" = "Összes melléklet letöltése";
+
+/* Filename prefix when downloading all attachments as a zip archive */
+"attachments" = "mellekletek";
+
"Print..." = "Nyomtatás...";
"Delete Message" = "Üzenet törlése";
"Delete Selected Messages" = "Kiválasztott üzenetek törlése";
@@ -315,6 +329,7 @@
/* Error when uploading a file attachment */
"Error while uploading the file \"%{0}\":" = "Hiba történt a \"%{0}\" állomány feltöltésekor:";
"There is an active file upload. Closing the window will interrupt it." = "Állomány feltöltés folyamatban. Az ablak bezárása megszakítja ezt a folyamatot.";
+"Message is too big" = "Az üzenet túl nagy";
/* Appears while sending the message */
"Sending" = "Küldés";
diff --git a/UI/MailerUI/Macedonian.lproj/Localizable.strings b/UI/MailerUI/Macedonian.lproj/Localizable.strings
index 242c28249..7930fb135 100644
--- a/UI/MailerUI/Macedonian.lproj/Localizable.strings
+++ b/UI/MailerUI/Macedonian.lproj/Localizable.strings
@@ -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!" = "Добредојдовте на СОГо мејлерот. Користете го дрвото со папки на левата страна за да се движите низ вашите сметки за пошта!";
"Read messages" = "Читај пораки";
+
+/* Tooltip for fab button */
"Write a new message" = "Напиши нова порака";
+
+/* Tooltip for fab button */
+"Write a message in new window" = "Напиши порака во нов прозорец";
+
"Share" = "Дели";
"Account" = "Сметка";
"Shared Account" = "Делена сметка";
@@ -64,6 +70,8 @@
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
"No mailbox selected" = "Нема одбрано сандаче";
+"An error occured while communicating with the mail server" = "Се случи грешка при комуникација со серверот за електронска пошта";
+
/* Mailbox actions */
/* Compact Folder success message */
"Folder compacted" = "Папката е компактирана";
@@ -217,6 +225,12 @@
/* Message view "more" menu: create a task from message */
"Convert To Task" = "Конвертирај во задача";
+/* Message view "more" menu: download all attachments as a zip archive */
+"Download all attachments" = "Преземи ги сите прилози";
+
+/* Filename prefix when downloading all attachments as a zip archive */
+"attachments" = "прилози";
+
"Print..." = "Отпечати...";
"Delete Message" = "Избриши порака";
"Delete Selected Messages" = "Избриши ги означените пораки";
@@ -315,6 +329,7 @@
/* Error when uploading a file attachment */
"Error while uploading the file \"%{0}\":" = "Грешка при прикажување на фајл \"%{0}\":";
"There is an active file upload. Closing the window will interrupt it." = "Во тек е активно прикачување на фајл. Затварањето на прозорецот ќе го прекине прикачувањето.";
+"Message is too big" = "Пораката е преголема";
/* Appears while sending the message */
"Sending" = "Испраќам";
diff --git a/UI/MailerUI/Russian.lproj/Localizable.strings b/UI/MailerUI/Russian.lproj/Localizable.strings
index 1858b6fb7..6e0d0c2cb 100644
--- a/UI/MailerUI/Russian.lproj/Localizable.strings
+++ b/UI/MailerUI/Russian.lproj/Localizable.strings
@@ -70,6 +70,8 @@
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
"No mailbox selected" = "Не выбрано ни одной папки";
+"An error occured while communicating with the mail server" = "Произошла ошибка при обращении к почтовому серверу.";
+
/* Mailbox actions */
/* Compact Folder success message */
"Folder compacted" = "Папка сжата";
diff --git a/UI/MailerUI/TurkishTurkey.lproj/Localizable.strings b/UI/MailerUI/TurkishTurkey.lproj/Localizable.strings
index b4cd0d805..f10746a81 100644
--- a/UI/MailerUI/TurkishTurkey.lproj/Localizable.strings
+++ b/UI/MailerUI/TurkishTurkey.lproj/Localizable.strings
@@ -3,7 +3,7 @@
/* Icon's label */
"Create" = "Oluştur";
"Empty Trash" = "Çöpü Boşalt";
-"Delete" = "Sil";
+"Delete" = "SİL";
"Expunge" = "Silip At";
"Forward" = "İlet";
"Get Mail" = "İletileri Al";
@@ -65,7 +65,7 @@
"Shared Account" = "Paylaşılan Hesap";
/* A mailbox is selected, but no message (only shown on large screens) */
-"No message selected" = "Seçili ileti yok";
+"No message selected" = "İleti seçilmemiş";
/* No mailbox is selected (usually resulting from an IMAP connection problem) */
"No mailbox selected" = "Seçili e-posta klasörü yok";
diff --git a/UI/MailerUI/UIxMailEditor.m b/UI/MailerUI/UIxMailEditor.m
index ff09ab9c1..80cd297de 100644
--- a/UI/MailerUI/UIxMailEditor.m
+++ b/UI/MailerUI/UIxMailEditor.m
@@ -753,7 +753,7 @@ static NSArray *infoKeys = nil;
NSDictionary *messageSubmissions;
SOGoSystemDefaults *dd;
- int messages_count, recipients_count;
+ NSUInteger messages_count, recipients_count;
messageSubmissions = [[SOGoCache sharedCache] messageSubmissionsCountForLogin: [[context activeUser] login]];
dd = [SOGoSystemDefaults sharedSystemDefaults];
diff --git a/UI/MailerUI/Welsh.lproj/Localizable.strings b/UI/MailerUI/Welsh.lproj/Localizable.strings
index 189b2fb23..984673df9 100644
--- a/UI/MailerUI/Welsh.lproj/Localizable.strings
+++ b/UI/MailerUI/Welsh.lproj/Localizable.strings
@@ -5,226 +5,405 @@
"Empty Trash" = "Gwagio Sbwriel";
"Delete" = "Dileu";
"Expunge" = "Dileu";
-"Forward" = "Blaenyrru";
-"Get Mail" = "Cael ebost";
-"Junk" = "Jync";
+"Forward" = "Anfon ymlaen";
+"Get Mail" = "Cael e-bost";
+"Junk" = "Sothach";
+"Not junk" = "Nid sothach";
"Reply" = "Ateb";
"Reply All" = "Ateb Pawb";
"Print" = "Argraffu";
"Stop" = "Stop";
"Write" = "Ysgrifennu";
+"Search" = "Chwilio";
"Send" = "Anfon";
"Contacts" = "Cysylltiadau";
"Attach" = "Atodi";
"Save" = "Cadw";
-"Options" = "Options";
-"Size" = "Size";
+"Options" = "Dewisiadau";
+"Close" = "Cau";
+"Size" = "Maint";
+
/* Tooltips */
"Send this message now" = "Anfon y neges yn syth";
-"Select a recipient from an Address Book" = "Dewis derbynnydd o lyfr cyfeiriadau";
+"Select a recipient from an Address Book" = "Dewis derbynnydd o Lyfr Cyfeiriadau";
"Include an attachment" = "Cynnwys atodiad";
"Save this message" = "Cadw'r neges";
-"Get new messages" = "Cael negeseuon newydd";
+"Get new messages" = "Nôl negeseuon newydd";
"Create a new message" = "Creu neges newydd";
-"Go to address book" = "Mynd at llyfr cyfeiriadau";
+"Go to address book" = "Mynd i lyfr cyfeiriadau";
"Reply to the message" = "Ymateb i'r neges";
-"Reply to sender and all recipients" = "Ymateb i'r anfonwr a'r holl derbynwyr";
-"Forward selected message" = "Blaenyrru'r neges dewisol";
-"Delete selected message or folder" = "Dileu y neges dewisol neu ffolder";
-"Mark the selected messages as junk" = "Marciwch y negeseuon dewisol fel jync";
+"Reply to sender and all recipients" = "Ymateb i'r anfonwr a'r holl dderbynwyr";
+"Forward selected message" = "Anfon y neges a ddewiswyd ymlaen";
+"Delete selected message or folder" = "Dileu'r neges neu'r ffolder a ddewiswyd";
"Print this message" = "Argraffu'r neges";
"Stop the current transfer" = "Stopio'r trosglwyddiad presennol";
"Attachment" = "Atodiad";
-"Unread" = "Heb ddarllen";
-"Flagged" = "Wedi fflagio";
+"Unread" = "Heb ei ddarllen";
+"Flagged" = "Wedi'i fflagio";
+"Search multiple mailboxes" = "Chwilio sawl blwch derbyn";
+
/* Main Frame */
"Home" = "Hafan";
"Calendar" = "Calendr";
-"Addressbook" = "Llyfr Cyfeiradau";
-"Mail" = "Ebost";
-"Right Administration" = "Hawl Gweinyddwr";
-"Help" = "Help";
+"Addressbook" = "Llyfr Cyfeiriadau";
+"Mail" = "E-bost";
+"Right Administration" = "Gweinyddu Hawl";
+"Help" = "Cymorth";
+
/* Mail account main windows */
-"Welcome to the SOGo Mailer. Use the folder tree on the left to browse your mail accounts!" = "Croeso i ebost SOGo. Defnyddiwch y coeden ffolderi ar y chwith i pori eich cyfrifon ebost!";
+"Welcome to the SOGo Mailer. Use the folder tree on the left to browse your mail accounts!" = "Croeso i e-bost SOGo. Defnyddiwch y goeden ffolderi ar y chwith i bori eich cyfrifon e-bost!";
"Read messages" = "Darllen negeseuon";
+
+/* Tooltip for fab button */
"Write a new message" = "Ysgrifennu neges newydd";
+
+/* Tooltip for fab button */
+"Write a message in new window" = "Ysgrifennu neges mewn ffenestr newydd";
+
"Share" = "Rhannu";
"Account" = "Cyfrif";
-"Shared Account" = "Cyfrif ranedig";
+"Shared Account" = "Cyfrif a rennir";
+
+/* A mailbox is selected, but no message (only shown on large screens) */
+"No message selected" = "Dim neges wedi'i dewis";
+
+/* No mailbox is selected (usually resulting from an IMAP connection problem) */
+"No mailbox selected" = "Dim blwch derbyn wedi'i ddewis";
+
+"An error occured while communicating with the mail server" = "Digwyddodd gwall wrth gyfathrebu â'r gweinydd post";
+
+/* Mailbox actions */
+/* Compact Folder success message */
+"Folder compacted" = "Ffolder wedi'i chywasgu";
+/* Empty Trash success message */
+"Trash emptied" = "Sbwriel wedi'i wagio";
+
/* acls */
-"Default Roles" = "Rolau Gwreiddiol";
-"User rights for" = "hawliau defnyddiwr i";
-"List and see this folder" = "Rhestri a gweld y ffolder hwn";
-"Read mails from this folder" = "Darllen negeseuon o'r ffolder hwn";
-"Mark mails read and unread" = "Marcio ebost wedi darllen a heb ddarllen";
-"Modify the flags of the mails in this folder" = "Newid y fflags ar yr ebost yn y ffolder hwn";
-"Insert, copy and move mails into this folder" = "Mewnosod, copio a symud ebost i'r ffolder hwn";
-"Post mails" = "Anfon ebost";
-"Add subfolders to this folder" = "Ychwanegu is-ffolderi i'r ffolder hwn";
-"Remove this folder" = "Dileu'r ffolder hwn";
-"Erase mails from this folder" = "Dileu ebost o'r ffolder hwn";
-"Expunge this folder" = "Dileu'r ffolder hwn";
-"Modify the acl of this folder" = "Newid acl y ffolder";
-"Saved Messages.zip" = "Saved Messages.zip";
+"Access rights to" = "Hawliau mynediad i";
+"For user" = "Ar gyfer defnyddiwr";
+"Any Authenticated User" = "Unrhyw Ddefnyddiwr a Ddilyswyd";
+"List and see this folder" = "Rhestru a gweld y ffolder hon";
+"Read mails from this folder" = "Darllen pob neges o'r ffolder hon";
+"Mark mails read and unread" = "Marcio bod e-bost wedi'i ddarllen a heb ei ddarllen";
+"Modify the flags of the mails in this folder" = "Newid y fflagiau ar yr e-bost yn y ffolder hon";
+"Insert, copy and move mails into this folder" = "Mewnosod, copïo a symud e-bost i'r ffolder hon";
+"Post mails" = "Anfon e-bost";
+"Add subfolders to this folder" = "Ychwanegu is-ffolderi i'r ffolder hon";
+"Remove this folder" = "Dileu'r ffolder hon";
+"Erase mails from this folder" = "Dileu e-bost o'r ffolder hon";
+"Expunge this folder" = "Dileu'r ffolder hon";
+"Export This Folder" = "Allgludo'r Ffolder Hon";
+"Modify the acl of this folder" = "Newid rhestr rheoli mynediad y ffolder";
+"Saved Messages.zip" = "Negeseuon wedi'u cadw.zip";
"Update" = "Diweddaru";
"Cancel" = "Canslo";
+
/* Mail edition */
"From" = "Oddi wrth";
"Subject" = "Testun";
"To" = "At";
"Cc" = "Cc";
"Bcc" = "Bcc";
-"Reply-To" = "Ymateb i";
+"Reply-To" = "Ymateb i";
"Add address" = "Ychwanegu cyfeiriad";
-"Attachments" = "Atodiadau";
-"Open" = "Open";
-"Select All" = "Select All";
-"Attach Web Page..." = "Attach Web Page...";
-"Attach File(s)..." = "Attach File(s)...";
+"Body" = "Corff";
+"Open" = "Agor";
+"Select All" = "Dewis Popeth";
+"Select Message" = "Dewis Neges";
+"Attach Web Page..." = "Atodi Tudalen We...";
+"file" = "ffeil";
+"files" = "ffeiliau";
+"Save all" = "Cadw popeth";
"to" = "At";
"cc" = "Cc";
"bcc" = "Bcc";
-"Addressbook" = "Llyfr Cyfeiradau";
+"Add a recipient" = "Ychwanegu derbynnydd";
"Edit Draft..." = "Golygu Drafft...";
"Load Images" = "Llwytho Delweddau";
-"Return Receipt" = "Return Receipt";
-"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?";
-"Return Receipt (displayed) - %@"= "Return Receipt (displayed) - %@";
-"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." = "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.";
+"Return Receipt" = "Derbynneb Derbyn";
+"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "Mae anfonwr y neges hon wedi gofyn am gael gwybod pan fyddwch chi'n darllen y neges. Hoffech chi roi gwybod i'r anfonwr?";
+"Return Receipt (displayed) - %@"= "Derbynneb Derbyn (dangoswyd) - %@";
+"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." = "Dyma Dderbynneb Derbyn ar gyfer yr e-bost anfonoch chi at %@.\n\nNoder: Dim ond cydnabod bod y neges wedi cael ei dangos ar gyfrifiadur y derbynnydd mae'r Dderbynneb Derbyn. Does dim sicrwydd bod y derbynnydd wedi darllen nac wedi deall cynnwys y neges.";
"Priority" = "Blaenoriaeth";
"highest" = "Uchaf";
"high" = "Uchel";
"normal" = "Normal";
"low" = "Isel";
-"lowest" = "Lleiaf";
-"This mail is being sent from an unsecure network!" = "Mae'r neges yma yn cael ei anfon o rwydwaith anniogel!";
+"lowest" = "Isaf";
+"This mail is being sent from an unsecure network!" = "Mae'r neges yma yn cael ei hanfon o rwydwaith anniogel!";
+"Address Book" = "Llyfr Cyfeiriadau";
+"Search For" = "Chwilio Am";
+
/* Popup "show" */
-"all" = "Oll";
+"all" = "popeth";
"read" = "darllenwyd";
-"unread" = "heb ddarllen";
-"deleted" = "dilewyd";
+"unread" = "heb ei ddarllen";
+"deleted" = "dilëwyd";
"flagged" = "fflagiwyd";
+
/* MailListView */
"Sender" = "Anfonwr";
"Subject or Sender" = "Testun neu Anfonwr";
"To or Cc" = "At neu Cc";
-"Entire Message" = "Neges Llawn";
+"Entire Message" = "Neges Gyfan";
"Date" = "Dyddiad";
"View" = "Gweld";
-"All" = "Oll";
-"Unread" = "Heb ddarllen";
-"No message" = "No message";
+"All" = "Popeth";
+"No message" = "Dim negeseuon";
"messages" = "negeseuon";
+"Yesterday" = "Ddoe";
"first" = "Cyntaf";
"previous" = "Cynt";
"next" = "Nesaf";
"last" = "Olaf";
"msgnumber_to" = "at";
"msgnumber_of" = "o";
-"Mark Unread" = "Marcio heb ddarllen";
-"Mark Read" = "Marcio Darllenwyd";
+"Mark Unread" = "Marcio'i fod heb ei ddarllen";
+"Mark Read" = "Marcio'i fod wedi'i ddarllen";
"Untitled" = "Heb deitl";
+
/* Tree */
"SentFolderName" = "Anfonwyd";
"TrashFolderName" = "Sbwriel";
-"InboxFolderName" = "Newydd";
-"DraftsFolderName" = "Draffts";
-"SieveFolderName" = "Ffilteri";
+"InboxFolderName" = "Blwch derbyn";
+"DraftsFolderName" = "Drafftiau";
+"JunkFolderName" = "Sothach";
+"SieveFolderName" = "Hidlau";
"Folders" = "Ffolderi"; /* title line */
+
/* MailMoveToPopUp */
-"MoveTo" = "Move …";
+"MoveTo" = "Symud …";
+
/* Address Popup menu */
-"Add to Address Book..." = "Ychwanegu i Llyfr Cyfeiriadau...";
+"Add to Address Book..." = "Ychwanegu at Lyfr Cyfeiriadau...";
"Compose Mail To" = "Cyfansoddi neges at";
-"Create Filter From Message..." = "Creu Ffilter o'r neges...";
+"Create Filter From Message..." = "Creu Hidl o'r neges...";
+
/* Image Popup menu */
"Save Image" = "Cadw Delwedd";
-"Save Attachment" = "Save Attachment";
+"Save Attachment" = "Cadw Atodiad";
+
/* Mailbox popup menus */
"Open in New Mail Window" = "Agor mewn ffenestr Neges Newydd";
-"Copy Folder Location" = "Copio Lleoliad Ffolder";
+"Copy Folder Location" = "Copïo Lleoliad Ffolder";
"Subscribe..." = "Tanysgrifio...";
-"Mark Folder Read" = "Marcio Ffolder Darllenwyd...";
+"Mark Folder Read" = "Marcio bod y Ffolder Wedi'i Darllen...";
"New Folder..." = "Ffolder Newydd...";
-"Compact This Folder" = "Cywasgu'r ffolder hwn";
+"Compact This Folder" = "Cywasgu'r ffolder hon";
"Search Messages..." = "Chwilio negeseuon...";
"Sharing..." = "Rhannu...";
"New Subfolder..." = "Is-ffolder newydd...";
"Rename Folder..." = "Ail-enwi ffolder...";
"Delete Folder" = "Dileu Ffolder";
-"Use This Folder For" = "Defyddio'r Ffolder yma am";
+"Use This Folder For" = "Defyddio'r Ffolder yma ar gyfer";
"Get Messages for Account" = "Cael negeseuon ar gyfer Cyfrif";
-"Properties..." = "Properties...";
-"Delegation..." = "Delegation...";
+"Properties..." = "Priodweddau...";
+"Delegation..." = "Dirprwyo...";
+
/* Use This Folder menu */
-"Sent Messages" = "Negeseuon anfonwyd";
-"Drafts" = "Draffts";
-"Deleted Messages" = "Negeseuon Dileuwyd";
+"Sent Messages" = "Negeseuon a anfonwyd";
+"Drafts" = "Drafftiau";
+"Deleted Messages" = "Negeseuon a Ddilëwyd";
+"Junk Messages" = "Negeseuon Sothach";
+
/* Message list popup menu */
"Open Message In New Window" = "Agor Neges mewn ffenestr newydd";
-"Reply to Sender Only" = "Ymateb i Anfonwr yn unig";
-"Reply to All" = "Ymateb i Pawb";
-"Forward" = "Blaenyrru";
+"Reply to Sender Only" = "Ymateb i'r Anfonwr yn unig";
+"Reply to All" = "Ymateb i Bawb";
"Edit As New..." = "Golygu fel Newydd...";
"Move To" = "Symud i";
-"Copy To" = "Copio i";
+"Copy To" = "Copïo i";
"Label" = "Label";
-"Mark" = "Marc";
+"Mark" = "Marcio";
"Save As..." = "Cadw Fel...";
"Print Preview" = "Rhagolwg Argraffu";
"View Message Source" = "Gweld Tarddiad Neges";
+
+/* Message view "more" menu: create an event from message */
+"Convert To Event" = "Trosi yn Ddigwyddiad";
+
+/* Message view "more" menu: create a task from message */
+"Convert To Task" = "Trosi yn Dasg";
+
+/* Message view "more" menu: download all attachments as a zip archive */
+"Download all attachments" = "Llwytho'r holl atodiadau i lawr";
+
+/* Filename prefix when downloading all attachments as a zip archive */
+"attachments" = "o atodiadau";
+
"Print..." = "Argraffu...";
"Delete Message" = "Dileu Neges";
-"Delete Selected Messages" = "Dileu Negeseuon Dewisol";
-"This Folder" = "Y ffolder hwn";
+"Delete Selected Messages" = "Dileu Negeseuon a Ddewiswyd";
+"Mark the selected messages as junk" = "Marcio'r negeseuon a ddewiswyd fel sothach";
+"Mark the selected messages as not junk" = "Marcio nad yw'r negeseuon a ddewiswyd yn sothach";
+
+/* Text appended to the recipients list when there are too many recipients */
+"and %{0} more..." = "a %{0} yn rhagor...";
+
+/* Button label to hide extended list of recipients */
+"Hide" = "Cuddio";
+
+/* Number of selected messages in list */
+"selected" = "dewiswyd";
+
+"This Folder" = "Y ffolder hon";
+
/* Label popup menu */
"None" = "Dim";
+
/* Mark popup menu */
-"As Read" = "Darllenwyd";
-"Thread As Read" = "Thread Darllenwyd";
-"As Read By Date..." = "Darllenwyd wrth dyddiad...";
-"All Read" = "Oll Darllenwyd";
+"As Read" = "Wedi'i Ddarllen";
+"Thread As Read" = "Edefyn wedi'i ddarllen";
+"As Read By Date..." = "Wedi'i ddarllen yn ôl dyddiad...";
+"All Read" = "Popeth Wedi'i Ddarllen";
"Flag" = "Fflag";
-"As Junk" = "Fel Jync";
-"As Not Junk" = "Fel nid Jync";
-"Run Junk Mail Controls" = "Rhedeg rheolaethau ebost Jync";
+"As Junk" = "Yn Sothach";
+"As Not Junk" = "Nad Yw'n Sothach";
+"Run Junk Mail Controls" = "Rhedeg rheolaethau e-bost sothach";
+"Search messages in" = "Chwilio negeseuon yn";
+"Search" = "Chwilio";
+"Search subfolders" = "Chwilio isffolderi";
+"Match any of the following" = "Cyfateb unrhyw rai o'r canlynol";
+"Match all of the following" = "Cyfateb pob un o'r canlynol";
+"contains" = "yn cynnwys";
+"does not contain" = "ddim yn cynnwys";
+"No matches found" = "Heb ganfod cyfatebion";
+"results found" = "o ganlyniadau wedi'u canfod";
+"result found" = "canlyniad wedi'i ganfod";
+"Please specify at least one filter" = "Nodwch o leiaf un hidl";
+
/* Folder operations */
"Name" = "Enw";
"Enter the new name of your folder"
- = "Rhowch yr enw newydd ar eich ffolder";
+ ="Rhowch enw newydd eich ffolder";
"Do you really want to move this folder into the trash ?"
- = "A ydych yn sicr eich bod eisiau symudy ffolder yma i'r sbwriel ?";
+ = "Ydych chi'n siŵr eich bod eisiau symud y ffolder yma i'r sbwriel ?";
"Operation failed" = "Gweithrediad wedi methu";
-"Quota" = "cwota:";
-"quotasFormat" = "%{0}% used on %{1} MB";
+"Quota" = "Cwota:";
+"quotasFormat" = "Defnyddiwyd %{0}% ar %{1} MB";
+"Unable to move/delete folder." = "Methu symud/dileu ffolder.";
+
+/* Alternative operation when folder cannot be deleted */
+"The mailbox could not be moved to the trash folder. Would you like to delete it immediately?"
+= "Doedd dim modd symud y blwch derbyn i'r ffolder sbwriel. Hoffech chi ei ddileu ar unwaith?";
+
+/* Confirmation message when deleting multiple messages */
+"Are you sure you want to delete the selected messages?" = "Ydych chi'n siŵr eich bod am ddileu'r negeseuon a ddewiswyd?";
+
+/* Notification on the number of messages successfuly copied */
+"%{0} message(s) copied" = "%{0} o negeseuon wedi'u copïo";
+
+/* Notification on the number of messages successfuly movied */
+"%{0} message(s) moved" = "%{0} o negeseuon wedi'u symud";
+
"Please select a message." = "Dewiswch neges.";
-"Please select a message to print." = "Dewiswch neges i'w argraffu.";
-"Please select only one message to print." = "Dewiswch un neges yn unig i'w argraffu.";
-"The message you have selected doesn't exist anymore." = "The message you have selected doesn't exist anymore.";
+"Please select a message to print." = "Dewiswch neges i'w hargraffu.";
+"Please select only one message to print." = "Dewiswch un neges yn unig i'w hargraffu.";
+"The message you have selected doesn't exist anymore." = "Dydy'r neges a ddewiswyd gennych ddim yn bodoli bellach.";
"The folder with name \"%{0}\" could not be created."
-= "Ni chafodd y ffolder o'r' enw \"%{0}\" ei greu.";
+= "Doedd dim modd creu'r ffolder o'r enw \"%{0}\".";
"This folder could not be renamed to \"%{0}\"."
-= "Ni llwyddwyd i ail-enwi'r ffolder yma i \"%{0}\".";
+= "Doedd dim modd ail-enwi'r ffolder yma yn \"%{0}\".";
"The folder could not be deleted."
-= "Ni llwyddwyd i ddileu'r ffolder yma";
+= "Doedd dim modd dileu'r ffolder yma";
"The trash could not be emptied."
-= "Ni llwyddwyd i wagio'r sbwriel.";
+= "Doedd dim modd gwagio'r sbwriel.";
"The folder functionality could not be changed."
-= "Ni llwyddwyd i newid ffwythiant y ffolder.";
-"You need to choose a non-virtual folder!" = "Mae angen i chi dewis ffolder a di-rhithwir!";
+= "Doedd dim modd newid nodweddion y ffolder.";
+"You need to choose a non-virtual folder!" = "Rhaid i chi ddewis ffolder nad yw'n rhithiol!";
"Moving a message into its own folder is impossible!"
-= "Mae symud neges i fewn i'w ffolder ei hun yn amhosibl!";
+= "Mae symud neges i mewn i'w ffolder ei hunan yn amhosib!";
"Copying a message into its own folder is impossible!"
-= "Mae copio neges i fewn i'w ffolder ei hun yn amhosibl!";
+= "Mae copïo neges i mewn i'w ffolder ei hunan yn amhosib!";
+
/* Message operations */
"The messages could not be moved to the trash folder. Would you like to delete them immediately?"
-= "The messages could not be moved to the trash folder. Would you like to delete them immediately?";
+= "Doedd dim modd symud y negeseuon i'r ffolder sbwriel. Hoffech chi eu dileu ar unwaith?";
+
/* Message editing */
-"error_validationfailed" = "Dilysiad wedi methu";
-"error_missingsubject" = "Testun yn eisiau";
-"error_missingrecipients" = "Dim derbynnydd wedi nodi";
-/* Message sending */
-"cannot send message: (smtp) all recipients discarded" = "Cannot send message: all recipients are invalid.";
-"cannot send message (smtp) - recipients discarded" = "Cannot send message. The following addresses are invalid";
-"cannot send message: (smtp) error when connecting" = "Cannot send message: error when connecting to the SMTP server.";
-"Email" = "Ebost";
+"error_missingsubject" = "Does dim pwnc ar y neges hon. Ydych chi'n siŵr eich bod am ei hanfon?";
+"error_missingrecipients" = "Nodwch o leiaf un derbynnydd.";
+"Send Anyway" = "Anfon Beth Bynnag";
+"Error while saving the draft" = "Gwall wrth gadw'r drafft";
+
+/* Error when uploading a file attachment */
+"Error while uploading the file \"%{0}\":" = "Gwall wrth uwchlwytho'r ffeil \"%{0}\":";
+"There is an active file upload. Closing the window will interrupt it." = "Mae uwchlwythiad ffeil yn weithredol. Bydd cau'r ffenest yn torri ar ei draws.";
+"Message is too big" = "Mae'r neges yn rhy fawr";
+
+/* Appears while sending the message */
+"Sending" = "Yn anfon";
+
+/* Appears when the message is successfuly sent */
+"Sent" = "Anfonwyd";
+
+"cannot send message: (smtp) all recipients discarded" = "Methu anfon y neges: mae'r holl dderbynwyr yn annilys";
+"cannot send message (smtp) - recipients discarded" = "Methu anfon y neges. Mae'r cyfeiriadau canlynol yn annilys";
+"cannot send message: (smtp) error when connecting" = "Methu anfon y neges: gwall wrth gysylltu â'r gweinydd SMTP.";
+
+/* Contacts list in mail editor */
+"Email" = "E-bost";
+"More mail options" = "Rhagor o ddewisiadau e-bost";
+"Delegation" = "Dirprwyo";
+"Add User" = "Ychwanegu Defnyddiwr";
+"Add a tag" = "Ychwanegu tag";
+"reply" = "ateb";
+"Edit" = "Golygu";
+"Yes" = "Ie";
+"No" = "Na";
+"Location" = "Lleoliad";
+"Rename" = "Ailenwi";
+"Compact" = "Cywasgu";
+"Export" = "Allgludo";
+"Set as Drafts" = "Nodi fel Drafftiau";
+"Set as Sent" = "Nodi fel Anfonwyd";
+"Set as Trash" = "Nodi fel Sbwriel";
+
+/* Set the folder as the one holding Junk mails */
+"Set as Junk" = "Nodi fel Sothach";
+
+"Sort" = "Trefnu";
+"Order Received" = "Trefn eu Derbyn";
+"Descending Order" = "O'r Diwedd i'r Dechrau";
+"Back" = "Yn ôl";
+"Copy messages" = "Copïo negeseuon";
+"More messages options" = "Rhagor o ddewisiadau negeseuon";
+"Mark as Unread" = "Marcio ei fod heb ei ddarllen";
+"Mark as Read" = "Marcio ei fod wedi'i ddarllen";
+"Closing Window ..." = "Yn Cau'r Ffenest ...";
+"Tried to send too many mails. Please wait." = "Wedi ceisio anfon gormod o bost. Arhoswch.";
+"View Mail" = "Gweld E-bost";
+"This message contains external images." = "Mae'r neges hon yn cynnwys delweddau allanol.";
+"Expanded" = "Ehangwyd";
+"Add a Criteria" = "Ychwanegu Maen Prawf";
+"More search options" = "Rhagor o ddewisiadau chwilio";
+"Your email has been saved" = "Cafodd eich e-bost ei gadw";
+"Your email has been sent" = "Cafodd eich e-bost ei anfon";
+"Folder compacted" = "Ffolder wedi'i chywasgu";
+
+/* Aria label for scope of search on messages */
+"Search scope" = "Cwmpas chwilio";
+
+/* Subscriptions Dialog */
+"Manage Subscriptions" = "Rheoli Tanysgrifiadau";
+
+/* Label of filter input field in subscriptions dialog */
+"Filter" = "Hidl";
+
+/* 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";
\ No newline at end of file
diff --git a/UI/MainUI/Arabic.lproj/Localizable.strings b/UI/MainUI/Arabic.lproj/Localizable.strings
index a49a66eb9..1e220031f 100644
--- a/UI/MainUI/Arabic.lproj/Localizable.strings
+++ b/UI/MainUI/Arabic.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Basque.lproj/Localizable.strings b/UI/MainUI/Basque.lproj/Localizable.strings
index bae3f08ae..1899118d0 100644
--- a/UI/MainUI/Basque.lproj/Localizable.strings
+++ b/UI/MainUI/Basque.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings b/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings
index e1dfdb540..f4e163929 100644
--- a/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings
+++ b/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Catalan.lproj/Localizable.strings b/UI/MainUI/Catalan.lproj/Localizable.strings
index bcf1495e7..bc5c2205d 100644
--- a/UI/MainUI/Catalan.lproj/Localizable.strings
+++ b/UI/MainUI/Catalan.lproj/Localizable.strings
@@ -30,7 +30,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"NorwegianBokmal" = "Norsk bokmål";
"NorwegianNynorsk" = "Norsk nynorsk";
diff --git a/UI/MainUI/ChineseTaiwan.lproj/Localizable.strings b/UI/MainUI/ChineseTaiwan.lproj/Localizable.strings
index 24e50fe83..b5dd08577 100644
--- a/UI/MainUI/ChineseTaiwan.lproj/Localizable.strings
+++ b/UI/MainUI/ChineseTaiwan.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Croatian.lproj/Localizable.strings b/UI/MainUI/Croatian.lproj/Localizable.strings
index a74ad471b..5ba34fb2e 100644
--- a/UI/MainUI/Croatian.lproj/Localizable.strings
+++ b/UI/MainUI/Croatian.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"NorwegianBokmal" = "Norsk bokmål";
"NorwegianNynorsk" = "Norsk nynorsk";
diff --git a/UI/MainUI/Czech.lproj/Localizable.strings b/UI/MainUI/Czech.lproj/Localizable.strings
index 42979cfbe..a95a9a612 100644
--- a/UI/MainUI/Czech.lproj/Localizable.strings
+++ b/UI/MainUI/Czech.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Danish.lproj/Localizable.strings b/UI/MainUI/Danish.lproj/Localizable.strings
index 032a03d8d..9f2abc8d7 100644
--- a/UI/MainUI/Danish.lproj/Localizable.strings
+++ b/UI/MainUI/Danish.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Dutch.lproj/Localizable.strings b/UI/MainUI/Dutch.lproj/Localizable.strings
index 9aa2c7ea5..524782941 100644
--- a/UI/MainUI/Dutch.lproj/Localizable.strings
+++ b/UI/MainUI/Dutch.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/English.lproj/Localizable.strings b/UI/MainUI/English.lproj/Localizable.strings
index bca37929f..c09f62d3b 100644
--- a/UI/MainUI/English.lproj/Localizable.strings
+++ b/UI/MainUI/English.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Finnish.lproj/Localizable.strings b/UI/MainUI/Finnish.lproj/Localizable.strings
index 162570aaf..1f2374e14 100644
--- a/UI/MainUI/Finnish.lproj/Localizable.strings
+++ b/UI/MainUI/Finnish.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/French.lproj/Localizable.strings b/UI/MainUI/French.lproj/Localizable.strings
index 5fe7732f1..6992e2276 100644
--- a/UI/MainUI/French.lproj/Localizable.strings
+++ b/UI/MainUI/French.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/German.lproj/Localizable.strings b/UI/MainUI/German.lproj/Localizable.strings
index bb7484fb3..cdbfd33f0 100644
--- a/UI/MainUI/German.lproj/Localizable.strings
+++ b/UI/MainUI/German.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Hebrew.lproj/Localizable.strings b/UI/MainUI/Hebrew.lproj/Localizable.strings
index baf504181..b72bf5be9 100644
--- a/UI/MainUI/Hebrew.lproj/Localizable.strings
+++ b/UI/MainUI/Hebrew.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Hungarian.lproj/Localizable.strings b/UI/MainUI/Hungarian.lproj/Localizable.strings
index 56fb3ee80..fc021b748 100644
--- a/UI/MainUI/Hungarian.lproj/Localizable.strings
+++ b/UI/MainUI/Hungarian.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Icelandic.lproj/Localizable.strings b/UI/MainUI/Icelandic.lproj/Localizable.strings
index 63e9b83a6..326e94f18 100644
--- a/UI/MainUI/Icelandic.lproj/Localizable.strings
+++ b/UI/MainUI/Icelandic.lproj/Localizable.strings
@@ -30,7 +30,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Italian.lproj/Localizable.strings b/UI/MainUI/Italian.lproj/Localizable.strings
index 4d667450d..43bfc32d7 100644
--- a/UI/MainUI/Italian.lproj/Localizable.strings
+++ b/UI/MainUI/Italian.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Latvian.lproj/Localizable.strings b/UI/MainUI/Latvian.lproj/Localizable.strings
index ca2c09869..edd7a81dc 100644
--- a/UI/MainUI/Latvian.lproj/Localizable.strings
+++ b/UI/MainUI/Latvian.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Lithuanian.lproj/Localizable.strings b/UI/MainUI/Lithuanian.lproj/Localizable.strings
index ec6060b20..a2cfa65ae 100644
--- a/UI/MainUI/Lithuanian.lproj/Localizable.strings
+++ b/UI/MainUI/Lithuanian.lproj/Localizable.strings
@@ -30,7 +30,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"NorwegianBokmal" = "Norsk bokmål";
"NorwegianNynorsk" = "Norsk nynorsk";
"Polish" = "Polski";
diff --git a/UI/MainUI/Macedonian.lproj/Localizable.strings b/UI/MainUI/Macedonian.lproj/Localizable.strings
index db857d491..67c49a2d6 100644
--- a/UI/MainUI/Macedonian.lproj/Localizable.strings
+++ b/UI/MainUI/Macedonian.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings b/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings
index 7e18de5f6..1b3524fb4 100644
--- a/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings
+++ b/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings b/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings
index 8491593bd..41a064434 100644
--- a/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings
+++ b/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Polish.lproj/Localizable.strings b/UI/MainUI/Polish.lproj/Localizable.strings
index 54732fe9e..764a9a353 100644
--- a/UI/MainUI/Polish.lproj/Localizable.strings
+++ b/UI/MainUI/Polish.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Portuguese.lproj/Localizable.strings b/UI/MainUI/Portuguese.lproj/Localizable.strings
index 671d9fd4f..e624182bd 100644
--- a/UI/MainUI/Portuguese.lproj/Localizable.strings
+++ b/UI/MainUI/Portuguese.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Russian.lproj/Localizable.strings b/UI/MainUI/Russian.lproj/Localizable.strings
index 2fe118e6a..8421b158d 100644
--- a/UI/MainUI/Russian.lproj/Localizable.strings
+++ b/UI/MainUI/Russian.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Serbian.lproj/Localizable.strings b/UI/MainUI/Serbian.lproj/Localizable.strings
index 0f1f0dda7..52a3c271c 100644
--- a/UI/MainUI/Serbian.lproj/Localizable.strings
+++ b/UI/MainUI/Serbian.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Slovak.lproj/Localizable.strings b/UI/MainUI/Slovak.lproj/Localizable.strings
index bd36e9a15..25ad3c3d3 100644
--- a/UI/MainUI/Slovak.lproj/Localizable.strings
+++ b/UI/MainUI/Slovak.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Slovenian.lproj/Localizable.strings b/UI/MainUI/Slovenian.lproj/Localizable.strings
index 359aca990..a759af25d 100644
--- a/UI/MainUI/Slovenian.lproj/Localizable.strings
+++ b/UI/MainUI/Slovenian.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/SpanishArgentina.lproj/Localizable.strings b/UI/MainUI/SpanishArgentina.lproj/Localizable.strings
index ca71c560d..fedb30257 100644
--- a/UI/MainUI/SpanishArgentina.lproj/Localizable.strings
+++ b/UI/MainUI/SpanishArgentina.lproj/Localizable.strings
@@ -32,7 +32,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"NorwegianBokmal" = "Norsk bokmål";
"NorwegianNynorsk" = "Norsk nynorsk";
diff --git a/UI/MainUI/SpanishSpain.lproj/Localizable.strings b/UI/MainUI/SpanishSpain.lproj/Localizable.strings
index ec9564a13..8bbb43148 100644
--- a/UI/MainUI/SpanishSpain.lproj/Localizable.strings
+++ b/UI/MainUI/SpanishSpain.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Swedish.lproj/Localizable.strings b/UI/MainUI/Swedish.lproj/Localizable.strings
index 9b8754cc5..6ca534cb9 100644
--- a/UI/MainUI/Swedish.lproj/Localizable.strings
+++ b/UI/MainUI/Swedish.lproj/Localizable.strings
@@ -30,7 +30,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/TurkishTurkey.lproj/Localizable.strings b/UI/MainUI/TurkishTurkey.lproj/Localizable.strings
index 477ee0076..9ee3cffc0 100644
--- a/UI/MainUI/TurkishTurkey.lproj/Localizable.strings
+++ b/UI/MainUI/TurkishTurkey.lproj/Localizable.strings
@@ -39,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Ukrainian.lproj/Localizable.strings b/UI/MainUI/Ukrainian.lproj/Localizable.strings
index 248432dae..b0630863a 100644
--- a/UI/MainUI/Ukrainian.lproj/Localizable.strings
+++ b/UI/MainUI/Ukrainian.lproj/Localizable.strings
@@ -31,7 +31,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
diff --git a/UI/MainUI/Welsh.lproj/Localizable.strings b/UI/MainUI/Welsh.lproj/Localizable.strings
index 5ead0a869..aac2dffdc 100644
--- a/UI/MainUI/Welsh.lproj/Localizable.strings
+++ b/UI/MainUI/Welsh.lproj/Localizable.strings
@@ -3,21 +3,30 @@
"title" = "SOGo";
"Username" = "Enw defnyddiwr";
"Password" = "Cyfrinair";
-"Domain" = "Domain";
+"Domain" = "Parth";
+"Remember username" = "Cofio enw defnyddiwr";
"Connect" = "Cysylltu";
-"Wrong username or password." = "enw defnyddiwr neu cyfrinair anghywir.";
-"cookiesNotEnabled" = "Ni ellir logio i fewn oherwydd bod cookies eich porwr wedi eu analluogi. Galluogwch y cookies yng ngosodiadau'ch porwr a cheisiwch eto.";
-"browserNotCompatible" = "Nid yw fersiwn eich porwr yn cael ei gynnal ar hyn o bryd gan y safle hwn. Rydym yn cymeradwyo defnyddio Firefox. Cliciwch ar y linc isod i lawrlwytho y fersiwn mwyaf cyfredol o'r porwr yma.";
-"alternativeBrowsers" = "Medrwch hefyd defnyddio y porwyr gytun yma";
-"alternativeBrowserSafari" = "Medrwch hefyd defnyddio Safari.";
+
+/* Appears while authentication is in progress */
+"Authenticating" = "Wrthi'n dilysu";
+
+/* Appears when authentication succeeds */
+"Welcome" = "Croeso";
+
+"Authentication Failed" = "Dilysu wedi Methu";
+"Wrong username or password." = "Enw defnyddiwr neu gyfrinair anghywir.";
+"Retry" = "Ailgynnig";
+"cookiesNotEnabled" = "Allwch chi ddim mewngofnodi gan fod cwcis eich porwr wedi eu hanalluogi. Galluogwch y cwcis yng ngosodiadau'ch porwr a rhowch gynnig arall arni.";
+"browserNotCompatible" = "Mae'n ymddangos nad yw'r safle hwn yn cynnal fersiwn presennol eich porwr. Rydym yn argymell defnyddio Firefox. Cliciwch ar y ddolen isod i lawrlwytho'r fersiwn mwyaf diweddar o'r porwr yma.";
+"alternativeBrowsers" = "Gallwch hefyd ddefnyddio'r porwyr yma";
+"alternativeBrowserSafari" = "Gallwch hefyd ddefnyddio Safari.";
"Download" = "Lawrlwytho";
"Language" = "Iaith";
"choose" = "Dewis ...";
"Arabic" = "العربية";
"Basque" = "Euskara";
"Catalan" = "Català";
-"ChineseTaiwan" = "Chinese (Taiwan)";
-"Croatian" = "Hrvatski";
+"ChineseTaiwan" = "Tsieineeg (Taiwan)";
"Croatian" = "Hrvatski";
"Czech" = "Česky";
"Danish" = "Dansk (Danmark)";
@@ -30,7 +39,7 @@
"Hungarian" = "Magyar";
"Icelandic" = "Íslenska";
"Italian" = "Italiano";
-"Latvian" = "Latvijas";
+"Latvian" = "Latviešu";
"Lithuanian" = "Lietuvių";
"Macedonian" = "Македонски";
"NorwegianBokmal" = "Norsk bokmål";
@@ -48,38 +57,39 @@
"TurkishTurkey" = "Türkçe (Türkiye)";
"Ukrainian" = "Українська";
"Welsh" = "Cymraeg";
-"About" = "About";
-"AboutBox" = "Developed by Inverse, SOGo is a fully-featured groupware server with a focus on scalability and simplicity.
-SOGo provides a rich AJAX-based Web interface and supports multiple native clients through the use of standard protocols such as CalDAV and CardDAV.
-SOGo is distributed under the GNU GPL version 2 or later and parts are distributed under the GNU LGPL version 2. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
-See this page for various support options.";
-"Your account was locked due to too many failed attempts." = "Your account was locked due to too many failed attempts.";
-"Your account was locked due to an expired password." = "Your account was locked due to an expired password.";
-"Login failed due to unhandled error case" = "Login failed due to unhandled error case";
-"Change your Password" = "Change your Password";
-"The password was changed successfully." = "The password was changed successfully.";
-"Your password has expired, please enter a new one below" = "Your password has expired, please enter a new one below";
-"Password must not be empty." = "Password must not be empty.";
-"The passwords do not match. Please try again." = "The passwords do not match. Please try again.";
-"Password Grace Period" = "Password Grace Period";
-"You have %{0} logins remaining before your account is locked. Please change your password in the preference dialog." = "You have %{0} logins remaining before your account is locked. Please change your password in the preference dialog.";
-"Password about to expire" = "Password about to expire";
-"Your password is going to expire in %{0} %{1}." = "Your password is going to expire in %{0} %{1}.";
-"days" = "days";
-"hours" = "hours";
-"minutes" = "minutes";
-"seconds" = "seconds";
-"Password change failed" = "Password change failed";
-"Password change failed - Permission denied" = "Password change failed - Permission denied";
-"Password change failed - Insufficient password quality" = "Password change failed - Insufficient password quality";
-"Password change failed - Password is too short" = "Password change failed - Password is too short";
-"Password change failed - Password is too young" = "Password change failed - Password is too young";
-"Password change failed - Password is in history" = "Password change failed - Password is in history";
-"Unhandled policy error: %{0}" = "Unhandled policy error: %{0}";
-"Unhandled error response" = "Unhandled error response";
-"Password change is not supported." = "Password change is not supported.";
-"Unhandled HTTP error code: %{0}" = "Unhandled HTTP error code: %{0}";
-"New password" = "New password";
-"Confirmation" = "Confirmation";
-"Cancel" = "Cancel";
-"Please wait..." = "Please wait...";
+
+"About" = "Ynghylch";
+"AboutBox" = "Datblygwyd SOGo gan Inverse fel gweinydd grwpwedd llawn nodweddion sydd â phwyslais ar ei symlrwydd a'i addasrwydd i grwpiau o wahanol faint.
\nMae SOGo yn cynnig rhyngwyneb Gwe cyfoethog sy'n seiliedig ar AJAX ac sy'n cefnogi sawl cleient brodorol drwy ddefnyddio protocolau safonol fel CalDAV a CardDAV.
\nCaiff SOGo ei ddosbarthu o dan GNU GPL fersiwn 2 neu ddiweddarach ac mae rhannau'n cael eu dosbarth o dan GNU LGPL fersiwn 2. Mae hon yn feddalwedd rydd: mae gennych ryddid i'w newid a'i hailddosbarthu. Does DIM GWARANT, i'r graddau y caniateir hynny gan y gyfraith.