summaryrefslogtreecommitdiffabout
path: root/microkde
authorzautrix <zautrix>2004-10-23 22:58:21 (UTC)
committer zautrix <zautrix>2004-10-23 22:58:21 (UTC)
commitfcea043d2200bb4bb0b1146a69204af15fb58a7d (patch) (unidiff)
treec2c210290c02f20af3b307f4c4e47ba8915f7a05 /microkde
parent22c26311ca936fa1036e406c86e0178c16acd090 (diff)
downloadkdepimpi-fcea043d2200bb4bb0b1146a69204af15fb58a7d.zip
kdepimpi-fcea043d2200bb4bb0b1146a69204af15fb58a7d.tar.gz
kdepimpi-fcea043d2200bb4bb0b1146a69204af15fb58a7d.tar.bz2
kopimail translation
Diffstat (limited to 'microkde') (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kdecore/klocale.cpp62
1 files changed, 56 insertions, 6 deletions
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp
index d3b04dc..1da1e99 100644
--- a/microkde/kdecore/klocale.cpp
+++ b/microkde/kdecore/klocale.cpp
@@ -1,261 +1,311 @@
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>
10QStringList missingTrans; 10
11//#define COLLECT_TRANSLATION
12
11 13
12QDict<QString> *mLocaleDict = 0; 14QDict<QString> *mLocaleDict = 0;
13void setLocaleDict( QDict<QString> * dict ) 15void setLocaleDict( QDict<QString> * dict )
14{ 16{
15 mLocaleDict = dict; 17 mLocaleDict = dict;
16 18
17} 19}
20
21#ifdef COLLECT_TRANSLATION
22
23QStringList missingTrans;
24QStringList existingTrans1;
25QStringList existingTrans2;
26
18void addMissing(const char *text) 27void addMissing(const char *text)
19{ 28{
20 return; 29
21 QString mis ( text ); 30 QString mis ( text );
22 if ( !missingTrans.contains( mis ) ) 31 if ( !missingTrans.contains( mis ) )
23 missingTrans.append(mis); 32 missingTrans.append(mis);
24 33
25} 34}
35void addExist(const char *text,QString trans )
36{
37 //return;
38 QString mis ( text );
39 if ( !existingTrans1.contains( mis ) ) {
40 existingTrans1.append(mis);
41 existingTrans2.append(trans);
42
43 }
44
45}
26 46
27#include <qfile.h> 47#include <qfile.h>
28#include <qtextstream.h> 48#include <qtextstream.h>
29#include <qtextcodec.h> 49#include <qtextcodec.h>
50#endif
30void dumpMissing() 51void dumpMissing()
31{ 52{
32 return; 53#ifdef COLLECT_TRANSLATION
33 QString fileName = "/tmp/usertrans.txt"; 54 QString fileName = "/tmp/usernewtrans.txt";
34 QFile file( fileName ); 55 QFile file( fileName );
35 if (!file.open( IO_WriteOnly ) ) { 56 if (!file.open( IO_WriteOnly ) ) {
36 return ; 57 return ;
37 } 58 }
38 QTextStream ts( &file ); 59 QTextStream ts( &file );
39 ts.setCodec( QTextCodec::codecForName("utf8") ); 60 ts.setCodec( QTextCodec::codecForName("utf8") );
40 61
41 int i; 62 int i;
42 for ( i = 0; i< missingTrans.count(); ++i ) { 63 for ( i = 0; i< missingTrans.count(); ++i ) {
43 64
44 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" ); 65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" );
45 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n"; 66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n";
46 67
47 } 68 }
48 file.close(); 69 file.close();
49} 70 {
71 QString fileName = "/tmp/usertrans.txt";
72 QFile file( fileName );
73 if (!file.open( IO_WriteOnly ) ) {
74 return ;
75 }
76 QTextStream ts( &file );
77 ts.setCodec( QTextCodec::codecForName("utf8") );
78
79 int i;
80 for ( i = 0; i< existingTrans1.count(); ++i ) {
81
82 QString text = existingTrans1[i].replace( QRegExp("\n"),"\\n" );
83 QString text2 = existingTrans2[i].replace( QRegExp("\n"),"\\n" );
84 ts << "{ \""<<text<< "\",\""<< text2 <<"\" },\n";
50 85
86 }
87 file.close();
88 }
89#endif
90}
51QString i18n(const char *text) 91QString i18n(const char *text)
52{ 92{
53 if ( ! mLocaleDict ) { 93 if ( ! mLocaleDict ) {
94#ifdef COLLECT_TRANSLATION
54 addMissing( text ); 95 addMissing( text );
96#endif
55 return QString( text ); 97 return QString( text );
56 } 98 }
57 else { 99 else {
58 QString* ret = mLocaleDict->find(QString(text)) ; 100 QString* ret = mLocaleDict->find(QString(text)) ;
59 if ( ret == 0 ) { 101 if ( ret == 0 ) {
102#ifdef COLLECT_TRANSLATION
60 addMissing( text ); 103 addMissing( text );
104#endif
61 return QString( text ); 105 return QString( text );
62 } 106 }
63 else { 107 else {
64 if ( (*ret).isEmpty() ) { 108 if ( (*ret).isEmpty() ) {
109#ifdef COLLECT_TRANSLATION
65 addMissing( text ); 110 addMissing( text );
111#endif
66 return QString( text ); 112 return QString( text );
67 } 113 }
68 else 114 else {
115#ifdef COLLECT_TRANSLATION
116 addExist( text, *ret );
117#endif
69 return (*ret); 118 return (*ret);
119 }
70 } 120 }
71 } 121 }
72 122
73} 123}
74 124
75QString i18n(const char *,const char *text) 125QString i18n(const char *,const char *text)
76{ 126{
77 return i18n( text ); 127 return i18n( text );
78} 128}
79 129
80QString i18n(const char *text1, const char *textn, int num) 130QString i18n(const char *text1, const char *textn, int num)
81{ 131{
82 if ( num == 1 ) return i18n( text1 ); 132 if ( num == 1 ) return i18n( text1 );
83 else { 133 else {
84 QString text = i18n( textn ); 134 QString text = i18n( textn );
85 int pos = text.find( "%n" ); 135 int pos = text.find( "%n" );
86 if ( pos >= 0 ) text.replace( pos, 2, QString::number( num ) ); 136 if ( pos >= 0 ) text.replace( pos, 2, QString::number( num ) );
87 return text; 137 return text;
88 } 138 }
89} 139}
90 140
91inline void put_it_in( QChar *buffer, uint& index, const QString &s ) 141inline void put_it_in( QChar *buffer, uint& index, const QString &s )
92{ 142{
93 for ( uint l = 0; l < s.length(); l++ ) 143 for ( uint l = 0; l < s.length(); l++ )
94 buffer[index++] = s.at( l ); 144 buffer[index++] = s.at( l );
95} 145}
96 146
97inline void put_it_in( QChar *buffer, uint& index, int number ) 147inline void put_it_in( QChar *buffer, uint& index, int number )
98{ 148{
99 buffer[index++] = number / 10 + '0'; 149 buffer[index++] = number / 10 + '0';
100 buffer[index++] = number % 10 + '0'; 150 buffer[index++] = number % 10 + '0';
101} 151}
102 152
103static int readInt(const QString &str, uint &pos) 153static int readInt(const QString &str, uint &pos)
104{ 154{
105 if (!str.at(pos).isDigit()) return -1; 155 if (!str.at(pos).isDigit()) return -1;
106 int result = 0; 156 int result = 0;
107 for (; str.length() > pos && str.at(pos).isDigit(); pos++) 157 for (; str.length() > pos && str.at(pos).isDigit(); pos++)
108 { 158 {
109 result *= 10; 159 result *= 10;
110 result += str.at(pos).digitValue(); 160 result += str.at(pos).digitValue();
111 } 161 }
112 162
113 return result; 163 return result;
114} 164}
115 165
116KLocale::KLocale() : mCalendarSystem( 0 ) 166KLocale::KLocale() : mCalendarSystem( 0 )
117{ 167{
118 168
119 m_decimalSymbol = "."; 169 m_decimalSymbol = ".";
120 m_positiveSign = ""; 170 m_positiveSign = "";
121 m_negativeSign = "-"; 171 m_negativeSign = "-";
122 m_thousandsSeparator = ","; 172 m_thousandsSeparator = ",";
123 173
124 174
125 175
126 176
127 mWeekStartsMonday = true; 177 mWeekStartsMonday = true;
128 mHourF24Format = true; 178 mHourF24Format = true;
129 mIntDateFormat = Default; 179 mIntDateFormat = Default;
130 mIntTimeFormat = Default; 180 mIntTimeFormat = Default;
131 mLanguage = 0; 181 mLanguage = 0;
132 mDateFormat = "%a %Y %b %d"; 182 mDateFormat = "%a %Y %b %d";
133 mDateFormatShort = "%Y-%m-%d"; 183 mDateFormatShort = "%Y-%m-%d";
134 mTimeZoneList << ("-11:00 US/Samoa") 184 mTimeZoneList << ("-11:00 US/Samoa")
135 << ("-10:00 US/Hawaii") 185 << ("-10:00 US/Hawaii")
136 << ("-09:00 US/Alaska") 186 << ("-09:00 US/Alaska")
137 << ("-08:00 US/Pacific") 187 << ("-08:00 US/Pacific")
138 << ("-07:00 US/Mountain") 188 << ("-07:00 US/Mountain")
139 << ("-06:00 US/Central") 189 << ("-06:00 US/Central")
140 << ("-05:00 US/Eastern") 190 << ("-05:00 US/Eastern")
141 << ("-04:00 Brazil/West") 191 << ("-04:00 Brazil/West")
142 << ("-03:00 Brazil/East") 192 << ("-03:00 Brazil/East")
143 << ("-02:00 Brazil/DeNoronha") 193 << ("-02:00 Brazil/DeNoronha")
144 << ("-01:00 Atlantic/Azores") 194 << ("-01:00 Atlantic/Azores")
145 << (" 00:00 Europe/London(UTC)") 195 << (" 00:00 Europe/London(UTC)")
146 << ("+01:00 Europe/Oslo(CET)") 196 << ("+01:00 Europe/Oslo(CET)")
147 << ("+02:00 Europe/Helsinki") 197 << ("+02:00 Europe/Helsinki")
148 << ("+03:00 Europe/Moscow") 198 << ("+03:00 Europe/Moscow")
149 << ("+04:00 Indian/Mauritius") 199 << ("+04:00 Indian/Mauritius")
150 << ("+05:00 Indian/Maldives") 200 << ("+05:00 Indian/Maldives")
151 << ("+06:00 Indian/Chagos") 201 << ("+06:00 Indian/Chagos")
152 << ("+07:00 Asia/Bangkok") 202 << ("+07:00 Asia/Bangkok")
153 << ("+08:00 Asia/Hongkong") 203 << ("+08:00 Asia/Hongkong")
154 << ("+09:00 Asia/Tokyo") 204 << ("+09:00 Asia/Tokyo")
155 << ("+10:00 Asia/Vladivostok") 205 << ("+10:00 Asia/Vladivostok")
156 << ("+11:00 Asia/Magadan") 206 << ("+11:00 Asia/Magadan")
157 << ("+12:00 Asia/Kamchatka") 207 << ("+12:00 Asia/Kamchatka")
158 // << (" xx:xx User defined offset") 208 // << (" xx:xx User defined offset")
159 << i18n (" Local Time"); 209 << i18n (" Local Time");
160 mSouthDaylight = false; 210 mSouthDaylight = false;
161 mTimeZoneOffset = 0; 211 mTimeZoneOffset = 0;
162 daylightEnabled = false; 212 daylightEnabled = false;
163} 213}
164 214
165void KLocale::setDateFormat( QString s ) 215void KLocale::setDateFormat( QString s )
166{ 216{
167 mDateFormat = s; 217 mDateFormat = s;
168} 218}
169 219
170void KLocale::setDateFormatShort( QString s ) 220void KLocale::setDateFormatShort( QString s )
171{ 221{
172 mDateFormatShort = s; 222 mDateFormatShort = s;
173} 223}
174 224
175void KLocale::setHore24Format ( bool b ) 225void KLocale::setHore24Format ( bool b )
176{ 226{
177 mHourF24Format = b; 227 mHourF24Format = b;
178} 228}
179void KLocale::setWeekStartMonday( bool b ) 229void KLocale::setWeekStartMonday( bool b )
180{ 230{
181 mWeekStartsMonday = b; 231 mWeekStartsMonday = b;
182} 232}
183 233
184KLocale::IntDateFormat KLocale::getIntDateFormat( ) 234KLocale::IntDateFormat KLocale::getIntDateFormat( )
185{ 235{
186 return mIntDateFormat; 236 return mIntDateFormat;
187 237
188} 238}
189void KLocale::setIntDateFormat( KLocale::IntDateFormat i ) 239void KLocale::setIntDateFormat( KLocale::IntDateFormat i )
190{ 240{
191 mIntDateFormat = i; 241 mIntDateFormat = i;
192} 242}
193KLocale::IntDateFormat KLocale::getIntTimeFormat( ) 243KLocale::IntDateFormat KLocale::getIntTimeFormat( )
194{ 244{
195 return mIntTimeFormat; 245 return mIntTimeFormat;
196 246
197} 247}
198void KLocale::setIntTimeFormat( KLocale::IntDateFormat i ) 248void KLocale::setIntTimeFormat( KLocale::IntDateFormat i )
199{ 249{
200 mIntTimeFormat = i; 250 mIntTimeFormat = i;
201} 251}
202 252
203void KLocale::setLanguage( int i ) 253void KLocale::setLanguage( int i )
204{ 254{
205 mLanguage = i; 255 mLanguage = i;
206} 256}
207int KLocale::language( ) 257int KLocale::language( )
208{ 258{
209 return mLanguage; 259 return mLanguage;
210} 260}
211QString KLocale::translate( const char *index ) const 261QString KLocale::translate( const char *index ) const
212{ 262{
213 return i18n( index ); 263 return i18n( index );
214} 264}
215 265
216QString KLocale::translate( const char *, const char *fallback) const 266QString KLocale::translate( const char *, const char *fallback) const
217{ 267{
218 return i18n( fallback ); 268 return i18n( fallback );
219} 269}
220 270
221QString KLocale::formatTime(const QTime &pTime, bool includeSecs, IntDateFormat intIntDateFormat) const 271QString KLocale::formatTime(const QTime &pTime, bool includeSecs, IntDateFormat intIntDateFormat) const
222{ 272{
223 const QString rst = timeFormat(intIntDateFormat); 273 const QString rst = timeFormat(intIntDateFormat);
224 274
225 // only "pm/am" here can grow, the rest shrinks, but 275 // only "pm/am" here can grow, the rest shrinks, but
226 // I'm rather safe than sorry 276 // I'm rather safe than sorry
227 QChar *buffer = new QChar[rst.length() * 3 / 2 + 30]; 277 QChar *buffer = new QChar[rst.length() * 3 / 2 + 30];
228 278
229 uint index = 0; 279 uint index = 0;
230 bool escape = false; 280 bool escape = false;
231 int number = 0; 281 int number = 0;
232 282
233 for ( uint format_index = 0; format_index < rst.length(); format_index++ ) 283 for ( uint format_index = 0; format_index < rst.length(); format_index++ )
234 { 284 {
235 if ( !escape ) 285 if ( !escape )
236 { 286 {
237 if ( rst.at( format_index ).unicode() == '%' ) 287 if ( rst.at( format_index ).unicode() == '%' )
238 escape = true; 288 escape = true;
239 else 289 else
240 buffer[index++] = rst.at( format_index ); 290 buffer[index++] = rst.at( format_index );
241 } 291 }
242 else 292 else
243 { 293 {
244 switch ( rst.at( format_index ).unicode() ) 294 switch ( rst.at( format_index ).unicode() )
245 { 295 {
246 case '%': 296 case '%':
247 buffer[index++] = '%'; 297 buffer[index++] = '%';
248 break; 298 break;
249 case 'H': 299 case 'H':
250 put_it_in( buffer, index, pTime.hour() ); 300 put_it_in( buffer, index, pTime.hour() );
251 break; 301 break;
252 case 'I': 302 case 'I':
253 put_it_in( buffer, index, ( pTime.hour() + 11) % 12 + 1 ); 303 put_it_in( buffer, index, ( pTime.hour() + 11) % 12 + 1 );
254 break; 304 break;
255 case 'M': 305 case 'M':
256 put_it_in( buffer, index, pTime.minute() ); 306 put_it_in( buffer, index, pTime.minute() );
257 break; 307 break;
258 case 'S': 308 case 'S':
259 if (includeSecs) 309 if (includeSecs)
260 put_it_in( buffer, index, pTime.second() ); 310 put_it_in( buffer, index, pTime.second() );
261 else 311 else