From 2f68ab195038cab4d336f6e28bcc2f8ec0300200 Mon Sep 17 00:00:00 2001 From: Anna Clemens Date: Wed, 1 Jun 2022 16:44:45 -0400 Subject: [PATCH] feat: add support for Chinese characters --- ChatTwo/Configuration.cs | 38 ++++++++++++++++++++++---------- ChatTwo/PluginUi.cs | 10 ++++++++- ChatTwo/Ui/SettingsTabs/Fonts.cs | 4 ++++ 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/ChatTwo/Configuration.cs b/ChatTwo/Configuration.cs index 451020a..a2a8436 100755 --- a/ChatTwo/Configuration.cs +++ b/ChatTwo/Configuration.cs @@ -36,6 +36,7 @@ internal class Configuration : IPluginConfiguration { public bool SortAutoTranslate; public bool FontsEnabled = true; + public bool EnableChineseRange; public float FontSize = 17f; public float JapaneseFontSize = 17f; public float SymbolsFontSize = 17f; @@ -70,6 +71,7 @@ internal class Configuration : IPluginConfiguration { this.SharedMode = other.SharedMode; this.SortAutoTranslate = other.SortAutoTranslate; this.FontsEnabled = other.FontsEnabled; + this.EnableChineseRange = other.EnableChineseRange; this.FontSize = other.FontSize; this.JapaneseFontSize = other.JapaneseFontSize; this.SymbolsFontSize = other.SymbolsFontSize; @@ -246,49 +248,61 @@ internal static class KeybindModeExt { [Serializable] internal enum LanguageOverride { None, + ChineseSimplified, + ChineseTraditional, English, French, German, - Italian, - Japanese, - Korean, - Norwegian, + Greek, + // Italian, + // Japanese, + // Korean, + // Norwegian, PortugueseBrazil, Romanian, Russian, Spanish, + Swedish, } internal static class LanguageOverrideExt { internal static string Name(this LanguageOverride mode) => mode switch { LanguageOverride.None => Language.LanguageOverride_None, + LanguageOverride.ChineseSimplified => "简体中文", + LanguageOverride.ChineseTraditional => "繁體中文", LanguageOverride.English => "English", LanguageOverride.French => "Français", LanguageOverride.German => "Deutsch", - LanguageOverride.Italian => "Italiano", - LanguageOverride.Japanese => "日本語", - LanguageOverride.Korean => "한국어 (Korean)", - LanguageOverride.Norwegian => "Norsk", + LanguageOverride.Greek => "Ελληνικά", + // LanguageOverride.Italian => "Italiano", + // LanguageOverride.Japanese => "日本語", + // LanguageOverride.Korean => "한국어 (Korean)", + // LanguageOverride.Norwegian => "Norsk", LanguageOverride.PortugueseBrazil => "Português do Brasil", LanguageOverride.Romanian => "Română", LanguageOverride.Russian => "Русский", LanguageOverride.Spanish => "Español", + LanguageOverride.Swedish => "Svenska", _ => throw new ArgumentOutOfRangeException(nameof(mode), mode, null), }; internal static string Code(this LanguageOverride mode) => mode switch { LanguageOverride.None => "", + LanguageOverride.ChineseSimplified => "zh-hans", + LanguageOverride.ChineseTraditional => "zh-hant", LanguageOverride.English => "en", LanguageOverride.French => "fr", LanguageOverride.German => "de", - LanguageOverride.Italian => "it", - LanguageOverride.Japanese => "ja", - LanguageOverride.Korean => "ko", - LanguageOverride.Norwegian => "no", + LanguageOverride.Greek => "el", + // LanguageOverride.Italian => "it", + // LanguageOverride.Japanese => "ja", + // LanguageOverride.Korean => "ko", + // LanguageOverride.Norwegian => "no", LanguageOverride.PortugueseBrazil => "pt-br", LanguageOverride.Romanian => "ro", LanguageOverride.Russian => "ru", LanguageOverride.Spanish => "es", + LanguageOverride.Swedish => "sv", _ => throw new ArgumentOutOfRangeException(nameof(mode), mode, null), }; } diff --git a/ChatTwo/PluginUi.cs b/ChatTwo/PluginUi.cs index 42e66f8..ac7e3e3 100755 --- a/ChatTwo/PluginUi.cs +++ b/ChatTwo/PluginUi.cs @@ -112,7 +112,15 @@ internal sealed class PluginUi : IDisposable { builder.Destroy(); } - BuildRange(out this._ranges, null, ImGui.GetIO().Fonts.GetGlyphRangesDefault()); + var ranges = new List { + ImGui.GetIO().Fonts.GetGlyphRangesDefault(), + }; + + if (this.Plugin.Config.EnableChineseRange) { + ranges.Add(ImGui.GetIO().Fonts.GetGlyphRangesChineseFull()); + } + + BuildRange(out this._ranges, null, ranges.ToArray()); BuildRange(out this._jpRange, GlyphRangesJapanese.GlyphRanges); this.SetUpUserFonts(); diff --git a/ChatTwo/Ui/SettingsTabs/Fonts.cs b/ChatTwo/Ui/SettingsTabs/Fonts.cs index 0322b96..58312c2 100755 --- a/ChatTwo/Ui/SettingsTabs/Fonts.cs +++ b/ChatTwo/Ui/SettingsTabs/Fonts.cs @@ -90,6 +90,10 @@ public class Fonts : ISettingsTab { ImGuiUtil.HelpText(string.Format(Language.Options_JapaneseFont_Description, Plugin.PluginName)); ImGui.Spacing(); + + ImGui.Checkbox("Enable Chinese glyphs", ref this.Mutable.EnableChineseRange); + ImGuiUtil.HelpText("Adds support for Chinese characters in the global font."); + ImGui.Spacing(); } const float speed = .0125f;