Fix crash in f_() function with invalid format specifiers from some translation. Happened in Japanese recently.

This commit is contained in:
Ansgar Becker
2023-11-12 16:49:30 +01:00
parent 2715af3363
commit 1098d25ad3
2 changed files with 13 additions and 3 deletions

View File

@ -2665,9 +2665,19 @@ end;
function f_(const Pattern: string; const Args: array of const): string;
var
TranslatedPattern: String;
begin
// Helper for translation, replacement for Format(_())
Result := Format(_(Pattern), Args);
try
TranslatedPattern := _(Pattern);
Result := Format(TranslatedPattern+' %s %d', Args);
except
on E:Exception do begin
MainForm.LogSQL(E.ClassName+' in translation string with invalid format arguments: "'+TranslatedPattern+'"', lcError);
Result := Format(Pattern, Args);
end;
end;
end;