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 @@