i18n(ui): English UI labels for weekly report and notes (report body stays German)

This commit is contained in:
mika kuns
2026-06-03 10:44:36 +02:00
parent 2d55f88a41
commit a935bf9664
8 changed files with 28 additions and 28 deletions

View File

@@ -72,16 +72,16 @@ public sealed partial class WeeklyReportModalViewModel : ViewModelBase
[RelayCommand(CanExecute = nameof(CanGenerate))]
private async Task Generate()
{
if (!RangeValid) { StatusMessage = "Ungültiger Zeitraum."; return; }
if (!RangeValid) { StatusMessage = "Invalid date range."; return; }
IsBusy = true;
StatusMessage = "Bericht wird erstellt…";
StatusMessage = "Generating report…";
try
{
ReportMarkdown = await _worker.GenerateWeekReportAsync(
DateOnly.FromDateTime(StartDate!.Value), DateOnly.FromDateTime(EndDate!.Value));
StatusMessage = "";
}
catch (Exception ex) { StatusMessage = $"Fehler: {ex.Message}"; }
catch (Exception ex) { StatusMessage = $"Error: {ex.Message}"; }
finally { IsBusy = false; }
}
}

View File

@@ -9,14 +9,14 @@
<Button Classes="btn" Content="&#x2039;" Command="{Binding PrevDayCommand}"/>
<ctl:ThemedDatePicker SelectedDate="{Binding CurrentDate, Mode=TwoWay}"/>
<Button Classes="btn" Content="&#x203A;" Command="{Binding NextDayCommand}"/>
<Button Classes="btn" Content="Heute" Command="{Binding TodayCommand}"/>
<Button Classes="btn" Content="Today" Command="{Binding TodayCommand}"/>
<TextBlock Classes="meta" VerticalAlignment="Center" Text="{Binding CurrentDayLabel}"/>
</StackPanel>
<DockPanel DockPanel.Dock="Top" Margin="0,12,0,8">
<Button DockPanel.Dock="Right" Classes="btn" Content="Add" Margin="8,0,0,0"
Command="{Binding AddBulletCommand}"/>
<TextBox PlaceholderText="Neue Notiz&#x2026;" Text="{Binding NewBulletText}">
<TextBox PlaceholderText="New note&#x2026;" Text="{Binding NewBulletText}">
<TextBox.KeyBindings>
<KeyBinding Gesture="Enter" Command="{Binding AddBulletCommand}"/>
</TextBox.KeyBindings>
@@ -29,8 +29,8 @@
<DataTemplate x:DataType="vm:NoteBulletViewModel">
<Grid ColumnDefinitions="*,Auto,Auto" Margin="0,2" ColumnSpacing="6">
<TextBox Grid.Column="0" Text="{Binding Text}"/>
<Button Grid.Column="1" Classes="btn" Content="Speichern" Command="{Binding SaveCommand}"/>
<Button Grid.Column="2" Classes="btn" Content="L&#xF6;schen" Command="{Binding DeleteCommand}"/>
<Button Grid.Column="1" Classes="btn" Content="Save" Command="{Binding SaveCommand}"/>
<Button Grid.Column="2" Classes="btn" Content="Delete" Command="{Binding DeleteCommand}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>

View File

@@ -71,7 +71,7 @@
Margin="16,0,16,8"
IsVisible="{Binding ShowNotesRow}"
Command="{Binding OpenNotesCommand}"
Content="Notizen (Tagesnotizen)"/>
Content="Notes (daily notes)"/>
<!-- Task list -->
<ScrollViewer>

View File

@@ -65,7 +65,7 @@
Command="{Binding RestartWorkerCommand}"/>
<MenuItem Header="Worktrees…"
Command="{Binding OpenWorktreesOverviewGlobalCommand}"/>
<MenuItem Header="Wochenbericht…" Command="{Binding OpenWeeklyReportCommand}"/>
<MenuItem Header="Weekly Report…" Command="{Binding OpenWeeklyReportCommand}"/>
<MenuItem Header="About…" Command="{Binding OpenAboutCommand}"/>
<MenuItem Header="Add repos as lists…" Command="{Binding OpenRepoImportCommand}"/>
</MenuItem>

View File

@@ -79,19 +79,19 @@
Opacity="0.6" FontSize="12"/>
</StackPanel>
<StackPanel Spacing="4">
<TextBlock Classes="field-label" Text="Bericht: ausgeschlossene Pfade (einer pro Zeile)"/>
<TextBlock Classes="field-label" Text="Report: excluded paths (one per line)"/>
<TextBox AcceptsReturn="True" MinHeight="60" Text="{Binding General.ReportExcludedPaths, Mode=TwoWay}"/>
</StackPanel>
<StackPanel Spacing="4">
<TextBlock Classes="field-label" Text="Standup-Wochentag"/>
<TextBlock Classes="field-label" Text="Standup weekday"/>
<ComboBox SelectedIndex="{Binding General.StandupWeekday, Mode=TwoWay}" HorizontalAlignment="Left">
<ComboBoxItem>Sonntag</ComboBoxItem>
<ComboBoxItem>Montag</ComboBoxItem>
<ComboBoxItem>Dienstag</ComboBoxItem>
<ComboBoxItem>Mittwoch</ComboBoxItem>
<ComboBoxItem>Donnerstag</ComboBoxItem>
<ComboBoxItem>Freitag</ComboBoxItem>
<ComboBoxItem>Samstag</ComboBoxItem>
<ComboBoxItem>Sunday</ComboBoxItem>
<ComboBoxItem>Monday</ComboBoxItem>
<ComboBoxItem>Tuesday</ComboBoxItem>
<ComboBoxItem>Wednesday</ComboBoxItem>
<ComboBoxItem>Thursday</ComboBoxItem>
<ComboBoxItem>Friday</ComboBoxItem>
<ComboBoxItem>Saturday</ComboBoxItem>
</ComboBox>
</StackPanel>
</StackPanel>

View File

@@ -4,7 +4,7 @@
xmlns:ctl="using:ClaudeDo.Ui.Views.Controls"
x:Class="ClaudeDo.Ui.Views.Modals.WeeklyReportModalView"
x:DataType="vm:WeeklyReportModalViewModel"
Title="Wochenbericht"
Title="Weekly Report"
Width="820" Height="640"
WindowDecorations="None"
ExtendClientAreaToDecorationsHint="True"
@@ -14,16 +14,16 @@
<KeyBinding Gesture="Escape" Command="{Binding CloseCommand}"/>
</Window.KeyBindings>
<ctl:ModalShell Title="WOCHENBERICHT" CloseCommand="{Binding CloseCommand}">
<ctl:ModalShell Title="WEEKLY REPORT" CloseCommand="{Binding CloseCommand}">
<DockPanel Margin="20,16">
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Spacing="8">
<TextBlock Classes="meta" Text="Von" VerticalAlignment="Center"/>
<TextBlock Classes="meta" Text="From" VerticalAlignment="Center"/>
<ctl:ThemedDatePicker SelectedDate="{Binding StartDate}"/>
<TextBlock Classes="meta" Text="Bis" VerticalAlignment="Center"/>
<TextBlock Classes="meta" Text="To" VerticalAlignment="Center"/>
<ctl:ThemedDatePicker SelectedDate="{Binding EndDate}"/>
<Button Classes="btn" Content="Erstellen" Command="{Binding GenerateCommand}"
<Button Classes="btn" Content="Generate" Command="{Binding GenerateCommand}"
IsVisible="{Binding EmptyStateVisible}"/>
<Button Classes="btn" Content="Neu erstellen" Command="{Binding GenerateCommand}"
<Button Classes="btn" Content="Regenerate" Command="{Binding GenerateCommand}"
IsVisible="{Binding HasReport}"/>
</StackPanel>
@@ -31,7 +31,7 @@
Text="{Binding StatusMessage}"/>
<TextBlock DockPanel.Dock="Top" Classes="meta" Margin="0,16"
Text='Noch kein Bericht f&#xFC;r diesen Zeitraum. Klicke &#x201E;Erstellen&#x201C;.'
Text='No report for this range yet. Click &#x201C;Generate&#x201D;.'
IsVisible="{Binding EmptyStateVisible}"/>
<ScrollViewer IsVisible="{Binding HasReport}">

View File

@@ -11,7 +11,7 @@ namespace ClaudeDo.Worker.Report;
public sealed class WeekReportService : IWeekReportService
{
private static readonly string[] DefaultExcludes = { @"C:\Private" };
private const string NoActivity = "_Keine Aktivität in diesem Zeitraum._";
private const string NoActivity = "_No activity in this period._";
private readonly IClaudeHistoryReader _reader;
private readonly IDbContextFactory<ClaudeDoDbContext> _dbFactory;
@@ -72,7 +72,7 @@ public sealed class WeekReportService : IWeekReportService
var args = $"-p --output-format stream-json --verbose --permission-mode auto --model {safeModel}";
var result = await _claude.RunAsync(args, prompt, Path.GetTempPath(), _ => Task.CompletedTask, ct);
if (!result.IsSuccess)
throw new InvalidOperationException(result.ErrorMarkdown ?? "Claude konnte den Bericht nicht erzeugen.");
throw new InvalidOperationException(result.ErrorMarkdown ?? "Claude could not generate the report.");
markdown = result.ResultMarkdown!;
}

View File

@@ -43,7 +43,7 @@ public class WeekReportServiceTests : IDisposable
var md = await svc.GenerateAsync(Start, End);
Assert.Equal(0, claude.Calls);
Assert.Contains("Keine Aktivität", md);
Assert.Contains("No activity", md);
using var ctx = _db.CreateContext();
Assert.NotNull(await new WeekReportRepository(ctx).GetByRangeAsync(Start, End));
}