00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00030
00031 #ifndef UTIL_I18N_H
00032 #define UTIL_I18N_H
00033
00034 #include <PVLE/Config.h>
00035 #include <PVLE/Export.h>
00036 #include <boost/filesystem/path.hpp>
00037 #include <osgText/String>
00038
00041
00042
00043 #ifndef PVLE_I18N
00044
00045
00046 #define _(String) (String)
00047 #define N_(String) String
00048 #define textdomain(Domain)
00049 #define bindtextdomain(Package, Directory)
00050
00051 namespace I18N {
00052 inline void init(const std::string &, const boost::filesystem::path &) {}
00053 inline void changeDomain(const std::string &) {}
00054 inline void setLocale(const std::string &) {}
00055 inline void setEncoding(const std::string & domainName, const osgText::String::Encoding encoding) {}
00056 inline osgText::String::Encoding getEncoding(const std::string & domainName) { return osgText::String::ENCODING_UNDEFINED; }
00057 inline void setEncoding(const osgText::String::Encoding encoding) {}
00058 inline osgText::String::Encoding getEncoding() { return osgText::String::ENCODING_UNDEFINED; }
00059 }
00060
00061 #else
00062
00063 #include <libintl.h>
00064 #define _(String) gettext (String)
00065 #define gettext_noop(String) String
00066 #define N_(String) gettext_noop (String)
00067
00068 namespace I18N {
00070 PVLE_EXPORT void init(const std::string & domainName, const boost::filesystem::path & dirName);
00072 inline void changeDomain(const std::string & domainName) { textdomain(domainName.c_str()); }
00074
00075
00077 PVLE_EXPORT void setEncoding(const std::string & domainName, const osgText::String::Encoding encoding);
00079 PVLE_EXPORT osgText::String::Encoding getEncoding(const std::string & domainName);
00081 inline void setEncoding(const osgText::String::Encoding encoding) { setEncoding(textdomain(NULL), encoding); }
00083 inline osgText::String::Encoding getEncoding() { return getEncoding(textdomain(NULL)); }
00084 }
00085
00086 #endif // PVLE_I18N
00087
00089 inline osgText::String _osgText(const char * const msgid) { return osgText::String(_(msgid), I18N::getEncoding()); }
00090
00091 #endif // UTIL_I18N_H