wxWidgets/include/wx/intl.h
Vadim Zeitlin c86f1403c3 globally renamed uint to size_t. This has _not_ been checked under Windows,
although I changed msw files also, so please wait until this evening if you
want to be sure that it compiles. This change should fix 64 bit compilation
problems, but it would be nice to test it...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 15:36:12 +00:00

129 lines
4.6 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: intl.h
// Purpose: Internationalization and localisation for wxWindows
// Author: Vadim Zeitlin
// Modified by:
// Created: 29/01/98
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef __INTLH__
#define __INTLH__
#ifdef __GNUG__
#pragma interface "intl.h"
#endif
#include "wx/defs.h"
#include "wx/string.h"
// ============================================================================
// global decls
// ============================================================================
// ----------------------------------------------------------------------------
// simple types
// ----------------------------------------------------------------------------
// # adjust if necessary
typedef unsigned char size_t8;
typedef unsigned long size_t32;
// ----------------------------------------------------------------------------
// macros
// ----------------------------------------------------------------------------
// gettext() style macro
#define _(str) wxGetTranslation(str)
// ----------------------------------------------------------------------------
// forward decls
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxLocale;
class WXDLLEXPORT wxMsgCatalog;
extern WXDLLEXPORT_DATA(wxLocale *) g_pLocale;
// ============================================================================
// locale support
// ============================================================================
// ----------------------------------------------------------------------------
// wxLocale: encapsulates all language dependent settings, including current
// message catalogs, date, time and currency formats (#### to do) &c
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxLocale
{
public:
// ctor & dtor
// call Init() if you use this ctor
wxLocale();
// the ctor has a side effect of changing current locale
wxLocale(const char *szName, // name (for messages)
const char *szShort = NULL, // dir prefix (for msg files)
const char *szLocale = NULL, // locale (for setlocale)
bool bLoadDefault = TRUE) // preload wxstd.mo?
{ Init(szName, szShort, szLocale, bLoadDefault); }
// the same as a function (returns TRUE on success)
bool Init(const char *szName,
const char *szShort = NULL,
const char *szLocale = NULL,
bool bLoadDefault = TRUE);
// restores old locale
~wxLocale();
// returns locale name
const char *GetLocale() const { return m_strLocale; }
// add a catalog: it's searched for in standard places (current directory
// first, system one after). It will be used for message lookup by
// GetString().
//
// Returns 'true' if it was successfully loaded
bool AddCatalog(const char *szDomain);
// check if the given catalog is loaded
bool IsLoaded(const char *szDomain) const;
// retrieve the translation for a string in all loaded domains unless
// the szDomain parameter is specified (and then only this domain is
// searched)
//
// return original string if translation is not available
// (in this case an error message is generated the first time
// a string is not found; use wxLogNull to suppress it)
//
// domains are searched in the last to first order, i.e. catalogs
// added later override those added before.
const char *GetString(const char *szOrigString,
const char *szDomain = NULL) const;
private:
// find catalog by name in a linked list, return NULL if !found
wxMsgCatalog *FindCatalog(const char *szDomain) const;
wxString m_strLocale, // this locale name
m_strShort; // short name for the locale
const char *m_pszOldLocale; // previous locale from setlocale()
wxLocale *m_pOldLocale; // previous wxLocale
wxMsgCatalog *m_pMsgCat; // pointer to linked list of catalogs
};
// ----------------------------------------------------------------------------
// global functions
// ----------------------------------------------------------------------------
WXDLLEXPORT wxLocale* wxGetLocale();
// get the translation of the string in the current locale
inline WXDLLEXPORT const char *wxGetTranslation(const char *sz)
{
wxLocale *pLoc = wxGetLocale();
return pLoc == NULL ? sz : pLoc->GetString(sz);
}
#endif
// _WX_INTLH__