fix: localize main status and debug ribbon

This commit is contained in:
zhengxuan.zhang
2026-08-11 11:50:16 +08:00
parent 50f5290a4e
commit 35faa70e9c
8 changed files with 52 additions and 26 deletions
+3
View File
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="Main_Report" xml:space="preserve"><value>Report</value></data><data name="Main_ReportGeneration" xml:space="preserve"><value>Generate Report</value></data>
<data name="Button_Login" xml:space="preserve"><value>Log in</value></data><data name="Role_SuperAdmin" xml:space="preserve"><value>Super Administrator</value></data><data name="Role_Admin" xml:space="preserve"><value>Administrator</value></data><data name="Role_User" xml:space="preserve"><value>User</value></data><data name="Main_RealtimePipeline" xml:space="preserve"><value>Live Pipeline</value></data><data name="Main_CncOrchestration" xml:space="preserve"><value>CNC Orchestration</value></data><data name="Main_CloseOrchestration" xml:space="preserve"><value>Close Orchestration</value></data><data name="Main_SoftwareInfo" xml:space="preserve"><value>Software Info</value></data>
<data name="Main_Settings" xml:space="preserve"><value>Settings</value></data>
<data name="Main_Home" xml:space="preserve"><value>Home</value></data><data name="Main_File" xml:space="preserve"><value>File</value></data><data name="Main_NewCnc" xml:space="preserve"><value>New CNC</value></data><data name="Main_SaveAs" xml:space="preserve"><value>Save As</value></data><data name="Main_LoadCnc" xml:space="preserve"><value>Load CNC</value></data><data name="Main_ImportCncPackage" xml:space="preserve"><value>Import CNC Package</value></data><data name="Main_ExportCncPackage" xml:space="preserve"><value>Export CNC Package</value></data><data name="Main_Program" xml:space="preserve"><value>Program</value></data><data name="Main_Run" xml:space="preserve"><value>Run</value></data><data name="Main_Stop" xml:space="preserve"><value>Stop</value></data><data name="Main_Realtime" xml:space="preserve"><value>Live</value></data><data name="Main_OpenDoor" xml:space="preserve"><value>Open Door</value></data><data name="Main_CloseDoor" xml:space="preserve"><value>Close Door</value></data><data name="Main_3DScan" xml:space="preserve"><value>3D Scan</value></data><data name="Main_ScanMode" xml:space="preserve"><value>Scan Mode</value></data><data name="Main_CTScan" xml:space="preserve"><value>CT Scan</value></data><data name="Main_Help" xml:space="preserve"><value>Help</value></data><data name="Main_UserManual" xml:space="preserve"><value>User Manual</value></data>
<data name="Settings_Logging" xml:space="preserve"><value>Logging</value></data><data name="Settings_XraySource" xml:space="preserve"><value>X-ray Source</value></data><data name="Settings_Detector" xml:space="preserve"><value>Detector</value></data><data name="Settings_MotionControl" xml:space="preserve"><value>Motion Control</value></data><data name="Settings_NavigationCamera" xml:space="preserve"><value>Navigation Camera</value></data><data name="Settings_Accounts" xml:space="preserve"><value>Accounts and Passwords</value></data>
<data name="QfnPanel_Result" xml:space="preserve"><value>Lead Inspection Results</value></data>
+3
View File
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="Main_Report" xml:space="preserve"><value>报告</value></data><data name="Main_ReportGeneration" xml:space="preserve"><value>报告生成</value></data>
<data name="Button_Login" xml:space="preserve"><value>登录</value></data><data name="Role_SuperAdmin" xml:space="preserve"><value>超级管理员</value></data><data name="Role_Admin" xml:space="preserve"><value>管理员</value></data><data name="Role_User" xml:space="preserve"><value>用户</value></data><data name="Main_RealtimePipeline" xml:space="preserve"><value>实时流水线</value></data><data name="Main_CncOrchestration" xml:space="preserve"><value>CNC 编排</value></data><data name="Main_CloseOrchestration" xml:space="preserve"><value>关闭编排</value></data><data name="Main_SoftwareInfo" xml:space="preserve"><value>软件信息</value></data>
<data name="Main_Settings" xml:space="preserve"><value>设置</value></data>
<data name="Main_Home" xml:space="preserve"><value>主页</value></data><data name="Main_File" xml:space="preserve"><value>文件</value></data><data name="Main_NewCnc" xml:space="preserve"><value>新建CNC</value></data><data name="Main_SaveAs" xml:space="preserve"><value>另存为</value></data><data name="Main_LoadCnc" xml:space="preserve"><value>加载CNC</value></data><data name="Main_ImportCncPackage" xml:space="preserve"><value>导入CNC包</value></data><data name="Main_ExportCncPackage" xml:space="preserve"><value>导出CNC包</value></data><data name="Main_Program" xml:space="preserve"><value>程序</value></data><data name="Main_Run" xml:space="preserve"><value>运行</value></data><data name="Main_Stop" xml:space="preserve"><value>停止</value></data><data name="Main_Realtime" xml:space="preserve"><value>实时</value></data><data name="Main_OpenDoor" xml:space="preserve"><value>开窗</value></data><data name="Main_CloseDoor" xml:space="preserve"><value>关窗</value></data><data name="Main_3DScan" xml:space="preserve"><value>3D扫描</value></data><data name="Main_ScanMode" xml:space="preserve"><value>扫描模式</value></data><data name="Main_CTScan" xml:space="preserve"><value>CT扫描</value></data><data name="Main_Help" xml:space="preserve"><value>帮助</value></data><data name="Main_UserManual" xml:space="preserve"><value>用户手册</value></data>
<data name="Settings_Logging" xml:space="preserve"><value>日志</value></data><data name="Settings_XraySource" xml:space="preserve"><value>射线源</value></data><data name="Settings_Detector" xml:space="preserve"><value>探测器</value></data><data name="Settings_MotionControl" xml:space="preserve"><value>运动控制</value></data><data name="Settings_NavigationCamera" xml:space="preserve"><value>导航相机</value></data><data name="Settings_Accounts" xml:space="preserve"><value>账户与密码</value></data>
<data name="QfnPanel_Result" xml:space="preserve"><value>引脚检测结果</value></data>
+3
View File
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="Main_Report" xml:space="preserve"><value>报告</value></data><data name="Main_ReportGeneration" xml:space="preserve"><value>报告生成</value></data>
<data name="Button_Login" xml:space="preserve"><value>登录</value></data><data name="Role_SuperAdmin" xml:space="preserve"><value>超级管理员</value></data><data name="Role_Admin" xml:space="preserve"><value>管理员</value></data><data name="Role_User" xml:space="preserve"><value>用户</value></data><data name="Main_RealtimePipeline" xml:space="preserve"><value>实时流水线</value></data><data name="Main_CncOrchestration" xml:space="preserve"><value>CNC 编排</value></data><data name="Main_CloseOrchestration" xml:space="preserve"><value>关闭编排</value></data><data name="Main_SoftwareInfo" xml:space="preserve"><value>软件信息</value></data>
<data name="Main_Settings" xml:space="preserve"><value>设置</value></data>
<data name="Main_Home" xml:space="preserve"><value>主页</value></data><data name="Main_File" xml:space="preserve"><value>文件</value></data><data name="Main_NewCnc" xml:space="preserve"><value>新建CNC</value></data><data name="Main_SaveAs" xml:space="preserve"><value>另存为</value></data><data name="Main_LoadCnc" xml:space="preserve"><value>加载CNC</value></data><data name="Main_ImportCncPackage" xml:space="preserve"><value>导入CNC包</value></data><data name="Main_ExportCncPackage" xml:space="preserve"><value>导出CNC包</value></data><data name="Main_Program" xml:space="preserve"><value>程序</value></data><data name="Main_Run" xml:space="preserve"><value>运行</value></data><data name="Main_Stop" xml:space="preserve"><value>停止</value></data><data name="Main_Realtime" xml:space="preserve"><value>实时</value></data><data name="Main_OpenDoor" xml:space="preserve"><value>开窗</value></data><data name="Main_CloseDoor" xml:space="preserve"><value>关窗</value></data><data name="Main_3DScan" xml:space="preserve"><value>3D扫描</value></data><data name="Main_ScanMode" xml:space="preserve"><value>扫描模式</value></data><data name="Main_CTScan" xml:space="preserve"><value>CT扫描</value></data><data name="Main_Help" xml:space="preserve"><value>帮助</value></data><data name="Main_UserManual" xml:space="preserve"><value>用户手册</value></data>
<data name="Settings_Logging" xml:space="preserve"><value>日志</value></data><data name="Settings_XraySource" xml:space="preserve"><value>射线源</value></data><data name="Settings_Detector" xml:space="preserve"><value>探测器</value></data><data name="Settings_MotionControl" xml:space="preserve"><value>运动控制</value></data><data name="Settings_NavigationCamera" xml:space="preserve"><value>导航相机</value></data><data name="Settings_Accounts" xml:space="preserve"><value>账户与密码</value></data>
<data name="QfnPanel_Result" xml:space="preserve"><value>引脚检测结果</value></data>
+3
View File
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="Main_Report" xml:space="preserve"><value>報告</value></data><data name="Main_ReportGeneration" xml:space="preserve"><value>產生報告</value></data>
<data name="Button_Login" xml:space="preserve"><value>登入</value></data><data name="Role_SuperAdmin" xml:space="preserve"><value>超級管理員</value></data><data name="Role_Admin" xml:space="preserve"><value>管理員</value></data><data name="Role_User" xml:space="preserve"><value>使用者</value></data><data name="Main_RealtimePipeline" xml:space="preserve"><value>即時流水線</value></data><data name="Main_CncOrchestration" xml:space="preserve"><value>CNC 編排</value></data><data name="Main_CloseOrchestration" xml:space="preserve"><value>關閉編排</value></data><data name="Main_SoftwareInfo" xml:space="preserve"><value>軟體資訊</value></data>
<data name="Main_Settings" xml:space="preserve"><value>設定</value></data>
<data name="Main_Home" xml:space="preserve"><value>首頁</value></data><data name="Main_File" xml:space="preserve"><value>檔案</value></data><data name="Main_NewCnc" xml:space="preserve"><value>新增CNC</value></data><data name="Main_SaveAs" xml:space="preserve"><value>另存新檔</value></data><data name="Main_LoadCnc" xml:space="preserve"><value>載入CNC</value></data><data name="Main_ImportCncPackage" xml:space="preserve"><value>匯入CNC套件</value></data><data name="Main_ExportCncPackage" xml:space="preserve"><value>匯出CNC套件</value></data><data name="Main_Program" xml:space="preserve"><value>程式</value></data><data name="Main_Run" xml:space="preserve"><value>執行</value></data><data name="Main_Stop" xml:space="preserve"><value>停止</value></data><data name="Main_Realtime" xml:space="preserve"><value>即時</value></data><data name="Main_OpenDoor" xml:space="preserve"><value>開窗</value></data><data name="Main_CloseDoor" xml:space="preserve"><value>關窗</value></data><data name="Main_3DScan" xml:space="preserve"><value>3D掃描</value></data><data name="Main_ScanMode" xml:space="preserve"><value>掃描模式</value></data><data name="Main_CTScan" xml:space="preserve"><value>CT掃描</value></data><data name="Main_Help" xml:space="preserve"><value>說明</value></data><data name="Main_UserManual" xml:space="preserve"><value>使用者手冊</value></data>
<data name="Settings_Logging" xml:space="preserve"><value>日誌</value></data><data name="Settings_XraySource" xml:space="preserve"><value>X光源</value></data><data name="Settings_Detector" xml:space="preserve"><value>探測器</value></data><data name="Settings_MotionControl" xml:space="preserve"><value>運動控制</value></data><data name="Settings_NavigationCamera" xml:space="preserve"><value>導航相機</value></data><data name="Settings_Accounts" xml:space="preserve"><value>帳戶與密碼</value></data>
<data name="QfnPanel_Result" xml:space="preserve"><value>引腳檢測結果</value></data>
@@ -9,7 +9,9 @@ using System.Windows;
using XplorePlane.Events;
using XplorePlane.Services.AppState;
using XplorePlane.Services.Security;
using XplorePlane.Views.Security;
using XplorePlane.Views.Security;
using XP.Common.Localization;
using XP.Common.Localization.Interfaces;
namespace XplorePlane.ViewModels.Main
{
@@ -23,7 +25,8 @@ namespace XplorePlane.ViewModels.Main
private readonly IPermissionService _permissionService;
private readonly IEventAggregator _eventAggregator;
private readonly IAppStateService _appStateService;
private readonly IContainerProvider _containerProvider;
private readonly IContainerProvider _containerProvider;
private readonly ILocalizationService _localizationService;
private string _currentRoleDisplayName = string.Empty;
private bool _canSwitchUser;
@@ -47,20 +50,23 @@ namespace XplorePlane.ViewModels.Main
public RibbonStatusAreaViewModel(
IPermissionService permissionService,
IEventAggregator eventAggregator,
IAppStateService appStateService,
IContainerProvider containerProvider)
IEventAggregator eventAggregator,
IAppStateService appStateService,
IContainerProvider containerProvider,
ILocalizationService localizationService)
{
_permissionService = permissionService ?? throw new System.ArgumentNullException(nameof(permissionService));
_eventAggregator = eventAggregator ?? throw new System.ArgumentNullException(nameof(eventAggregator));
_appStateService = appStateService ?? throw new System.ArgumentNullException(nameof(appStateService));
_containerProvider = containerProvider ?? throw new System.ArgumentNullException(nameof(containerProvider));
_containerProvider = containerProvider ?? throw new System.ArgumentNullException(nameof(containerProvider));
_localizationService = localizationService ?? throw new System.ArgumentNullException(nameof(localizationService));
SwitchUserCommand = new DelegateCommand(ExecuteSwitchUser, () => CanSwitchUser);
// Subscribe to RoleChangedEvent to update CurrentRoleDisplayName
_eventAggregator.GetEvent<RoleChangedEvent>()
.Subscribe(OnRoleChanged, ThreadOption.UIThread);
_eventAggregator.GetEvent<RoleChangedEvent>()
.Subscribe(OnRoleChanged, ThreadOption.UIThread);
_localizationService.LanguageChanged += OnLanguageChanged;
// Subscribe to CncExecutionState changes to update CanSwitchUser
_appStateService.CncExecutionStateChanged += OnCncExecutionStateChanged;
@@ -79,10 +85,16 @@ namespace XplorePlane.ViewModels.Main
CanSwitchUser = _permissionService.CanSwitchUser;
}
private void OnRoleChanged(RoleChangedPayload payload)
private void OnRoleChanged(RoleChangedPayload payload)
{
CurrentRoleDisplayName = MapRoleToDisplayName(payload.NewRole);
}
}
private void OnLanguageChanged(object? sender, XP.Common.Localization.Events.LanguageChangedEventArgs e)
{
if (_permissionService.CurrentRole.HasValue)
CurrentRoleDisplayName = MapRoleToDisplayName(_permissionService.CurrentRole.Value);
}
private void OnCncExecutionStateChanged(object sender, StateChangedEventArgs<XplorePlane.Models.Main.CncExecutionState> e)
{
@@ -117,15 +129,15 @@ namespace XplorePlane.ViewModels.Main
/// <summary>
/// 将 UserRole 枚举映射为中文显示名。
/// </summary>
private static string MapRoleToDisplayName(UserRole role)
{
return role switch
{
UserRole.SuperAdmin => "超级管理员",
UserRole.Admin => "管理员",
UserRole.User => "用户",
private static string MapRoleToDisplayName(UserRole role)
{
return role switch
{
UserRole.SuperAdmin => LocalizationHelper.Get("Role_SuperAdmin"),
UserRole.Admin => LocalizationHelper.Get("Role_Admin"),
UserRole.User => LocalizationHelper.Get("Role_User"),
_ => string.Empty
};
}
}
}
}
+4 -3
View File
@@ -3,6 +3,7 @@
x:Name="Root"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loc="clr-namespace:XP.Common.Localization.Extensions;assembly=XP.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="400"
@@ -82,16 +83,16 @@
<TextBlock FontWeight="SemiBold" FontSize="{StaticResource NovaFontSizeCaption}" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="实时流水线" />
<Setter Property="Text" Value="{loc:Localization Key=Main_RealtimePipeline}" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsCncEditorMode}" Value="True">
<Setter Property="Text" Value="CNC 编排" />
<Setter Property="Text" Value="{loc:Localization Key=Main_CncOrchestration}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<Button HorizontalAlignment="Right" Content="关闭编排" Width="70" Height="{StaticResource NovaButtonHeightSm}"
<Button HorizontalAlignment="Right" Content="{loc:Localization Key=Main_CloseOrchestration}" Width="70" Height="{StaticResource NovaButtonHeightSm}"
Visibility="{Binding IsCncEditorMode, Converter={StaticResource BoolToVis}}"
Command="{Binding CloseCncEditorCommand}" FontSize="{StaticResource NovaFontSizeCaption}" />
</Grid>
+4 -4
View File
@@ -663,7 +663,7 @@
LargeImage="/Assets/Icons/setting.png"
SmallImage="/Assets/Icons/setting.png"
Command="{Binding OpenSettingsCommand}"
Text="设置" />
Text="{loc:Localization Key=Main_Settings}" />
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup
@@ -789,12 +789,12 @@
Text="{loc:Localization Key=Main_DebugPanel}" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开检测报告配置窗口"
telerik:ScreenTip.Title="报告"
telerik:ScreenTip.Title="{loc:Localization Key=Main_Report}"
Command="{Binding OpenReportConfigCommand}"
Size="Large"
LargeImage="/Assets/Icons/message.png"
SmallImage="/Assets/Icons/message.png"
Text="报告生成"
Text="{loc:Localization Key=Main_ReportGeneration}"
Visibility="{Binding IsReportSettingsVisible, Converter={StaticResource BoolToVisibilityConverter}}" />
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
@@ -833,7 +833,7 @@
LargeImage="/Assets/Icons/tools.png"
SmallImage="/Assets/Icons/tools.png"
Command="{Binding OpenLibraryVersionsCommand}"
Text="软件信息" />
Text="{loc:Localization Key=Main_SoftwareInfo}" />
<!-- <telerik:RadRibbonButton
Size="Large"
LargeImage="/Assets/Icons/upgrade.png"
@@ -2,6 +2,7 @@
x:Class="XplorePlane.Views.Main.RibbonStatusAreaView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loc="clr-namespace:XP.Common.Localization.Extensions;assembly=XP.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="30"
@@ -19,7 +20,7 @@
Foreground="{StaticResource NovaOnSurfaceBrush}"
Margin="0,0,8,0" />
<Button
Content="登录"
Content="{loc:Localization Key=Button_Login}"
Command="{Binding SwitchUserCommand}"
IsEnabled="{Binding CanSwitchUser}"
VerticalAlignment="Center"