MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / OpenLanguage

Method OpenLanguage

src/openrct2/localisation/LocalisationService.cpp:86–133  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84 }
85
86 void LocalisationService::OpenLanguage(int32_t id)
87 {
88 CloseLanguages();
89 if (id == LANGUAGE_UNDEFINED)
90 {
91 throw std::invalid_argument("id was undefined");
92 }
93
94 auto preferredLanguage = LanguagePackFactory::FromLanguageId(id);
95 if (preferredLanguage != nullptr)
96 {
97 _currentLanguage = id;
98 _languageOrder.emplace_back(id);
99 _loadedLanguages.emplace_back(std::move(preferredLanguage));
100 TryLoadFonts(*this);
101 }
102 else
103 {
104 throw std::runtime_error("Unable to open language " + std::to_string(id));
105 }
106
107 auto checkLanguage = LanguagesDescriptors[id].fallback;
108 while (checkLanguage != LANGUAGE_UNDEFINED)
109 {
110 _languageOrder.emplace_back(checkLanguage);
111 auto fallbackLanguagePack = LanguagePackFactory::FromLanguageId(checkLanguage);
112 if (fallbackLanguagePack != nullptr)
113 {
114 _loadedLanguages.emplace_back(std::move(fallbackLanguagePack));
115 }
116
117 checkLanguage = LanguagesDescriptors[checkLanguage].fallback;
118 }
119
120 if (id != LANGUAGE_ENGLISH_UK)
121 {
122 _languageOrder.emplace_back(LANGUAGE_ENGLISH_UK);
123 auto englishLanguagePack = LanguagePackFactory::FromLanguageId(LANGUAGE_ENGLISH_UK);
124 if (englishLanguagePack != nullptr)
125 {
126 _loadedLanguages.emplace_back(std::move(englishLanguagePack));
127 }
128 else
129 {
130 throw std::runtime_error("Unable to open the English language file!");
131 }
132 }
133 }
134
135 void LocalisationService::CloseLanguages()
136 {

Callers 2

InitialiseMethod · 0.80
LanguageOpenFunction · 0.80

Calls 2

FromLanguageIdFunction · 0.85
TryLoadFontsFunction · 0.85

Tested by

no test coverage detected