mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-04-28 16:19:48 +00:00
Implemented live translation
This commit is contained in:
parent
382304be8e
commit
ba6610bd96
@ -3,13 +3,33 @@
|
|||||||
@using AIStudio.Tools
|
@using AIStudio.Tools
|
||||||
@inherits AssistantBaseCore
|
@inherits AssistantBaseCore
|
||||||
|
|
||||||
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Your input" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3"/>
|
<MudField Label="Live translation" Variant="Variant.Outlined" Class="mb-3">
|
||||||
|
<MudSwitch T="bool" @bind-Value="@this.liveTranslation">
|
||||||
|
@(this.liveTranslation ? "Live translation" : "No live translation")
|
||||||
|
</MudSwitch>
|
||||||
|
</MudField>
|
||||||
|
|
||||||
|
@if (this.liveTranslation)
|
||||||
|
{
|
||||||
|
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Your input" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" Immediate="@true" DebounceInterval="1_000" OnDebounceIntervalElapsed="() => this.TranslateText(force: false)"/>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Your input" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" />
|
||||||
|
}
|
||||||
|
|
||||||
<MudStack Row="@true" AlignItems="AlignItems.Center" Class="mb-3">
|
<MudStack Row="@true" AlignItems="AlignItems.Center" Class="mb-3">
|
||||||
<MudSelect T="CommonLanguages" @bind-Value="@this.selectedTargetLanguage" AdornmentIcon="@Icons.Material.Filled.Translate" Adornment="Adornment.Start" Label="Target language" Variant="Variant.Outlined" Margin="Margin.Dense">
|
<MudSelect T="CommonLanguages" @bind-Value="@this.selectedTargetLanguage" Validation="@this.ValidatingTargetLanguage" AdornmentIcon="@Icons.Material.Filled.Translate" Adornment="Adornment.Start" Label="Target language" Variant="Variant.Outlined" Margin="Margin.Dense">
|
||||||
@foreach (var targetLanguage in Enum.GetValues<CommonLanguages>())
|
@foreach (var targetLanguage in Enum.GetValues<CommonLanguages>())
|
||||||
{
|
{
|
||||||
<MudSelectItem Value="@targetLanguage">@targetLanguage.Name()</MudSelectItem>
|
if (targetLanguage is CommonLanguages.AS_IS)
|
||||||
|
{
|
||||||
|
<MudSelectItem Value="@targetLanguage">Please select the target language</MudSelectItem>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudSelectItem Value="@targetLanguage">@targetLanguage.Name()</MudSelectItem>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</MudSelect>
|
</MudSelect>
|
||||||
@if (this.selectedTargetLanguage is CommonLanguages.OTHER)
|
@if (this.selectedTargetLanguage is CommonLanguages.OTHER)
|
||||||
@ -25,6 +45,6 @@
|
|||||||
}
|
}
|
||||||
</MudSelect>
|
</MudSelect>
|
||||||
|
|
||||||
<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.TranslateText()">
|
<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.TranslateText(force: true)">
|
||||||
Translate
|
Translate
|
||||||
</MudButton>
|
</MudButton>
|
@ -20,7 +20,9 @@ public partial class AssistantTranslator : AssistantBaseCore
|
|||||||
language requires, e.g., shorter sentences, you should split the text into shorter sentences.
|
language requires, e.g., shorter sentences, you should split the text into shorter sentences.
|
||||||
""";
|
""";
|
||||||
|
|
||||||
|
private bool liveTranslation;
|
||||||
private string inputText = string.Empty;
|
private string inputText = string.Empty;
|
||||||
|
private string inputTextLastTranslation = string.Empty;
|
||||||
private CommonLanguages selectedTargetLanguage;
|
private CommonLanguages selectedTargetLanguage;
|
||||||
private string customTargetLanguage = string.Empty;
|
private string customTargetLanguage = string.Empty;
|
||||||
|
|
||||||
@ -40,6 +42,14 @@ public partial class AssistantTranslator : AssistantBaseCore
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string? ValidatingTargetLanguage(CommonLanguages language)
|
||||||
|
{
|
||||||
|
if(language == CommonLanguages.AS_IS)
|
||||||
|
return "Please select a target language.";
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private string? ValidateCustomLanguage(string language)
|
private string? ValidateCustomLanguage(string language)
|
||||||
{
|
{
|
||||||
if(this.selectedTargetLanguage == CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language))
|
if(this.selectedTargetLanguage == CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language))
|
||||||
@ -48,12 +58,15 @@ public partial class AssistantTranslator : AssistantBaseCore
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task TranslateText()
|
private async Task TranslateText(bool force)
|
||||||
{
|
{
|
||||||
await this.form!.Validate();
|
|
||||||
if (!this.inputIsValid)
|
if (!this.inputIsValid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if(!force && this.inputText == this.inputTextLastTranslation)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.inputTextLastTranslation = this.inputText;
|
||||||
this.CreateChatThread();
|
this.CreateChatThread();
|
||||||
var time = this.AddUserRequest(
|
var time = this.AddUserRequest(
|
||||||
$"""
|
$"""
|
||||||
|
Loading…
Reference in New Issue
Block a user