Fix not defined localized strings to use fallback instead of empty text

#3387
This commit is contained in:
Wojtek Figat
2025-04-16 09:55:35 +02:00
parent 45f202fdf7
commit c9e625a1a0

View File

@@ -34,13 +34,20 @@ public:
if (id.IsEmpty())
return fallback;
#define TRY_RETURN(messages) \
if (messages && messages->Count() > index) \
{ \
const String& result = messages->At(index); \
if (result.HasChars()) \
return result; \
}
// Try current tables
for (auto& e : LocalizedStringTables)
{
const auto table = e.Get();
const auto messages = table ? table->Entries.TryGet(id) : nullptr;
if (messages && messages->Count() > index)
return messages->At(index);
TRY_RETURN(messages);
}
// Try fallback tables for current tables
@@ -49,8 +56,7 @@ public:
const auto table = e.Get();
const auto fallbackTable = table ? table->FallbackTable.Get() : nullptr;
const auto messages = fallbackTable ? fallbackTable->Entries.TryGet(id) : nullptr;
if (messages && messages->Count() > index)
return messages->At(index);
TRY_RETURN(messages);
}
// Try fallback language tables
@@ -58,8 +64,7 @@ public:
{
const auto table = e.Get();
const auto messages = table ? table->Entries.TryGet(id) : nullptr;
if (messages && messages->Count() > index)
return messages->At(index);
TRY_RETURN(messages);
}
return fallback;