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(); };