mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
More language support refactoring.
This commit is contained in:
+20
-35
@@ -232,9 +232,27 @@ namespace boss {
|
||||
return "file:///" + file.string(); //Seems that we don't need to worry about encoding, tested with Unicode paths.
|
||||
}
|
||||
|
||||
Language::Language(const unsigned int code) : _code(code) {
|
||||
Language::Language(const unsigned int code) {
|
||||
Construct(_code);
|
||||
}
|
||||
|
||||
Language::Language(const std::string& nameOrISOCode) {
|
||||
if (nameOrISOCode == "English" || nameOrISOCode == "eng")
|
||||
Construct(g_lang_english);
|
||||
else if (nameOrISOCode == "Español" || nameOrISOCode == "spa")
|
||||
Construct(g_lang_spanish);
|
||||
else if (nameOrISOCode == "Русский" || nameOrISOCode == "rus")
|
||||
Construct(g_lang_russian);
|
||||
else if (nameOrISOCode == "Français" || nameOrISOCode == "fra")
|
||||
Construct(g_lang_french);
|
||||
else
|
||||
Construct(g_lang_any);
|
||||
}
|
||||
|
||||
void Language::Construct(const unsigned int code) {
|
||||
_code = code;
|
||||
if (_code == g_lang_any) {
|
||||
_name = "None Specified";
|
||||
_name = boost::locale::translate("None Specified");
|
||||
_isoCode = "";
|
||||
_locale = "en.UTF-8";
|
||||
}
|
||||
@@ -260,39 +278,6 @@ namespace boss {
|
||||
}
|
||||
}
|
||||
|
||||
Language::Language(const std::string& nameOrISOCode) {
|
||||
if (nameOrISOCode == "English" || nameOrISOCode == "eng") {
|
||||
_name = "English";
|
||||
_isoCode = "eng";
|
||||
_code = g_lang_english;
|
||||
_locale = "en.UTF-8";
|
||||
}
|
||||
else if (nameOrISOCode == "Español" || nameOrISOCode == "spa") {
|
||||
_name = "Español";
|
||||
_isoCode = "spa";
|
||||
_code = g_lang_spanish;
|
||||
_locale = "es.UTF-8";
|
||||
}
|
||||
else if (nameOrISOCode == "Русский" || nameOrISOCode == "rus") {
|
||||
_name = "Русский";
|
||||
_isoCode = "rus";
|
||||
_code = g_lang_russian;
|
||||
_locale = "ru.UTF-8";
|
||||
}
|
||||
else if (nameOrISOCode == "Français" || nameOrISOCode == "fra") {
|
||||
_name = "Français";
|
||||
_isoCode = "fra";
|
||||
_code = g_lang_french;
|
||||
_locale = "fr.UTF-8";
|
||||
}
|
||||
else {
|
||||
_name = boost::locale::translate("None Specified");
|
||||
_isoCode = "";
|
||||
_code = g_lang_any;
|
||||
_locale = "en.UTF-8";
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int Language::Code() const {
|
||||
return _code;
|
||||
}
|
||||
|
||||
@@ -75,11 +75,23 @@ namespace boss {
|
||||
std::string Name() const;
|
||||
std::string ISOCode() const;
|
||||
std::string Locale() const;
|
||||
|
||||
static std::vector<std::string> Names() {
|
||||
std::vector<std::string> vec;
|
||||
vec.push_back(Language(g_lang_any).Name());
|
||||
vec.push_back(Language(g_lang_english).Name());
|
||||
vec.push_back(Language(g_lang_spanish).Name());
|
||||
vec.push_back(Language(g_lang_russian).Name());
|
||||
vec.push_back(Language(g_lang_french).Name());
|
||||
return vec;
|
||||
}
|
||||
private:
|
||||
unsigned int _code;
|
||||
std::string _isoCode;
|
||||
std::string _name;
|
||||
std::string _locale;
|
||||
|
||||
void Construct(const unsigned int code);
|
||||
};
|
||||
|
||||
//Version class for more robust version comparisons.
|
||||
|
||||
+4
-5
@@ -1034,11 +1034,10 @@ wxString FileEditDialog::GetCondition() const {
|
||||
MessageEditDialog::MessageEditDialog(wxWindow *parent, const wxString& title) : wxDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) {
|
||||
|
||||
wxArrayString languages;
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_any).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_english).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_spanish).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_russian).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_french).Name()));
|
||||
vector<string> langs = boss::Language::Names();
|
||||
for (size_t i = 0; i < langs.size(); i++) {
|
||||
languages.Add(FromUTF8(langs[i]));
|
||||
}
|
||||
|
||||
//Initialise controls.
|
||||
_type = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 3, Type);
|
||||
|
||||
@@ -51,11 +51,10 @@ SettingsFrame::SettingsFrame(wxWindow *parent, const wxString& title, YAML::Node
|
||||
}
|
||||
|
||||
wxArrayString languages;
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_any).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_english).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_spanish).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_russian).Name()));
|
||||
languages.Add(FromUTF8(boss::Language(boss::g_lang_french).Name()));
|
||||
vector<string> langs = boss::Language::Names();
|
||||
for (size_t i = 0; i < langs.size(); i++) {
|
||||
languages.Add(FromUTF8(langs[i]));
|
||||
}
|
||||
|
||||
//Initialise controls.
|
||||
GameChoice = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, Games);
|
||||
|
||||
Reference in New Issue
Block a user