зеркало из https://github.com/mozilla/pjs.git
Checked in patches for bug 253420:
no import of tasks from ical files
This commit is contained in:
Родитель
e924b73566
Коммит
f9eff44e20
|
@ -644,25 +644,12 @@ function newEventCommand( event )
|
|||
|
||||
|
||||
/**
|
||||
* Called when the new event button is clicked
|
||||
* Called when the new task button is clicked
|
||||
*/
|
||||
|
||||
function newToDoCommand()
|
||||
{
|
||||
var calendarToDo = createToDo();
|
||||
|
||||
// created todo has no start or due date unless user wants one
|
||||
calendarToDo.start.setTime( k_NO_DATE );
|
||||
calendarToDo.due.setTime( k_NO_DATE );
|
||||
|
||||
var args = new Object();
|
||||
args.mode = "new";
|
||||
args.onOk = self.addToDoDialogResponse;
|
||||
args.calendarEvent = calendarToDo;
|
||||
|
||||
window.setCursor( "wait" );
|
||||
// open the dialog modally
|
||||
openDialog("chrome://calendar/content/toDoDialog.xul", "caEditEvent", "chrome,modal", args );
|
||||
newToDo( null, null ); // new task button defaults to undated todo
|
||||
}
|
||||
|
||||
|
||||
|
@ -696,8 +683,9 @@ function isToDo ( aObject )
|
|||
|
||||
|
||||
/**
|
||||
* Helper function to launch the event composer to create a new event.
|
||||
* When the user clicks OK "addEventDialogResponse" is called
|
||||
* Defaults null start/end date based on selected date in current view.
|
||||
* Defaults calendarFile to the selected calendar file.
|
||||
* Calls editNewEvent.
|
||||
*/
|
||||
|
||||
function newEvent( startDate, endDate, allDay )
|
||||
|
@ -726,42 +714,67 @@ function newEvent( startDate, endDate, allDay )
|
|||
if( allDay )
|
||||
calendarEvent.allDay = true;
|
||||
|
||||
//get the selected calendar
|
||||
var selectedCalendarItem = document.getElementById( "list-calendars-listbox" ).selectedItem;
|
||||
|
||||
var server = null;
|
||||
|
||||
if( selectedCalendarItem )
|
||||
{
|
||||
server = selectedCalendarItem.getAttribute( "calendarPath" );
|
||||
}
|
||||
var server = getSelectedCalendarPathOrNull();
|
||||
|
||||
editNewEvent( calendarEvent, server );
|
||||
}
|
||||
|
||||
/*
|
||||
* Defaults null start/due date to the no_date date.
|
||||
* Defaults calendarFile to the selected calendar file.
|
||||
* Calls editNewToDo.
|
||||
*/
|
||||
function newToDo ( startDate, dueDate ) {
|
||||
var calendarToDo = createToDo();
|
||||
|
||||
// created todo has no start or due date unless user wants one
|
||||
if (! startDate )
|
||||
calendarToDo.start.clear();
|
||||
if (! dueDate )
|
||||
calendarToDo.due.clear();
|
||||
|
||||
var server = getSelectedCalendarPathOrNull();
|
||||
|
||||
editNewToDo(calendarToDo, server);
|
||||
}
|
||||
|
||||
function getSelectedCalendarPathOrNull()
|
||||
{
|
||||
//get the selected calendar
|
||||
var selectedCalendarItem = document.getElementById( "list-calendars-listbox" ).selectedItem;
|
||||
|
||||
if ( selectedCalendarItem )
|
||||
return selectedCalendarItem.getAttribute( "calendarPath" );
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to launch the event composer to edit a new event.
|
||||
* Launch the event dialog to edit a new (created, imported, or pasted) event.
|
||||
* 'server' is calendarPath.
|
||||
* When the user clicks OK "addEventDialogResponse" is called
|
||||
*/
|
||||
|
||||
function editNewEvent( calendarEvent, server )
|
||||
{
|
||||
// set up a bunch of args to pass to the dialog
|
||||
|
||||
var args = new Object();
|
||||
args.mode = "new";
|
||||
args.onOk = self.addEventDialogResponse;
|
||||
args.calendarEvent = calendarEvent;
|
||||
|
||||
if( server )
|
||||
args.server = server;
|
||||
|
||||
window.setCursor( "wait" );
|
||||
// open the dialog modally
|
||||
openDialog("chrome://calendar/content/eventDialog.xul", "caEditEvent", "chrome,modal", args );
|
||||
openEventDialog(calendarEvent,
|
||||
"new",
|
||||
self.addEventDialogResponse,
|
||||
server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Launch the todo dialog to edit a new (created, imported, or pasted) ToDo.
|
||||
* 'server' is calendarPath.
|
||||
* When the user clicks OK "addToDoDialogResponse" is called
|
||||
*/
|
||||
function editNewToDo( calendarToDo, server )
|
||||
{
|
||||
openToDoDialog(calendarToDo,
|
||||
"new",
|
||||
self.addToDoDialogResponse,
|
||||
server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the user clicks OK in the new event dialog
|
||||
|
@ -794,20 +807,12 @@ function addToDoDialogResponse( calendarToDo, Server )
|
|||
|
||||
function editEvent( calendarEvent )
|
||||
{
|
||||
// set up a bunch of args to pass to the dialog
|
||||
|
||||
var args = new Object();
|
||||
args.mode = "edit";
|
||||
args.onOk = self.modifyEventDialogResponse;
|
||||
args.calendarEvent = calendarEvent;
|
||||
|
||||
// open the dialog modally
|
||||
|
||||
window.setCursor( "wait" );
|
||||
openDialog("chrome://calendar/content/eventDialog.xul", "caEditEvent", "chrome,modal", args );
|
||||
openEventDialog(calendarEvent,
|
||||
"edit",
|
||||
self.modifyEventDialogResponse,
|
||||
null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper function to launch the event composer to edit an event.
|
||||
* When the user clicks OK "modifyEventDialogResponse" is called
|
||||
|
@ -815,19 +820,12 @@ function editEvent( calendarEvent )
|
|||
|
||||
function editToDo( calendarToDo )
|
||||
{
|
||||
// set up a bunch of args to pass to the dialog
|
||||
|
||||
var args = new Object();
|
||||
args.mode = "edit";
|
||||
args.onOk = self.modifyToDoDialogResponse;
|
||||
args.calendarEvent = calendarToDo;
|
||||
|
||||
window.setCursor( "wait" );
|
||||
// open the dialog modally
|
||||
openDialog("chrome://calendar/content/toDoDialog.xul", "caEditToDo", "chrome,modal", args );
|
||||
openToDoDialog(calendarToDo,
|
||||
"edit",
|
||||
self.modifyToDoDialogResponse,
|
||||
null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called when the user clicks OK in the edit event dialog
|
||||
*
|
||||
|
@ -854,6 +852,47 @@ function modifyToDoDialogResponse( calendarToDo, Server )
|
|||
}
|
||||
|
||||
|
||||
/** PRIVATE: open event dialog in mode, and call onOk if ok is clicked.
|
||||
'mode' is "new" or "edit".
|
||||
'server' is path to calendar to update.
|
||||
**/
|
||||
function openEventDialog(calendarEvent, mode, onOk, server)
|
||||
{
|
||||
// set up a bunch of args to pass to the dialog
|
||||
var args = new Object();
|
||||
args.calendarEvent = calendarEvent;
|
||||
args.mode = mode;
|
||||
args.onOk = onOk;
|
||||
|
||||
if( server )
|
||||
args.server = server;
|
||||
|
||||
// wait cursor will revert to auto in eventDialog.js loadCalendarEventDialog
|
||||
window.setCursor( "wait" );
|
||||
// open the dialog modally
|
||||
openDialog("chrome://calendar/content/eventDialog.xul", "caEditEvent", "chrome,modal", args );
|
||||
}
|
||||
|
||||
/** PRIVATE: open todo dialog in mode, and call onOk if ok is clicked.
|
||||
'mode' is "new" or "edit".
|
||||
'server' is path to calendar to update.
|
||||
**/
|
||||
function openToDoDialog(calendarToDo, mode, onOk, server)
|
||||
{
|
||||
// set up a bunch of args to pass to the dialog
|
||||
var args = new Object();
|
||||
args.calendarEvent = calendarToDo;
|
||||
args.mode = mode;
|
||||
args.onOk = onOk;
|
||||
if( server )
|
||||
args.server = server;
|
||||
|
||||
// wait cursor will revert to auto in todoDialog.js loadCalendarEventDialog
|
||||
window.setCursor( "wait" );
|
||||
// open the dialog modally
|
||||
openDialog("chrome://calendar/content/toDoDialog.xul", "caEditToDo", "chrome,modal", args );
|
||||
}
|
||||
|
||||
/**
|
||||
* This is called from the unifinder's edit command
|
||||
*/
|
||||
|
|
|
@ -121,62 +121,80 @@ function loadEventsFromFile()
|
|||
{
|
||||
var calendarEventArray = new Array();
|
||||
var duplicateEventArray = new Array();
|
||||
var calendarToDoArray = new Array();
|
||||
var duplicateToDoArray = new Array();
|
||||
var currentFile;
|
||||
var aDataStream;
|
||||
var i;
|
||||
var tempEventArray;
|
||||
var parsedEventArray = null, parsedToDoArray = null;
|
||||
var date = new Date();
|
||||
|
||||
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService();
|
||||
promptService = promptService.QueryInterface(Components.interfaces.nsIPromptService);
|
||||
var flags = ( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0 ) +
|
||||
( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_1 ) +
|
||||
( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_2 );
|
||||
var intoCalName = getSelectedCalendarNameOrDefault();
|
||||
var importAllStr = gCalendarBundle.getString( "importAll" );
|
||||
var promptStr = gCalendarBundle.getString( "promptForEach" );
|
||||
var discardAllStr = gCalendarBundle.getString( "discardAll" );
|
||||
var importNewEventsTitle = gCalendarBundle.getString( "aboutToImportNewEventsTitle" );
|
||||
var importDupEventsTitle = gCalendarBundle.getString( "aboutToImportDupEventsTitle" );
|
||||
var importNewTasksTitle = gCalendarBundle.getString( "aboutToImportNewTasksTitle" );
|
||||
var importDupTasksTitle = gCalendarBundle.getString( "aboutToImportDupTasksTitle" );
|
||||
var fromFileNames = "";
|
||||
|
||||
while (filesToAppend.hasMoreElements())
|
||||
{
|
||||
currentFile = filesToAppend.getNext().QueryInterface(Components.interfaces.nsILocalFile);
|
||||
fromFileNames += (fromFileNames == "" ? "" : ", ") + currentFile.leafName;
|
||||
aDataStream = readDataFromFile( currentFile.path, "UTF-8" );
|
||||
|
||||
switch (fp.filterIndex) {
|
||||
case 1 : // xcs: transform data into ics data
|
||||
aDataStream = transformXCSData( aDataStream );
|
||||
// fall thru to process ics data
|
||||
case 0 : // ics
|
||||
case 3 : // vcs
|
||||
tempEventArray = parseIcalData( aDataStream );
|
||||
break;
|
||||
case 1 : // xcs
|
||||
tempEventArray = parseXCSData( aDataStream );
|
||||
parsedEventArray = parseIcalEvents( aDataStream );
|
||||
parsedToDoArray = parseIcalToDos( aDataStream );
|
||||
break;
|
||||
case 2: // csv
|
||||
tempEventArray = parseOutlookCSVData( aDataStream );
|
||||
parsedEventArray = parseOutlookCSVEvents( aDataStream );
|
||||
break;
|
||||
default:
|
||||
tempEventArray = null;
|
||||
break;
|
||||
}
|
||||
if( tempEventArray ) {
|
||||
for( i = 0; i < tempEventArray.length; i++ ) {
|
||||
|
||||
date.setTime( tempEventArray[i].start.getTime() );
|
||||
if( entryExists( date, tempEventArray[i].title ) )
|
||||
duplicateEventArray[duplicateEventArray.length] = tempEventArray[i];
|
||||
if( parsedEventArray ) {
|
||||
for( i = 0; i < parsedEventArray.length; i++ ) {
|
||||
var parsedEvent = parsedEventArray[i];
|
||||
date.setTime( parsedEvent.start.getTime() );
|
||||
if( eventExists( date, parsedEvent.title ) )
|
||||
duplicateEventArray[duplicateEventArray.length] = parsedEvent;
|
||||
else
|
||||
calendarEventArray[calendarEventArray.length] = tempEventArray[i];
|
||||
calendarEventArray[calendarEventArray.length] = parsedEvent;
|
||||
}
|
||||
}
|
||||
if( parsedToDoArray ) {
|
||||
for( i = 0; i < parsedToDoArray.length; i++ ) {
|
||||
var parsedToDo = parsedToDoArray[i];
|
||||
date.setTime( parsedToDo.start.getTime() );
|
||||
if( toDoExists( date, parsedToDo.title ) )
|
||||
duplicateToDoArray[duplicateToDoArray.length] = parsedToDo;
|
||||
else
|
||||
calendarToDoArray[calendarToDoArray.length] = parsedToDo;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService();
|
||||
promptService = promptService.QueryInterface(Components.interfaces.nsIPromptService);
|
||||
var result = {value:0};
|
||||
var fromFileName = currentFile.leafName;
|
||||
var importText = gCalendarBundle.getFormattedString( "aboutToImport", [calendarEventArray.length, fromFileName, intoCalName]);
|
||||
var dupeText = gCalendarBundle.getFormattedString( "aboutToImportDupes", [duplicateEventArray.length]);
|
||||
var importAllStr = gCalendarBundle.getString( "importAll" );
|
||||
var promptStr = gCalendarBundle.getString( "promptForEach" );
|
||||
var discardAllStr = gCalendarBundle.getString( "discardAll" );
|
||||
var flags = ( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0 ) +
|
||||
( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_1 ) +
|
||||
( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_2 );
|
||||
|
||||
// Ask user what to import (all / prompt each / none)
|
||||
var buttonPressed;
|
||||
|
||||
// EVENTS:
|
||||
if (calendarEventArray.length > 0) {
|
||||
buttonPressed = promptService.confirmEx( window, "Import", importText, flags,
|
||||
// Ask user what to import (all / prompt each / none)
|
||||
var importNewEventsText = gCalendarBundle.getFormattedString( "aboutToImportNewEvents", [calendarEventArray.length, intoCalName, fromFileNames]);
|
||||
buttonPressed = promptService.confirmEx( window, importNewEventsTitle, importNewEventsText, flags,
|
||||
importAllStr, discardAllStr, promptStr,
|
||||
null, result );
|
||||
|
||||
|
@ -187,9 +205,10 @@ function loadEventsFromFile()
|
|||
//else if(buttonPressed == 1) // discard all
|
||||
}
|
||||
|
||||
// Ask user what to do with duplicates
|
||||
if (duplicateEventArray.length > 0) {
|
||||
buttonPressed = promptService.confirmEx( window, "Import duplicates", dupeText, flags,
|
||||
// Ask user what to do with duplicates
|
||||
var importDupEventsText = gCalendarBundle.getFormattedString( "aboutToImportDupEvents", [duplicateEventArray.length, intoCalName, fromFileNames]);
|
||||
buttonPressed = promptService.confirmEx( window, importDupEventsTitle, importDupEventsText, flags,
|
||||
importAllStr, discardAllStr, promptStr,
|
||||
null, result );
|
||||
if(buttonPressed == 0) // Import all
|
||||
|
@ -199,10 +218,38 @@ function loadEventsFromFile()
|
|||
//else if(buttonPressed == 1) // Discard all
|
||||
}
|
||||
|
||||
// If there were no events to import, let the user know
|
||||
// TODOS
|
||||
if (calendarToDoArray.length > 0) {
|
||||
// Ask user what to import (all / prompt each / none)
|
||||
var importNewTasksText = gCalendarBundle.getFormattedString( "aboutToImportNewTasks", [calendarToDoArray.length, intoCalName, fromFileNames]);
|
||||
buttonPressed = promptService.confirmEx( window, importNewTasksTitle, importNewTasksText, flags,
|
||||
importAllStr, discardAllStr, promptStr,
|
||||
null, result );
|
||||
|
||||
if(buttonPressed == 0) // Import all
|
||||
addToDosToCalendar( calendarToDoArray, true );
|
||||
else if(buttonPressed == 2) // prompt
|
||||
addToDosToCalendar( calendarToDoArray );
|
||||
//else if(buttonPressed == 1) // discard all
|
||||
}
|
||||
|
||||
// Ask user what to do with duplicates
|
||||
if (duplicateToDoArray.length > 0) {
|
||||
var importDupTasksText = gCalendarBundle.getFormattedString( "aboutToImportDupTasks", [duplicateToDoArray.length, intoCalName, fromFileNames]);
|
||||
buttonPressed = promptService.confirmEx( window, importDupTasksTitle, importDupTasksText, flags,
|
||||
importAllStr, discardAllStr, promptStr,
|
||||
null, result );
|
||||
if(buttonPressed == 0) // Import all
|
||||
addToDosToCalendar( duplicateToDoArray, true );
|
||||
else if(buttonPressed == 2) // Prompt for each
|
||||
addToDosToCalendar( duplicateToDoArray );
|
||||
//else if(buttonPressed == 1) // Discard all
|
||||
}
|
||||
|
||||
// If there were no events or todos to import, let the user know
|
||||
//
|
||||
if (calendarEventArray.length == 0 && duplicateEventArray.length == 0 )
|
||||
alert( gCalendarBundle.getString( "noEventsToImport" ) );
|
||||
if (parsedEventArray.length == 0 && parsedToDoArray.length == 0)
|
||||
alert( gCalendarBundle.getFormattedString( "noEventsOrTasksToImport", [fromFileNames] ) );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -276,6 +323,57 @@ function addEventsToCalendar( calendarEventArray, silent, calendarPath )
|
|||
}
|
||||
}
|
||||
|
||||
/****
|
||||
* calendarToDoArray: array of calendar toDo objects.
|
||||
* silent: If silent, adds them all to selected (or default) calendar.
|
||||
* else shows new toDo dialog on each toDo, using selected (or default)
|
||||
* calendar as the initial calendar in dialog.
|
||||
* calendarPath (optional): if present, overrides selected calendar.
|
||||
* Value is calendarPath from another item in calendar list.
|
||||
*/
|
||||
function addToDosToCalendar( calendarToDoArray, silent, calendarPath )
|
||||
{
|
||||
if( ! calendarPath ) // null, "", or false
|
||||
{
|
||||
calendarPath = getSelectedCalendarPathOrDefault();
|
||||
}
|
||||
|
||||
gICalLib.batchMode = true;
|
||||
try
|
||||
{
|
||||
|
||||
for(var i = 0; i < calendarToDoArray.length; i++)
|
||||
{
|
||||
var calendarToDo = calendarToDoArray[i];
|
||||
|
||||
// Check if toDo with same ID already in Calendar. If so, import toDo with new ID.
|
||||
if( gICalLib.fetchTodo( calendarToDo.id ) != null )
|
||||
{
|
||||
calendarToDo.id = createUniqueID( );
|
||||
}
|
||||
|
||||
// the start time is in zulu time, need to convert to current time
|
||||
convertZuluToLocalToDo( calendarToDo );
|
||||
|
||||
if( silent )
|
||||
{
|
||||
// LINAGORA (We need to see the new added toDo in the window and to update remote cal)
|
||||
addToDoDialogResponse( calendarToDo, calendarPath );
|
||||
/* gICalLib.addToDo( calendarToDo, calendarPath ); */
|
||||
}
|
||||
else
|
||||
{
|
||||
// open the toDo dialog with the toDo to add, calls addToDoDialogResponse on OK.
|
||||
editNewToDo( calendarToDo, calendarPath );
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
gICalLib.batchMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
/** Return the calendarPath of the calendar selected in list-calendars-listbox,
|
||||
or the default calendarPath if none selected. **/
|
||||
function getSelectedCalendarPathOrDefault()
|
||||
|
@ -367,6 +465,18 @@ function convertLocalToZuluEvent( calendarEvent )
|
|||
convertLocalToZuluOEDateTime(calendarEvent.end);
|
||||
}
|
||||
|
||||
function convertZuluToLocalToDo( calendarToDo )
|
||||
{
|
||||
convertZuluToLocalOEDateTime(calendarToDo.start);
|
||||
convertZuluToLocalOEDateTime(calendarToDo.due);
|
||||
}
|
||||
|
||||
function convertLocalToZuluToDo( calendarToDO )
|
||||
{
|
||||
convertLocalToZuluOEDateTime(calendarToDo.start);
|
||||
convertLocalToZuluOEDateTime(calendarToDo.due);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize an event with a start and end date.
|
||||
*/
|
||||
|
@ -393,6 +503,28 @@ function initCalendarEvent( calendarEvent )
|
|||
calendarEvent.end.setTime( endDateTime );
|
||||
}
|
||||
|
||||
function initCalendarToDo( calendarToDo )
|
||||
{
|
||||
var startDate = gCalendarWindow.currentView.getNewEventDate();
|
||||
|
||||
var Minutes = Math.ceil( startDate.getMinutes() / 5 ) * 5 ;
|
||||
|
||||
startDate = new Date( startDate.getFullYear(),
|
||||
startDate.getMonth(),
|
||||
startDate.getDate(),
|
||||
startDate.getHours(),
|
||||
Minutes,
|
||||
0);
|
||||
|
||||
calendarToDo.start.setTime( startDate );
|
||||
|
||||
var MinutesToAddOn = getIntPref(gCalendarWindow.calendarPreferences.calendarPref, "event.defaultlength", 60 );
|
||||
|
||||
var endDateTime = startDate.getTime() + ( 1000 * 60 * MinutesToAddOn );
|
||||
|
||||
calendarToDo.due.setTime( endDateTime );
|
||||
}
|
||||
|
||||
|
||||
function datesAreEqual(icalDate, date) {
|
||||
|
||||
|
@ -407,7 +539,7 @@ function datesAreEqual(icalDate, date) {
|
|||
return false;
|
||||
}
|
||||
|
||||
function entryExists( date, subject) {
|
||||
function eventExists( date, subject) {
|
||||
|
||||
var events = gEventSource.getEventsForDay( date );
|
||||
|
||||
|
@ -429,6 +561,25 @@ function entryExists( date, subject) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
function toDoExists( dueDate, subject) {
|
||||
|
||||
var date = new Date(dueDate.getFullYear(), dueDate.getMonth(), dueDate.getDate());
|
||||
var toDos = gEventSource.getToDosForRange( date, date );
|
||||
|
||||
if (toDos.length == 0)
|
||||
return false;
|
||||
|
||||
for (var i = 0; i < toDos.length; i++) {
|
||||
|
||||
var toDo = toDos[i];
|
||||
|
||||
if ( toDo.title == subject && datesAreEqual(toDo.due, dueDate))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function promptToKeepEntry(title, startTime, endTime)
|
||||
{
|
||||
return confirm(
|
||||
|
@ -440,20 +591,20 @@ function promptToKeepEntry(title, startTime, endTime)
|
|||
|
||||
}
|
||||
|
||||
/**** parseOutlookCSVData
|
||||
/**** parseOutlookCSVEvents
|
||||
*
|
||||
* Takes a text block of Outlook-exported Comma Separated Values and tries to
|
||||
* parse that into individual events (with a mother-of-all-regexps).
|
||||
* Returns: an array of new calendarEvents and
|
||||
* an array of events that are duplicates with existing ones.
|
||||
*/
|
||||
function parseOutlookCSVData( outlookCsvStr ) {
|
||||
function parseOutlookCSVEvents( outlookCsvStr ) {
|
||||
|
||||
// boolRegExp: regexp for finding a boolean value from event (6. field)
|
||||
// headerRegExp: regexp for reading CSV header line
|
||||
// eventRegExp: regexp for reading events (this one'll be constructed on fly)
|
||||
var boolRegExp = /^".*?",".*?",".*?",".*?",".*?","(.*?)","/;
|
||||
var headerRegExp = /^"(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)"/g;
|
||||
var boolRegExp = /^".*",".*",".*",".*",".*","(.*)?",".*"/;
|
||||
var headerRegExp = /^"(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?","(.*)?"/g;
|
||||
var eventRegExp;
|
||||
headerRegExp.lastIndex=0;
|
||||
|
||||
|
@ -550,9 +701,9 @@ function parseOutlookCSVData( outlookCsvStr ) {
|
|||
if( i != 1 )
|
||||
regExpStr += ",";
|
||||
if( i == args.descriptionIndex )
|
||||
regExpStr += "(.*?(?:[\\s\\S]*?).*?)";
|
||||
regExpStr += "(.*(?:[\\s\\S]*)?.*)?";
|
||||
else
|
||||
regExpStr += "(.*?)";
|
||||
regExpStr += "(.*)?";
|
||||
}
|
||||
regExpStr += "\\r\\n";
|
||||
|
||||
|
@ -621,24 +772,24 @@ function parseOutlookCSVData( outlookCsvStr ) {
|
|||
return eventArray;
|
||||
}
|
||||
|
||||
/**** parseIcalData
|
||||
/**** parseIcalEvents
|
||||
*
|
||||
* Takes a text block of iCalendar events and tries to split that into individual events.
|
||||
* Parses those events and returns an array of calendarEvents.
|
||||
*/
|
||||
|
||||
function parseIcalData( icalStr )
|
||||
function parseIcalEvents( icalStr )
|
||||
{
|
||||
var calendarEventArray = new Array();
|
||||
|
||||
while( icalStr.indexOf("BEGIN:VEVENT") != -1 )
|
||||
for(var i=0, j=0; (i = icalStr.indexOf("BEGIN:VEVENT", j)) != -1; )
|
||||
{
|
||||
// try to find the begin and end of an event. ParseIcalString does not support VCALENDAR
|
||||
var i = icalStr.indexOf("BEGIN:VEVENT");
|
||||
var j = icalStr.indexOf("END:VEVENT") + 10;
|
||||
j = icalStr.indexOf("END:VEVENT", i + "BEGIN:VEVENT".length);
|
||||
j = (j == -1? icalStr.length : j + "END:VEVENT".length);
|
||||
var eventData = icalStr.substring(i, j);
|
||||
|
||||
calendarEvent = createEvent();
|
||||
var calendarEvent = createEvent();
|
||||
|
||||
// if parsing import iCalendar failed, add date as description
|
||||
if ( !calendarEvent.parseIcalString(eventData) )
|
||||
|
@ -647,29 +798,59 @@ function parseIcalData( icalStr )
|
|||
initCalendarEvent( calendarEvent );
|
||||
|
||||
// Save the parsed text as description.
|
||||
calendarEvent.description = icalStr;
|
||||
calendarEvent.description = eventData;
|
||||
}
|
||||
|
||||
calendarEventArray[ calendarEventArray.length ] = calendarEvent;
|
||||
// remove the parsed VEVENT from the calendar data to parse
|
||||
icalStr = icalStr.substring(j+1);
|
||||
}
|
||||
|
||||
return calendarEventArray;
|
||||
}
|
||||
|
||||
/**** parseXCSData
|
||||
/**** parseIcalToDos
|
||||
*
|
||||
* Takes a text block of iCalendar todos and tries to split that into individual todos.
|
||||
* Parses those toDos and returns an array of calendarToDos.
|
||||
*/
|
||||
|
||||
function parseXCSData( xcsString )
|
||||
function parseIcalToDos( icalStr )
|
||||
{
|
||||
var calendarToDoArray = new Array();
|
||||
|
||||
for(var i=0, j=0; (i = icalStr.indexOf("BEGIN:VTODO", j)) != -1; )
|
||||
{
|
||||
// try to find the begin and end of an toDo. ParseIcalString does not support VCALENDAR
|
||||
j = icalStr.indexOf("END:VTODO", i + "BEGIN:VTODO".length);
|
||||
j = (j == -1? icalStr.length : j + "END:VTODO".length);
|
||||
var toDoData = icalStr.substring(i, j);
|
||||
|
||||
var calendarToDo = createToDo();
|
||||
|
||||
// if parsing import iCalendar failed, add data as description
|
||||
if ( !calendarToDo.parseIcalString(toDoData) )
|
||||
{
|
||||
// initialize start and end dates.
|
||||
initCalendarToDo( calendarToDo );
|
||||
|
||||
// Save the parsed text as description.
|
||||
calendarToDo.description = toDoData;
|
||||
}
|
||||
|
||||
calendarToDoArray[ calendarToDoArray.length ] = calendarToDo;
|
||||
}
|
||||
|
||||
return calendarToDoArray;
|
||||
}
|
||||
|
||||
/**** transformXCSData: transform into ics data
|
||||
*
|
||||
*/
|
||||
function transformXCSData( xcsString )
|
||||
{
|
||||
var gParser = new DOMParser;
|
||||
var xmlDocument = gParser.parseFromString(xcsString, 'text/xml');
|
||||
|
||||
var result = serializeDocument(xmlDocument, "xcs2ics.xsl");
|
||||
|
||||
return parseIcalData( result );
|
||||
return serializeDocument(xmlDocument, "xcs2ics.xsl");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Necessita una acció
|
|||
statusInProcess =En procés
|
||||
statusCompleted =Acabat
|
||||
|
||||
noEventsToImport=No hi ha cites per importar...
|
||||
noEventsOrTasksToImport=No hi ha cites o tasca per importar\nd'un fitxer "%1$S".
|
||||
noEventsToSave=No hi ha cites per desar.
|
||||
aboutToImport=Quant a la importació de %1$S cita(es). Què voleu fer?
|
||||
aboutToImportDupes=Quant a la importació de %1$S cita(es) duplicades de cites del vostre calendari.n\
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Importa Nova Cites
|
||||
aboutToImportNewEvents=Quant a la importació de %1$S nova cita(es)\na un calendari "%2$S"\nd'un fitxer "%3$S".\nQuè voleu fer?
|
||||
aboutToImportDupEventsTitle=Importa Duplicades de Cites
|
||||
aboutToImportDupEvents=Quant a la importació de %1$S cita(es) duplicades de cites del vostre calendari,\na un calendari "%2$S"\nd'un fitxer "%3$S".\nQuè voleu fer?
|
||||
aboutToImportNewTasksTitle=Importa Nova Tascas
|
||||
aboutToImportNewTasks=Quant a la importació de %1$S nova tasca(s)\na un calendari "%2$S"\nd'un fitxer "%3$S".\nQuè voleu fer?
|
||||
aboutToImportDupTasksTitle=Importa Duplicades de Tascas
|
||||
aboutToImportDupTasks=Quant a la importació de %1$S tasca(s) duplicades de tascas del vostre calendari,\na un calendari "%2$S"\nd'un fitxer "%3$S".\nQuè voleu fer?
|
||||
|
||||
discardAll=Descarta-ho tot
|
||||
importAll=Importa-ho tot
|
||||
promptForEach=Pregunta'm per cadascún
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Zjišťování akce
|
|||
statusInProcess =V běhu
|
||||
statusCompleted =Ukončena
|
||||
|
||||
noEventsToImport=\u017D\u00E1dn\u00E9 ud\u00E1losti k importu...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=\u017D\u00E1dn\u00E9 vybran\u00E9 ud\u00E1losti k ulo\u017Een\u00ED.
|
||||
aboutToImport=O importu %1$S event(s)\nfrom file "%2$S"\ninto calendar "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupes=Celkem %1$S ud\u00E1lost\u00ED je duplicitn\u00EDch.\nCo s nimi chcete ud\u011Blat?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=O importu %1$S event(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=Celkem %1$S ud\u00E1lost\u00ED je duplicitn\u00EDch\ninto calendar "%2$S"\nfrom file "%3$S".\nCo s nimi chcete ud\u011Blat?
|
||||
aboutToImportNewTasksTitle=Import Tasks
|
||||
aboutToImportNewTasks=About to import %1$S task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Zru\u0161it v\u0161echny
|
||||
importAll=Importovat v\u0161echny
|
||||
promptForEach=Ka\u017Edou potvrzovat
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Angen Sylw
|
|||
statusInProcess =Ar Waith
|
||||
statusCompleted =Wedi Gorffen
|
||||
|
||||
noEventsToImport=Dim digwyddiadau i'w mewnforio...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Heb ddewis digwyddiadau i'w cadw.
|
||||
aboutToImport=Ar fin mewnforio %1$S digwyddiad(au)\nfrom file "%2$S"\ninto calendar "%3$S".\nHoffech chi agor yr holl ddigwyddiadau newydd i'w mewnforio cyn mewnforio?
|
||||
aboutToImportDupes=About to import %1$S event(s) that are duplicates of events in your calendar.\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Ar fin mewnforio %1$S digwyddiad(au)\ninto calendar "%2$S"\from file "%3$S".\nHoffech chi agor yr holl ddigwyddiadau newydd i'w mewnforio cyn mewnforio?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Discard all
|
||||
importAll=Import all
|
||||
promptForEach=Prompt for each
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Benötigt Eingriff
|
|||
statusInProcess =In Arbeit
|
||||
statusCompleted =Abgeschlossen
|
||||
|
||||
noEventsToImport=Keine Ereignisse zum Importieren...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Keine Ereignisse zum Speichern gew\u00E4hlt.
|
||||
aboutToImport=%1$S Ereignis(se) werden importiert.\nfrom file "%2$S"\ninto calendar "%3$S". Was wollen Sie machen?
|
||||
aboutToImportDupes=%1$S Ereignis(se) sollen importiert werden, die Duplikate von Ereignisse in Ihrem Kalender sind.\nWas wollen Sie machen?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=About to import %1$S new event(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Alle ablehnen
|
||||
importAll=Alle importieren
|
||||
promptForEach=Jedes einzeln best\u00E4tigen
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Needs Action
|
|||
statusInProcess =In Process
|
||||
statusCompleted =Completed
|
||||
|
||||
noEventsToImport=No events to import...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=No events selected to save.
|
||||
aboutToImport=About to import %1$S event(s)\nfrom file "%2$S"\ninto calendar "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupes=About to import %1$S event(s) that are duplicates of events in your calendar.\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=About to import %1$S new event(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Discard all
|
||||
importAll=Import all
|
||||
promptForEach=Prompt for each
|
||||
|
|
|
@ -47,10 +47,19 @@ statusNeedsAction=Necesita acción
|
|||
statusInProcess =En proceso
|
||||
statusCompleted =Completado
|
||||
|
||||
noEventsToImport=No hay eventos que importar...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=No hay eventos seleccionados para guardar.
|
||||
aboutToImport=A punto de importar %1$S evento(s). \nfrom file "%2$S"\ninto calendar "%3$S".\u00BFQu\u00E9 desea hacer?
|
||||
aboutToImportDupes=A punto de importar %1$S evento(s) que son duplicados de eventos en su calendaio.\n\u00BFQu\u00E9 desea hacer?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Importar Nuevo Eventos
|
||||
aboutToImportNewEvents=A punto de importar %1$S evento(s)\ninto calendar "%2$S"\nfrom file "%3$S".\n\u00BFDesea abrir todos los eventos nuevos para importar antes de importarlos?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Descartar todos
|
||||
importAll=Importar todos
|
||||
promptForEach=Preguntar en cada uno
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Une action est requise
|
|||
statusInProcess =En cours
|
||||
statusCompleted =Achevé
|
||||
|
||||
noEventsToImport=Pas d'\u00e9v\u00e9nement \u00e0 importer\u2026
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Pas d'\u00e9v\u00e9nement s\u00e9lectionn\u00e9 pour une sauvegarde.
|
||||
aboutToImport=Pr\u00eat \u00e0 importer %1$S \u00e9v\u00e9nement(s)\n\u00e0 partir du fichier "%2$S"\ndans le calendrier "%3$S". Que voulez-vous faire\u00a0?
|
||||
aboutToImportDupes=Pr\u00eat \u00e0 importer %1$S \u00e9v\u00e9nement(s) qui sont des doublons d'\u00e9v\u00e9nements d\u00e9j\u00e0 \u00e0 votre calendrier.\nQue voulez-vous faire\u00a0?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Pr\u00eat \u00e0 importer %1$S \u00e9v\u00e9nement(s) nouveau\ninto calendar "%2$S"\nfrom file "%3$S".\nQue voulez-vous faire\u00a0?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=Pr\u00eat \u00e0 importer %1$S \u00e9v\u00e9nement(s) qui sont des doublons d'\u00e9v\u00e9nements d\u00e9j\u00e0 \u00e0 votre calendrier, \ninto calendar "%2$S"\nfrom file "%3$S".\nQue voulez-vous faire\u00a0?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nQue voulez-vous faire\u00a0?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar, \ninto calendar "%2$S"\nfrom file "%3$S".\nQue voulez-vous faire\u00a0?
|
||||
|
||||
discardAll=Les ignorer tous
|
||||
importAll=Les importer tous
|
||||
promptForEach=Me demander pour chacun
|
||||
|
|
|
@ -50,10 +50,19 @@ statusNeedsAction=Foglalkozni kell vele
|
|||
statusInProcess =Folyamatban
|
||||
statusCompleted =Kész van
|
||||
|
||||
noEventsToImport=Nincs import\u00e1lhat\u00f3 esem\u00e9ny...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Nincs esem\u00e9ny kiv\u00e1lasztva a ment\u00e9shez.
|
||||
aboutToImport=%1$S esem\u00e9ny import\u00e1l\u00e1sa k\u00f6vetkezik\nfrom file "%2$S"\ninto calendar "%3$S".\nMit k\u00edv\u00e1n tenni?
|
||||
aboutToImportDupes=%1$S olyan esem\u00e9ny import\u00e1l\u00e1sa k\u00f6vetkezik, amelyek m\u00e1r szerepelnek a napt\u00e1r\u00e1ban.\nMit k\u00edv\u00e1n tenni?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=%1$S esem\u00e9ny import\u00e1l\u00e1sa k\u00f6vetkezik\ninto calendar "%2$S"\nfrom file "%3$S".\nMit k\u00edv\u00e1n tenni?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=%1$S olyan esem\u00e9ny import\u00e1l\u00e1sa k\u00f6vetkezik, amelyek m\u00e1r szerepelnek a napt\u00e1r\u00e1ban,\ninto calendar "%2$S"\nfrom file "%3$S".\nMit k\u00edv\u00e1n tenni?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=\u00d6sszes eldob\u00e1sa
|
||||
importAll=\u00d6sszes import\u00e1l\u00e1sa
|
||||
promptForEach=Meger\u0151s\u00edt\u00e9s mindegyikn\u00e9l
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Necessita Azione
|
|||
statusInProcess =In Svolgimento
|
||||
statusCompleted =Completato
|
||||
|
||||
noEventsToImport=Nessun evento da importare...
|
||||
noEventsOrTasksToImport=Nessun evento o impegno da importare...
|
||||
noEventsToSave=Nessun evento selezionato da salvare.
|
||||
aboutToImport=Sto per importare %1$S eventi.\nfrom file "%2$S"\ninto calendar "%3$S".\nPrima di importarli vuoi aprire tutti i nuovi eventi?
|
||||
aboutToImportDupes=Importazione di %1$S event(i) che risultato duplicati di eventi presenti nel tuo calendario.\nCosa desideri fare?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Importare Nuovo Eventi
|
||||
aboutToImportNewEvents=Sto per importare %1$S nuovo event(i)\nnella calendario "%2$S"\nda file "%3$S".\nCosa desideri fare?
|
||||
aboutToImportDupEventsTitle=Importare Duplicati Eventi
|
||||
aboutToImportDupEvents=Sto per importare %1$S event(i) che risultato duplicati di eventi presenti nel tuo calendario,\nnella calendario "%2$S"\nda file "%3$S".\nCosa desideri fare?
|
||||
aboutToImportNewTasksTitle=Importare Nuovo Impegni
|
||||
aboutToImportNewTasks=Sto per importare %1$S nuovo impegn(i)\nnelle calendario "%2$S"\nda file "%3$S".\nCosa desideri fare?
|
||||
aboutToImportDupTasksTitle=Importare Duplicati Impegni
|
||||
aboutToImportDupTasks=Sto per importare %1$S impegn(i) che risultato duplicati di eventi presenti nel tuo calendario,\nnelle calendario "%2$S"\nda file "%3$S".\nCosa desideri fare?
|
||||
|
||||
discardAll=Elimina tutto
|
||||
importAll=Importi tutti
|
||||
promptForEach=Chiedi per ogni uno
|
||||
|
|
|
@ -51,11 +51,21 @@ statusNeedsAction=Needs Action
|
|||
statusInProcess =In Process
|
||||
statusCompleted =Completed
|
||||
|
||||
noEventsToImport=\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=\u4fdd\u5b58\u3059\u308b\u9078\u629e\u30a4\u30d9\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002
|
||||
aboutToImport=About to import %1$S event(s)\nfrom file "%2$S"\ninto calendar "%3$S".\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=About to import %1$S new event(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
# aboutToImport=%1$S \u306e\u30a4\u30d9\u30f3\u30c8\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u306b\u3064\u3044\u3066\u3002\n\u30a4\u30f3\u30dd\u30fc\u30c8\u524d\u306b\u3059\u3079\u3066\u306e\u65b0\u3057\u3044\u30a4\u30d9\u30f3\u30c8\u3092\u958b\u304d\u307e\u3059\u304b\uff1f
|
||||
aboutToImportDupes=\u91cd\u8907\u3059\u308b %1$S \u306e\u30a4\u30d9\u30f3\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\n\u3069\u3046\u6271\u3044\u307e\u3059\u304b\uff1f
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
# aboutToImportDupEvents=\u91cd\u8907\u3059\u308b %1$S \u306e\u30a4\u30d9\u30f3\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\n\u3069\u3046\u6271\u3044\u307e\u3059\u304b\uff1f
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=\u3059\u3079\u3066\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u306a\u3044
|
||||
importAll=\u3059\u3079\u3066\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b
|
||||
promptForEach=Prompt for each
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Veiksmas
|
|||
statusInProcess =Vyksta
|
||||
statusCompleted =Baigtas
|
||||
|
||||
noEventsToImport=N\u0117ra \u012fvyki\u0173, kurious b\u016bt\u0173 galima importuoti...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Pra\u0161om pa\u017eym\u0117ti \u012fvykius, kuriuos norite \u012fra\u0161yti.
|
||||
aboutToImport=Importuojami %1$S \u012fvykis(-iai)\nfrom file "%2$S"\ninto calendar "%3$S".\n\u005cnAr atverti kiekvieno \u012fvykio apra\u0161\u0105 prie\u0161 importuojant?
|
||||
aboutToImportDupes=About to import %1$S event(s) that are duplicates of events in your calendar.\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Importuojami %1$S \u012fvykis(-iai)\ninto calendar "%2$S"\nfrom file "%3$S".\n\u005cnAr atverti kiekvieno \u012fvykio apra\u0161\u0105 prie\u0161 importuojant?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Discard all
|
||||
importAll=Import all
|
||||
promptForEach=Prompt for each
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Handeling vereist
|
|||
statusInProcess =Bezig
|
||||
statusCompleted =Voltooid
|
||||
|
||||
noEventsToImport=Geen gebeurtenissen om te importeren...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Geen gebeurtenissen geselecteerd om op te slaan.
|
||||
aboutToImport=Op het punt importeren te beginnen van %1$S gebeurtenis(sen)\nfrom file "%2$S"\ninto calendar "%3$S".\nWilt u alle nieuw te importeren gebeurtenissen openen voor het importeren?
|
||||
aboutToImportDupes=Op het punt om %1$S gebeurtenis(sen) te importeren die duplikaten zijn van gebeurtenissen in uw kalendar.\nWat wilt u doen?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Op het punt importeren te beginnen van %1$S gebeurtenis(sen)\ninto calendar "%2$S"\nfrom file "%3$S".\nWilt u alle nieuw te importeren gebeurtenissen openen voor het importeren?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=Op het punt om %1$S gebeurtenis(sen) te importeren die duplikaten zijn van gebeurtenissen in uw kalendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWat wilt u doen?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Alle verwerpen
|
||||
importAll=Alle importeren
|
||||
promptForEach=Voor elke vragen
|
||||
|
|
|
@ -47,10 +47,19 @@ statusNeedsAction=Wymaga działania
|
|||
statusInProcess =Trwa
|
||||
statusCompleted =Wykonane
|
||||
|
||||
noEventsToImport=Brak wydarzeń do importu...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Nie zaznaczono wydarzeń do zapisania.
|
||||
aboutToImport=O importowaniu %1$S event(s)\nfrom file "%2$S"\ninto calendar "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupes=About to import %1$S event(s) that are duplicates of events in your calendar.\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=O importowaniu %1$S event(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Discard all
|
||||
importAll=Import all
|
||||
promptForEach=Prompt for each
|
||||
|
|
|
@ -49,10 +49,19 @@ statusNeedsAction=Necessita Atenção
|
|||
statusInProcess =Em Curso
|
||||
statusCompleted =Completo
|
||||
|
||||
noEventsToImport=Nenhum evento para importar...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Nenhum evento selecionado para salvar.
|
||||
aboutToImport=Prestes a importar %1$S evento(s)\nfrom file "%2$S"\ninto calendar "%3$S".\nVoce deseja abrir todos os novos eventos antes de serem importados?
|
||||
aboutToImportDupes=About to import %1$S event(s) that are duplicates of events in your calendar.\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Prestes a importar %1$S evento(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nVoce deseja abrir todos os novos eventos antes de serem importados?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Discard all
|
||||
importAll=Import all
|
||||
promptForEach=Prompt for each
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Zis\u0139\u0104ovanie akcie
|
|||
statusInProcess =V behu
|
||||
statusCompleted =Ukon\u010Den\u00E9
|
||||
|
||||
noEventsToImport=\u017Diadne udalosti k importu...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=\u017Diadne vybran\u00E9 udalosti k ulo\u017Eeniu.
|
||||
aboutToImport=Chyst\u00E1te sa importova\u0165 udalos\u0165(i).\nfrom file "%2$S"\ninto calendar "%3$S".\nChcete otvori\u0165 v\u0161etky novo importovan\u00E9 udalosti pred importom?
|
||||
aboutToImportDupes=Chyst\u00E1te sa importova\u0165 %1$S udalos\u0165(i), ktor\u00E9 s\u00FA duplik\u00E1tmi udalost\u00ED vo va\u0161om kalend\u00E1ri.\n\u010Co sa m\u00E1 urobi\u0165?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Chyst\u00E1m sa importova\u0165 udalos\u0165(i)\ninto calendar "%2$S"\nfrom file "%3$S".\nChcete otvori\u0165 v\u0161etky novo importovan\u00E9 udalosti pred importom?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=Chyst\u00E1m sa importova\u0165 %1$S udalos\u0165(i), ktor\u00E9 s\u00FA duplik\u00E1tmi udalost\u00ED vo va\u0161om kalend\u00E1ri,\ninto calendar "%2$S"\nfrom file "%3$S".\n\u010o sa m\u00E1 urobi\u0165?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Zahodi\u0165 v\u0161etky
|
||||
importAll=Importova\u0165 v\u0161etky
|
||||
promptForEach=Sp\u00FDta\u0165 sa na ka\u017Ed\u00FA
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Potrebuje poseg
|
|||
statusInProcess =Poteka
|
||||
statusCompleted =Končan
|
||||
|
||||
noEventsToImport=Ni dogodkov za uvoz...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Ni izbranih dogodkov za shranjevanje.
|
||||
aboutToImport=Pri\u010Denjam z uvozom %1$S dogodek(ov)\nfrom file "%2$S"\ninto calendar "%3$S".\n\u017Delite odpreti vse nove dogodke pred uvozom?
|
||||
aboutToImportDupes=Pri\u010Denjam z uvozom %1$S dogodek(ov), ki so dvojniki dogodkov v va\u0161em koledarju.\nKaj \u017Eelite narediti z njimi?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Pri\u010Denjam z uvozom %1$S dogodek(ov)\ninto calendar "%2$S"\nfrom file "%3$S".\n\u017Delite odpreti vse nove dogodke pred uvozom?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=Pri\u010Denjam z uvozom %1$S dogodek(ov), ki so dvojniki dogodkov v va\u0161em koledarju,\ninto calendar "%2$S"\nfrom file "%3$S".\nKaj \u017Eelite narediti z njimi?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Izpusti vse
|
||||
importAll=Uvozi vse
|
||||
promptForEach=Vpra\u0161aj za vsakega
|
||||
|
|
|
@ -49,10 +49,19 @@ statusNeedsAction=Kräver Åtgärd
|
|||
statusInProcess =Pågår
|
||||
statusCompleted =Färdig
|
||||
|
||||
noEventsToImport=Inga importerbara händelser...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=Inga händelser valda för att spara.
|
||||
aboutToImport=Kommer att importera %1$S händelse(r)\nfrom file "%2$S"\ninto calendar "%3$S".\nVill du öppna alla nya händelser för kontroll innan de läggs till?
|
||||
aboutToImportDupes=About to import %1$S event(s) that are duplicates of events in your calendar.\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Kommer att importera %1$S händelse(r)\ninto calendar "%2$S"\nfrom file "%3$S".\nVill du öppna alla nya händelser för kontroll innan de läggs till?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Discard all
|
||||
importAll=Import all
|
||||
promptForEach=Prompt for each
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Gerekli işlemler
|
|||
statusInProcess =Hazırlanan
|
||||
statusCompleted =Tamamlandı
|
||||
|
||||
noEventsToImport=Aktar\u0131lacak olay yok....
|
||||
noEventsToSave=Kaydolacak olay se\u00E7ilmedi.
|
||||
aboutToImport=%1$S olay i\u00E7e aktar\u0131ld\u0131.\nfrom file "%2$S"\n\u0130\u00E7e aktarmadan \u00F6nce b\u00FCt\u00FCn olaylar\u0131 a\u00E7mak ister misiniz?
|
||||
aboutToImportDupes=Takviminizdeki ayn\u0131 \u00E7ift %1$S olaylar\u0131 i\u00E7e aktar\u0131lacak.\nNe yapmak istiyorsunuz?
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=No events selected to save.
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=About to import %1$S new event(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Hepsini reddet
|
||||
importAll=Hepsi i\u00E7e aktar
|
||||
promptForEach=Hepsini tektek onayla
|
||||
|
|
|
@ -48,10 +48,19 @@ statusNeedsAction=Needs Action
|
|||
statusInProcess =In Process
|
||||
statusCompleted =Completed
|
||||
|
||||
noEventsToImport=\u017dane podawki za importowanje...
|
||||
noEventsOrTasksToImport=No events or tasks to import\nfrom file "%1$S".
|
||||
noEventsToSave=\u017dane podawki njewubrane za sk\u0142adowanje.
|
||||
aboutToImport=Wo importowanju %1$S podawk(ow)\nfrom file "%2$S"\ninto calendar "%3$S".\n\u005cnChce\u0107e w\u0161\u011b nowe podawki do importowanja wotewr\u011b\u0107?
|
||||
aboutToImportDupes=About to import %1$S event(s) that are duplicates of events in your calendar.\nWhat do you want to do?
|
||||
|
||||
# about to import x: "<br>into calendar y<br>from file z" (calendar more likely to wrong, so before file).
|
||||
aboutToImportNewEventsTitle=Import New Events
|
||||
aboutToImportNewEvents=Wo importowanju %1$S podawk(ow)\ninto calendar "%2$S"\nfrom file "%3$S".\n\u005cnChce\u0107e w\u0161\u011b nowe podawki do importowanja wotewr\u011b\u0107?
|
||||
aboutToImportDupEventsTitle=Import Duplicate Events
|
||||
aboutToImportDupEvents=About to import %1$S event(s) that are duplicates of events in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportNewTasksTitle=Import New Tasks
|
||||
aboutToImportNewTasks=About to import %1$S new task(s)\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
aboutToImportDupTasksTitle=Import Duplicate Tasks
|
||||
aboutToImportDupTasks=About to import %1$S task(s) that are duplicates of tasks in your calendar,\ninto calendar "%2$S"\nfrom file "%3$S".\nWhat do you want to do?
|
||||
|
||||
discardAll=Discard all
|
||||
importAll=Import all
|
||||
promptForEach=Prompt for each
|
||||
|
|
Загрузка…
Ссылка в новой задаче