From 734339282372db1f66bebfaa07500553a787cf1e Mon Sep 17 00:00:00 2001
From: Thomas Goyne <plorkyeran@aegisub.org>
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();
 };
-- 
GitLab