summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-18 22:46:53 (UTC)
committer zautrix <zautrix>2005-01-18 22:46:53 (UTC)
commitbfb2947510c52f9c6b35c35786490f261adf30e3 (patch) (unidiff)
tree63b0efc7fcfb7715cf99cf8d8594ec5278926a77
parent7200aeadd415cf88b909c00d1414f212cf85b3df (diff)
downloadkdepimpi-bfb2947510c52f9c6b35c35786490f261adf30e3.zip
kdepimpi-bfb2947510c52f9c6b35c35786490f261adf30e3.tar.gz
kdepimpi-bfb2947510c52f9c6b35c35786490f261adf30e3.tar.bz2
another fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt8
-rw-r--r--bin/kdepim/kaddressbook/usertranslation.txt8
-rw-r--r--kaddressbook/xxport/vcard_xxport.cpp305
-rw-r--r--microkde/kdecore/klocale.cpp2
4 files changed, 165 insertions, 158 deletions
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index 7a63eed..2f449ef 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -640,71 +640,75 @@
640{ "Cards","Karten" }, 640{ "Cards","Karten" },
641{ "&Margin:","&Rand:" }, 641{ "&Margin:","&Rand:" },
642{ "Draw &borders","Zeichne Ränder" }, 642{ "Draw &borders","Zeichne Ränder" },
643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." }, 643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." },
644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." }, 644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." },
645{ "Sets the width of column separators","Sets the width of column separators" }, 645{ "Sets the width of column separators","Sets the width of column separators" },
646{ "&Layout","&Layout" }, 646{ "&Layout","&Layout" },
647{ "Show &empty fields","Zeige leere Felder" }, 647{ "Show &empty fields","Zeige leere Felder" },
648{ "Show field &labels","Zeige Feld Label" }, 648{ "Show field &labels","Zeige Feld Label" },
649{ "Be&havior","Ver&halten" }, 649{ "Be&havior","Ver&halten" },
650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" }, 650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" },
651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" }, 651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" },
652{ "Confirm Delete","Bestätige Löschen" }, 652{ "Confirm Delete","Bestätige Löschen" },
653{ "Edit Address Book Filter","Editiere Adressbuch Filter" }, 653{ "Edit Address Book Filter","Editiere Adressbuch Filter" },
654{ "Category rule","Kategorie Regel" }, 654{ "Category rule","Kategorie Regel" },
655{ "Include categories","Schließe Kategorien ein" }, 655{ "Include categories","Schließe Kategorien ein" },
656{ "Exclude categories","Schließe Kategorien aus" }, 656{ "Exclude categories","Schließe Kategorien aus" },
657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" }, 657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" },
658{ "public","Öffentlich" }, 658{ "public","Öffentlich" },
659{ "private","Privat" }, 659{ "private","Privat" },
660{ "confidential","Vertraulich" }, 660{ "confidential","Vertraulich" },
661{ "Configure Resources","Konfiguriere Resourcen" }, 661{ "Configure Resources","Konfiguriere Resourcen" },
662{ "Resource Configuration","Resource Konfiguration" }, 662{ "Resource Configuration","Resource Konfiguration" },
663{ "Resources","Resourcen" }, 663{ "Resources","Resourcen" },
664{ "Standard","Standard" }, 664{ "Standard","Standard" },
665{ "&Use as Standard","Setze als Standard" }, 665{ "&Use as Standard","Setze als Standard" },
666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" }, 666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" },
667{ "General Settings","Allgemeine Einstellungen" }, 667{ "General Settings","Allgemeine Einstellungen" },
668{ "Read-only","Nur-Lesen" }, 668{ "Read-only","Nur-Lesen" },
669{ "Include in sync","Schließe in Sync mit ein" }, 669{ "Include in sync","Schließe in Sync mit ein" },
670{ "%1 Resource Settings","%1 Resource Einstellungen" }, 670{ "%1 Resource Settings","%1 Resource Einstellungen" },
671{ "Format:","Format:" }, 671{ "Format:","Format:" },
672{ "Location:","Ort:" }, 672{ "Location:","Ort:" },
673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" }, 673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" },
674{ "Language","Sprache" }, 674{ "Language","Sprache" },
675{ "Time Format","Zeit Format" }, 675{ "Time Format","Zeit Format" },
676{ "Time Zone","Zeit Zone" }, 676{ "Time Zone","Zeit Zone" },
677{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" }, 677{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" },
678{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" }, 678{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" },
679{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" }, 679{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" },
680{ "Save settings","Speichere Einstellungen" }, 680{ "Save settings","Speichere Einstellungen" },
681{ "Save standard","Speichere Standard" }, 681{ "Save standard","Speichere Standard" },
682{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 682{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
683{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" }, 683{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" },
684{ "Data storage path","Daten Speicherpfad" }, 684{ "Data storage path","Daten Speicherpfad" },
685{ "Multiple Sync options","Multi Sync Optionen" }, 685{ "Multiple Sync options","Multi Sync Optionen" },
686{ "Sync algo options","Sync Ablauf Optionen" }, 686{ "Sync algo options","Sync Ablauf Optionen" },
687{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 687{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
688{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 688{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
689{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 689{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
690{ "Write back options","Optionen zum Zurückschreiben" }, 690{ "Write back options","Optionen zum Zurückschreiben" },
691{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 691{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
692{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 692{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
693{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 693{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
694{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 694{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
695{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 695{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
696{ "Time period","Zeitspanne" }, 696{ "Time period","Zeitspanne" },
697{ "From ","Von " }, 697{ "From ","Von " },
698{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 698{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
699{ " weeks in the future "," Wochen in der Zukunft " }, 699{ " weeks in the future "," Wochen in der Zukunft " },
700{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 700{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
701{ "Local temp file:","Lokale temp Datei:" }, 701{ "Local temp file:","Lokale temp Datei:" },
702{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 702{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
703{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 703{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
704{ "","" }, 704{ "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." },
705{ "","" }, 705{ "Sorry","Tut mir leid" },
706{ "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" },
707{ "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" },
708{ "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" },
709{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" },
706{ "","" }, 710{ "","" },
707{ "","" }, 711{ "","" },
708{ "","" }, 712{ "","" },
709{ "","" }, 713{ "","" },
710{ "","" }, \ No newline at end of file 714{ "","" }, \ No newline at end of file
diff --git a/bin/kdepim/kaddressbook/usertranslation.txt b/bin/kdepim/kaddressbook/usertranslation.txt
index 7a63eed..4c7a93c 100644
--- a/bin/kdepim/kaddressbook/usertranslation.txt
+++ b/bin/kdepim/kaddressbook/usertranslation.txt
@@ -640,71 +640,75 @@
640{ "Cards","Karten" }, 640{ "Cards","Karten" },
641{ "&Margin:","&Rand:" }, 641{ "&Margin:","&Rand:" },
642{ "Draw &borders","Zeichne Ränder" }, 642{ "Draw &borders","Zeichne Ränder" },
643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." }, 643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." },
644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." }, 644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." },
645{ "Sets the width of column separators","Sets the width of column separators" }, 645{ "Sets the width of column separators","Sets the width of column separators" },
646{ "&Layout","&Layout" }, 646{ "&Layout","&Layout" },
647{ "Show &empty fields","Zeige leere Felder" }, 647{ "Show &empty fields","Zeige leere Felder" },
648{ "Show field &labels","Zeige Feld Label" }, 648{ "Show field &labels","Zeige Feld Label" },
649{ "Be&havior","Ver&halten" }, 649{ "Be&havior","Ver&halten" },
650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" }, 650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" },
651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" }, 651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" },
652{ "Confirm Delete","Bestätige Löschen" }, 652{ "Confirm Delete","Bestätige Löschen" },
653{ "Edit Address Book Filter","Editiere Adressbuch Filter" }, 653{ "Edit Address Book Filter","Editiere Adressbuch Filter" },
654{ "Category rule","Kategorie Regel" }, 654{ "Category rule","Kategorie Regel" },
655{ "Include categories","Schließe Kategorien ein" }, 655{ "Include categories","Schließe Kategorien ein" },
656{ "Exclude categories","Schließe Kategorien aus" }, 656{ "Exclude categories","Schließe Kategorien aus" },
657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" }, 657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" },
658{ "public","Öffentlich" }, 658{ "public","Öffentlich" },
659{ "private","Privat" }, 659{ "private","Privat" },
660{ "confidential","Vertraulich" }, 660{ "confidential","Vertraulich" },
661{ "Configure Resources","Konfiguriere Resourcen" }, 661{ "Configure Resources","Konfiguriere Resourcen" },
662{ "Resource Configuration","Resource Konfiguration" }, 662{ "Resource Configuration","Resource Konfiguration" },
663{ "Resources","Resourcen" }, 663{ "Resources","Resourcen" },
664{ "Standard","Standard" }, 664{ "Standard","Standard" },
665{ "&Use as Standard","Setze als Standard" }, 665{ "&Use as Standard","Setze als Standard" },
666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" }, 666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" },
667{ "General Settings","Allgemeine Einstellungen" }, 667{ "General Settings","Allgemeine Einstellungen" },
668{ "Read-only","Nur-Lesen" }, 668{ "Read-only","Nur-Lesen" },
669{ "Include in sync","Schließe in Sync mit ein" }, 669{ "Include in sync","Schließe in Sync mit ein" },
670{ "%1 Resource Settings","%1 Resource Einstellungen" }, 670{ "%1 Resource Settings","%1 Resource Einstellungen" },
671{ "Format:","Format:" }, 671{ "Format:","Format:" },
672{ "Location:","Ort:" }, 672{ "Location:","Ort:" },
673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" }, 673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" },
674{ "Language","Sprache" }, 674{ "Language","Sprache" },
675{ "Time Format","Zeit Format" }, 675{ "Time Format","Zeit Format" },
676{ "Time Zone","Zeit Zone" }, 676{ "Time Zone","Zeit Zone" },
677{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" }, 677{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" },
678{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" }, 678{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" },
679{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" }, 679{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" },
680{ "Save settings","Speichere Einstellungen" }, 680{ "Save settings","Speichere Einstellungen" },
681{ "Save standard","Speichere Standard" }, 681{ "Save standard","Speichere Standard" },
682{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 682{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
683{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" }, 683{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" },
684{ "Data storage path","Daten Speicherpfad" }, 684{ "Data storage path","Daten Speicherpfad" },
685{ "Multiple Sync options","Multi Sync Optionen" }, 685{ "Multiple Sync options","Multi Sync Optionen" },
686{ "Sync algo options","Sync Ablauf Optionen" }, 686{ "Sync algo options","Sync Ablauf Optionen" },
687{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 687{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
688{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 688{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
689{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 689{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
690{ "Write back options","Optionen zum Zurückschreiben" }, 690{ "Write back options","Optionen zum Zurückschreiben" },
691{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 691{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
692{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 692{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
693{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 693{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
694{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 694{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
695{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 695{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
696{ "Time period","Zeitspanne" }, 696{ "Time period","Zeitspanne" },
697{ "From ","Von " }, 697{ "From ","Von " },
698{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 698{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
699{ " weeks in the future "," Wochen in der Zukunft " }, 699{ " weeks in the future "," Wochen in der Zukunft " },
700{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 700{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
701{ "Local temp file:","Lokale temp Datei:" }, 701{ "Local temp file:","Lokale temp Datei:" },
702{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 702{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
703{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 703{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
704{ "","" }, 704{ "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." },
705{ "","" }, 705{ "Sorry","Tut mir leid" },
706{ "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" },
707{ "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" },
708{ "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\n keine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" },
709{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" },
706{ "","" }, 710{ "","" },
707{ "","" }, 711{ "","" },
708{ "","" }, 712{ "","" },
709{ "","" }, 713{ "","" },
710{ "","" }, \ No newline at end of file 714{ "","" }, \ No newline at end of file
diff --git a/kaddressbook/xxport/vcard_xxport.cpp b/kaddressbook/xxport/vcard_xxport.cpp
index acf6419..c56be8b 100644
--- a/kaddressbook/xxport/vcard_xxport.cpp
+++ b/kaddressbook/xxport/vcard_xxport.cpp
@@ -1,256 +1,255 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25 Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26 Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28 $Id$
29*/ 29*/
30 30
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qfileinfo.h>
33 34
34#include <kabc/vcardconverter.h> 35#include <kabc/vcardconverter.h>
35#include <kabc/vcardparser/vcardtool.h> 36#include <kabc/vcardparser/vcardtool.h>
36#include <kfiledialog.h> 37#include <kfiledialog.h>
37#ifndef KAB_EMBEDDED 38#ifndef KAB_EMBEDDED
38#include <kio/netaccess.h> 39#include <kio/netaccess.h>
39#endif //KAB_EMBEDDED 40#endif //KAB_EMBEDDED
40 41
41#include <klocale.h> 42#include <klocale.h>
42#include <kmessagebox.h> 43#include <kmessagebox.h>
43#include <ktempfile.h> 44#include <ktempfile.h>
44#include <kurl.h> 45#include <kurl.h>
45 46
46#include "xxportmanager.h" 47#include "xxportmanager.h"
47 48
48#include "vcard_xxport.h" 49#include "vcard_xxport.h"
49 50
50#ifndef KAB_EMBEDDED 51#ifndef KAB_EMBEDDED
51 52
52class VCardXXPortFactory : public XXPortFactory 53class VCardXXPortFactory : public XXPortFactory
53{ 54{
54 public: 55public:
55 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name ) 56 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
56 { 57 {
57 return new VCardXXPort( ab, parent, name ); 58 return new VCardXXPort( ab, parent, name );
58 } 59 }
59}; 60};
60#endif //KAB_EMBEDDED 61#endif //KAB_EMBEDDED
61 62
62 63
63extern "C" 64extern "C"
64{ 65{
65#ifndef KAB_EMBEDDED 66#ifndef KAB_EMBEDDED
66 void *init_libkaddrbk_vcard_xxport() 67 void *init_libkaddrbk_vcard_xxport()
67#else //KAB_EMBEDDED 68#else //KAB_EMBEDDED
68 void *init_microkaddrbk_vcard_xxport() 69 void *init_microkaddrbk_vcard_xxport()
69#endif //KAB_EMBEDDED 70#endif //KAB_EMBEDDED
70 { 71 {
71 return ( new VCardXXPortFactory() ); 72 return ( new VCardXXPortFactory() );
72 } 73 }
73} 74}
74 75
75 76
76VCardXXPort::VCardXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name ) 77VCardXXPort::VCardXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
77 : XXPortObject( ab, parent, name ) 78 : XXPortObject( ab, parent, name )
78{ 79{
79 createImportAction( i18n( "Import vCard..." ) ); 80 createImportAction( i18n( "Import vCard..." ) );
80//US KABC::VCardConverter does not support the export of 2.1 addressbooks. 81 //US KABC::VCardConverter does not support the export of 2.1 addressbooks.
81//US createExportAction( i18n( "Export vCard 2.1..." ), "v21" ); 82 //US createExportAction( i18n( "Export vCard 2.1..." ), "v21" );
82 createExportAction( i18n( "Export vCard 3.0..." ), "v30" ); 83 createExportAction( i18n( "Export vCard 3.0..." ), "v30" );
83} 84}
84 85
85bool VCardXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data ) 86bool VCardXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
86{ 87{
87 QString name; 88 QString name;
88 89
89 if ( list.count() == 1 ) 90 if ( list.count() == 1 )
90 name = list[ 0 ].givenName() + "_" + list[ 0 ].familyName() + ".vcf"; 91 name = list[ 0 ].givenName() + "_" + list[ 0 ].familyName() + ".vcf";
91 else 92 else
92 name = "addressbook.vcf"; 93 name = "addressbook.vcf";
93 94
94#ifndef KAB_EMBEDDED 95#ifndef KAB_EMBEDDED
95 QString fileName = KFileDialog::getSaveFileName( name ); 96 QString fileName = KFileDialog::getSaveFileName( name );
96#else //KAB_EMBEDDED 97#else //KAB_EMBEDDED
97 QString fileName = KFileDialog::getSaveFileName( name, i18n("Save file"), parentWidget() ); 98 QString fileName = KFileDialog::getSaveFileName( name, i18n("Save file"), parentWidget() );
98#endif //KAB_EMBEDDED 99#endif //KAB_EMBEDDED
99 100
100 if ( fileName.isEmpty() ) 101 if ( fileName.isEmpty() )
101 return false; 102 return false;
102 103
103 QFile outFile( fileName ); 104 QFile outFile( fileName );
104 if ( !outFile.open( IO_WriteOnly ) ) { 105 if ( !outFile.open( IO_WriteOnly ) ) {
105 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" ); 106 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" );
106 KMessageBox::error( parentWidget(), text.arg( fileName ) ); 107 KMessageBox::error( parentWidget(), text.arg( fileName ) );
107 return false; 108 return false;
108 } 109 }
109 110
110 QTextStream t( &outFile ); 111 QTextStream t( &outFile );
111 t.setEncoding( QTextStream::UnicodeUTF8 ); 112 t.setEncoding( QTextStream::UnicodeUTF8 );
112 113
113 KABC::Addressee::List::ConstIterator it; 114 KABC::Addressee::List::ConstIterator it;
114 for ( it = list.begin(); it != list.end(); ++it ) { 115 for ( it = list.begin(); it != list.end(); ++it ) {
115 KABC::VCardConverter converter; 116 KABC::VCardConverter converter;
116 QString vcard; 117 QString vcard;
117 118
118 KABC::VCardConverter::Version version; 119 KABC::VCardConverter::Version version;
119 if ( data == "v21" ) 120 if ( data == "v21" )
120 version = KABC::VCardConverter::v2_1; 121 version = KABC::VCardConverter::v2_1;
121 else 122 else
122 version = KABC::VCardConverter::v3_0; 123 version = KABC::VCardConverter::v3_0;
123 124
124 converter.addresseeToVCard( *it, vcard, version ); 125 converter.addresseeToVCard( *it, vcard, version );
125 t << vcard << "\r\n\r\n"; 126 t << vcard << "\r\n\r\n";
126 } 127 }
127 128
128 outFile.close(); 129 outFile.close();
129 130
130 return true; 131 return true;
131} 132}
132 133
133KABC::AddresseeList VCardXXPort::importContacts( const QString& ) const 134KABC::AddresseeList VCardXXPort::importContacts( const QString& ) const
134{ 135{
135 QString fileName; 136 QString fileName;
136 KABC::AddresseeList addrList; 137 KABC::AddresseeList addrList;
137 KURL url; 138 KURL url;
138 139
139#ifndef KAB_EMBEDDED 140#ifndef KAB_EMBEDDED
140 if ( !XXPortManager::importData.isEmpty() ) 141 if ( !XXPortManager::importData.isEmpty() )
141 addrList = parseVCard( XXPortManager::importData ); 142 addrList = parseVCard( XXPortManager::importData );
142 else { 143 else {
143 if ( XXPortManager::importURL.isEmpty() ) 144 if ( XXPortManager::importURL.isEmpty() )
144 { 145 {
145 url = KFileDialog::getLoadFileName( QString::null, i18n("Select vCard to Import"), parentWidget() ); 146 url = KFileDialog::getLoadFileName( QString::null, i18n("Select vCard to Import"), parentWidget() );
146 } 147 }
147 else 148 else
148 url = XXPortManager::importURL; 149 url = XXPortManager::importURL;
149 150 if ( url.isEmpty() )
150 if ( url.isEmpty() ) 151 return addrList;
151 return addrList; 152 QString caption( i18n( "vCard Import Failed" ) );
152 153 if ( KIO::NetAccess::download( url, fileName ) ) {
153 QString caption( i18n( "vCard Import Failed" ) ); 154 QFile file( fileName );
154 if ( KIO::NetAccess::download( url, fileName ) ) { 155
155 QFile file( fileName ); 156 file.open( IO_ReadOnly );
156 157 QByteArray rawData = file.readAll();
157 file.open( IO_ReadOnly ); 158 file.close();
158 QByteArray rawData = file.readAll(); 159
159 file.close(); 160 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
160 161 addrList = parseVCard( data );
161 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); 162
162 addrList = parseVCard( data ); 163 if ( !url.isLocalFile() )
163 164 KIO::NetAccess::removeTempFile( fileName );
164 if ( !url.isLocalFile() ) 165
165 KIO::NetAccess::removeTempFile( fileName ); 166 } else {
167 QString text = i18n( "<qt>Unable to access <b>%1</b>.</qt>" );
168 KMessageBox::error( parentWidget(), text.arg( url.url() ), caption );
169 }
166 170
167 } else {
168 QString text = i18n( "<qt>Unable to access <b>%1</b>.</qt>" );
169 KMessageBox::error( parentWidget(), text.arg( url.url() ), caption );
170 } 171 }
171 172
172 }
173
174 173
175#else //KAB_EMBEDDED 174#else //KAB_EMBEDDED
176 175
177 176
178 if ( !XXPortManager::importData.isEmpty() ) 177 if ( !XXPortManager::importData.isEmpty() )
179 addrList = parseVCard( XXPortManager::importData ); 178 addrList = parseVCard( XXPortManager::importData );
180 else { 179 else {
181 if ( XXPortManager::importURL.isEmpty() ) 180 if ( XXPortManager::importURL.isEmpty() )
182 { 181 {
183 fileName = KFileDialog::getOpenFileName( QString::null, i18n("Select vCard to Import"), parentWidget() ); 182 fileName = KFileDialog::getOpenFileName( QString::null, i18n("Select vCard to Import"), parentWidget() );
184 if ( fileName.isEmpty() ) 183
185 return addrList; 184 if ( fileName.isEmpty() )
186 185 return addrList;
187 } 186 QFileInfo fi ( fileName );
188 else 187 if ( !fi.isFile() )
189 { 188 return addrList;
190//US url = XXPortManager::importURL; 189 }
191 qDebug("VCardXXPort::importContacts Urls at the moment not supported"); 190 else
192 if ( url.isEmpty() ) 191 {
193 return addrList; 192 //US url = XXPortManager::importURL;
193 qDebug("VCardXXPort::importContacts Urls at the moment not supported");
194 if ( url.isEmpty() )
195 return addrList;
196
197 }
198 QFile file( fileName );
199 if ( file.open( IO_ReadOnly ) ) {
200 QByteArray rawData = file.readAll();
201 file.close();
202 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
203 addrList = parseVCard( data );
204 }
194 205
195 } 206 }
196
197
198 QFile file( fileName );
199
200 file.open( IO_ReadOnly );
201 QByteArray rawData = file.readAll();
202 file.close();
203
204 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
205 addrList = parseVCard( data );
206
207 }
208#endif //KAB_EMBEDDED 207#endif //KAB_EMBEDDED
209 208
210 return addrList; 209 return addrList;
211} 210}
212 211
213KABC::AddresseeList VCardXXPort::parseVCard( const QString &data ) const 212KABC::AddresseeList VCardXXPort::parseVCard( const QString &data ) const
214{ 213{
215 214
216 KABC::VCardTool tool; 215 KABC::VCardTool tool;
217 KABC::AddresseeList addrList; 216 KABC::AddresseeList addrList;
218 addrList = tool.parseVCards( data ); 217 addrList = tool.parseVCards( data );
219 // LR : I switched to the code, which is in current cvs HEAD 218 // LR : I switched to the code, which is in current cvs HEAD
220 /* 219 /*
221 uint numVCards = data.contains( "BEGIN:VCARD", false ); 220 uint numVCards = data.contains( "BEGIN:VCARD", false );
222 QStringList dataList = QStringList::split( "\r\n\r\n", data ); 221 QStringList dataList = QStringList::split( "\r\n\r\n", data );
223 222
224 for ( uint i = 0; i < numVCards && i < dataList.count(); ++i ) { 223 for ( uint i = 0; i < numVCards && i < dataList.count(); ++i ) {
225 KABC::Addressee addr; 224 KABC::Addressee addr;
226 bool ok = false; 225 bool ok = false;
227 226
228 if ( dataList[ i ].contains( "VERSION:3.0" ) ) 227 if ( dataList[ i ].contains( "VERSION:3.0" ) )
229 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v3_0 ); 228 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v3_0 );
230 else if ( dataList[ i ].contains( "VERSION:2.1" ) ) 229 else if ( dataList[ i ].contains( "VERSION:2.1" ) )
231 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v2_1 ); 230 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v2_1 );
232 else { 231 else {
233 KMessageBox::sorry( parentWidget(), i18n( "Not supported vCard version." ) ); 232 KMessageBox::sorry( parentWidget(), i18n( "Not supported vCard version." ) );
234 continue; 233 continue;
235 } 234 }
236 235
237 if ( !addr.isEmpty() && ok ) 236 if ( !addr.isEmpty() && ok )
238 addrList.append( addr ); 237 addrList.append( addr );
239 else { 238 else {
240 QString text = i18n( "The selected file does not include a valid vCard. " 239 QString text = i18n( "The selected file does not include a valid vCard. "
241 "Please check the file and try again." ); 240 "Please check the file and try again." );
242 KMessageBox::sorry( parentWidget(), text ); 241 KMessageBox::sorry( parentWidget(), text );
242 }
243 }
244 */
245 if ( addrList.isEmpty() ) {
246 QString text = i18n( "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n" );
247 KMessageBox::sorry( parentWidget(), text );
243 } 248 }
244 } 249 return addrList;
245 */
246 if ( addrList.isEmpty() ) {
247 QString text = i18n( "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n" );
248 KMessageBox::sorry( parentWidget(), text );
249 }
250 return addrList;
251} 250}
252 251
253 252
254#ifndef KAB_EMBEDDED 253#ifndef KAB_EMBEDDED
255#include "vcard_xxport.moc" 254#include "vcard_xxport.moc"
256#endif //KAB_EMBEDDED 255#endif //KAB_EMBEDDED
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp
index 7f31ab1..aec74fa 100644
--- a/microkde/kdecore/klocale.cpp
+++ b/microkde/kdecore/klocale.cpp
@@ -1,75 +1,75 @@
1#include <qregexp.h> 1#include <qregexp.h>
2#include <qapplication.h> 2#include <qapplication.h>
3 3
4#include "kdebug.h" 4#include "kdebug.h"
5#include "kcalendarsystemgregorian.h" 5#include "kcalendarsystemgregorian.h"
6 6
7#include "klocale.h" 7#include "klocale.h"
8 8
9#include <qstringlist.h> 9#include <qstringlist.h>
10 10
11//#define COLLECT_TRANSLATION 11#define COLLECT_TRANSLATION
12 12
13 13
14QDict<QString> *mLocaleDict = 0; 14QDict<QString> *mLocaleDict = 0;
15void setLocaleDict( QDict<QString> * dict ) 15void setLocaleDict( QDict<QString> * dict )
16{ 16{
17 mLocaleDict = dict; 17 mLocaleDict = dict;
18 18
19} 19}
20 20
21#ifdef COLLECT_TRANSLATION 21#ifdef COLLECT_TRANSLATION
22 22
23QStringList missingTrans; 23QStringList missingTrans;
24QStringList existingTrans1; 24QStringList existingTrans1;
25QStringList existingTrans2; 25QStringList existingTrans2;
26 26
27void addMissing(const char *text) 27void addMissing(const char *text)
28{ 28{
29 29
30 QString mis ( text ); 30 QString mis ( text );
31 if ( !missingTrans.contains( mis ) ) 31 if ( !missingTrans.contains( mis ) )
32 missingTrans.append(mis); 32 missingTrans.append(mis);
33 33
34} 34}
35void addExist(const char *text,QString trans ) 35void addExist(const char *text,QString trans )
36{ 36{
37 //return; 37 //return;
38 QString mis ( text ); 38 QString mis ( text );
39 if ( !existingTrans1.contains( mis ) ) { 39 if ( !existingTrans1.contains( mis ) ) {
40 existingTrans1.append(mis); 40 existingTrans1.append(mis);
41 existingTrans2.append(trans); 41 existingTrans2.append(trans);
42 42
43 } 43 }
44 44
45} 45}
46 46
47#include <qfile.h> 47#include <qfile.h>
48#include <qtextstream.h> 48#include <qtextstream.h>
49#include <qtextcodec.h> 49#include <qtextcodec.h>
50#endif 50#endif
51void dumpMissing() 51void dumpMissing()
52{ 52{
53#ifdef COLLECT_TRANSLATION 53#ifdef COLLECT_TRANSLATION
54 QString fileName = "/tmp/usernewtrans.txt"; 54 QString fileName = "/tmp/usernewtrans.txt";
55 QFile file( fileName ); 55 QFile file( fileName );
56 if (!file.open( IO_WriteOnly ) ) { 56 if (!file.open( IO_WriteOnly ) ) {
57 return ; 57 return ;
58 } 58 }
59 QTextStream ts( &file ); 59 QTextStream ts( &file );
60 ts.setCodec( QTextCodec::codecForName("utf8") ); 60 ts.setCodec( QTextCodec::codecForName("utf8") );
61 61
62 int i; 62 int i;
63 for ( i = 0; i< missingTrans.count(); ++i ) { 63 for ( i = 0; i< missingTrans.count(); ++i ) {
64 64
65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" ); 65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" );
66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n"; 66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n";
67 67
68 } 68 }
69 file.close(); 69 file.close();
70 { 70 {
71 QString fileName = "/tmp/usertrans.txt"; 71 QString fileName = "/tmp/usertrans.txt";
72 QFile file( fileName ); 72 QFile file( fileName );
73 if (!file.open( IO_WriteOnly ) ) { 73 if (!file.open( IO_WriteOnly ) ) {
74 return ; 74 return ;
75 } 75 }