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:
@@ -121,6 +121,14 @@
|
||||
Content="{Binding InstallButtonLabel}" Padding="22,8" FontSize="13"
|
||||
Command="{Binding InstallCommand}"
|
||||
Visibility="{Binding IsRemoteOnly, Converter={StaticResource BoolToVisibility}}" />
|
||||
<!-- Bouton rouge « Annuler » : visible uniquement quand on a un partial.
|
||||
Permet d'abandonner le partial et repartir de zéro (avec confirmation). -->
|
||||
<Button Style="{StaticResource DangerButton}"
|
||||
Content="{x:Static loc:Strings.ActionCancel}"
|
||||
Padding="14,8" FontSize="13" Margin="6,0,0,0"
|
||||
Command="{Binding RestartFromZeroCommand}"
|
||||
ToolTip="{x:Static loc:Strings.MenuRestartFromZero}"
|
||||
Visibility="{Binding ShowRestartFromZero, Converter={StaticResource BoolToVisibility}}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Visibility="{Binding IsBusy, Converter={StaticResource BoolToVisibility}}">
|
||||
<ProgressBar Width="140" Height="6"
|
||||
@@ -149,6 +157,9 @@
|
||||
<MenuItem Header="{x:Static loc:Strings.MenuOpenFolder}"
|
||||
Command="{Binding PlacementTarget.Tag.OpenFolderCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
||||
Visibility="{Binding PlacementTarget.Tag.IsInstalled, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource BoolToVisibility}}" />
|
||||
<MenuItem Header="{x:Static loc:Strings.MenuRestartFromZero}"
|
||||
Command="{Binding PlacementTarget.Tag.RestartFromZeroCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
||||
Visibility="{Binding PlacementTarget.Tag.HasResumableDownload, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource BoolToVisibility}}" />
|
||||
<Separator Visibility="{Binding PlacementTarget.Tag.IsInstalled, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource BoolToVisibility}}" />
|
||||
<MenuItem Header="{x:Static loc:Strings.MenuUninstall}"
|
||||
Command="{Binding PlacementTarget.Tag.UninstallCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
||||
@@ -289,15 +300,15 @@
|
||||
Command="{Binding OpenSettingsCommand}"
|
||||
Margin="0,0,16,0" />
|
||||
<Button Style="{StaticResource WindowControlButton}"
|
||||
Content="—" ToolTip="Réduire"
|
||||
Content="—" ToolTip="{x:Static loc:Strings.Minimize}"
|
||||
shell:WindowChrome.IsHitTestVisibleInChrome="True"
|
||||
Click="OnMinimizeClick" />
|
||||
<Button Style="{StaticResource WindowControlButton}"
|
||||
Content="☐" ToolTip="Agrandir / Restaurer"
|
||||
Content="☐" ToolTip="{x:Static loc:Strings.Maximize}"
|
||||
shell:WindowChrome.IsHitTestVisibleInChrome="True"
|
||||
Click="OnMaxRestoreClick" />
|
||||
<Button Style="{StaticResource WindowCloseButton}"
|
||||
Content="✕" ToolTip="Fermer"
|
||||
Content="✕" ToolTip="{x:Static loc:Strings.CloseTooltip}"
|
||||
shell:WindowChrome.IsHitTestVisibleInChrome="True"
|
||||
Click="OnCloseClick" />
|
||||
</StackPanel>
|
||||
@@ -404,7 +415,7 @@
|
||||
FontSize="13"
|
||||
Foreground="{StaticResource Brush.Text.Secondary}"
|
||||
Margin="0,8,0,0">
|
||||
<Run Text="Sortie le " />
|
||||
<Run Text="{x:Static loc:Strings.ReleasedOn}" />
|
||||
<Run Text="{Binding FeaturedVersion.PrimaryDate, Mode=OneWay}" />
|
||||
<Run Text=" • " />
|
||||
<Run Text="{Binding FeaturedVersion.SizeDisplay, Mode=OneWay}" />
|
||||
@@ -419,13 +430,23 @@
|
||||
Command="{Binding FeaturedVersion.LaunchCommand}"
|
||||
Visibility="{Binding FeaturedVersion.IsInstalled, Converter={StaticResource BoolToVisibility}}" />
|
||||
|
||||
<Button Grid.Row="0" Grid.RowSpan="3" Grid.Column="1"
|
||||
Style="{StaticResource AccentButton}"
|
||||
Content="{Binding FeaturedVersion.InstallButtonLabel}"
|
||||
FontSize="20" Padding="48,16"
|
||||
VerticalAlignment="Center"
|
||||
Command="{Binding FeaturedVersion.InstallCommand}"
|
||||
Visibility="{Binding FeaturedVersion.IsRemoteOnly, Converter={StaticResource BoolToVisibility}}" />
|
||||
<StackPanel Grid.Row="0" Grid.RowSpan="3" Grid.Column="1"
|
||||
Orientation="Vertical" VerticalAlignment="Center"
|
||||
Visibility="{Binding FeaturedVersion.IsRemoteOnly, Converter={StaticResource BoolToVisibility}}">
|
||||
<Button Style="{StaticResource AccentButton}"
|
||||
Content="{Binding FeaturedVersion.InstallButtonLabel}"
|
||||
FontSize="20" Padding="48,16"
|
||||
Command="{Binding FeaturedVersion.InstallCommand}" />
|
||||
<!-- Bouton rouge « Annuler » : visible uniquement quand un partial existe.
|
||||
Permet d'abandonner et repartir de zéro (confirmation requise). -->
|
||||
<Button Style="{StaticResource DangerButton}"
|
||||
Content="{x:Static loc:Strings.ActionCancel}"
|
||||
FontSize="13" Padding="20,8" Margin="0,8,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
Command="{Binding FeaturedVersion.RestartFromZeroCommand}"
|
||||
ToolTip="{x:Static loc:Strings.MenuRestartFromZero}"
|
||||
Visibility="{Binding FeaturedVersion.ShowRestartFromZero, Converter={StaticResource BoolToVisibility}}" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Row="0" Grid.RowSpan="3" Grid.Column="1"
|
||||
Orientation="Vertical" VerticalAlignment="Center" Width="220"
|
||||
@@ -460,6 +481,9 @@
|
||||
<MenuItem Header="{x:Static loc:Strings.MenuOpenFolder}"
|
||||
Command="{Binding PlacementTarget.Tag.OpenFolderCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
||||
Visibility="{Binding PlacementTarget.Tag.IsInstalled, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource BoolToVisibility}}" />
|
||||
<MenuItem Header="{x:Static loc:Strings.MenuRestartFromZero}"
|
||||
Command="{Binding PlacementTarget.Tag.RestartFromZeroCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
||||
Visibility="{Binding PlacementTarget.Tag.HasResumableDownload, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource BoolToVisibility}}" />
|
||||
<Separator Visibility="{Binding PlacementTarget.Tag.IsInstalled, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource BoolToVisibility}}" />
|
||||
<MenuItem Header="{x:Static loc:Strings.MenuUninstall}"
|
||||
Command="{Binding PlacementTarget.Tag.UninstallCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
||||
@@ -519,7 +543,7 @@
|
||||
Background="#A0000000"
|
||||
CornerRadius="10"
|
||||
Padding="10,4">
|
||||
<TextBlock Text="© 2026 ASTERION VR — Tous droits réservés"
|
||||
<TextBlock Text="{x:Static loc:Strings.Copyright}"
|
||||
FontSize="11"
|
||||
Foreground="White" />
|
||||
</Border>
|
||||
|
||||
Reference in New Issue
Block a user