From 734339282372db1f66bebfaa07500553a787cf1e Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Thu, 4 Oct 2012 12:58:01 -0700 Subject: [PATCH] Don't use StandardPaths before OnInit is called AegisubLocale is created extremely early in the application initialization, and using StandardPaths in its constructor resulted in ?user being set to an incorrect value as the app name hadn't been set yet. --- aegisub/src/aegisublocale.cpp | 14 +++++++++----- aegisub/src/aegisublocale.h | 4 +++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/aegisub/src/aegisublocale.cpp b/aegisub/src/aegisublocale.cpp index 4b80ffd25..a5f1f7835 100644 --- a/aegisub/src/aegisublocale.cpp +++ b/aegisub/src/aegisublocale.cpp @@ -56,13 +56,17 @@ #define AEGISUB_CATALOG "aegisub" #endif -AegisubLocale::AegisubLocale() { - wxTranslations::Set(new wxTranslations); - wxFileTranslationsLoader::AddCatalogLookupPathPrefix(StandardPaths::DecodePath("?data/locale/")); +wxTranslations *AegisubLocale::GetTranslations() { + wxTranslations *translations = wxTranslations::Get(); + if (!translations) { + wxTranslations::Set(translations = new wxTranslations); + wxFileTranslationsLoader::AddCatalogLookupPathPrefix(StandardPaths::DecodePath("?data/locale/")); + } + return translations; } void AegisubLocale::Init(wxString const& language) { - wxTranslations *translations = wxTranslations::Get(); + wxTranslations *translations = GetTranslations(); translations->SetLanguage(language); translations->AddCatalog(AEGISUB_CATALOG); translations->AddStdCatalog(); @@ -73,7 +77,7 @@ void AegisubLocale::Init(wxString const& language) { } wxString AegisubLocale::PickLanguage() { - wxArrayString langs = wxTranslations::Get()->GetAvailableTranslations(AEGISUB_CATALOG); + wxArrayString langs = GetTranslations()->GetAvailableTranslations(AEGISUB_CATALOG); langs.insert(langs.begin(), "en_US"); // Check if user local language is available, if so, make it first diff --git a/aegisub/src/aegisublocale.h b/aegisub/src/aegisublocale.h index a57b29ee3..7d0f7f27a 100644 --- a/aegisub/src/aegisublocale.h +++ b/aegisub/src/aegisublocale.h @@ -34,6 +34,8 @@ /// @ingroup utility /// +class wxTranslations; + /// DOCME /// @class AegisubLocale /// @brief DOCME @@ -41,8 +43,8 @@ /// DOCME class AegisubLocale { wxString active_language; + wxTranslations *GetTranslations(); public: - AegisubLocale(); void Init(wxString const& language); wxString PickLanguage(); };