- Init Localizer at app startup (before self-update prompt) and assign to TrExtension.Localizer - Register ILocalizer in DI; inject into WizardViewModel and SettingsViewModel - WizardViewModel: SelectedLanguage ComboBox binding with OnSelectedLanguageChanged -> SetLanguage + InstallContext.Language - WizardWindow.xaml: DockPanel wraps step chips + language ComboBox (right-aligned) - Localize all installer XAML: WizardWindow, WelcomePage, PathsPage, ServicePage, UiSettingsPage, InstallPage, SettingsWindow, SelfUpdatePromptWindow - Localize page Title properties and WizardViewModel.NextButtonText via TrExtension.Localizer - Persist chosen Language in WriteConfigStep and SettingsViewModel.Save into ui.config.json - Append installer section to en.json (nav, welcome, paths, service, uiSettings, install, settings, selfUpdate) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
2.5 KiB
XML
43 lines
2.5 KiB
XML
<UserControl x:Class="ClaudeDo.Installer.Pages.PathsPage.PathsPageView"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:local="clr-namespace:ClaudeDo.Installer.Pages.PathsPage"
|
|
xmlns:loc="clr-namespace:ClaudeDo.Installer.Localization"
|
|
d:DataContext="{d:DesignInstance local:PathsPageViewModel}"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
mc:Ignorable="d">
|
|
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<StackPanel MaxWidth="520">
|
|
<TextBlock Text="{loc:Tr installer.paths.title}" FontSize="18" FontWeight="SemiBold" Margin="0,0,0,4"/>
|
|
<TextBlock Text="{loc:Tr installer.paths.subtitle}"
|
|
Foreground="{StaticResource TextSecondaryBrush}" Margin="0,0,0,20"
|
|
TextWrapping="Wrap"/>
|
|
|
|
<Label Content="{loc:Tr installer.paths.databasePath}"/>
|
|
<TextBox Text="{Binding DbPath, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,12"/>
|
|
|
|
<Label Content="{loc:Tr installer.paths.logDirectory}"/>
|
|
<TextBox Text="{Binding LogRoot, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,12"/>
|
|
|
|
<Label Content="{loc:Tr installer.paths.sandboxRoot}"/>
|
|
<TextBox Text="{Binding SandboxRoot, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,12"/>
|
|
|
|
<Label Content="{loc:Tr installer.paths.worktreeStrategy}"/>
|
|
<ComboBox SelectedItem="{Binding WorktreeRootStrategy}" Margin="0,0,0,12">
|
|
<sys:String xmlns:sys="clr-namespace:System;assembly=mscorlib">sibling</sys:String>
|
|
<sys:String xmlns:sys="clr-namespace:System;assembly=mscorlib">central</sys:String>
|
|
</ComboBox>
|
|
|
|
<StackPanel Visibility="{Binding IsCentralVisible, Converter={StaticResource BoolToVisConverter}}">
|
|
<Label Content="{loc:Tr installer.paths.centralWorktreeRoot}"/>
|
|
<TextBox Text="{Binding CentralWorktreeRoot, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,12"/>
|
|
</StackPanel>
|
|
|
|
<TextBlock Text="{Binding ValidationError}" Foreground="{StaticResource ErrorBrush}" FontSize="11"
|
|
Visibility="{Binding ValidationError, Converter={StaticResource NullToCollapsedConverter}}"/>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</UserControl>
|