void szAppImpl::InitializeLocale(wxArrayString &catalogs, wxLocale &locale) { wxString lang = wxConfig::Get()->Read(_T("LANGUAGE"), AUTO_LANGUAGE); if (lang == AUTO_LANGUAGE) lang = DEFAULT_LANGUAGE; const wxLanguageInfo *info = wxLocale::FindLanguageInfo(lang); int l; if (info) { l = info->Language; } else l = wxLANGUAGE_ENGLISH; locale.Init(l); if (!locale.IsOk()) { if(locale.IsAvailable(locale.GetSystemLanguage())) { l = locale.GetSystemLanguage(); locale.Init(l); if(!locale.IsOk()) { wxMessageBox(_("Default locale cannot be loaded. Exiting"), _("Information."), wxICON_ERROR); exit(1); } wxString Ls = L"Locale " + lang + L" not available.\nDefault system locale loaded."; wxMessageBox(_(s), _("Information."), wxICON_INFORMATION); } else { wxLogWarning(_("No locale for this system`s language.")); } } locale.AddCatalogLookupPathPrefix(GetSzarpDir() + _T("resources/locales")); for(size_t i = 0; i < catalogs.Count(); i++) locale.AddCatalog(catalogs[i]); #ifdef __WXGTK__ if (!locale.IsOk()) { wxLogInfo(_("Setting locale to \"C\"")); setenv("LC_ALL", "C", 1); } else if( locale.GetSystemEncodingName() == _("") ) { // this probably doesn't happen on unix machines wxLogInfo(_("wx: Setting locale to \"") + locale.GetCanonicalName() + _("\"")); setenv("LC_ALL", SC::S2A(locale.GetCanonicalName()).c_str(), 1); } else { wxString localename = locale.GetCanonicalName() + _(".") + locale.GetSystemEncodingName(); wxLogInfo(_("wx: Setting locale to \"") + localename + _("\"")); setenv("LC_ALL", SC::S2A(localename).c_str(), 1); } #endif }
// Handle command line options // bool TestApp::OnCmdLineParsed(wxCmdLineParser& parser) { if (parser.GetParamCount()) { for (size_t i = 0; i < parser.GetParamCount(); i++) m_registries.push_back(parser.GetParam(i)); } m_longlist = parser.Found("longlist"); m_list = m_longlist || parser.Found("list"); m_timing = parser.Found("timing"); m_detail = !m_timing && parser.Found("detail"); wxString loc; if ( parser.Found("locale", &loc) ) { const wxLanguageInfo * const info = wxLocale::FindLanguageInfo(loc); if ( !info ) { cerr << "Locale \"" << string(loc.mb_str()) << "\" is unknown.\n"; return false; } m_locale = new wxLocale(info->Language); if ( !m_locale->IsOk() ) { cerr << "Using locale \"" << string(loc.mb_str()) << "\" failed.\n"; return false; } } return TestAppBase::OnCmdLineParsed(parser); }
// Handle command line options // bool TestApp::OnCmdLineParsed(wxCmdLineParser& parser) { if (parser.GetParamCount()) { #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ for (size_t i = 0; i < parser.GetParamCount(); i++) m_registries.push_back(parser.GetParam(i)); } m_longlist = parser.Found("longlist"); m_list = m_longlist || parser.Found("list"); m_timing = parser.Found("timing"); m_detail = !m_timing && parser.Found("detail"); wxString loc; if ( parser.Found("locale", &loc) ) { const wxLanguageInfo * const info = wxLocale::FindLanguageInfo(loc); if ( !info ) { cerr << "Locale \"" << string(loc.mb_str()) << "\" is unknown.\n"; return false; } m_locale = new wxLocale(info->Language); if ( !m_locale->IsOk() ) { cerr << "Using locale \"" << string(loc.mb_str()) << "\" failed.\n"; return false; } } return TestAppBase::OnCmdLineParsed(parser); }