From c9e625a1a0da79ec255dd5c5ff9e7cfb79f2a2fd Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 16 Apr 2025 09:55:35 +0200 Subject: [PATCH] Fix not defined localized strings to use fallback instead of empty text #3387 --- Source/Engine/Localization/Localization.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Source/Engine/Localization/Localization.cpp b/Source/Engine/Localization/Localization.cpp index f90a235d7..00a6a8deb 100644 --- a/Source/Engine/Localization/Localization.cpp +++ b/Source/Engine/Localization/Localization.cpp @@ -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;