From 1704ad37d26acf70f316ac9f9c1de131ce3e14e6 Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Mon, 23 Feb 2026 14:14:35 +0800
Subject: [PATCH] add:i18n
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
i18n准备
---
Ink Canvas/Helpers/LocalizationHelper.cs | 52 ++++++++++
Ink Canvas/InkCanvasForClass.csproj | 5 +
Ink Canvas/MainWindow.xaml | 3 +-
Ink Canvas/Properties/AssemblyInfo.cs | 10 +-
Ink Canvas/Properties/Strings.Designer.cs | 74 +++++++++++++
Ink Canvas/Properties/Strings.en-US.resx | 106 +++++++++++++++++++
Ink Canvas/Properties/Strings.resx | 121 ++++++++++++++++++++++
7 files changed, 362 insertions(+), 9 deletions(-)
create mode 100644 Ink Canvas/Helpers/LocalizationHelper.cs
create mode 100644 Ink Canvas/Properties/Strings.Designer.cs
create mode 100644 Ink Canvas/Properties/Strings.en-US.resx
create mode 100644 Ink Canvas/Properties/Strings.resx
diff --git a/Ink Canvas/Helpers/LocalizationHelper.cs b/Ink Canvas/Helpers/LocalizationHelper.cs
new file mode 100644
index 00000000..116c5b15
--- /dev/null
+++ b/Ink Canvas/Helpers/LocalizationHelper.cs
@@ -0,0 +1,52 @@
+using System.Globalization;
+using System.Threading;
+using Ink_Canvas.Properties;
+
+namespace Ink_Canvas.Helpers
+{
+ ///
+ /// i18n 本地化辅助:设置/获取当前 UI 语言,便于后续从配置切换语言。
+ ///
+ public static class LocalizationHelper
+ {
+ ///
+ /// 当前 UI 语言(如 "zh-CN", "en-US")。未设置时使用系统当前 UI 语言。
+ ///
+ public static CultureInfo CurrentCulture
+ {
+ get => Thread.CurrentThread.CurrentUICulture;
+ set
+ {
+ if (value == null) return;
+ Thread.CurrentThread.CurrentUICulture = value;
+ Strings.Culture = value;
+ }
+ }
+
+ ///
+ /// 使用指定语言名称设置当前 UI 语言(如 "zh-CN", "en-US")。
+ /// 若名称无效则保持当前语言不变。
+ ///
+ public static bool TrySetCulture(string cultureName)
+ {
+ try
+ {
+ var culture = CultureInfo.GetCultureInfo(cultureName);
+ CurrentCulture = culture;
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ ///
+ /// 获取本地化字符串。优先使用强类型属性,未知键时用此方法。
+ ///
+ public static string GetString(string key)
+ {
+ return Strings.GetString(key);
+ }
+ }
+}
diff --git a/Ink Canvas/InkCanvasForClass.csproj b/Ink Canvas/InkCanvasForClass.csproj
index bfd3c32b..da91f7ef 100644
--- a/Ink Canvas/InkCanvasForClass.csproj
+++ b/Ink Canvas/InkCanvasForClass.csproj
@@ -565,6 +565,11 @@
+
+
+ Ink_Canvas.Properties.Strings.en-US.resources
+
+
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 8333e25e..39ed9ed9 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -8,6 +8,7 @@
xmlns:Controls="http://schemas.microsoft.com/netfx/2009/xaml/presentation"
xmlns:controls="clr-namespace:Ink_Canvas.Controls"
xmlns:Windows="clr-namespace:Ink_Canvas.Windows"
+ xmlns:props="clr-namespace:Ink_Canvas.Properties"
mc:Ignorable="d"
AllowsTransparency="True"
WindowStyle="None"
@@ -145,7 +146,7 @@