DolphinQt: Don't return 0x04 bytes from tr

tr calls with more than one argument would have a 0x04 byte
in the returned string when no translation was found
(which always is the case when using Dolphin in English).
This commit is contained in:
JosJuice 2020-11-12 19:44:44 +01:00
parent 9e3e325add
commit 53da97208a
1 changed files with 7 additions and 3 deletions

View File

@ -186,7 +186,7 @@ public:
[](const char* a, const char* b) { return strcmp(a, b) < 0; }); [](const char* a, const char* b) { return strcmp(a, b) < 0; });
if (iter == end || strcmp(*iter, original_string) != 0) if (iter == end || strcmp(*iter, original_string) != 0)
return original_string; return nullptr;
u32 offset = ReadU32(&m_data[m_offset_translation_table + std::distance(begin, iter) * 8 + 4]); u32 offset = ReadU32(&m_data[m_offset_translation_table + std::distance(begin, iter) * 8 + 4]);
return &m_data[offset]; return &m_data[offset];
@ -214,17 +214,21 @@ public:
QString translate(const char* context, const char* source_text, QString translate(const char* context, const char* source_text,
const char* disambiguation = nullptr, int n = -1) const override const char* disambiguation = nullptr, int n = -1) const override
{ {
const char* translated_text;
if (disambiguation) if (disambiguation)
{ {
std::string combined_string = disambiguation; std::string combined_string = disambiguation;
combined_string += '\4'; combined_string += '\4';
combined_string += source_text; combined_string += source_text;
return QString::fromUtf8(m_mo_file.Translate(combined_string.c_str())); translated_text = m_mo_file.Translate(combined_string.c_str());
} }
else else
{ {
return QString::fromUtf8(m_mo_file.Translate(source_text)); translated_text = m_mo_file.Translate(source_text);
} }
return QString::fromUtf8(translated_text ? translated_text : source_text);
} }
private: private: