summaryrefslogtreecommitdiffabout
path: root/microkde/kdecore/klocale.cpp
Unidiff
Diffstat (limited to 'microkde/kdecore/klocale.cpp') (more/less context) (show whitespace changes)
-rw-r--r--microkde/kdecore/klocale.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp
index 1d8ae9f..dd310fa 100644
--- a/microkde/kdecore/klocale.cpp
+++ b/microkde/kdecore/klocale.cpp
@@ -1,100 +1,101 @@
1#include <qregexp.h> 1#include <qregexp.h>
2#include <qapplication.h> 2#include <qapplication.h>
3#include <QDesktopWidget>
3 4
4#include "kdebug.h" 5#include "kdebug.h"
5#include "kcalendarsystemgregorian.h" 6#include "kcalendarsystemgregorian.h"
6 7
7#include "klocale.h" 8#include "klocale.h"
8 9
9#include <qstringlist.h> 10#include <qstringlist.h>
10 11
11//#define COLLECT_TRANSLATION 12//#define COLLECT_TRANSLATION
12 13
13 14
14QDict<QString> *mLocaleDict = 0; 15Q3Dict<QString> *mLocaleDict = 0;
15void setLocaleDict( QDict<QString> * dict ) 16void setLocaleDict( Q3Dict<QString> * dict )
16{ 17{
17 mLocaleDict = dict; 18 mLocaleDict = dict;
18 19
19} 20}
20 21
21#ifdef COLLECT_TRANSLATION 22#ifdef COLLECT_TRANSLATION
22 23
23QStringList missingTrans; 24QStringList missingTrans;
24QStringList existingTrans1; 25QStringList existingTrans1;
25QStringList existingTrans2; 26QStringList existingTrans2;
26 27
27void addMissing(const char *text) 28void addMissing(const char *text)
28{ 29{
29 30
30 QString mis ( text ); 31 QString mis ( text );
31 if ( !missingTrans.contains( mis ) ) 32 if ( !missingTrans.contains( mis ) )
32 missingTrans.append(mis); 33 missingTrans.append(mis);
33 34
34} 35}
35void addExist(const char *text,QString trans ) 36void addExist(const char *text,QString trans )
36{ 37{
37 //return; 38 //return;
38 QString mis ( text ); 39 QString mis ( text );
39 if ( !existingTrans1.contains( mis ) ) { 40 if ( !existingTrans1.contains( mis ) ) {
40 existingTrans1.append(mis); 41 existingTrans1.append(mis);
41 existingTrans2.append(trans); 42 existingTrans2.append(trans);
42 43
43 } 44 }
44 45
45} 46}
46 47
47#include <qfile.h> 48#include <qfile.h>
48#include <qtextstream.h> 49#include <q3textstream.h>
49#include <qtextcodec.h> 50#include <qtextcodec.h>
50#endif 51#endif
51void dumpMissing() 52void dumpMissing()
52{ 53{
53#ifdef COLLECT_TRANSLATION 54#ifdef COLLECT_TRANSLATION
54 QString fileName = "/tmp/usernewtrans.txt"; 55 QString fileName = "/tmp/usernewtrans.txt";
55 QFile file( fileName ); 56 QFile file( fileName );
56 if (!file.open( IO_WriteOnly ) ) { 57 if (!file.open( QIODevice::WriteOnly ) ) {
57 return ; 58 return ;
58 } 59 }
59 QTextStream ts( &file ); 60 Q3TextStream ts( &file );
60 ts.setCodec( QTextCodec::codecForName("utf8") ); 61 ts.setCodec( QTextCodec::codecForName("utf8") );
61 62
62 int i; 63 int i;
63 for ( i = 0; i< missingTrans.count(); ++i ) { 64 for ( i = 0; i< missingTrans.count(); ++i ) {
64 65
65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" ); 66 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" );
66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n"; 67 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n";
67 68
68 } 69 }
69 file.close(); 70 file.close();
70 { 71 {
71 QString fileName = "/tmp/usertrans.txt"; 72 QString fileName = "/tmp/usertrans.txt";
72 QFile file( fileName ); 73 QFile file( fileName );
73 if (!file.open( IO_WriteOnly ) ) { 74 if (!file.open( QIODevice::WriteOnly ) ) {
74 return ; 75 return ;
75 } 76 }
76 QTextStream ts( &file ); 77 Q3TextStream ts( &file );
77 ts.setCodec( QTextCodec::codecForName("utf8") ); 78 ts.setCodec( QTextCodec::codecForName("utf8") );
78 79
79 int i; 80 int i;
80 for ( i = 0; i< existingTrans1.count(); ++i ) { 81 for ( i = 0; i< existingTrans1.count(); ++i ) {
81 82
82 QString text = existingTrans1[i].replace( QRegExp("\n"),"\\n" ); 83 QString text = existingTrans1[i].replace( QRegExp("\n"),"\\n" );
83 QString text2 = existingTrans2[i].replace( QRegExp("\n"),"\\n" ); 84 QString text2 = existingTrans2[i].replace( QRegExp("\n"),"\\n" );
84 ts << "{ \""<<text<< "\",\""<< text2 <<"\" },\n"; 85 ts << "{ \""<<text<< "\",\""<< text2 <<"\" },\n";
85 86
86 } 87 }
87 file.close(); 88 file.close();
88 } 89 }
89#endif 90#endif
90} 91}
91QString i18n(const char *text) 92QString i18n(const char *text)
92{ 93{
93 if ( ! mLocaleDict ) { 94 if ( ! mLocaleDict ) {
94#ifdef COLLECT_TRANSLATION 95#ifdef COLLECT_TRANSLATION
95 addMissing( text ); 96 addMissing( text );
96#endif 97#endif
97 return QString( text ); 98 return QString( text );
98 } 99 }
99 else { 100 else {
100 QString* ret = mLocaleDict->find(QString(text)) ; 101 QString* ret = mLocaleDict->find(QString(text)) ;
@@ -446,49 +447,49 @@ QString KLocale::formatDate(const QDate &pDate, bool shortFormat, IntDateFormat
446 break; 447 break;
447 default: 448 default:
448 buffer[index++] = rst.at( format_index ); 449 buffer[index++] = rst.at( format_index );
449 break; 450 break;
450 } 451 }
451 escape = false; 452 escape = false;
452 } 453 }
453 } 454 }
454 QString ret( buffer, index ); 455 QString ret( buffer, index );
455 delete [] buffer; 456 delete [] buffer;
456 return ret; 457 return ret;
457} 458}
458 459
459QString KLocale::formatDateTime(const QDateTime &pDateTime, 460QString KLocale::formatDateTime(const QDateTime &pDateTime,
460 bool shortFormat, 461 bool shortFormat,
461 bool includeSeconds, 462 bool includeSeconds,
462 IntDateFormat intIntDateFormat) const 463 IntDateFormat intIntDateFormat) const
463{ 464{
464 QString format("%1 %2"); 465 QString format("%1 %2");
465 466
466 if ( intIntDateFormat == Default ) 467 if ( intIntDateFormat == Default )
467 format = "%1 %2"; 468 format = "%1 %2";
468 else if ( intIntDateFormat == Format1 ) 469 else if ( intIntDateFormat == Format1 )
469 format = "%1 %2"; 470 format = "%1 %2";
470 else if ( intIntDateFormat == ISODate ) 471 else if ( intIntDateFormat == Qt::ISODate )
471 format = "%1T%2"; 472 format = "%1T%2";
472 473
473 QString res = format.arg(formatDate( pDateTime.date(), shortFormat, intIntDateFormat )) 474 QString res = format.arg(formatDate( pDateTime.date(), shortFormat, intIntDateFormat ))
474 .arg(formatTime( pDateTime.time(), includeSeconds , intIntDateFormat )); 475 .arg(formatTime( pDateTime.time(), includeSeconds , intIntDateFormat ));
475 476
476 //qDebug("KLocale::formatDateTime transformed %s, into %s", pDateTime.toString().latin1(), res.latin1() ); 477 //qDebug("KLocale::formatDateTime transformed %s, into %s", pDateTime.toString().latin1(), res.latin1() );
477 478
478 return res; 479 return res;
479} 480}
480 481
481QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const 482QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const
482{ 483{
483 return formatDateTime(pDateTime, true, true, intIntDateFormat); 484 return formatDateTime(pDateTime, true, true, intIntDateFormat);
484} 485}
485 486
486QDate KLocale::readDate(const QString &intstr, bool* ok) const 487QDate KLocale::readDate(const QString &intstr, bool* ok) const
487{ 488{
488 QDate date; 489 QDate date;
489 date = readDate(intstr, true, ok); 490 date = readDate(intstr, true, ok);
490 if (date.isValid()) return date; 491 if (date.isValid()) return date;
491 return readDate(intstr, false, ok); 492 return readDate(intstr, false, ok);
492} 493}
493 494
494QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const 495QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const
@@ -506,49 +507,49 @@ QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) con
506 int year = QDate::currentDate().year(); 507 int year = QDate::currentDate().year();
507 uint strpos = 0; 508 uint strpos = 0;
508 uint fmtpos = 0; 509 uint fmtpos = 0;
509 510
510 while (fmt.length() > fmtpos || str.length() > strpos) 511 while (fmt.length() > fmtpos || str.length() > strpos)
511 { 512 {
512 if ( !(fmt.length() > fmtpos && str.length() > strpos) ) 513 if ( !(fmt.length() > fmtpos && str.length() > strpos) )
513 goto error; 514 goto error;
514 515
515 QChar c = fmt.at(fmtpos++); 516 QChar c = fmt.at(fmtpos++);
516 517
517 if (c != '%') { 518 if (c != '%') {
518 if (c.isSpace()) 519 if (c.isSpace())
519 strpos++; 520 strpos++;
520 else if (c != str.at(strpos++)) 521 else if (c != str.at(strpos++))
521 goto error; 522 goto error;
522 continue; 523 continue;
523 } 524 }
524 525
525 // remove space at the begining 526 // remove space at the begining
526 if (str.length() > strpos && str.at(strpos).isSpace()) 527 if (str.length() > strpos && str.at(strpos).isSpace())
527 strpos++; 528 strpos++;
528 529
529 c = fmt.at(fmtpos++); 530 c = fmt.at(fmtpos++);
530 switch (c) 531 switch (c.unicode())
531 { 532 {
532 case 'a': 533 case 'a':
533 case 'A': 534 case 'A':
534 // this will just be ignored 535 // this will just be ignored
535 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 536 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
536 for (int j = 1; j < 8; j++) { 537 for (int j = 1; j < 8; j++) {
537 QString s = weekDayName(j, c == 'a').lower(); 538 QString s = weekDayName(j, c == 'a').lower();
538 int len = s.length(); 539 int len = s.length();
539 if (str.mid(strpos, len) == s) 540 if (str.mid(strpos, len) == s)
540 strpos += len; 541 strpos += len;
541 } 542 }
542 break; 543 break;
543 } 544 }
544 case 'b': 545 case 'b':
545 case 'B': 546 case 'B':
546 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 547 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
547 for (int j = 1; j < 13; j++) { 548 for (int j = 1; j < 13; j++) {
548 QString s = monthName(j, c == 'b').lower(); 549 QString s = monthName(j, c == 'b').lower();
549 int len = s.length(); 550 int len = s.length();
550 if (str.mid(strpos, len) == s) { 551 if (str.mid(strpos, len) == s) {
551 month = j; 552 month = j;
552 strpos += len; 553 strpos += len;
553 } 554 }
554 } 555 }
@@ -617,49 +618,49 @@ QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const
617 bool pm = false; 618 bool pm = false;
618 uint strpos = 0; 619 uint strpos = 0;
619 uint Formatpos = 0; 620 uint Formatpos = 0;
620 621
621 while (Format.length() > Formatpos || str.length() > strpos) 622 while (Format.length() > Formatpos || str.length() > strpos)
622 { 623 {
623 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error; 624 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error;
624 625
625 QChar c = Format.at(Formatpos++); 626 QChar c = Format.at(Formatpos++);
626 627
627 if (c != '%') 628 if (c != '%')
628 { 629 {
629 if (c.isSpace()) 630 if (c.isSpace())
630 strpos++; 631 strpos++;
631 else if (c != str.at(strpos++)) 632 else if (c != str.at(strpos++))
632 goto error; 633 goto error;
633 continue; 634 continue;
634 } 635 }
635 636
636 // remove space at the begining 637 // remove space at the begining
637 if (str.length() > strpos && str.at(strpos).isSpace()) 638 if (str.length() > strpos && str.at(strpos).isSpace())
638 strpos++; 639 strpos++;
639 640
640 c = Format.at(Formatpos++); 641 c = Format.at(Formatpos++);
641 switch (c) 642 switch (c.unicode())
642 { 643 {
643 case 'p': 644 case 'p':
644 { 645 {
645 QString s; 646 QString s;
646 s = i18n("pm").lower(); 647 s = i18n("pm").lower();
647 int len = s.length(); 648 int len = s.length();
648 if (str.mid(strpos, len) == s) 649 if (str.mid(strpos, len) == s)
649 { 650 {
650 pm = true; 651 pm = true;
651 strpos += len; 652 strpos += len;
652 } 653 }
653 else 654 else
654 { 655 {
655 s = i18n("am").lower(); 656 s = i18n("am").lower();
656 len = s.length(); 657 len = s.length();
657 if (str.mid(strpos, len) == s) { 658 if (str.mid(strpos, len) == s) {
658 pm = false; 659 pm = false;
659 strpos += len; 660 strpos += len;
660 } 661 }
661 else 662 else
662 goto error; 663 goto error;
663 } 664 }
664 } 665 }
665 break; 666 break;
@@ -713,49 +714,49 @@ QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const
713 // The presence of the bool* (since KDE-3.0) removes the need for an invalid QTime. 714 // The presence of the bool* (since KDE-3.0) removes the need for an invalid QTime.
714} 715}
715 716
716QDateTime KLocale::readDateTime(const QString &intstr, 717QDateTime KLocale::readDateTime(const QString &intstr,
717 IntDateFormat intIntDateFormat, 718 IntDateFormat intIntDateFormat,
718 bool* ok) const 719 bool* ok) const
719{ 720{
720 bool ok1, ok2; 721 bool ok1, ok2;
721 722
722 // AT the moment we can not read any other format then ISODate 723 // AT the moment we can not read any other format then ISODate
723 if ( intIntDateFormat != ISODate ) 724 if ( intIntDateFormat != ISODate )
724 { 725 {
725 qDebug("KLocale::readDateTime, only ISODate is supported."); 726 qDebug("KLocale::readDateTime, only ISODate is supported.");
726 return QDateTime(); 727 return QDateTime();
727 } 728 }
728 729
729 int pos = intstr.find("T"); 730 int pos = intstr.find("T");
730 QString date = intstr.left(pos); 731 QString date = intstr.left(pos);
731 QString time = intstr.mid(pos+1); 732 QString time = intstr.mid(pos+1);
732 733
733 QString dformat = dateFormat(intIntDateFormat); 734 QString dformat = dateFormat(intIntDateFormat);
734 QString tformat = timeFormat(intIntDateFormat); 735 QString tformat = timeFormat(intIntDateFormat);
735 736
736 QDate m_date = readDate(date, dformat, &ok1); 737 QDate m_date = readDate(date, dformat, &ok1);
737 QTime m_time = readTime(time, tformat, &ok2); 738 QTime m_time = readTime(time, !tformat.isEmpty(), &ok2);
738 739
739 QDateTime m_dt; 740 QDateTime m_dt;
740 741
741 if (ok) 742 if (ok)
742 { 743 {
743 if ((ok1 == false) || (ok2 == false)) 744 if ((ok1 == false) || (ok2 == false))
744 *ok = false; 745 *ok = false;
745 else 746 else
746 *ok = true; 747 *ok = true;
747 } 748 }
748 749
749 //only set values if both operations returned true. 750 //only set values if both operations returned true.
750 if ((ok1 == true) && (ok2 == true)) 751 if ((ok1 == true) && (ok2 == true))
751 { 752 {
752 m_dt.setDate(m_date); 753 m_dt.setDate(m_date);
753 m_dt.setTime(m_time); 754 m_dt.setTime(m_time);
754 } 755 }
755 756
756 //qDebug("KLocale::readDateTime() transformed %s into %s (%s), %s (%s) : err1=%i, err2=%i", intstr.latin1(), date.latin1(), dformat.latin1(), time.latin1(), tformat.latin1(), ok1, ok2); 757 //qDebug("KLocale::readDateTime() transformed %s into %s (%s), %s (%s) : err1=%i, err2=%i", intstr.latin1(), date.latin1(), dformat.latin1(), time.latin1(), tformat.latin1(), ok1, ok2);
757 return m_dt; 758 return m_dt;
758} 759}
759 760
760QDate KLocale::readDate(const QString &intstr, 761QDate KLocale::readDate(const QString &intstr,
761 IntDateFormat intIntDateFormat, 762 IntDateFormat intIntDateFormat,