summaryrefslogtreecommitdiffstats
path: root/src/kvilib/system/kvi_locale.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kvilib/system/kvi_locale.h')
-rw-r--r--src/kvilib/system/kvi_locale.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/src/kvilib/system/kvi_locale.h b/src/kvilib/system/kvi_locale.h
new file mode 100644
index 00000000..bc3ed8eb
--- /dev/null
+++ b/src/kvilib/system/kvi_locale.h
@@ -0,0 +1,146 @@
+#ifndef _KVI_LOCALE_H_
+#define _KVI_LOCALE_H_
+
+//=============================================================================
+//
+// File : kvi_locale.h
+// Creation date : Sat Jan 16 1999 18:15:01 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//=============================================================================
+
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+#include "kvi_string.h"
+#include "kvi_pointerhashtable.h"
+
+#include <qapplication.h>
+
+class QTextCodec;
+class KviMessageCatalogue;
+
+namespace KviLocale
+{
+ typedef struct _EncodingDescription
+ {
+ char * szName;
+ char bSmart; // is it a smart codec ?
+ char bSendUtf8; // does it send utf8 or the local charset ?
+ char * szDescription;
+ } EncodingDescription;
+
+ // you MUST start iterating from 0 and terminate when
+ // you get an entry with a NULL szName
+ KVILIB_API EncodingDescription * encodingDescription(int iIdx);
+ KVILIB_API QTextCodec * codecForName(const char * szName);
+ KVILIB_API const KviStr & localeName();
+ KVILIB_API bool findCatalogue(QString &szBuffer,const QString& name,const QString& szLocaleDir);
+ KVILIB_API bool loadCatalogue(const QString& name,const QString& szLocaleDir);
+ KVILIB_API KviMessageCatalogue * getLoadedCatalogue(const QString& name);
+ KVILIB_API bool unloadCatalogue(const QString& name);
+ KVILIB_API void init(QApplication * app,const QString& localeDir);
+ KVILIB_API void done(QApplication * app);
+ KVILIB_API const char * translate(const char * text,const char * context);
+ KVILIB_API const QString & translateToQString(const char * text,const char * context);
+};
+
+// not exported
+class KviTranslationEntry
+{
+public:
+ KviStr m_szKey;
+ KviStr m_szEncodedTranslation;
+ QString * m_pQTranslation;
+public:
+ KviTranslationEntry(char * keyptr,int keylen,char * trptr,int trlen)
+ : m_szKey(keyptr,keylen) , m_szEncodedTranslation(trptr,trlen)
+ {
+ m_pQTranslation = 0;
+ }
+
+ KviTranslationEntry(const char * keyandtr)
+ : m_szKey(keyandtr) , m_szEncodedTranslation(keyandtr)
+ {
+ m_pQTranslation = 0;
+ }
+
+ ~KviTranslationEntry()
+ {
+ if(m_pQTranslation)delete m_pQTranslation;
+ }
+};
+
+
+class KVILIB_API KviMessageCatalogue
+{
+public:
+ KviMessageCatalogue();
+ ~KviMessageCatalogue();
+protected:
+ //KviPointerHashTable<const char *,KviTranslationEntry> * m_pMessages;
+ KviPointerHashTable<const char *,KviTranslationEntry> * m_pMessages;
+ QTextCodec * m_pTextCodec;
+public:
+ bool load(const QString& name);
+ const char * translate(const char * text);
+ const QString & translateToQString(const char * text);
+};
+
+#ifndef _KVI_LOCALE_CPP_
+ extern KVILIB_API KviMessageCatalogue * g_pMainCatalogue;
+#endif // !_KVI_LOCALE_CPP_
+
+#define __tr(__text__) g_pMainCatalogue->translate(__text__)
+#define __tr_no_lookup(__text__) __text__
+#define __tr_no_xgettext(__text__) g_pMainCatalogue->translate(__text__)
+
+#define __tr2qs(__text__) g_pMainCatalogue->translateToQString(__text__)
+#define __tr2qs_no_xgettext(__text__) g_pMainCatalogue->translateToQString(__text__)
+
+#define __tr_ctx(__text__,__context__) KviLocale::translate(__text__,__context__)
+#define __tr_no_lookup_ctx(__text__,__context__) __text__
+#define __tr_no_xgettext_ctx(__text__,__context__) KviLocale::translate(__text__,__context__)
+#define __tr2qs_ctx(__text__,__context__) KviLocale::translateToQString(__text__,__context__)
+#define __tr2qs_ctx_no_xgettext(__text__,__context__) KviLocale::translateToQString(__text__,__context__)
+#define __tr2qs_no_lookup(__text__) __text__
+
+#include <qtranslator.h>
+#include <qstring.h>
+
+class KVILIB_API KviTranslator : public QTranslator
+{
+ Q_OBJECT
+ public:
+ KviTranslator(QObject * parent,const char * name);
+ ~KviTranslator();
+ public:
+#ifdef COMPILE_USE_QT4
+ virtual QString translate(const char * context,const char * message,const char * comment) const;
+#endif
+ // Deprecated in qt 4.x
+ virtual QString find(const char * context,const char * message) const;
+#ifndef COMPILE_USE_QT4
+ // Dead in qt 4.x
+ virtual QTranslatorMessage findMessage(const char * context,const char * sourceText,const char * comment = 0) const;
+#endif
+};
+
+
+#endif //!_KVI_LOCALE_H_