修改语言不再需要重启

This commit is contained in:
Space Time 2024-11-22 20:26:04 +08:00
parent 05d446ed37
commit 08943586ac
7 changed files with 18 additions and 7 deletions

View file

@ -3131,7 +3131,7 @@ namespace ServiceLib.Resx {
} }
/// <summary> /// <summary>
/// 查找类似 Language (Restart) 的本地化字符串。 /// 查找类似 Language 的本地化字符串。
/// </summary> /// </summary>
public static string TbSettingsLanguage { public static string TbSettingsLanguage {
get { get {

View file

@ -488,7 +488,7 @@
<value>Follow System Theme</value> <value>Follow System Theme</value>
</data> </data>
<data name="TbSettingsLanguage" xml:space="preserve"> <data name="TbSettingsLanguage" xml:space="preserve">
<value>Language (Restart)</value> <value>Language</value>
</data> </data>
<data name="menuAddServerViaClipboard" xml:space="preserve"> <data name="menuAddServerViaClipboard" xml:space="preserve">
<value>Import Share Links from clipboard (Ctrl+V)</value> <value>Import Share Links from clipboard (Ctrl+V)</value>

View file

@ -488,7 +488,7 @@
<value>Следить за системной темой</value> <value>Следить за системной темой</value>
</data> </data>
<data name="TbSettingsLanguage" xml:space="preserve"> <data name="TbSettingsLanguage" xml:space="preserve">
<value>Язык (требуется перезапуск)</value> <value>Язык</value>
</data> </data>
<data name="menuAddServerViaClipboard" xml:space="preserve"> <data name="menuAddServerViaClipboard" xml:space="preserve">
<value>Импорт массива URL из буфера обмена (Ctrl+V)</value> <value>Импорт массива URL из буфера обмена (Ctrl+V)</value>

View file

@ -488,7 +488,7 @@
<value>是否跟随系统主题</value> <value>是否跟随系统主题</value>
</data> </data>
<data name="TbSettingsLanguage" xml:space="preserve"> <data name="TbSettingsLanguage" xml:space="preserve">
<value>语言(重启)</value> <value>语言</value>
</data> </data>
<data name="menuAddServerViaClipboard" xml:space="preserve"> <data name="menuAddServerViaClipboard" xml:space="preserve">
<value>从剪贴板导入分享链接 (Ctrl+V)</value> <value>从剪贴板导入分享链接 (Ctrl+V)</value>

View file

@ -487,7 +487,7 @@
<value>是否跟隨系統主題</value> <value>是否跟隨系統主題</value>
</data> </data>
<data name="TbSettingsLanguage" xml:space="preserve"> <data name="TbSettingsLanguage" xml:space="preserve">
<value>語言(重啟)</value> <value>語言</value>
</data> </data>
<data name="menuAddServerViaClipboard" xml:space="preserve"> <data name="menuAddServerViaClipboard" xml:space="preserve">
<value>從剪貼簿導入分享鏈接 (Ctrl+V)</value> <value>從剪貼簿導入分享鏈接 (Ctrl+V)</value>

View file

@ -1,5 +1,6 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Controls.Notifications; using Avalonia.Controls.Notifications;
using Avalonia.Controls.Primitives; using Avalonia.Controls.Primitives;
using Avalonia.Media; using Avalonia.Media;
@ -7,6 +8,7 @@ using Avalonia.Styling;
using ReactiveUI; using ReactiveUI;
using ReactiveUI.Fody.Helpers; using ReactiveUI.Fody.Helpers;
using System.Reactive.Linq; using System.Reactive.Linq;
using v2rayN.Desktop.Views;
namespace v2rayN.Desktop.ViewModels namespace v2rayN.Desktop.ViewModels
{ {
@ -86,7 +88,11 @@ namespace v2rayN.Desktop.ViewModels
_config.UiItem.CurrentLanguage = CurrentLanguage; _config.UiItem.CurrentLanguage = CurrentLanguage;
Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage); Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage);
ConfigHandler.SaveConfig(_config); ConfigHandler.SaveConfig(_config);
NoticeHandler.Instance.Enqueue(ResUI.NeedRebootTips);
Window oldMainWindow = (Application.Current!.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)!.MainWindow!;
(Application.Current!.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)!.MainWindow = new MainWindow();
oldMainWindow.Close();
(Application.Current!.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)!.MainWindow!.Show();
} }
}); });
} }

View file

@ -9,6 +9,7 @@ using System.Reactive.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Windows; using System.Windows;
using System.Windows.Interop; using System.Windows.Interop;
using v2rayN.Views;
namespace v2rayN.ViewModels namespace v2rayN.ViewModels
{ {
@ -143,7 +144,11 @@ namespace v2rayN.ViewModels
_config.UiItem.CurrentLanguage = CurrentLanguage; _config.UiItem.CurrentLanguage = CurrentLanguage;
Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage); Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage);
ConfigHandler.SaveConfig(_config); ConfigHandler.SaveConfig(_config);
NoticeHandler.Instance.Enqueue(ResUI.NeedRebootTips);
Window oldMainWindow = Application.Current.MainWindow;
Application.Current.MainWindow = new MainWindow();
oldMainWindow.Close();
Application.Current.MainWindow.Show();
} }
}); });
} }