i18n(ui): English UI labels for weekly report and notes (report body stays German)
This commit is contained in:
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
<Button Classes="btn" Content="‹" Command="{Binding PrevDayCommand}"/>
|
||||
<ctl:ThemedDatePicker SelectedDate="{Binding CurrentDate, Mode=TwoWay}"/>
|
||||
<Button Classes="btn" Content="›" 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…" Text="{Binding NewBulletText}">
|
||||
<TextBox PlaceholderText="New note…" 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ö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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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ür diesen Zeitraum. Klicke „Erstellen“.'
|
||||
Text='No report for this range yet. Click “Generate”.'
|
||||
IsVisible="{Binding EmptyStateVisible}"/>
|
||||
|
||||
<ScrollViewer IsVisible="{Binding HasReport}">
|
||||
|
||||
@@ -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!;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user