public async Task TranslateScreen() { var recognizedTextboxes = (await OcrScreenInternal()).ToList(); var textBoxesCount = recognizedTextboxes.Count; _log.LogInformation("Found {Count} textboxes", textBoxesCount); _internalOverlay.Add(recognizedTextboxes.ToArray()); if (textBoxesCount >= 60) { _log.LogWarning("More text boxes than expected: {textBoxesCount}, aborting translation. Probably means that the OCR implementation is bonkers", textBoxesCount); return; } _log.LogInformation("Translating the textboxes"); var originalTexts = recognizedTextboxes.Select(x => x.Text); var translations = (await _translate.Translate(originalTexts, _ocrTranslateOverlayConfiguration.TargetLanguage, _ocrTranslateOverlayConfiguration.SourceLanguage)).ToList(); var asSpatialText = ToSpatialTexts(recognizedTextboxes, translations); var correctedForCaptureArea = asSpatialText.Select(CorrectForCaptureArea).ToList(); _internalOverlay.ClearAll(); _log.LogInformation("Passing translated texts to overlay"); _internalOverlay.Add(correctedForCaptureArea.ToArray()); ShowOverlay(); _log.LogInformation("Showing the complete translation"); }