Merge pull request #178 from inverse-inc/v2

Merge from upstream 2.3.2
This commit is contained in:
Enrique J. Hernández committed 2015-09-30 14:26:38 +02:00
commit 5911563b0f
336 files changed
+10907 -3498

No files matched your search

@@ -11,16 +11,16 @@ vtodo_class2 = "(مهمة سرية)";
"The event \"%{Summary}\" was created" = "أُنشِئ الحدث \"%{Summary}\"";
"The event \"%{Summary}\" was deleted" = "حُذِفَ الحدث \"%{Summary}\"";
"The event \"%{Summary}\" was updated" = "حُدِّث الحدث \"%{Summary}\"";
"The following attendees(s) were notified:" = "تم ابلاغ المدعو (المدعويين) الأتي أسماءهم:";
"The following attendees(s) were added:" = "تم أضافة المدعو (المدعويين) الأتي أسماءهم:";
"The following attendees(s) were removed:" = "تم مسح المدعو (المدعويين) الأتي أسماءهم:";
"The following attendees(s) were notified" = "تم ابلاغ المدعو (المدعويين) الأتي أسماءهم";
"The following attendees(s) were added" = "تم أضافة المدعو (المدعويين) الأتي أسماءهم";
"The following attendees(s) were removed" = "تم مسح المدعو (المدعويين) الأتي أسماءهم";
/* IMIP messages */
"calendar_label" = "التقويم:";
"startDate_label" = "البداية:";
"endDate_label" = "النهاية:";
"calendar_label" = "التقويم";
"startDate_label" = "البداية";
"endDate_label" = "النهاية";
"due_label" = "تاريخ الاستحقاق:";
"location_label" = "المكان:";
"location_label" = "المكان";
"summary_label" = "الملخص:";
"comment_label" = "التعليق:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Isilpeko egitekoa)";
"The event \"%{Summary}\" was created" = "\"%{Summary}\" ekitaldia sortu da";
"The event \"%{Summary}\" was deleted" = "\"%{Summary}\" ekitaldia ezabatu da";
"The event \"%{Summary}\" was updated" = "\"%{Summary}\" ekitaldia eguneratu da";
"The following attendees(s) were notified:" = "Ondorengo partaidea(k) jakinarazi d(ir)a:";
"The following attendees(s) were added:" = "Ondorengo partaidea(k) gehitu d(ir)a:";
"The following attendees(s) were removed:" = "Ondorengo partaidea(k) ezabatu d(ir)a:";
"The following attendees(s) were notified" = "Ondorengo partaidea(k) jakinarazi d(ir)a";
"The following attendees(s) were added" = "Ondorengo partaidea(k) gehitu d(ir)a";
"The following attendees(s) were removed" = "Ondorengo partaidea(k) ezabatu d(ir)a";
/* IMIP messages */
"calendar_label" = "Egutegia";
"startDate_label" = "Hasi:";
"endDate_label" = "Amaitu:";
"startDate_label" = "Hasi";
"endDate_label" = "Amaitu";
"due_label" = "Epemuga:";
"location_label" = "Kokapena:";
"location_label" = "Kokapena";
"summary_label" = "Laburpena:";
"comment_label" = "Iruzkina:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Tarefa Confidencial)";
"The event \"%{Summary}\" was created" = "O evento \"%{Summary}\" foi criado";
"The event \"%{Summary}\" was deleted" = "O evento \"%{Summary}\" foi removido";
"The event \"%{Summary}\" was updated" = "O evento \"%{Summary}\" foi atualizado";
"The following attendees(s) were notified:" = "Estes participantes foram notificados:";
"The following attendees(s) were added:" = "Estes participantes foram adicionados:";
"The following attendees(s) were removed:" = "Estes participantes foram removidos:";
"The following attendees(s) were notified" = "Estes participantes foram notificados";
"The following attendees(s) were added" = "Estes participantes foram adicionados";
"The following attendees(s) were removed" = "Estes participantes foram removidos";
/* IMIP messages */
"calendar_label" = "Calendário:";
"startDate_label" = "Início:";
"endDate_label" = "Fim:";
"calendar_label" = "Calendário";
"startDate_label" = "Início";
"endDate_label" = "Fim";
"due_label" = "Data de Vencimento:";
"location_label" = "Local:";
"location_label" = "Local";
"summary_label" = "Resumo:";
"comment_label" = "Comentário:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Tasca confidencial)";
"The event \"%{Summary}\" was created" = "Es va crear l'esdeveniment \"%{Summary}\" ";
"The event \"%{Summary}\" was deleted" = "Es va esborrar l'esdeveniment \"%{Summary}\" ";
"The event \"%{Summary}\" was updated" = "Es va modificar l'esdeveniment \"%{Summary}\" ";
"The following attendees(s) were notified:" = "I va notificar als següents participants: ";
"The following attendees(s) were added:" = "Es van agregar els següents participants: ";
"The following attendees(s) were removed:" = "Heu suprimit els assistents següents:";
"The following attendees(s) were notified" = "I va notificar als següents participants ";
"The following attendees(s) were added" = "Es van agregar els següents participants ";
"The following attendees(s) were removed" = "Heu suprimit els assistents següents";
/* IMIP messages */
"calendar_label" = "Calendari:";
"startDate_label" = "Inici:";
"endDate_label" = "Final:";
"calendar_label" = "Calendari";
"startDate_label" = "Inici";
"endDate_label" = "Final";
"due_label" = "Data límit:";
"location_label" = "Lloc:";
"location_label" = "Lloc";
"summary_label" = "Resum:";
"comment_label" = "Comentari:";
@@ -0,0 +1,67 @@
"Inviting the following persons is prohibited:" = "禁止邀請以下人士:";
"Personal Calendar" = "個人行事曆";
vevent_class0 = "(公開事件)";
vevent_class1 = "(私人事件)";
vevent_class2 = "(機密事件)";
vtodo_class0 = "(公開任務)";
vtodo_class1 = "(私人任務)";
vtodo_class2 = "(機密任務)";
/* Receipts */
"The event \"%{Summary}\" was created" = "事件 \"%{Summary}\" 已建立";
"The event \"%{Summary}\" was deleted" = "事件\"%{Summary}\" 已刪除";
"The event \"%{Summary}\" was updated" = "事件\"%{Summary}\" 已異動";
"The following attendees(s) were notified" = "已通知下列出席者";
"The following attendees(s) were added" = "已增加下列出席者";
"The following attendees(s) were removed" = "已移除下列出席者";
/* IMIP messages */
"calendar_label" = "行事曆";
"startDate_label" = "開始";
"endDate_label" = "結束";
"due_label" = "截止日期:";
"location_label" = "地點";
"summary_label" = "事件主題:";
"comment_label" = "備註:";
/* Invitation */
"Event Invitation: \"%{Summary}\"" = "邀請事件: \"%{Summary}\"";
"(sent by %{SentBy}) " = "(來自 %{SentBy})";
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "%{Organizer} %{SentByText} 邀請您參加 %{Summary}。\n\n起始日期: %{StartDate}\n結束日期: %{EndDate}\n備註說明: %{Description}";
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText} 邀請您參加 %{Summary}。\n\n起始時間: %{StartDate} %{StartTime}\n結束時間: %{EndDate} %{EndTime}\n備註說明: %{Description}";
/* Deletion */
"Event Cancelled: \"%{Summary}\"" = "取消事件 : \"%{Summary}\"";
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}"
= "%{Organizer} %{SentByText} 己取消事件: %{Summary}。\n\n起始日期: %{StartDate}\n結束日期: %{EndDate}\n備註說明: %{Description}";
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
= "%{Organizer} %{SentByText} 己取消了事件: %{Summary}。\n\n起始時間: %{StartDate} %{StartTime}\n結束時間: %{EndDate} %{EndTime}\n備註說明: %{Description}";
/* Update */
"The appointment \"%{Summary}\" for the %{OldStartDate} has changed"
= " 安排於%{OldStartDate} 的事件 \"%{Summary}\" 已變更";
"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"
= "安排於 %{OldStartDate} %{OldStartTime} 的事件 \"%{Summary}\" 已變更";
"The following parameters have changed in the \"%{Summary}\" meeting:"
= "已變更會議 \"%{Summary}\" 下列參數:";
"Please accept or decline those changes."
= "請接受或拒絶這些變更。";
/* Reply */
"Accepted invitation: \"%{Summary}\"" = "接受邀請: \"%{Summary}\"";
"Declined invitation: \"%{Summary}\"" = "拒絶邀請: \"%{Summary}\"";
"Delegated invitation: \"%{Summary}\"" = "\"委派出席: \"%{Summary}\"";
"Not yet decided on invitation: \"%{Summary}\"" = "未處理的邀請: \"%{Summary}\"";
"%{Attendee} %{SentByText}has accepted your event invitation."
= "\"%{Attendee} %{SentByText}已接受了您的邀請。";
"%{Attendee} %{SentByText}has declined your event invitation."
= "\"%{Attendee} %{SentByText}已拒絶了您的邀請。";
"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."
= "\"%{Attendee} %{SentByText}已將您的邀請委任給%{Delegate}。";
"%{Attendee} %{SentByText}has not yet decided upon your event invitation."
= "%{Attendee} %{SentByText}還沒有決定是否接受您的邀請。";
/* Resources */
"Cannot access resource: \"%{Cn} %{SystemEmail}\"" = "無法讀取資源: \"%{Cn} %{SystemEmail}\"";
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "\"%{Cn} %{SystemEmail}\" 的衝突事件己達上限 ( %{NumberOfSimultaneousBookings} )。衝突事件 \"%{EventTitle}\" 的起始日期為 %{StartDate}。";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Skrytý úkol)";
"The event \"%{Summary}\" was created" = "Událost \"%{Summary}\" byla vytvořena";
"The event \"%{Summary}\" was deleted" = "Událost \"%{Summary}\" byla smazána";
"The event \"%{Summary}\" was updated" = "Událost \"%{Summary}\" byla upravena";
"The following attendees(s) were notified:" = "Následující účastníci byli upozorněni:";
"The following attendees(s) were added:" = "Následující účastníci byli přidáni:";
"The following attendees(s) were removed:" = "Následující účastníci byli odebráni:";
"The following attendees(s) were notified" = "Následující účastníci byli upozorněni";
"The following attendees(s) were added" = "Následující účastníci byli přidáni";
"The following attendees(s) were removed" = "Následující účastníci byli odebráni";
/* IMIP messages */
"calendar_label" = "Kalendář:";
"startDate_label" = "Začátek:";
"endDate_label" = "Konec:";
"calendar_label" = "Kalendář";
"startDate_label" = "Začátek";
"endDate_label" = "Konec";
"due_label" = "Termín:";
"location_label" = "Místo:";
"location_label" = "Místo";
"summary_label" = "Název:";
"comment_label" = "Komentář:";
@@ -11,16 +11,16 @@ vtodo_class2 = "(Hemmelig opgave)";
"The event \"%{Summary}\" was created" = "Begivenheden \"%{Summary}\" blev oprettet";
"The event \"%{Summary}\" was deleted" = "Begivenheden \"%{Summary}\" blev slettet";
"The event \"%{Summary}\" was updated" = "Begivenheden \"%{Summary}\" blev opdateret";
"The following attendees(s) were notified:" = "Følgende deltager(e) blev underrettet:";
"The following attendees(s) were added:" = "Følgende deltager(e) blev tilføjet:";
"The following attendees(s) were removed:" = "Følgende deltager(e) blev fjernet:";
"The following attendees(s) were notified" = "Følgende deltager(e) blev underrettet";
"The following attendees(s) were added" = "Følgende deltager(e) blev tilføjet";
"The following attendees(s) were removed" = "Følgende deltager(e) blev fjernet";
/* IMIP messages */
"calendar_label" = "Kalender:";
"startDate_label" = "Start:";
"endDate_label" = "Slut:";
"calendar_label" = "Kalender";
"startDate_label" = "Start";
"endDate_label" = "Slut";
"due_label" = "Forfaldsdato:";
"location_label" = "Sted:";
"location_label" = "Sted";
"summary_label" = "Resumé:";
"comment_label" = "Kommentér:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Vertrouwelijke taak)";
"The event \"%{Summary}\" was created" = "De gebeurtenis \"%{Summary}\" is aangemaakt";
"The event \"%{Summary}\" was deleted" = "De gebeurtenis \"%{Summary}\" is verwijderd";
"The event \"%{Summary}\" was updated" = "De gebeurtenis \"%{Summary}\" is gewijzigd";
"The following attendees(s) were notified:" = "De volgende deelnemers zijn in kennis gesteld:";
"The following attendees(s) were added:" = "De volgende deelnemers zijn toegevoegd:";
"The following attendees(s) were removed:" = "De volgende deelnemers zijn verwijderd:";
"The following attendees(s) were notified" = "De volgende deelnemers zijn in kennis gesteld";
"The following attendees(s) were added" = "De volgende deelnemers zijn toegevoegd";
"The following attendees(s) were removed" = "De volgende deelnemers zijn verwijderd";
/* IMIP messages */
"calendar_label" = "Agenda:";
"startDate_label" = "Start:";
"endDate_label" = "Einde:";
"calendar_label" = "Agenda";
"startDate_label" = "Start";
"endDate_label" = "Einde";
"due_label" = "Vervaldag:";
"location_label" = "Locatie:";
"location_label" = "Locatie";
"summary_label" = "Samenvatting:";
"comment_label" = "Commentaar:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Confidential task)";
"The event \"%{Summary}\" was created" = "The event \"%{Summary}\" was created";
"The event \"%{Summary}\" was deleted" = "The event \"%{Summary}\" was deleted";
"The event \"%{Summary}\" was updated" = "The event \"%{Summary}\" was updated";
"The following attendees(s) were notified:" = "The following attendee(s) were notified:";
"The following attendees(s) were added:" = "The following attendee(s) were added:";
"The following attendees(s) were removed:" = "The following attendee(s) were removed:";
"The following attendees(s) were notified" = "The following attendee(s) were notified";
"The following attendees(s) were added" = "The following attendee(s) were added";
"The following attendees(s) were removed" = "The following attendee(s) were removed";
/* IMIP messages */
"calendar_label" = "Calendar:";
"startDate_label" = "Start:";
"endDate_label" = "End:";
"calendar_label" = "Calendar";
"startDate_label" = "Start";
"endDate_label" = "End";
"due_label" = "Due Date:";
"location_label" = "Location:";
"location_label" = "Location";
"summary_label" = "Summary:";
"comment_label" = "Comment:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Luottamuksellinen tehtävä)";
"The event \"%{Summary}\" was created" = "Tapahtuma \"%{Summary}\" luotiin";
"The event \"%{Summary}\" was deleted" = "Tapahtuma \"%{Summary}\" poistettiin";
"The event \"%{Summary}\" was updated" = "Tapahtuma \"%{Summary}\" päivitettiin";
"The following attendees(s) were notified:" = "Seuraava(t) osallistuja(t) on informoitu:";
"The following attendees(s) were added:" = "Seuraava(t) osalllistuja(t) on lisätty:";
"The following attendees(s) were removed:" = "Seuraava(t) osalllistuja(t) poistettiin:";
"The following attendees(s) were notified" = "Seuraava(t) osallistuja(t) on informoitu";
"The following attendees(s) were added" = "Seuraava(t) osalllistuja(t) on lisätty";
"The following attendees(s) were removed" = "Seuraava(t) osalllistuja(t) poistettiin";
/* IMIP messages */
"calendar_label" = "Kalenteri:";
"startDate_label" = "Alkaa:";
"endDate_label" = "Päättyy:";
"calendar_label" = "Kalenteri";
"startDate_label" = "Alkaa";
"endDate_label" = "Päättyy";
"due_label" = "Määräpäivä:";
"location_label" = "Sijainti:";
"location_label" = "Sijainti";
"summary_label" = "Yhteenveto:";
"comment_label" = "Kommentti:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Tâche confidentielle)";
"The event \"%{Summary}\" was created" = "L'événement «%{Summary}» a été créé";
"The event \"%{Summary}\" was deleted" = "L'événement «%{Summary}» a été effacé";
"The event \"%{Summary}\" was updated" = "L'événement «%{Summary}» a été modifié";
"The following attendees(s) were notified:" = "Les invités suivants ont été avisés :";
"The following attendees(s) were added:" = "Les invités suivants ont été ajoutés :";
"The following attendees(s) were removed:" = "Les invités suivants ont été supprimés :";
"The following attendees(s) were notified" = "Les invités suivants ont été avisés ";
"The following attendees(s) were added" = "Les invités suivants ont été ajoutés ";
"The following attendees(s) were removed" = "Les invités suivants ont été supprimés ";
/* IMIP messages */
"calendar_label" = "Agenda :";
"startDate_label" = "Début :";
"endDate_label" = "Fin :";
"calendar_label" = "Agenda ";
"startDate_label" = "Début ";
"endDate_label" = "Fin ";
"due_label" = "Fin prévue :";
"location_label" = "Lieu :";
"location_label" = "Lieu ";
"summary_label" = "Titre :";
"comment_label" = "Description :";
+1 -1
View File
@@ -54,7 +54,7 @@ Appointments_RESOURCE_FILES += \
MSExchangeFreeBusySOAPResponseMap.plist \
MSExchangeFreeBusySOAPRequest.wo
Appointments_LANGUAGES = Arabic Basque BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
Appointments_LANGUAGES = Arabic Basque BrazilianPortuguese Catalan ChineseTaiwan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak Slovenian SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
Appointments_LOCALIZED_RESOURCE_FILES = Localizable.strings
@@ -12,16 +12,16 @@ vtodo_class2 = "(Vertrauliche Aufgabe)";
"The event \"%{Summary}\" was created" = "Der Termin \"%{Summary}\" wurde angelegt";
"The event \"%{Summary}\" was deleted" = "Der Termin \"%{Summary}\" wurde gelöscht";
"The event \"%{Summary}\" was updated" = "Der Termin \"%{Summary}\" wurde geändert";
"The following attendees(s) were notified:" = "Die folgenden Teilnehmer wurden benachrichtigt:";
"The following attendees(s) were added:" = "Die folgenden Teilnehmer wurden hinzugefügt:";
"The following attendees(s) were removed:" = "Die folgenden Teilnehmer wurden entfernt:";
"The following attendees(s) were notified" = "Die folgenden Teilnehmer wurden benachrichtigt";
"The following attendees(s) were added" = "Die folgenden Teilnehmer wurden hinzugefügt";
"The following attendees(s) were removed" = "Die folgenden Teilnehmer wurden entfernt";
/* IMIP messages */
"calendar_label" = "Kalender:";
"startDate_label" = "Beginn:";
"endDate_label" = "Ende:";
"calendar_label" = "Kalender";
"startDate_label" = "Beginn";
"endDate_label" = "Ende";
"due_label" = "Fälligkeit:";
"location_label" = "Ort:";
"location_label" = "Ort";
"summary_label" = "Zusammenfassung:";
"comment_label" = "Kommentar:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Bizalmas feladat)";
"The event \"%{Summary}\" was created" = "A \"%{Summary}\" esemény létre lett hozva";
"The event \"%{Summary}\" was deleted" = "A \"%{Summary}\" esemény törölve lett";
"The event \"%{Summary}\" was updated" = "A \"%{Summary}\" esemény módosítva lett";
"The following attendees(s) were notified:" = "Az alábbi résztvevők lettek értesítve:";
"The following attendees(s) were added:" = "Az alábbi résztvevők lettek hozzáadva:";
"The following attendees(s) were removed:" = "Az alábbi résztvevők lettek eltávolítva:";
"The following attendees(s) were notified" = "Az alábbi résztvevők lettek értesítve";
"The following attendees(s) were added" = "Az alábbi résztvevők lettek hozzáadva";
"The following attendees(s) were removed" = "Az alábbi résztvevők lettek eltávolítva";
/* IMIP messages */
"calendar_label" = "Naptár:";
"startDate_label" = "Kezdete:";
"endDate_label" = "Vége:";
"calendar_label" = "Naptár";
"startDate_label" = "Kezdete";
"endDate_label" = "Vége";
"due_label" = "Lejárat napja:";
"location_label" = "Hely:";
"location_label" = "Hely";
"summary_label" = "Összegzés:";
"comment_label" = "Megjegyzés:";
@@ -25,10 +25,10 @@ vtodo_class2 = "(Verkefni er trúnaðarmál)";
"... from the following event:" = "... af eftirfarandi viðburði:";
/* IMIP messages */
"startDate_label" = "Byrjun:";
"endDate_label" = "Endir:";
"startDate_label" = "Byrjun";
"endDate_label" = "Endir";
"due_label" = "Lokadagur:";
"location_label" = "Staðsetning:";
"location_label" = "Staðsetning";
"summary_label" = "Samantekt:";
"comment_label" = "Athugasemd:";
@@ -25,10 +25,10 @@ vtodo_class2 = "(Attività confidenziale)";
"... from the following event:" = "... dal seguente evento:";
/* IMIP messages */
"startDate_label" = "Inizio:";
"endDate_label" = "Fine:";
"startDate_label" = "Inizio";
"endDate_label" = "Fine";
"due_label" = "Scadenza:";
"location_label" = "Luogo:";
"location_label" = "Luogo";
"summary_label" = "Summario:";
"comment_label" = "Commento:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Konfidensiell oppgave)";
"The event \"%{Summary}\" was created" = "Hendelsen \"%{Summary}\" ble opprettet";
"The event \"%{Summary}\" was deleted" = "Hendelsen \"%{Summary}\" ble slettet";
"The event \"%{Summary}\" was updated" = "Hendelsen \"%{Summary}\" ble oppdatert";
"The following attendees(s) were notified:" = "Følgende deltaker(e) ble varslet:";
"The following attendees(s) were added:" = "Følgende deltaker(e) ble lagt til:";
"The following attendees(s) were removed:" = "Følgende deltaker(e) ble fjernet:";
"The following attendees(s) were notified" = "Følgende deltaker(e) ble varslet";
"The following attendees(s) were added" = "Følgende deltaker(e) ble lagt til";
"The following attendees(s) were removed" = "Følgende deltaker(e) ble fjernet";
/* IMIP messages */
"calendar_label" = "Kalender:";
"startDate_label" = "Start:";
"endDate_label" = "Slutt:";
"calendar_label" = "Kalender";
"startDate_label" = "Start";
"endDate_label" = "Slutt";
"due_label" = "Forfallsdato:";
"location_label" = "Sted:";
"location_label" = "Sted";
"summary_label" = "Sammendrag:";
"comment_label" = "Kommentar:";
@@ -25,10 +25,10 @@ vtodo_class2 = "(Konfidensiell oppgave)";
"... from the following event:" = "... fra følgende hendelse:";
/* IMIP messages */
"startDate_label" = "Start:";
"endDate_label" = "End:";
"startDate_label" = "Start";
"endDate_label" = "End";
"due_label" = "Due Date:";
"location_label" = "Location:";
"location_label" = "Location";
"summary_label" = "Summary:";
"comment_label" = "Comment:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Zadanie poufne)";
"The event \"%{Summary}\" was created" = "Utworzono wydarzenie \"%{Summary}\"";
"The event \"%{Summary}\" was deleted" = "Skasowano wydarzenie \"%{Summary}\"";
"The event \"%{Summary}\" was updated" = "Zaktualizowano wydarzenie \"%{Summary}\"";
"The following attendees(s) were notified:" = "Następujący uczestnicy zostali powiadomieni:";
"The following attendees(s) were added:" = "Następujący uczestnicy zostali dodani:";
"The following attendees(s) were removed:" = "Następujący uczestnicy zostali usunięci:";
"The following attendees(s) were notified" = "Następujący uczestnicy zostali powiadomieni";
"The following attendees(s) were added" = "Następujący uczestnicy zostali dodani";
"The following attendees(s) were removed" = "Następujący uczestnicy zostali usunięci";
/* IMIP messages */
"calendar_label" = "Kalendarz:";
"startDate_label" = "Początek:";
"endDate_label" = "Koniec:";
"calendar_label" = "Kalendarz";
"startDate_label" = "Początek";
"endDate_label" = "Koniec";
"due_label" = "Termin:";
"location_label" = "Miejsce:";
"location_label" = "Miejsce";
"summary_label" = "Podsumowanie:";
"comment_label" = "Komentarz:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Конфиденциальная задача)";
"The event \"%{Summary}\" was created" = "Было создано мероприятие \"%{Summary}\"";
"The event \"%{Summary}\" was deleted" = "Мероприятие \"%{Summary}\" было удалено";
"The event \"%{Summary}\" was updated" = "Мероприятие \"%{Summary}\" было обновлено";
"The following attendees(s) were notified:" = "Следующие приглашенные были оповещены:";
"The following attendees(s) were added:" = "Следующие люди были добавлены в список приглашенных:";
"The following attendees(s) were removed:" = "Следующие люди были исключены из списка приглашенных:";
"The following attendees(s) were notified" = "Следующие приглашенные были оповещены";
"The following attendees(s) were added" = "Следующие люди были добавлены в список приглашенных";
"The following attendees(s) were removed" = "Следующие люди были исключены из списка приглашенных";
/* IMIP messages */
"calendar_label" = "Календарь:";
"startDate_label" = "Начало:";
"endDate_label" = "Конец:";
"calendar_label" = "Календарь";
"startDate_label" = "Начало";
"endDate_label" = "Конец";
"due_label" = "Должно быть готово к:";
"location_label" = "Местонахождение:";
"location_label" = "Местонахождение";
"summary_label" = "Краткое содержание:";
"comment_label" = "Комментарий:";
@@ -160,9 +160,6 @@ typedef enum {
- (NSString *) syncTag;
- (void) setSyncTag: (NSString *) newSyncTag;
- (BOOL) synchronizeCalendar;
- (void) setSynchronizeCalendar: (BOOL) new;
- (BOOL) includeInFreeBusy;
- (void) setIncludeInFreeBusy: (BOOL) newInclude;
@@ -432,61 +432,6 @@ static Class iCalEventK = nil;
inCategory: @"FolderShowTasks"];
}
- (NSString *) syncTag
{
NSString *syncTag;
syncTag = [self folderPropertyValueInCategory: @"FolderSyncTags"];
if (!syncTag)
syncTag = @"";
return syncTag;
}
- (void) setSyncTag: (NSString *) newSyncTag
{
// Check for duplicated tags
SOGoUserSettings *settings;
NSDictionary *syncTags;
NSArray *values;
if ([newSyncTag length])
{
settings = [[context activeUser] userSettings];
syncTags = [[settings objectForKey: @"Calendar"]
objectForKey: @"FolderSyncTags"];
values = [syncTags allValues];
if (![values containsObject: newSyncTag])
[self setFolderPropertyValue: newSyncTag
inCategory: @"FolderSyncTags"];
}
else
[self setFolderPropertyValue: nil
inCategory: @"FolderSyncTags"];
}
- (BOOL) synchronizeCalendar
{
NSNumber *synchronize;
synchronize = [self folderPropertyValueInCategory: @"FolderSynchronize"];
return [synchronize boolValue];
}
- (void) setSynchronizeCalendar: (BOOL) new
{
NSNumber *synchronize;
if (new)
synchronize = [NSNumber numberWithBool: YES];
else
synchronize = nil;
[self setFolderPropertyValue: synchronize
inCategory: @"FolderSynchronize"];
}
//
// If the user is the owner of the calendar, by default we include the freebusy information.
//
+16 -16
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 2007-2014 Inverse inc.
Copyright (C) 2007-2015 Inverse inc.
Copyright (C) 2004-2005 SKYRIX Software AG
This file is part of SOGo
@@ -317,7 +317,7 @@
enumerator = [attendees objectEnumerator];
while ((currentAttendee = [enumerator nextObject]))
{
currentUID = [currentAttendee uid];
currentUID = [currentAttendee uidInContext: context];
if (currentUID)
[self _removeEventFromUID: currentUID
owner: owner
@@ -398,7 +398,7 @@
enumerator = [updateAttendees objectEnumerator];
while ((currentAttendee = [enumerator nextObject]))
{
currentUID = [currentAttendee uid];
currentUID = [currentAttendee uidInContext: context];
if (currentUID)
[self _addOrUpdateEvent: newEvent
forUID: currentUID
@@ -438,7 +438,7 @@
while ((currentAttendee = [enumerator nextObject]))
{
currentUID = [currentAttendee uid];
currentUID = [currentAttendee uidInContext: context];
if (currentUID)
{
@@ -520,7 +520,7 @@
enumerator = [theAttendees objectEnumerator];
while ((currentAttendee = [enumerator nextObject]))
{
currentUID = [currentAttendee uid];
currentUID = [currentAttendee uidInContext: context];
if (currentUID)
{
[attendees addObject: currentUID];
@@ -635,7 +635,7 @@
for (i = 0; i < [theAttendees count]; i++)
{
currentAttendee = [theAttendees objectAtIndex: i];
if ([[currentAttendee uid] isEqualToString: currentUID])
if ([[currentAttendee uidInContext: context] isEqualToString: currentUID])
break;
else
currentAttendee = nil;
@@ -713,7 +713,7 @@
enumerator = [attendees objectEnumerator];
while ((currentAttendee = [enumerator nextObject]))
{
currentUID = [currentAttendee uid];
currentUID = [currentAttendee uidInContext: context];
if (currentUID)
[self _addOrUpdateEvent: newEvent
forUID: currentUID
@@ -838,7 +838,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
enumerator = [updatedAttendees objectEnumerator];
while ((currentAttendee = [enumerator nextObject]))
{
currentUID = [currentAttendee uid];
currentUID = [currentAttendee uidInContext: context];
if (currentUID)
[self _addOrUpdateEvent: newEvent
forUID: currentUID
@@ -1215,7 +1215,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
{
[delegates addObject: otherDelegate];
delegatedUID = [otherDelegate uid];
delegatedUID = [otherDelegate uidInContext: context];
if (delegatedUID)
// Delegate attendee is a local user; remove event from their calendar
[self _removeEventFromUID: delegatedUID
@@ -1244,7 +1244,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
if (addDelegate)
{
delegatedUID = [delegate uid];
delegatedUID = [delegate uidInContext: context];
delegates = [NSArray arrayWithObject: delegate];
[event addToAttendees: delegate];
@@ -1271,11 +1271,11 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
[self sendResponseToOrganizer: event
from: ownerUser];
organizerUID = [[event organizer] uid];
organizerUID = [[event organizer] uidInContext: context];
// Event is an exception to a recurring event; retrieve organizer from master event
if (!organizerUID)
organizerUID = [[(iCalEntityObject*)[[event parent] firstChildWithTag: [self componentTag]] organizer] uid];
organizerUID = [[(iCalEntityObject*)[[event parent] firstChildWithTag: [self componentTag]] organizer] uidInContext: context];
if (organizerUID)
// Update the attendee in organizer's calendar.
@@ -1302,7 +1302,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
for (i = 0; i < [attendees count]; i++)
{
att = [attendees objectAtIndex: i];
uid = [att uid];
uid = [att uidInContext: context];
if (uid && att != attendee && ![uid isEqualToString: delegatedUID])
[self _updateAttendee: attendee
withDelegate: delegate
@@ -1461,7 +1461,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
{
if (delegate && ![[delegate email] isEqualToString: [attendee delegatedTo]])
{
delegatedUid = [delegate uid];
delegatedUid = [delegate uidInContext: context];
if (delegatedUid)
delegatedUser = [SOGoUser userWithLogin: delegatedUid];
if (delegatedUser != nil && [event userIsOrganizer: delegatedUser])
@@ -1831,7 +1831,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
// We now make sure that the organizer, if managed by SOGo, is using
// its default email when creating events and inviting attendees.
uid = [[SOGoUserManager sharedUserManager] getUIDForEmail: [[event organizer] rfc822Email]];
uid = [[event organizer] uidInContext: context];
if (uid)
{
NSDictionary *defaultIdentity;
@@ -2144,7 +2144,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
// occurence, and invite someone, the PUT will have the organizer in the
// recurrence-id and not in the master event. We must fix this, otherwise
// SOGo will break.
if (!recurrenceId && ![[[[[newEvent parent] events] objectAtIndex: 0] organizer] uid])
if (!recurrenceId && ![[[[[newEvent parent] events] objectAtIndex: 0] organizer] uidInContext: context])
[[[[newEvent parent] events] objectAtIndex: 0] setOrganizer: [newEvent organizer]];
if (userIsOrganizer)
@@ -11,16 +11,16 @@ vtodo_class2 = "(Dôverná úloha)";
"The event \"%{Summary}\" was created" = "Udalosť \"%{Summary}\" bola vytvorená";
"The event \"%{Summary}\" was deleted" = "Udalosť \"%{Summary}\" bola vymazaná";
"The event \"%{Summary}\" was updated" = "Udalosť \"%{Summary}\" bola aktualizovaná";
"The following attendees(s) were notified:" = "Nasledujúci účastník(ci) bol upozornený:";
"The following attendees(s) were added:" = "Nasledujúci účastník(ci) bol pridaný:";
"The following attendees(s) were removed:" = "Nasledujúci účastník(ci) bol odstránený:";
"The following attendees(s) were notified" = "Nasledujúci účastník(ci) bol upozornený";
"The following attendees(s) were added" = "Nasledujúci účastník(ci) bol pridaný";
"The following attendees(s) were removed" = "Nasledujúci účastník(ci) bol odstránený";
/* IMIP messages */
"calendar_label" = "Kalendár:";
"startDate_label" = "Začiatok:";
"endDate_label" = "Koniec:";
"calendar_label" = "Kalendár";
"startDate_label" = "Začiatok";
"endDate_label" = "Koniec";
"due_label" = "Platnosť:";
"location_label" = "Miesto:";
"location_label" = "Miesto";
"summary_label" = "Zhrnutie:";
"comment_label" = "Komentár:";
@@ -0,0 +1,67 @@
"Inviting the following persons is prohibited:" = "Povabilo za naslednje osebe je prepovedano:";
"Personal Calendar" = "Osebni koledar";
vevent_class0 = "(Javni dogodek)";
vevent_class1 = "(Osebni dogodek)";
vevent_class2 = "(Zaupni dogodek)";
vtodo_class0 = "(Javno opravilo)";
vtodo_class1 = "(Osebno opravilo)";
vtodo_class2 = "(Zaupno opravilo)";
/* Receipts */
"The event \"%{Summary}\" was created" = "Dogodek \"%{Summary}\" je bil ustvarjen";
"The event \"%{Summary}\" was deleted" = "Dogodek \"%{Summary}\" je bil izbrisan";
"The event \"%{Summary}\" was updated" = "Dogodek \"%{Summary}\" je bil posodobljen";
"The following attendees(s) were notified" = "Naslednji udeleženci so bili obveščeni";
"The following attendees(s) were added" = "Naslednji udeleženci so bili dodani";
"The following attendees(s) were removed" = "Naslednji udeleženci so bili odstranjeni";
/* IMIP messages */
"calendar_label" = "Koledar";
"startDate_label" = "Začetek";
"endDate_label" = "Konec";
"due_label" = "Datum zapadlosti:";
"location_label" = "Mesto";
"summary_label" = "Povzetek:";
"comment_label" = "Komentar:";
/* Invitation */
"Event Invitation: \"%{Summary}\"" = "Povabila na dogodek: \"%{Summary}\"";
"(sent by %{SentBy}) " = "(posladno od %{SentBy})";
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "%{Organizer} %{SentByText} te je povabil na %{Summary}.\n\n\nZačetek: %{StartDate}\nKonec: %{EndDate}\nOpis: %{Description}";
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText} te je povabil na %{Summary}.\n\n\nZačetek: %{StartDate} at %{StartTime}\nKonec: %{EndDate} at %{EndTime}\nOpis: %{Description}";
/* Deletion */
"Event Cancelled: \"%{Summary}\"" = "Dogodek odpovedan: \"%{Summary}\"";
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}"
= "%{Organizer} %{SentByText} je odpovedal ta dogodek: %{Summary}.\n\n\nZačetek: %{StartDate}\nKonec: %{EndDate}\nOpis: %{Description}";
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
= "%{Organizer} %{SentByText} je odpovedal ta dogodek: %{Summary}.\n\n\nZačetek: %{StartDate} at %{StartTime}\nKonec: %{EndDate} at %{EndTime}\nOpis: %{Description}";
/* Update */
"The appointment \"%{Summary}\" for the %{OldStartDate} has changed"
= "Sestanek \"%{Summary}\" za %{OldStartDate} se je spremenil";
"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"
= "Sestanek \"%{Summary}\" za %{OldStartDate} at %{OldStartTime} se je spremenil";
"The following parameters have changed in the \"%{Summary}\" meeting:"
= "Naslednji parametri so se spremenil v \"%{Summary}\" srečanju:";
"Please accept or decline those changes."
= "Prosim sprejmi ali zavrni te spremembe.";
/* Reply */
"Accepted invitation: \"%{Summary}\"" = "Sprejeto povabilo: \"%{Summary}\"";
"Declined invitation: \"%{Summary}\"" = "Zavrnjeno povabilo: \"%{Summary}\"";
"Delegated invitation: \"%{Summary}\"" = "Dodeljeno povabilo: \"%{Summary}\"";
"Not yet decided on invitation: \"%{Summary}\"" = "Še neodločeno glede povabila: \"%{Summary}\"";
"%{Attendee} %{SentByText}has accepted your event invitation."
= "%{Attendee} %{SentByText} je sprejel tvoje povabilo.";
"%{Attendee} %{SentByText}has declined your event invitation."
= "%{Attendee} %{SentByText} je zavrnil tvoje povabilo.";
"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."
= "%{Attendee} %{SentByText} je posredoval povabilo k %{Delegate}.";
"%{Attendee} %{SentByText}has not yet decided upon your event invitation."
= "%{Attendee} %{SentByText} se še ni odločil glede tvojega povabila.";
/* Resources */
"Cannot access resource: \"%{Cn} %{SystemEmail}\"" = "Ne morem dostopati do vira: \"%{Cn} %{SystemEmail}\"";
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "Doseženo je največje število sočasnih rezervacij (%{NumberOfSimultaneousBookings}) za vir \"%{Cn} %{SystemEmail}\". Konfliktni dogodek je \"%{EventTitle}\", začel se je %{StartDate}.";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Tarea confidencial)";
"The event \"%{Summary}\" was created" = "Se creó el evento \"%{Summary}\"";
"The event \"%{Summary}\" was deleted" = "Se borró el evento \"%{Summary}\"";
"The event \"%{Summary}\" was updated" = "Se actualizó la información del evento \"%{Summary}\"";
"The following attendees(s) were notified:" = "Se notificó a los siguientes participantes:";
"The following attendees(s) were added:" = "Se agregaron los siguientes participantes:";
"The following attendees(s) were removed:" = "Se removieron los siguientes participantes:";
"The following attendees(s) were notified" = "Se notificó a los siguientes participantes";
"The following attendees(s) were added" = "Se agregaron los siguientes participantes";
"The following attendees(s) were removed" = "Se removieron los siguientes participantes";
/* IMIP messages */
"calendar_label" = "Calendario:";
"startDate_label" = "Inicio:";
"endDate_label" = "Fin:";
"calendar_label" = "Calendario";
"startDate_label" = "Inicio";
"endDate_label" = "Fin";
"due_label" = "Fecha de finalización:";
"location_label" = "Lugar:";
"location_label" = "Lugar";
"summary_label" = "Resumen:";
"comment_label" = "Comentario:";
@@ -12,16 +12,16 @@ vtodo_class2 = "(Tarea confidencial)";
"The event \"%{Summary}\" was created" = "El evento \"%{Summary}\" ha sido creado";
"The event \"%{Summary}\" was deleted" = "El evento \"%{Summary}\" ha sido borrado";
"The event \"%{Summary}\" was updated" = "El evento \"%{Summary}\" ha sido actualizado";
"The following attendees(s) were notified:" = "Los invitados siguientes han sido notificado:";
"The following attendees(s) were added:" = "Los invitados siguientes han sido añadido:";
"The following attendees(s) were removed:" = "Los invitados siguientes han sido quitado:";
"The following attendees(s) were notified" = "Los invitados siguientes han sido notificado";
"The following attendees(s) were added" = "Los invitados siguientes han sido añadido";
"The following attendees(s) were removed" = "Los invitados siguientes han sido quitado";
/* IMIP messages */
"calendar_label" = "Calendario:";
"startDate_label" = "Inicio:";
"endDate_label" = "Fin:";
"calendar_label" = "Calendario";
"startDate_label" = "Inicio";
"endDate_label" = "Fin";
"due_label" = "Fecha Fin:";
"location_label" = "Localización:";
"location_label" = "Localización";
"summary_label" = "Resumen:";
"comment_label" = "Comentario:";
@@ -25,10 +25,10 @@ vtodo_class2 = "(Konfidentiell uppgift)";
"... from the following event:" = "... från följande händelse:";
/* IMIP messages */
"startDate_label" = "Startdatum:";
"endDate_label" = "Slutdatum:";
"startDate_label" = "Startdatum";
"endDate_label" = "Slutdatum";
"due_label" = "Datum:";
"location_label" = "Plats:";
"location_label" = "Plats";
"summary_label" = "Sammanfattning:";
"comment_label" = "Kommentar:";
@@ -25,10 +25,10 @@ vtodo_class2 = "(Конфіденційне завдання)";
"... from the following event:" = "... з участі в події:";
/* IMIP messages */
"startDate_label" = "Початок:";
"endDate_label" = "Кінець:";
"startDate_label" = "Початок";
"endDate_label" = "Кінець";
"due_label" = "Триватиме до:";
"location_label" = "Місце:";
"location_label" = "Місце";
"summary_label" = "Резюме:";
"comment_label" = "Коментар:";
@@ -25,10 +25,10 @@ vtodo_class2 = "(Tasg gyfrinachol)";
"... from the following event:" = "... from the following event:";
/* IMIP messages */
"startDate_label" = "Start:";
"endDate_label" = "End:";
"startDate_label" = "Start";
"endDate_label" = "End";
"due_label" = "Due Date:";
"location_label" = "Location:";
"location_label" = "Location";
"summary_label" = "Summary:";
"comment_label" = "Comment:";
@@ -184,16 +184,17 @@ NSNumber *iCalDistantFutureNumber = nil;
NSArray *oldAttendees;
unsigned int count, max;
iCalPerson *currentAttendee;
NSString *userID;
NSString *userID, *domain;
userID = [user login];
domain = [user domain];
oldAttendees = [self attendees];
max = [oldAttendees count];
newAttendees = [NSMutableArray arrayWithCapacity: max];
for (count = 0; count < max; count++)
{
currentAttendee = [oldAttendees objectAtIndex: count];
if (![[currentAttendee uid] isEqualToString: userID])
if (![[currentAttendee uidInDomain: domain] isEqualToString: userID])
[newAttendees addObject: currentAttendee];
}
+3 -4
View File
@@ -1,9 +1,6 @@
/* iCalPerson+SOGo.h - this file is part of SOGo
*
* Copyright (C) 2007-2012 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Ludovic Marcotte <lmarcotte@inverse.ca>
* Copyright (C) 2007-2015 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -32,6 +29,8 @@
- (NSString *) mailAddress;
- (NSString *) uid;
- (NSString *) uidInDomain: (NSString *) domain;
- (NSString *) uidInContext: (WOContext *) context;
- (NSString *) contactIDInContext: (WOContext *) context;
- (BOOL) hasSentBy;
- (NSString *) sentBy;
+26 -4
View File
@@ -1,9 +1,6 @@
/* iCalPerson+SOGo.m - this file is part of SOGo
*
* Copyright (C) 2007-2012 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Ludovic Marcotte <lmarcotte@inverse.ca>
* Copyright (C) 2007-2015 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -67,6 +64,31 @@ static SOGoUserManager *um = nil;
return [um getUIDForEmail: [self rfc822Email]];
}
- (NSString *) uidInContext: (WOContext *) context
{
NSString *domain;
domain = [[context activeUser] domain];
return [self uidInDomain: domain];
}
- (NSString *) uidInDomain: (NSString *) domain
{
NSDictionary *contact;
NSString *uid;
if (!um)
um = [SOGoUserManager sharedUserManager];
uid = nil;
contact = [um contactInfosForUserWithUIDorEmail: [self rfc822Email] inDomain: domain];
if (contact)
uid = [contact valueForKey: @"c_uid"];
return uid;
}
- (NSString *) contactIDInContext: (WOContext *) context
{
NSString *domain, *uid;
@@ -0,0 +1,2 @@
"Personal Address Book" = "個人通訊錄";
"Collected Address Book" = "公用通訊錄";
+1 -1
View File
@@ -27,7 +27,7 @@ Contacts_OBJC_FILES = \
Contacts_RESOURCE_FILES += \
product.plist \
Contacts_LANGUAGES = Arabic Basque BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
Contacts_LANGUAGES = Arabic Basque BrazilianPortuguese Catalan ChineseTaiwan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak Slovenian SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
Contacts_LOCALIZED_RESOURCE_FILES = Localizable.strings
@@ -0,0 +1,2 @@
"Personal Address Book" = "Osebni adresar";
"Collected Address Book" = "Zbrani adresar";
@@ -0,0 +1,2 @@
"OtherUsersFolderName" = "其他使用者";
"SharedFoldersName" = "共用資料匣";
+5 -2
View File
@@ -50,6 +50,8 @@ Mailer_RESOURCE_FILES += \
SOGoMailBrazilianPortugueseReply.wo \
SOGoMailCatalanForward.wo \
SOGoMailCatalanReply.wo \
SOGoMailChineseTaiwanForward.wo \
SOGoMailChineseTaiwanReply.wo \
SOGoMailCzechForward.wo \
SOGoMailCzechReply.wo \
SOGoMailDanishForward.wo \
@@ -80,6 +82,8 @@ Mailer_RESOURCE_FILES += \
SOGoMailRussianReply.wo \
SOGoMailSlovakForward.wo \
SOGoMailSlovakReply.wo \
SOGoMailSlovenianForward.wo \
SOGoMailSlovenianReply.wo \
SOGoMailSpanishSpainForward.wo \
SOGoMailSpanishSpainReply.wo \
SOGoMailSpanishArgentinaForward.wo \
@@ -91,8 +95,7 @@ Mailer_RESOURCE_FILES += \
SOGoMailWelshForward.wo \
SOGoMailWelshReply.wo
Mailer_LANGUAGES = Arabic Basque BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
Mailer_LANGUAGES = Arabic Basque BrazilianPortuguese ChineseTaiwan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovenian Slovenian SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
Mailer_LOCALIZED_RESOURCE_FILES = Localizable.strings
@@ -86,12 +86,3 @@ signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
signaturePlacementOnTop: WOConditional {
condition = signaturePlacementOnTop;
}
signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
@@ -0,0 +1,16 @@
<#newLine/>
<#newLine/>
<#signaturePlacementOnTop><#newLine/>
<#signature/><#newLine/></#signaturePlacementOnTop>
-------- 原始信件 --------<#newLine/>
主旨: <#subject/><#newLine/>
日期: <#date/><#newLine/>
寄件者: <#from/><#newLine/>
<#hasReplyTo>回覆帳號: <#replyTo/></#hasReplyTo><#hasOrganization>公司: <#organization/></#hasOrganization>收件者: <#to/><#newLine/>
<#hasCc>副本: <#cc/></#hasCc><#hasNewsGroups>新聞群組: <#newsgroups/></#hasNewsGroups><#hasReferences>參考: <#references/></#hasReferences><#newLine/>
<#newLine/>
<#messageBody/><#newLine/>
<#signaturePlacementOnBottom><#newLine/>
<#newLine/>
<#signature/></#signaturePlacementOnBottom>
<#newLine/>
@@ -0,0 +1,88 @@
subject: WOString {
value = subject;
escapeHTML = NO;
}
date: WOString {
value = date;
escapeHTML = NO;
}
from: WOString {
value = from;
escapeHTML = NO;
}
newLine: WOString {
value = newLine;
escapeHTML = NO;
}
hasReplyTo: WOConditional {
condition = hasReplyTo;
}
replyTo: WOString {
value = replyTo;
escapeHTML = NO;
}
hasOrganization: WOConditional {
condition = hasOrganization;
}
organization: WOString {
value = organization;
escapeHTML = NO;
}
to: WOString {
value = to;
escapeHTML = NO;
}
hasCc: WOConditional {
condition = hasCc;
}
cc: WOString {
value = cc;
escapeHTML = NO;
}
hasNewsGroups: WOConditional {
condition = hasNewsGroups;
}
newsgroups: WOString {
value = newsgroups;
escapeHTML = NO;
}
hasReferences: WOConditional {
condition = hasReferences;
}
references: WOString {
value = references;
escapeHTML = NO;
}
messageBody: WOString {
value = messageBody;
escapeHTML = NO;
}
signature: WOString {
value = signature;
escapeHTML = NO;
}
signaturePlacementOnTop: WOConditional {
condition = signaturePlacementOnTop;
}
signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
@@ -0,0 +1,16 @@
<#replyPlacementOnTop><#newLine/>
<#newLine/>
</#replyPlacementOnTop><#signaturePlacementOnTop><#newLine/>
<#signature/><#newLine/>
</#signaturePlacementOnTop><#outlookMode>-------- 原始信件 --------<#newLine/>
主旨: <#subject/><#newLine/>
日期: <#date/><#newLine/>
寄件者: <#from/><#newLine/>
<#hasReplyTo>回覆帳號: <#replyTo/></#hasReplyTo><#hasOrganization>公司: <#organization/></#hasOrganization>收件者: <#to/><#newLine/>
<#hasCc>副本: <#cc/></#hasCc><#hasNewsGroups>新聞群組: <#newsgroups/></#hasNewsGroups><#hasReferences>參考: <#references/></#hasReferences></#outlookMode><#newLine/>
<#standardMode>日期 <#date/>, <#from/> 編輯:</#standardMode><#newLine/>
<#newLine/>
<#messageBody/><#newLine/>
<#replyPlacementOnBottom><#newLine/>
<#newLine/>
</#replyPlacementOnBottom><#signaturePlacementOnBottom><#signature/></#signaturePlacementOnBottom><#newLine/>
@@ -0,0 +1,106 @@
outlookMode: WOConditional {
condition = outlookMode;
}
standardMode: WOConditional {
condition = outlookMode;
negate = YES;
}
subject: WOString {
value = subject;
escapeHTML = NO;
}
date: WOString {
value = date;
escapeHTML = NO;
}
from: WOString {
value = from;
escapeHTML = NO;
}
newLine: WOString {
value = newLine;
escapeHTML = NO;
}
hasReplyTo: WOConditional {
condition = hasReplyTo;
}
replyTo: WOString {
value = replyTo;
escapeHTML = NO;
}
hasOrganization: WOConditional {
condition = hasOrganization;
}
organization: WOString {
value = organization;
escapeHTML = NO;
}
to: WOString {
value = to;
escapeHTML = NO;
}
hasCc: WOConditional {
condition = hasCc;
}
cc: WOString {
value = cc;
escapeHTML = NO;
}
hasNewsGroups: WOConditional {
condition = hasNewsGroups;
}
newsgroups: WOString {
value = newsgroups;
escapeHTML = NO;
}
hasReferences: WOConditional {
condition = hasReferences;
}
references: WOString {
value = references;
escapeHTML = NO;
}
messageBody: WOString {
value = messageBody;
escapeHTML = NO;
}
signature: WOString {
value = signature;
escapeHTML = NO;
}
replyPlacementOnTop: WOConditional {
condition = replyPlacementOnTop;
}
replyPlacementOnBottom: WOConditional {
condition = replyPlacementOnTop;
negate = YES;
}
signaturePlacementOnTop: WOConditional {
condition = signaturePlacementOnTop;
}
signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
@@ -86,12 +86,3 @@ signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
signaturePlacementOnTop: WOConditional {
condition = signaturePlacementOnTop;
}
signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
+2 -1
View File
@@ -98,7 +98,8 @@
- (NSArray *) syncTokenFieldsWithProperties: (NSDictionary *) properties
matchingSyncToken: (NSString *) syncToken
fromDate: (NSCalendarDate *) theStartDate;
fromDate: (NSCalendarDate *) theStartDate
initialLoad: (BOOL) initialLoadInProgress;
/* flags */
+5 -1
View File
@@ -2090,6 +2090,7 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
- (NSArray *) syncTokenFieldsWithProperties: (NSArray *) theProperties
matchingSyncToken: (NSString *) theSyncToken
fromDate: (NSCalendarDate *) theStartDate
initialLoad: (BOOL) initialLoadInProgress
{
EOQualifier *searchQualifier;
NSMutableArray *allTokens;
@@ -2166,6 +2167,9 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
for (i = 0; i < [fetchResults count]; i++)
{
if ([[[fetchResults objectAtIndex: i] objectForKey: @"flags"] containsObject: @"deleted"] && initialLoadInProgress)
continue;
d = [NSDictionary dictionaryWithObject: ([[[fetchResults objectAtIndex: i] objectForKey: @"flags"] containsObject: @"deleted"]) ? [NSNull null] : [[fetchResults objectAtIndex: i] objectForKey: @"modseq"]
forKey: [[[fetchResults objectAtIndex: i] objectForKey: @"uid"] stringValue]];
[allTokens addObject: d];
@@ -2176,7 +2180,7 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
if (highestmodseq == 0)
highestmodseq = 1;
if (highestmodseq > 0)
if (highestmodseq > 0 && !initialLoadInProgress)
{
id uid;
+6
View File
@@ -49,6 +49,9 @@
@interface SOGoMailCatalanForward : SOGoMailForward
@end
@interface SOGoMailChineseTaiwanForward : SOGoMailForward
@end
@interface SOGoMailCzechForward : SOGoMailForward
@end
@@ -103,6 +106,9 @@
@interface SOGoMailSlovakForward : SOGoMailForward
@end
@interface SOGoMailSlovenianForward : SOGoMailForward
@end
@interface SOGoMailUkrainianForward : SOGoMailForward
@end
+6
View File
@@ -260,6 +260,9 @@
@implementation SOGoMailCatalanForward
@end
@implementation SOGoMailChineseTaiwanForward
@end
@implementation SOGoMailCzechForward
@end
@@ -314,6 +317,9 @@
@implementation SOGoMailSlovakForward
@end
@implementation SOGoMailSlovenianForward
@end
@implementation SOGoMailUkrainianForward
@end
+6
View File
@@ -48,6 +48,9 @@
@interface SOGoMailCatalanReply : SOGoMailReply
@end
@interface SOGoMailChineseTaiwanReply : SOGoMailReply
@end
@interface SOGoMailCzechReply : SOGoMailReply
@end
@@ -102,6 +105,9 @@
@interface SOGoMailSlovakReply : SOGoMailReply
@end
@interface SOGoMailSlovenianReply : SOGoMailReply
@end
@interface SOGoMailUkrainianReply : SOGoMailReply
@end
+6
View File
@@ -98,6 +98,9 @@
@implementation SOGoMailCatalanReply
@end
@implementation SOGoMailChineseTaiwanReply
@end
@implementation SOGoMailCzechReply
@end
@@ -152,6 +155,9 @@
@implementation SOGoMailSlovakReply
@end
@implementation SOGoMailSlovenianReply
@end
@implementation SOGoMailUkrainianReply
@end
@@ -0,0 +1,16 @@
<#newLine/>
<#newLine/>
<#signaturePlacementOnTop><#newLine/>
<#signature/><#newLine/></#signaturePlacementOnTop>
-------- Original Message --------<#newLine/>
Zadeva: <#subject/><#newLine/>
Datum: <#date/><#newLine/>
Od: <#from/><#newLine/>
<#hasReplyTo>Odgovori: <#replyTo/></#hasReplyTo><#hasOrganization>Organizacija: <#organization/></#hasOrganization>Za: <#to/><#newLine/>
<#hasCc>KP: <#cc/></#hasCc><#hasNewsGroups>Novicarske skupine: <#newsgroups/></#hasNewsGroups><#hasReferences>Reference: <#references/></#hasReferences><#newLine/>
<#newLine/>
<#messageBody/><#newLine/>
<#signaturePlacementOnBottom><#newLine/>
<#newLine/>
<#signature/></#signaturePlacementOnBottom>
<#newLine/>
@@ -0,0 +1,88 @@
subject: WOString {
value = subject;
escapeHTML = NO;
}
date: WOString {
value = date;
escapeHTML = NO;
}
from: WOString {
value = from;
escapeHTML = NO;
}
newLine: WOString {
value = newLine;
escapeHTML = NO;
}
hasReplyTo: WOConditional {
condition = hasReplyTo;
}
replyTo: WOString {
value = replyTo;
escapeHTML = NO;
}
hasOrganization: WOConditional {
condition = hasOrganization;
}
organization: WOString {
value = organization;
escapeHTML = NO;
}
to: WOString {
value = to;
escapeHTML = NO;
}
hasCc: WOConditional {
condition = hasCc;
}
cc: WOString {
value = cc;
escapeHTML = NO;
}
hasNewsGroups: WOConditional {
condition = hasNewsGroups;
}
newsgroups: WOString {
value = newsgroups;
escapeHTML = NO;
}
hasReferences: WOConditional {
condition = hasReferences;
}
references: WOString {
value = references;
escapeHTML = NO;
}
messageBody: WOString {
value = messageBody;
escapeHTML = NO;
}
signature: WOString {
value = signature;
escapeHTML = NO;
}
signaturePlacementOnTop: WOConditional {
condition = signaturePlacementOnTop;
}
signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
@@ -0,0 +1,16 @@
<#replyPlacementOnTop><#newLine/>
<#newLine/>
</#replyPlacementOnTop><#signaturePlacementOnTop><#newLine/>
<#signature/><#newLine/>
</#signaturePlacementOnTop><#outlookMode>-------- Izvorno sporocilo --------<#newLine/>
Zadeva: <#subject/><#newLine/>
Datum: <#date/><#newLine/>
Od: <#from/><#newLine/>
<#hasReplyTo>Odgovori: <#replyTo/></#hasReplyTo><#hasOrganization>Organizacija: <#organization/></#hasOrganization>Za: <#to/><#newLine/>
<#hasCc>KP: <#cc/></#hasCc><#hasNewsGroups>Novicarske skupine: <#newsgroups/></#hasNewsGroups><#hasReferences>Reference: <#references/></#hasReferences></#outlookMode><#newLine/>
<#standardMode>Dne <#date/>, je <#from/> napisal-a:</#standardMode><#newLine/>
<#newLine/>
<#messageBody/><#newLine/>
<#replyPlacementOnBottom><#newLine/>
<#newLine/>
</#replyPlacementOnBottom><#signaturePlacementOnBottom><#signature/></#signaturePlacementOnBottom><#newLine/>
@@ -0,0 +1,106 @@
outlookMode: WOConditional {
condition = outlookMode;
}
standardMode: WOConditional {
condition = outlookMode;
negate = YES;
}
subject: WOString {
value = subject;
escapeHTML = NO;
}
date: WOString {
value = date;
escapeHTML = NO;
}
from: WOString {
value = from;
escapeHTML = NO;
}
newLine: WOString {
value = newLine;
escapeHTML = NO;
}
hasReplyTo: WOConditional {
condition = hasReplyTo;
}
replyTo: WOString {
value = replyTo;
escapeHTML = NO;
}
hasOrganization: WOConditional {
condition = hasOrganization;
}
organization: WOString {
value = organization;
escapeHTML = NO;
}
to: WOString {
value = to;
escapeHTML = NO;
}
hasCc: WOConditional {
condition = hasCc;
}
cc: WOString {
value = cc;
escapeHTML = NO;
}
hasNewsGroups: WOConditional {
condition = hasNewsGroups;
}
newsgroups: WOString {
value = newsgroups;
escapeHTML = NO;
}
hasReferences: WOConditional {
condition = hasReferences;
}
references: WOString {
value = references;
escapeHTML = NO;
}
messageBody: WOString {
value = messageBody;
escapeHTML = NO;
}
signature: WOString {
value = signature;
escapeHTML = NO;
}
replyPlacementOnTop: WOConditional {
condition = replyPlacementOnTop;
}
replyPlacementOnBottom: WOConditional {
condition = replyPlacementOnTop;
negate = YES;
}
signaturePlacementOnTop: WOConditional {
condition = signaturePlacementOnTop;
}
signaturePlacementOnBottom: WOConditional {
condition = signaturePlacementOnTop;
negate = YES;
}
@@ -0,0 +1,2 @@
"OtherUsersFolderName" = "Ostali uporabniki";
"SharedFoldersName" = "Mape v skupni rabi";
+2 -4
View File
@@ -39,11 +39,11 @@
SOGoLoginModule = "Mail";
SOGoLanguage = "English";
SOGoSupportedLanguages = ( "Arabic", "Basque", "Catalan", "Czech", "Dutch", "Danish", "Welsh", "English",
SOGoSupportedLanguages = ( "Arabic", "Basque", "Catalan", "ChineseTaiwan", "Czech", "Dutch", "Danish", "Welsh", "English",
"SpanishSpain", "SpanishArgentina", "Finnish", "French", "German",
"Icelandic", "Italian", "Hungarian", "BrazilianPortuguese",
"NorwegianBokmal", "NorwegianNynorsk", "Polish", "Russian", "Slovak",
"Ukrainian", "Swedish" );
"Slovenian", "Ukrainian", "Swedish" );
SOGoTimeZone = "UTC";
SOGoDayStartTime = "8";
@@ -87,8 +87,6 @@
$label5 = ("Later", "#993399");
};
SOGoCalendarCategories = ("Customer", "Calls", "Favorites", "Meeting", "Ideas", "Miscellaneous", "Birthday", "Anniversary", "Vacation", "Travel", "Projects", "Suppliers", "Gifts", "Clients", "Issues", "Business", "Holidays", "Personal", "Status", "Competition", "Follow up", "Public Holiday");
SOGoCalendarCategoriesColors = { "Customer" = "#F0F0F0"; "Calls" = "#F0F0F0"; "Favorites" = "#F0F0F0"; "Meeting" = "#F0F0F0"; "Ideas" = "#F0F0F0"; "Miscellaneous" = "#F0F0F0"; "Birthday" = "#F0F0F0"; "Anniversary" = "#F0F0F0"; "Vacation" = "#F0F0F0"; "Travel" = "#F0F0F0"; "Projects" = "#F0F0F0"; "Suppliers" = "#F0F0F0"; "Gifts" = "#F0F0F0"; "Clients" = "#F0F0F0"; "Issues" = "#F0F0F0"; "Business" = "#F0F0F0"; "Holidays" = "#F0F0F0"; "Personal" = "#F0F0F0"; "Status" = "#F0F0F0"; "Competition" = "#F0F0F0"; "Follow up" = "#F0F0F0"; "Public Holiday" = "#F0F0F0"; };
SOGoSubscriptionFolderFormat = "%{FolderName} (%{UserName} <%{Email}>)";
+5 -2
View File
@@ -77,6 +77,9 @@
- (id) folderPropertyValueInCategory: (NSString *) theKey
forUser: (SOGoUser *) theUser;
- (BOOL) synchronize;
- (void) setSynchronize: (BOOL) new;
/* lower level fetches */
- (void) deleteEntriesWithIds: (NSArray *) ids;
@@ -128,8 +131,8 @@
- (NSArray *) syncTokenFieldsWithProperties: (NSDictionary *) properties
matchingSyncToken: (NSString *) syncToken
fromDate: (NSCalendarDate *) theStartDate;
fromDate: (NSCalendarDate *) theStartDate
initialLoad: (BOOL) initialLoadInProgress;
/* multiget helper */
- (WOResponse *) performMultigetInContext: (WOContext *) queryContext
+38 -8
View File
@@ -301,6 +301,29 @@ static NSArray *childRecordFields = nil;
return name;
}
- (BOOL) synchronize
{
NSNumber *synchronize;
synchronize = [self folderPropertyValueInCategory: @"FolderSynchronize"];
return [synchronize boolValue];
}
- (void) setSynchronize: (BOOL) new
{
NSNumber *synchronize;
if (new)
synchronize = [NSNumber numberWithBool: YES];
else
synchronize = nil;
[self setFolderPropertyValue: synchronize
inCategory: @"FolderSynchronize"];
}
/* This method fetches the display name defined by the owner, but is also the
fallback when a subscriber has not redefined the display name yet in their
environment. */
@@ -1151,6 +1174,7 @@ static NSArray *childRecordFields = nil;
- (NSArray *) syncTokenFieldsWithProperties: (NSDictionary *) properties
matchingSyncToken: (NSString *) syncToken
fromDate: (NSCalendarDate *) theStartDate
initialLoad: (BOOL) initialLoadInProgress
{
/* TODO:
- validation:
@@ -1200,13 +1224,17 @@ static NSArray *childRecordFields = nil;
mRecords = [NSMutableArray arrayWithArray: [self _fetchFields: fields
withQualifier: qualifier
ignoreDeleted: YES]];
qualifier = [EOQualifier qualifierWithQualifierFormat:
@"c_lastmodified > %d and c_deleted == 1",
syncTokenInt];
fields = [NSMutableArray arrayWithObjects: @"c_name", @"c_lastmodified", @"c_deleted", nil];
[mRecords addObjectsFromArray: [self _fetchFields: fields
withQualifier: qualifier
ignoreDeleted: NO]];
if (!initialLoadInProgress)
{
qualifier = [EOQualifier qualifierWithQualifierFormat:
@"c_lastmodified > %d and c_deleted == 1",
syncTokenInt];
fields = [NSMutableArray arrayWithObjects: @"c_name", @"c_lastmodified", @"c_deleted", nil];
[mRecords addObjectsFromArray: [self _fetchFields: fields
withQualifier: qualifier
ignoreDeleted: NO]];
}
records = mRecords;
}
else
@@ -1499,7 +1527,9 @@ static NSArray *childRecordFields = nil;
properties = [self parseDAVRequestedProperties: propElement];
records = [self syncTokenFieldsWithProperties: properties
matchingSyncToken: syncToken
fromDate: nil];
fromDate: nil
initialLoad: NO];
[self _appendComponentProperties: [properties allKeys]
fromRecords: records
matchingSyncToken: [syncToken intValue]
+4 -1
View File
@@ -780,7 +780,10 @@ static Class NSNullK;
NSRange r;
r = [theUID rangeOfString: [NSString stringWithFormat: @"@%@", theDomain]];
theUID = [theUID substringToIndex: r.location];
// We check if the range is ok here since we could be using DomainLessLogin
if (r.location != NSNotFound)
theUID = [theUID substringToIndex: r.location];
}
sogoSources = [[self authenticationSourceIDsInDomain: theDomain] objectEnumerator];
+2
View File
@@ -489,10 +489,12 @@
forKey: [field substringFromIndex: 2]];
}
// FIXME
// We have to do this here since we do not manage modules
// constraints right now over a SQL backend.
[response setObject: [NSNumber numberWithBool: YES] forKey: @"CalendarAccess"];
[response setObject: [NSNumber numberWithBool: YES] forKey: @"MailAccess"];
[response setObject: [NSNumber numberWithBool: YES] forKey: @"ActiveSyncAccess"];
// We set the domain, if any
value = nil;