diff options
| -rw-r--r-- | src/core/file_sys/control_metadata.cpp | 43 | ||||
| -rw-r--r-- | src/core/file_sys/control_metadata.h | 6 |
2 files changed, 37 insertions, 12 deletions
diff --git a/src/core/file_sys/control_metadata.cpp b/src/core/file_sys/control_metadata.cpp index be25da2f6..50f44f598 100644 --- a/src/core/file_sys/control_metadata.cpp +++ b/src/core/file_sys/control_metadata.cpp | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project | 1 | // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project |
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | 2 | // SPDX-License-Identifier: GPL-2.0-or-later |
| 3 | 3 | ||
| 4 | #include "common/settings.h" | ||
| 4 | #include "common/string_util.h" | 5 | #include "common/string_util.h" |
| 5 | #include "common/swap.h" | 6 | #include "common/swap.h" |
| 6 | #include "core/file_sys/control_metadata.h" | 7 | #include "core/file_sys/control_metadata.h" |
| @@ -37,6 +38,27 @@ std::string LanguageEntry::GetDeveloperName() const { | |||
| 37 | developer_name.size()); | 38 | developer_name.size()); |
| 38 | } | 39 | } |
| 39 | 40 | ||
| 41 | constexpr std::array<Language, 18> language_to_codes = {{ | ||
| 42 | Language::Japanese, | ||
| 43 | Language::AmericanEnglish, | ||
| 44 | Language::French, | ||
| 45 | Language::German, | ||
| 46 | Language::Italian, | ||
| 47 | Language::Spanish, | ||
| 48 | Language::Chinese, | ||
| 49 | Language::Korean, | ||
| 50 | Language::Dutch, | ||
| 51 | Language::Portuguese, | ||
| 52 | Language::Russian, | ||
| 53 | Language::Taiwanese, | ||
| 54 | Language::BritishEnglish, | ||
| 55 | Language::CanadianFrench, | ||
| 56 | Language::LatinAmericanSpanish, | ||
| 57 | Language::Chinese, | ||
| 58 | Language::Taiwanese, | ||
| 59 | Language::BrazilianPortuguese, | ||
| 60 | }}; | ||
| 61 | |||
| 40 | NACP::NACP() = default; | 62 | NACP::NACP() = default; |
| 41 | 63 | ||
| 42 | NACP::NACP(VirtualFile file) { | 64 | NACP::NACP(VirtualFile file) { |
| @@ -45,9 +67,13 @@ NACP::NACP(VirtualFile file) { | |||
| 45 | 67 | ||
| 46 | NACP::~NACP() = default; | 68 | NACP::~NACP() = default; |
| 47 | 69 | ||
| 48 | const LanguageEntry& NACP::GetLanguageEntry(Language language) const { | 70 | const LanguageEntry& NACP::GetLanguageEntry() const { |
| 49 | if (language != Language::Default) { | 71 | Language language = language_to_codes[Settings::values.language_index.GetValue()]; |
| 50 | return raw.language_entries.at(static_cast<u8>(language)); | 72 | |
| 73 | { | ||
| 74 | const auto& language_entry = raw.language_entries.at(static_cast<u8>(language)); | ||
| 75 | if (!language_entry.GetApplicationName().empty()) | ||
| 76 | return language_entry; | ||
| 51 | } | 77 | } |
| 52 | 78 | ||
| 53 | for (const auto& language_entry : raw.language_entries) { | 79 | for (const auto& language_entry : raw.language_entries) { |
| @@ -55,16 +81,15 @@ const LanguageEntry& NACP::GetLanguageEntry(Language language) const { | |||
| 55 | return language_entry; | 81 | return language_entry; |
| 56 | } | 82 | } |
| 57 | 83 | ||
| 58 | // Fallback to English | 84 | return raw.language_entries.at(static_cast<u8>(Language::AmericanEnglish)); |
| 59 | return GetLanguageEntry(Language::AmericanEnglish); | ||
| 60 | } | 85 | } |
| 61 | 86 | ||
| 62 | std::string NACP::GetApplicationName(Language language) const { | 87 | std::string NACP::GetApplicationName() const { |
| 63 | return GetLanguageEntry(language).GetApplicationName(); | 88 | return GetLanguageEntry().GetApplicationName(); |
| 64 | } | 89 | } |
| 65 | 90 | ||
| 66 | std::string NACP::GetDeveloperName(Language language) const { | 91 | std::string NACP::GetDeveloperName() const { |
| 67 | return GetLanguageEntry(language).GetDeveloperName(); | 92 | return GetLanguageEntry().GetDeveloperName(); |
| 68 | } | 93 | } |
| 69 | 94 | ||
| 70 | u64 NACP::GetTitleId() const { | 95 | u64 NACP::GetTitleId() const { |
diff --git a/src/core/file_sys/control_metadata.h b/src/core/file_sys/control_metadata.h index 75295519c..6a81873b1 100644 --- a/src/core/file_sys/control_metadata.h +++ b/src/core/file_sys/control_metadata.h | |||
| @@ -101,9 +101,9 @@ public: | |||
| 101 | explicit NACP(VirtualFile file); | 101 | explicit NACP(VirtualFile file); |
| 102 | ~NACP(); | 102 | ~NACP(); |
| 103 | 103 | ||
| 104 | const LanguageEntry& GetLanguageEntry(Language language = Language::Default) const; | 104 | const LanguageEntry& GetLanguageEntry() const; |
| 105 | std::string GetApplicationName(Language language = Language::Default) const; | 105 | std::string GetApplicationName() const; |
| 106 | std::string GetDeveloperName(Language language = Language::Default) const; | 106 | std::string GetDeveloperName() const; |
| 107 | u64 GetTitleId() const; | 107 | u64 GetTitleId() const; |
| 108 | u64 GetDLCBaseTitleId() const; | 108 | u64 GetDLCBaseTitleId() const; |
| 109 | std::string GetVersionString() const; | 109 | std::string GetVersionString() const; |