// Now try these in order:
// 1. CODESET from ctype if it contains a .CODESET part (e.g. en_US.ISO8859-15)
---- qt-x11-preview-4.0.0-tp1/src/core/kernel/qtranslator.cpp.orig 2004-07-13 22:32:57.000000000 +0200
-+++ qt-x11-preview-4.0.0-tp1/src/core/kernel/qtranslator.cpp 2004-07-14 13:24:27.006010024 +0200
-@@ -34,7 +34,7 @@
- #endif
-
- #include "qtranslator.h"
--
-+#include "qtextcodec.h"
- #ifndef QT_NO_TRANSLATION
-
- #include "qfileinfo.h"
-@@ -384,56 +384,102 @@
- const QString & suffix)
- {
- clear();
--
-- QString prefix;
--
-- if (filename[0] == QLatin1Char('/')
--#ifdef Q_WS_WIN
-- || (filename[0].isLetter() && filename[1] == QLatin1Char(':')) || filename[0] == QLatin1Char('\\')
--#endif
-- )
-- prefix = QLatin1String("");
-- else
-- prefix = directory;
--
-- if (prefix.length()) {
-- if (prefix[int(prefix.length()-1)] != QLatin1Char('/'))
-- prefix += QLatin1Char('/');
-- }
--
-- QString fname = filename;
-+ QString lang=QTextCodec::locale();
-+ QString m_suffix,teritory,codeset,modifier;
-+ int tmp;
-+ int a_count=lang.count("@");
-+ int d_count=lang.count(".");
-+ int u_count=lang.count("_");
-+
-+ suffix.isEmpty() ? m_suffix=QString("qm") : m_suffix=suffix;
-+ m_suffix.remove(QChar('.'));
-+
-+ QString lang=QTextCodec::locale();
-+ QString pre=resourceDir + QLatin1String("/");
-+ QString post=QLatin1String("/LC_MESSAGES/")+ filename + QLatin1String(".") + m_suffix;
-+
-+ QFile * ziew = new QFile(pre + lang + post );
-+ if (!(ziew->exists()))
-+ {
-+ delete ziew;
-+ QStringList try;
-+
-+ if (a_count > 1 || d_count > 1 || u_count > 1 ) return false;
-+ if (a_count)
-+ {
-+ tmp=lang.indexOf("@");
-+ modifier=lang.mid(tmp+1);
-+ lang.truncate(tmp);
-+ }
-+
-+ if (d_count)
-+ {
-+ tmp=lang.indexOf(".");
-+ codeset=lang.mid(tmp+1);
-+ codeset.remove(QRegExp("[^A-Za-z0-9]"));
-+ codeset=codeset.toLower();
-+ if (!(codeset.contains(QRegExp("[a-z]"))))
-+ {
-+ codeset.prepend(QString("iso"));
-+ }
-+ lang.truncate(tmp);
-+ }
-+
-+ if (u_count)
-+ {
-+ tmp=lang.indexOf("_");
-+ teritory=lang.mid(tmp+1);
-+ lang.truncate(tmp);
-+ }
-+
-+ if (d_count && u_count && a_count)
-+ {
-+ try << (lang+ teritory + codeset + modifier);
-+ try << (lang + teritory + modifier);
-+ try << (lang + modifier);
-+ try << lang;
-+ }
-+ else if (d_count && u_count && !a_count)
-+ {
-+ try << (lang + teritory + codeset);
-+ try << (lang + teritory);
-+ try << (lang);
-+ }
-+ else if (d_count && a_count && !u_count)
-+ {
-+ try << (lang + codeset + modifier);
-+ try << (lang + modifier);
-+ try << (lang);
-+ }
-+ else if (u_count && a_count && !d_count)
-+ {
-+ try << (lang + teritory + modifier);
-+ try << (lang + modifier);
-+ try << (lang);
-+
-+ }
-+ else if (u_count && !(a_count || d_count))
-+ {
-+ try << (lang + teritory);
-+ try << (lang);
-+
-+ }
-+ else if (d_count && !(a_count || u_count))
-+ {
-+ try << (lang + codeset);
-+ try << lang;
-+ }
-+ else if (a_count && !(u_count || d_count))
-+ {
-+ try << (lang + modifier);
-+ try << lang;
-+
-+ }
-+ QStringList::const_iterator i;
- QString realname;
-- QString delims;
-- delims = search_delimiters.isNull() ? QString::fromLatin1("_.") : search_delimiters;
--
-- for (;;) {
-- QFileInfo fi;
--
-- realname = prefix + fname + (suffix.isNull() ? QString::fromLatin1(".qm") : suffix);
-- fi.setFile(realname);
-- if (fi.isReadable())
-- break;
--
-- realname = prefix + fname;
-- fi.setFile(realname);
-- if (fi.isReadable())
-- break;
--
-- int rightmost = 0;
-- for (int i = 0; i < (int)delims.length(); i++) {
-- int k = fname.lastIndexOf(delims[i]);
-- if (k > rightmost)
-- rightmost = k;
-- }
--
-- // no truncations? fail
-- if (rightmost == 0)
-- return false;
--
-- fname.truncate(rightmost);
-- }
--
-- // realname is now the fully qualified name of a readable file.
-+for (i=try.begin(); i != try.constEnd(); ++i)
-+{
-+realname = pre + (*i) + post;
-
- #if defined(QT_USE_MMAP)
-
-@@ -449,13 +495,13 @@
- f = qt_open(QFile::encodeName(realname), O_RDONLY, 0666);
- if (f < 0) {
- // qDebug("can't open %s: %s", realname.ascii(), strerror(errno));
-- return false;
-+ break;
- }
-
- struct stat st;
- if (fstat(f, &st)) {
- // qDebug("can't stat %s: %s", realname.ascii(), strerror(errno));
-- return false;
-+ break;
- }
- char * tmp;
- tmp = (char*)mmap(0, st.st_size, // any address, whole file
-@@ -464,7 +510,7 @@
- f, 0); // from offset 0 of f
- if (!tmp || tmp == (char*)MAP_FAILED) {
- // qDebug("can't mmap %s: %s", filename.ascii(), strerror(errno));
-- return false;
-+ break;
- }
-
- ::close(f);
-@@ -474,7 +520,7 @@
- #else
- QFile f(realname);
- if (!f.exists())
-- return false;
-+ break;
- d->unmapLength = f.size();
- d->unmapPointer = new char[d->unmapLength];
- bool ok = false;
-@@ -486,12 +532,16 @@
- if (!ok) {
- delete [] d->unmapPointer;
- d->unmapPointer = 0;
-- return false;
-+ break;
- }
- #endif
-
- return do_load((const uchar *) d->unmapPointer, d->unmapLength);
- }
-+// If completely no translation file exists.
-+//
-+return false;
-+}
-
- /*!
- \overload
--- qt-x11-preview-4.0.0-tp1/tools/assistant/main.cpp.orig 2004-07-08 11:14:30.000000000 +0200
+++ qt-x11-preview-4.0.0-tp1/tools/assistant/main.cpp 2004-07-13 22:14:09.000000000 +0200
@@ -254,11 +254,11 @@