i18n: full pass + culture-aware dates/sizes + Software Update License wording
- Strings.cs : ~80 new keys covering status messages, progress detail (DL/extraction/verify), license summary, license details dialog, onboarding statuses, settings field labels, restart/cancel/quit confirmations, toasts, resume choice, copyright. Strings.FormatSize and Strings.FormatDate / FormatLongDate switch units (o/Ko vs B/KB) and pattern (dd/MM/yyyy vs M/d/yyyy vs 2026年) by active language. - License terminology renamed across UI: "License" → "License de mise à jour" / "Software Update License" to clarify it gates UPDATES, not Proserve itself. Expired/revoked dialogs now spell out "you can still download versions released before this date and launch any installed version". - "🔒 License insuffisante" → "🔒 License de mise à jour requise pour cette version" / "Valid update license needed for this version" so users understand it's a per-version eligibility check, not a global block. - All hardcoded FR strings in views (SettingsDialog labels, LicenseDetails fields, Onboarding statuses, dialog titles, copyright, window chrome tooltips, "Sortie le", etc.) replaced with x:Static loc bindings. - All FormatSize duplicates (5 places) and date format strings (8 places) delegate to Strings helpers — single source of truth for localization. - Settings dialog: License section moved to the top before Language. It's the most important info and conditions what the user can download. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -30,30 +30,9 @@
|
||||
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" Padding="32,0,32,16">
|
||||
<StackPanel>
|
||||
|
||||
<!-- Langue de l'interface -->
|
||||
<Border Background="{StaticResource Brush.Bg.Card}"
|
||||
BorderBrush="{StaticResource Brush.Border}" BorderThickness="1"
|
||||
CornerRadius="6" Padding="20" Margin="0,0,0,16">
|
||||
<StackPanel>
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsLanguage}"
|
||||
FontSize="11" FontWeight="Bold"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
Margin="0,0,0,8" />
|
||||
<ComboBox ItemsSource="{Binding AvailableLanguages}"
|
||||
DisplayMemberPath="Name"
|
||||
SelectedValuePath="Code"
|
||||
SelectedValue="{Binding Language, Mode=TwoWay}"
|
||||
Background="#1A1A20"
|
||||
Foreground="{StaticResource Brush.Text.Primary}"
|
||||
BorderBrush="{StaticResource Brush.Border}"
|
||||
BorderThickness="1" Padding="8" />
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsLanguageHint}"
|
||||
FontSize="11" Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
FontStyle="Italic" Margin="0,6,0,0" TextWrapping="Wrap" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- License (en tête, bordure colorée selon état) -->
|
||||
<!-- License de mise à jour (en tête : c'est l'info la plus importante,
|
||||
elle conditionne ce que l'utilisateur peut télécharger.
|
||||
Bordure colorée selon l'état : vert/jaune/rouge). -->
|
||||
<Border BorderThickness="2"
|
||||
CornerRadius="6" Padding="20" Margin="0,0,0,16">
|
||||
<Border.Style>
|
||||
@@ -124,7 +103,7 @@
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Grid.Column="0">
|
||||
<TextBlock Text="Identifiant machine (anonyme)"
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsMachineId}"
|
||||
FontSize="11"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}" />
|
||||
<TextBlock Text="{Binding MachineId}"
|
||||
@@ -134,12 +113,35 @@
|
||||
</StackPanel>
|
||||
<Button Grid.Column="1"
|
||||
Style="{StaticResource SecondaryButton}"
|
||||
Content="📋 Copier"
|
||||
Content="{x:Static loc:Strings.SettingsCopyMachineId}"
|
||||
Command="{Binding CopyMachineIdCommand}" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<!-- Langue de l'interface -->
|
||||
<Border Background="{StaticResource Brush.Bg.Card}"
|
||||
BorderBrush="{StaticResource Brush.Border}" BorderThickness="1"
|
||||
CornerRadius="6" Padding="20" Margin="0,0,0,16">
|
||||
<StackPanel>
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsLanguage}"
|
||||
FontSize="11" FontWeight="Bold"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
Margin="0,0,0,8" />
|
||||
<ComboBox ItemsSource="{Binding AvailableLanguages}"
|
||||
DisplayMemberPath="Name"
|
||||
SelectedValuePath="Code"
|
||||
SelectedValue="{Binding Language, Mode=TwoWay}"
|
||||
Background="#1A1A20"
|
||||
Foreground="{StaticResource Brush.Text.Primary}"
|
||||
BorderBrush="{StaticResource Brush.Border}"
|
||||
BorderThickness="1" Padding="8" />
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsLanguageHint}"
|
||||
FontSize="11" Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
FontStyle="Italic" Margin="0,6,0,0" TextWrapping="Wrap" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Serveur -->
|
||||
<Border Background="{StaticResource Brush.Bg.Card}"
|
||||
BorderBrush="{StaticResource Brush.Border}" BorderThickness="1"
|
||||
@@ -149,7 +151,7 @@
|
||||
FontSize="11" FontWeight="Bold"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
Margin="0,0,0,8" />
|
||||
<TextBlock Text="URL de l'API"
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsApiUrl}"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
FontSize="12" Margin="0,0,0,4" />
|
||||
<Grid>
|
||||
@@ -184,7 +186,7 @@
|
||||
FontSize="11" FontWeight="Bold"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
Margin="0,0,0,8" />
|
||||
<TextBlock Text="Dossier où sont installées les versions"
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsInstallRoot}"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
FontSize="12" Margin="0,0,0,4" />
|
||||
<Grid>
|
||||
@@ -229,7 +231,8 @@
|
||||
TextTrimming="CharacterEllipsis" />
|
||||
<TextBlock FontSize="12"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}">
|
||||
<Run Text="Taille actuelle : " />
|
||||
<Run Text="{x:Static loc:Strings.SettingsCacheSize}" />
|
||||
<Run Text=" " />
|
||||
<Run Text="{Binding CacheSizeDisplay}" FontWeight="SemiBold" />
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
@@ -256,10 +259,11 @@
|
||||
Margin="0,0,0,8" />
|
||||
<TextBlock FontSize="13"
|
||||
Foreground="{StaticResource Brush.Text.Primary}">
|
||||
<Run Text="Version : " />
|
||||
<Run Text="{x:Static loc:Strings.SettingsLauncherVersion}" />
|
||||
<Run Text=" " />
|
||||
<Run Text="{Binding LauncherVersion, Mode=OneWay}" FontWeight="SemiBold" />
|
||||
</TextBlock>
|
||||
<TextBlock Text="© 2026 ASTERION VR — Tous droits réservés"
|
||||
<TextBlock Text="{x:Static loc:Strings.Copyright}"
|
||||
FontSize="12"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
Margin="0,4,0,0" />
|
||||
@@ -273,14 +277,14 @@
|
||||
FontFamily="Consolas" FontSize="11"
|
||||
Foreground="{StaticResource Brush.Text.Primary}"
|
||||
TextTrimming="CharacterEllipsis" />
|
||||
<TextBlock Text="Logs rotation quotidienne, 10 jours conservés"
|
||||
<TextBlock Text="{x:Static loc:Strings.SettingsCacheRotation}"
|
||||
FontSize="12"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
Margin="0,2,0,0" />
|
||||
</StackPanel>
|
||||
<Button Grid.Column="1" Margin="8,0,0,0"
|
||||
Style="{StaticResource SecondaryButton}"
|
||||
Content="📁 Ouvrir"
|
||||
Content="{x:Static loc:Strings.OpenButton}"
|
||||
Command="{Binding OpenLogsFolderCommand}" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
Reference in New Issue
Block a user