replaced strings with i18n fallbacks and finalized sse handling

This commit is contained in:
krut_ni 2025-06-24 20:08:27 +02:00
parent 32b43bbd04
commit 2c646aa2f0
6 changed files with 36 additions and 10 deletions

View File

@ -1648,6 +1648,18 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROFILESELECTION::T918741365"] = "You can
-- Provider
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider"
-- Images are not supported yet
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T298062956"] = "Images are not supported yet"
-- Use file content as input
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Use file content as input"
-- Select file to read its content
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T354817589"] = "Select file to read its content"
-- Executables are not allowed
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T4167762413"] = "Executables are not allowed"
-- Use PDF content as input
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input"

View File

@ -1,4 +1,4 @@
@inherits MSGComponentBase
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="async () => await this.SelectFile()" Variant="Variant.Filled" Class="mb-3">
Use PDF content as input"
@T("Use file content as input")
</MudButton>

View File

@ -18,7 +18,7 @@ public partial class ReadFileContent : MSGComponentBase
private async Task SelectFile()
{
var selectedFile = await this.RustService.SelectFile("Select Text file");
var selectedFile = await this.RustService.SelectFile(T("Select file to read its content"));
if (selectedFile.UserCancelled)
return;
@ -29,13 +29,13 @@ public partial class ReadFileContent : MSGComponentBase
if (Array.Exists(FileTypeFilter.Executables.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase)))
{
await MessageBus.INSTANCE.SendError(new(@Icons.Material.Filled.AppBlocking, "Executables are not allowed"));
await MessageBus.INSTANCE.SendError(new(Icons.Material.Filled.AppBlocking, T("Executables are not allowed")));
return;
}
if (Array.Exists(FileTypeFilter.AllImages.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase)))
{
await MessageBus.INSTANCE.SendWarning(new(@Icons.Material.Filled.ImageNotSupported, "Images are not supported yet"));
await MessageBus.INSTANCE.SendWarning(new(Icons.Material.Filled.ImageNotSupported, T("Images are not supported yet")));
return;
}

View File

@ -1650,6 +1650,12 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROFILESELECTION::T918741365"] = "You can
-- Provider
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider"
-- Use PDF content as input
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T2849276709"] = "Use PDF content as input"
-- Executables are not allowed
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T4167762413"] = "Executables are not allowed"
-- Use PDF content as input
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input"
@ -5481,6 +5487,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::RAG::RAGPROCESSES::AISRCSELWITHRETCTXVAL::T304
-- AI-based data source selection with AI retrieval context validation
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RAG::RAGPROCESSES::AISRCSELWITHRETCTXVAL::T3775725978"] = "AI-based data source selection with AI retrieval context validation"
-- Executable Files
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RUST::FILETYPEFILTER::T2217313358"] = "Executable Files"
-- PDF Files
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RUST::FILETYPEFILTER::T3108466742"] = "PDF Files"

View File

@ -53,7 +53,7 @@ public sealed partial class RustService
eventCount++;
}
}
catch (JsonException) { resultBuilder.AppendLine(); }
catch (JsonException) { resultBuilder.Append(string.Empty); }
}
var result = resultBuilder.ToString();

View File

@ -7,6 +7,7 @@ namespace AIStudio.Tools;
public static class SseHandler
{
private static readonly ConcurrentDictionary<string, List<PptxImageData>> PPTX_IMAGES = new();
private static int CURRENT_SLIDE_NUMBER;
public static async Task<string> ProcessEventAsync(SseEvent? sseEvent, bool extractImages = true)
{
@ -25,14 +26,14 @@ public static class SseHandler
case PdfMetadata pdfMetadata:
var pageNumber = pdfMetadata.Pdf?.PageNumber ?? 0;
result.AppendLine($"[Page {pageNumber}]:\n{sseEvent.Content}");
result.AppendLine($"# Page {pageNumber}\n{sseEvent.Content}");
break;
case SpreadsheetMetadata spreadsheetMetadata:
var sheetName = spreadsheetMetadata.Spreadsheet?.SheetName;
var rowNumber = spreadsheetMetadata.Spreadsheet?.RowNumber;
if (rowNumber == 1) { result.AppendLine($"\n{sheetName}:"); }
if (rowNumber == 1) { result.AppendLine($"\n# {sheetName}"); }
result.AppendLine($"{sseEvent.Content}");
break;
@ -48,13 +49,17 @@ public static class SseHandler
case PresentationMetadata presentationMetadata:
var slideNumber = presentationMetadata.Presentation?.SlideNumber ?? 0;
var image = presentationMetadata.Presentation?.Image ?? null;
result.AppendLine($"{sseEvent.Content}");
if (slideNumber != CURRENT_SLIDE_NUMBER) { result.AppendLine($"# Slide {slideNumber}"); }
result.Append($"{sseEvent.Content}");
if (image != null)
{
var isEnd = ProcessImageSegment(image);
if (isEnd && extractImages) { result.AppendLine(BuildImage(image.Id!)); }
}
CURRENT_SLIDE_NUMBER = slideNumber;
break;
default:
@ -64,11 +69,11 @@ public static class SseHandler
}
else if (!string.IsNullOrEmpty(sseEvent.Content))
{
result.AppendLine(sseEvent.Content);
result.Append(sseEvent.Content);
}
else if (string.IsNullOrEmpty(sseEvent.Content))
{
result.AppendLine();
result.Append(string.Empty);
}
await Task.CompletedTask;