Added the choice between formal and informal address to the whole app (#1200)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2026-11-13 10:16:56 +01:00
1 parent 382db4b8d0
commit c9a376f742
342 files changed
+14378 -1893

No files matched your search

@@ -8,7 +8,7 @@
@if (this.step is BuilderStep.DESCRIBE)
{
<ReadFileContent Text="@T("Load description from file")" @bind-FileContent="@this.assistantDescription" EnableDragDrop="true" CatchAllDocuments="true"/>
<MudTextField T="string" @bind-Text="@this.assistantDescription" Validation="@this.ValidateAssistantDescription" AdornmentIcon="@AppIcons.GENERATE" Adornment="Adornment.Start" Label="@T("Describe your assistant")" HelperText="@T("Describe the task, inputs, and desired output in your own words. The model will infer all the plugin details.")" Placeholder="@T("I need an assistant that turns meeting notes into clear tasks with owners and deadlines.")" Variant="Variant.Outlined" Lines="8" Sizing="InputSizing.Auto" MaxLines="18" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
<MudTextField T="string" @bind-Text="@this.assistantDescription" Validation="@this.ValidateAssistantDescription" AdornmentIcon="@AppIcons.GENERATE" Adornment="Adornment.Start" Label="@TA("Describe your assistant")" HelperText="@TA("Describe the task, inputs, and desired output in your own words. The model will infer all the plugin details.")" Placeholder="@T("I need an assistant that turns meeting notes into clear tasks with owners and deadlines.")" Variant="Variant.Outlined" Lines="8" Sizing="InputSizing.Auto" MaxLines="18" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
@* This switch chooses between the two kinds of assistant the Builder can create, so it stays
outside the advanced options. Its fields are required, and a collapsed panel would hide
@@ -23,7 +23,7 @@
</MudField>
<MudJustifiedText Typo="Typo.body2" Class="mb-3">
@(this.createChatLauncher
? T("The direct chat launcher tile has no input form of its own. It opens a new chat right away, with the provider, profile, chat template, and data sources you select below. Name a workspace for that chat, or leave the workspace empty to open a disappearing chat.")
? TA("The direct chat launcher tile has no input form of its own. It opens a new chat right away, with the provider, profile, chat template, and data sources you select below. Name a workspace for that chat, or leave the workspace empty to open a disappearing chat.")
: T("The assistant asks users for input through a form and builds its own prompt from it."))
</MudJustifiedText>
@if (this.createChatLauncher)
@@ -95,7 +95,7 @@ else
</MudTooltip>
@if (this.step is BuilderStep.DONE)
{
<MudTooltip Text="@T("Discard the current plugin preview, edit the accepted draft, and generate the plugin again.")">
<MudTooltip Text="@TA("Discard the current plugin preview, edit the accepted draft, and generate the plugin again.")">
<MudButton Variant="Variant.Outlined" StartIcon="@AppIcons.EDIT" Size="Size.Small" IconSize="Size.Small" OnClick="@(async () => await this.EditDraftAndDiscardPluginPreview())">
@T("Edit draft")
</MudButton>
@@ -242,7 +242,7 @@ else
@if (this.RequiresActivationConfirmation)
{
<MudAlert Severity="Severity.Warning" Dense="@true" Icon="@AppIcons.WARNING">
@T("The security check is below your required level. Your settings allow activation after confirmation.")
@TA("The security check is below your required level. Your settings allow activation after confirmation.")
</MudAlert>
}
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@AppIcons.ENABLE" Disabled="@(!this.CanEnableAssistant)" OnClick="@(async () => await this.EnableInstalledAssistantAsync())">
@@ -262,7 +262,7 @@ else
}
else
{
<MudText Typo="Typo.body2">@T("Enable the assistant before opening it.")</MudText>
<MudText Typo="Typo.body2">@TA("Enable the assistant before opening it.")</MudText>
}
</MudStack>
</MudStep>
@@ -34,7 +34,7 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
protected override string Title => T("Assistant Builder");
protected override string Description => T("Describe the assistant you want to create. AI Studio will draft a readable assistant specification first and then generate an assistant plugin from it.");
protected override string Description => TA("Describe the assistant you want to create. AI Studio will draft a readable assistant specification first and then generate an assistant plugin from it.");
// This assistant generates a plugin and has no conversation for a chat to continue:
protected override ChatSystemPromptChoice ChatSystemPrompt => ChatSystemPromptChoice.AI_STUDIO_DEFAULT;
@@ -369,7 +369,7 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
private string? ValidateAssistantDescription(string description)
{
if (string.IsNullOrWhiteSpace(description))
return T("Please describe the assistant you want to create.");
return TA("Please describe the assistant you want to create.");
return null;
}
@@ -382,7 +382,7 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
private string? ValidateCustomCategory(string category)
{
if(this.selectedCategory is AssistantCategory.OTHER && string.IsNullOrWhiteSpace(category))
return T("Please provide a custom category.");
return TA("Please provide a custom category.");
return null;
}
@@ -390,7 +390,7 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
private string? ValidateCustomOutputLanguage(string language)
{
if(this.selectedOutputLanguage is CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language))
return T("Please provide a custom output language.");
return TA("Please provide a custom output language.");
return null;
}
@@ -447,7 +447,7 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
if (string.IsNullOrWhiteSpace(this.generatedAssistantSpec))
{
this.AddInputIssue(T("Please create an assistant draft first."));
this.AddInputIssue(TA("Please create an assistant draft first."));
return;
}
@@ -609,7 +609,7 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
if (!this.createChatLauncher || !this.MaySuggestDescription())
return;
var suggestion = T("Create a tile that opens a preconfigured chat directly, without an input form of its own.");
var suggestion = TA("Create a tile that opens a preconfigured chat directly, without an input form of its own.");
suggestion = string.IsNullOrWhiteSpace(this.launcherWorkspaceName)
? $"{suggestion} {T("The chat opens as a disappearing chat, without a workspace.")}"
: $"{suggestion} {string.Format(T("Workspace: {0}"), this.launcherWorkspaceName.Trim())}";
@@ -740,8 +740,8 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
if (this.IsActivationBlockedBySettings)
{
this.stepperIndex = (int)BuilderInstallStep.ENABLE_ASSISTANT;
this.FailInstallStep(BuilderInstallStep.ENABLE_ASSISTANT, T("This assistant cannot be enabled because the security check is below your required level."));
await this.MessageBus.SendError(new(AppIcons.BLOCKED, T("The assistant cannot be enabled because it is below your required security level.")));
this.FailInstallStep(BuilderInstallStep.ENABLE_ASSISTANT, TA("This assistant cannot be enabled because the security check is below your required level."));
await this.MessageBus.SendError(new(AppIcons.BLOCKED, TA("The assistant cannot be enabled because it is below your required security level.")));
return;
}
@@ -791,7 +791,7 @@ public partial class AssistantBuilder : AssistantBaseCore<SettingsDialogAssistan
{
x => x.Message,
string.Format(
T("The assistant '{0}' was checked with the level '{1}', which is below your required level '{2}'. Your settings allow activation anyway, but this may be unsafe. Do you want to enable this assistant?"),
TA("The assistant '{0}' was checked with the level '{1}', which is below your required level '{2}'. Your settings allow activation anyway, but this may be unsafe. Do you want to enable this assistant?"),
this.pluginInstallResult?.PluginName ?? T("Unknown assistant"),
this.pluginAudit?.Level.Name ?? T("Unknown"),
this.SettingsManager.ConfigurationData.AssistantPluginAudit.MinimumLevel.Name)