+ if ( codepage == 950 )
+ {
+ return wxFONTENCODING_CP950;
+ }
+#elif defined(__WXMAC__)
+ CFStringEncoding encoding = 0 ;
+ encoding = CFStringGetSystemEncoding() ;
+ return wxMacGetFontEncFromSystemEnc( encoding ) ;
+#elif defined(__UNIX_LIKE__) && wxUSE_FONTMAP
+ const wxString encname = GetSystemEncodingName();
+ if ( !encname.empty() )
+ {
+ wxFontEncoding enc = wxFontMapperBase::GetEncodingFromName(encname);
+
+ // on some modern Linux systems (RedHat 8) the default system locale
+ // is UTF8 -- but it isn't supported by wxGTK1 in ANSI build at all so
+ // don't even try to use it in this case
+#if !wxUSE_UNICODE && \
+ ((defined(__WXGTK__) && !defined(__WXGTK20__)) || defined(__WXMOTIF__))
+ if ( enc == wxFONTENCODING_UTF8 )
+ {
+ // the most similar supported encoding...
+ enc = wxFONTENCODING_ISO8859_1;
+ }
+#endif // !wxUSE_UNICODE
+
+ // GetEncodingFromName() returns wxFONTENCODING_DEFAULT for C locale
+ // (a.k.a. US-ASCII) which is arguably a bug but keep it like this for
+ // backwards compatibility and just take care to not return
+ // wxFONTENCODING_DEFAULT from here as this surely doesn't make sense
+ if ( enc == wxFONTENCODING_DEFAULT )
+ {
+ // we don't have wxFONTENCODING_ASCII, so use the closest one
+ return wxFONTENCODING_ISO8859_1;
+ }
+
+ if ( enc != wxFONTENCODING_MAX )
+ {
+ return enc;
+ }
+ //else: return wxFONTENCODING_SYSTEM below
+ }
+#endif // Win32/Unix
+
+ return wxFONTENCODING_SYSTEM;
+}
+
+/* static */
+void wxLocale::AddLanguage(const wxLanguageInfo& info)
+{
+ CreateLanguagesDB();
+ ms_languagesDB->Add(info);
+}
+
+/* static */
+const wxLanguageInfo *wxLocale::GetLanguageInfo(int lang)
+{
+ CreateLanguagesDB();
+
+ // calling GetLanguageInfo(wxLANGUAGE_DEFAULT) is a natural thing to do, so
+ // make it work
+ if ( lang == wxLANGUAGE_DEFAULT )
+ lang = GetSystemLanguage();
+
+ const size_t count = ms_languagesDB->GetCount();
+ for ( size_t i = 0; i < count; i++ )
+ {
+ if ( ms_languagesDB->Item(i).Language == lang )
+ {
+ // We need to create a temporary here in order to make this work with BCC in final build mode
+ wxLanguageInfo *ptr = &ms_languagesDB->Item(i);
+ return ptr;
+ }
+ }
+
+ return NULL;
+}
+
+/* static */
+wxString wxLocale::GetLanguageName(int lang)
+{
+ if ( lang == wxLANGUAGE_DEFAULT || lang == wxLANGUAGE_UNKNOWN )
+ return wxEmptyString;
+
+ const wxLanguageInfo *info = GetLanguageInfo(lang);
+ if ( !info )
+ return wxEmptyString;
+ else
+ return info->Description;
+}