diff --git a/CapsLockIndicatorV3/BetterCheckBox.cs b/CapsLockIndicatorV3/BetterCheckBox.cs index 9ff659d..b22ad1d 100644 --- a/CapsLockIndicatorV3/BetterCheckBox.cs +++ b/CapsLockIndicatorV3/BetterCheckBox.cs @@ -63,7 +63,7 @@ protected override void OnPaint(PaintEventArgs e) } else { - + var scaling = DPIHelper.GetScalingFactorPercent(); var border = N_Border; var background = N_Background; var check = N_Check; @@ -89,14 +89,14 @@ protected override void OnPaint(PaintEventArgs e) check = H_Check; } - const int boxSize = 13; - const int boxRectInnerMargin = 2; - const int checkPenWidth = 2; - const int textMargin = 3; + int boxSize = (int)(13 * scaling); + int boxRectInnerMargin = (int)(2 * scaling); + int checkPenWidth = (int)(2 * scaling); + int textMargin = (int)(3 * scaling); var boxY = Height / 2 - boxSize / 2; - var boxRect = new Rectangle(0, boxY, 13, 13); + var boxRect = new Rectangle(0, boxY, boxSize, boxSize); var boxRectPen = boxRect; var boxRectInner = boxRect; --boxRectPen.Width; diff --git a/CapsLockIndicatorV3/BetterTabControl.cs b/CapsLockIndicatorV3/BetterTabControl.cs index d9de300..1a0c2cd 100644 --- a/CapsLockIndicatorV3/BetterTabControl.cs +++ b/CapsLockIndicatorV3/BetterTabControl.cs @@ -217,7 +217,7 @@ internal void DrawControl(Graphics g) internal void DrawTab(Graphics g, TabPage tabPage, int nIndex) { - var tr = this.GetTabRect(nIndex); + var tr = GetTabRectDPI(nIndex); Rectangle recBounds = tr; recBounds.Y -= 2; recBounds.Height += 2; @@ -329,6 +329,21 @@ internal void DrawTab(Graphics g, TabPage tabPage, int nIndex) } } + private Rectangle GetTabRectDPI(int nIndex) + { + var rect = GetTabRect(nIndex); + /* + var scale = DPIHelper.GetScalingFactorPercent(); + rect = new Rectangle( + (int)(rect.X * scale), + (int)(rect.Y * scale), + (int)(rect.Width * scale), + (int)(rect.Height * scale) + ); + */ + return rect; + } + internal void DrawIcons(Graphics g) { if (!_darkMode) @@ -368,7 +383,7 @@ internal void DrawIcons(Graphics g) { if (this.TabCount > 0) { - Rectangle r3 = this.GetTabRect(0); + Rectangle r3 = GetTabRectDPI(0); if (r3.Left < TabControlArea.Left) g.DrawImage(img, r1); else @@ -385,7 +400,7 @@ internal void DrawIcons(Graphics g) { if (this.TabCount > 0) { - Rectangle r3 = this.GetTabRect(this.TabCount - 1); + Rectangle r3 = GetTabRectDPI(this.TabCount - 1); if (r3.Right > (TabControlArea.Width - r0.Width)) g.DrawImage(img, r2); else @@ -439,7 +454,7 @@ protected override void OnMouseMove(MouseEventArgs e) var index = -1; for (var i = 0; i < TabCount; ++i) { - var rect = GetTabRect(i); + var rect = GetTabRectDPI(i); if (rect.Contains(pos)) { index = i; diff --git a/CapsLockIndicatorV3/CapsLockIndicatorV3.csproj b/CapsLockIndicatorV3/CapsLockIndicatorV3.csproj index 0847273..6e1c3c0 100644 --- a/CapsLockIndicatorV3/CapsLockIndicatorV3.csproj +++ b/CapsLockIndicatorV3/CapsLockIndicatorV3.csproj @@ -114,6 +114,7 @@ DownloadDialog.cs + diff --git a/CapsLockIndicatorV3/DPIHelper.cs b/CapsLockIndicatorV3/DPIHelper.cs new file mode 100644 index 0000000..1071381 --- /dev/null +++ b/CapsLockIndicatorV3/DPIHelper.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace CapsLockIndicatorV3 +{ + internal static class DPIHelper + { + [DllImport("gdi32.dll")] + static extern int GetDeviceCaps(IntPtr hdc, int nIndex); + + private enum DeviceCap + { + VERTRES = 10, + LOGPIXELSY = 90, + DESKTOPVERTRES = 117 + } + + internal static decimal GetScalingFactorPercent() + { + var g = Graphics.FromHwnd(IntPtr.Zero); + try + { + var desktop = g.GetHdc(); + var LogicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES); + var PhysicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES); + var logpixelsy = GetDeviceCaps(desktop, (int)DeviceCap.LOGPIXELSY); + var screenScalingFactor = PhysicalScreenHeight / (decimal)LogicalScreenHeight; + var dpiScalingFactor = logpixelsy / 96.0M; + + return dpiScalingFactor; + } + finally + { + g?.ReleaseHdc(); + } + } + } +} diff --git a/CapsLockIndicatorV3/IconPackBrowser.Designer.cs b/CapsLockIndicatorV3/IconPackBrowser.Designer.cs index da75242..63aef88 100644 --- a/CapsLockIndicatorV3/IconPackBrowser.Designer.cs +++ b/CapsLockIndicatorV3/IconPackBrowser.Designer.cs @@ -41,15 +41,15 @@ private void InitializeComponent() this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); this.webBrowser1.Name = "webBrowser1"; this.webBrowser1.ScriptErrorsSuppressed = true; - this.webBrowser1.Size = new System.Drawing.Size(310, 287); + this.webBrowser1.Size = new System.Drawing.Size(440, 352); this.webBrowser1.TabIndex = 0; this.webBrowser1.WebBrowserShortcutsEnabled = false; // // IconPackBrowser // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(310, 287); + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.ClientSize = new System.Drawing.Size(440, 352); this.Controls.Add(this.webBrowser1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; diff --git a/CapsLockIndicatorV3/IconPackBrowser.cs b/CapsLockIndicatorV3/IconPackBrowser.cs index c527791..145a962 100644 --- a/CapsLockIndicatorV3/IconPackBrowser.cs +++ b/CapsLockIndicatorV3/IconPackBrowser.cs @@ -244,7 +244,7 @@ private void IconPackBrowser_DarkModeChanged(object sender, EventArgs e) ControlScheduleSetDarkMode(webBrowser1, dark); - webBrowser1.Navigate("https://cli.jonaskohl.de/icongallery/embedded.php?dark=" + (dark ? "true" : "false")); + webBrowser1.Navigate("https://cli.jonaskohl.de/icongallery/embedded.php?dark=" + (dark ? "true" : "false") + "&scale=" + ((int)(DPIHelper.GetScalingFactorPercent() * 100)).ToString()); } } } diff --git a/CapsLockIndicatorV3/IndicatorOverlay.Designer.cs b/CapsLockIndicatorV3/IndicatorOverlay.Designer.cs index 541b1db..1dd9a04 100644 --- a/CapsLockIndicatorV3/IndicatorOverlay.Designer.cs +++ b/CapsLockIndicatorV3/IndicatorOverlay.Designer.cs @@ -70,8 +70,8 @@ private void InitializeComponent() // // IndicatorOverlay // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 21F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(66)))), ((int)(((byte)(66))))); this.ClientSize = new System.Drawing.Size(176, 42); this.ControlBox = false; diff --git a/CapsLockIndicatorV3/MainForm.Designer.cs b/CapsLockIndicatorV3/MainForm.Designer.cs index dfd8299..db44634 100644 --- a/CapsLockIndicatorV3/MainForm.Designer.cs +++ b/CapsLockIndicatorV3/MainForm.Designer.cs @@ -128,6 +128,9 @@ private void InitializeComponent() this.advSettingsButton = new System.Windows.Forms.Button(); this.tutorialToolTip = new CapsLockIndicatorV3.BetterToolTip(this.components); this.tutorialTimer = new System.Windows.Forms.Timer(this.components); + this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel7 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel8 = new System.Windows.Forms.TableLayoutPanel(); this.generalIconContextMenuStrip.SuspendLayout(); this.iconsGroup.SuspendLayout(); this.indicatorGroup.SuspendLayout(); @@ -162,6 +165,9 @@ private void InitializeComponent() this.tableLayoutPanel4.SuspendLayout(); this.tabPage2.SuspendLayout(); this.flowLayoutPanel1b.SuspendLayout(); + this.tableLayoutPanel6.SuspendLayout(); + this.tableLayoutPanel7.SuspendLayout(); + this.tableLayoutPanel8.SuspendLayout(); this.SuspendLayout(); // // updateTimer @@ -373,6 +379,7 @@ private void InitializeComponent() this.logo.Location = new System.Drawing.Point(12, 9); this.logo.Name = "logo"; this.logo.Size = new System.Drawing.Size(48, 48); + this.logo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.logo.TabIndex = 6; this.logo.TabStop = false; this.logo.Click += new System.EventHandler(this.lnkLabel1_Click); @@ -667,9 +674,8 @@ private void InitializeComponent() // // displayTimeGroup // + this.displayTimeGroup.Controls.Add(this.tableLayoutPanel6); this.displayTimeGroup.Controls.Add(this.onlyShowWhenActiveCheckBox); - this.displayTimeGroup.Controls.Add(this.displayTimeLabel); - this.displayTimeGroup.Controls.Add(this.displayTimeSlider); this.displayTimeGroup.Dock = System.Windows.Forms.DockStyle.Fill; this.displayTimeGroup.Location = new System.Drawing.Point(3, 3); this.displayTimeGroup.Name = "displayTimeGroup"; @@ -692,10 +698,10 @@ private void InitializeComponent() // // displayTimeLabel // - this.displayTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.displayTimeLabel.Location = new System.Drawing.Point(216, 28); + this.displayTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.displayTimeLabel.Location = new System.Drawing.Point(222, 8); this.displayTimeLabel.Name = "displayTimeLabel"; - this.displayTimeLabel.Size = new System.Drawing.Size(76, 29); + this.displayTimeLabel.Size = new System.Drawing.Size(67, 29); this.displayTimeLabel.TabIndex = 1; this.displayTimeLabel.Text = "500 ms"; this.displayTimeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -703,12 +709,13 @@ private void InitializeComponent() // // displayTimeSlider // + this.displayTimeSlider.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); this.displayTimeSlider.LargeChange = 50; - this.displayTimeSlider.Location = new System.Drawing.Point(6, 22); + this.displayTimeSlider.Location = new System.Drawing.Point(3, 3); this.displayTimeSlider.Maximum = 2001; this.displayTimeSlider.Minimum = 50; this.displayTimeSlider.Name = "displayTimeSlider"; - this.displayTimeSlider.Size = new System.Drawing.Size(201, 45); + this.displayTimeSlider.Size = new System.Drawing.Size(213, 39); this.displayTimeSlider.TabIndex = 0; this.displayTimeSlider.TickFrequency = 250; this.displayTimeSlider.TickStyle = System.Windows.Forms.TickStyle.Both; @@ -1083,8 +1090,7 @@ private void InitializeComponent() // // opacityGroup // - this.opacityGroup.Controls.Add(this.opacityLabel); - this.opacityGroup.Controls.Add(this.opacitySlider); + this.opacityGroup.Controls.Add(this.tableLayoutPanel7); this.opacityGroup.Dock = System.Windows.Forms.DockStyle.Fill; this.opacityGroup.Location = new System.Drawing.Point(3, 222); this.opacityGroup.Name = "opacityGroup"; @@ -1095,10 +1101,10 @@ private void InitializeComponent() // // opacityLabel // - this.opacityLabel.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.opacityLabel.Location = new System.Drawing.Point(216, 25); + this.opacityLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.opacityLabel.Location = new System.Drawing.Point(222, 8); this.opacityLabel.Name = "opacityLabel"; - this.opacityLabel.Size = new System.Drawing.Size(76, 31); + this.opacityLabel.Size = new System.Drawing.Size(67, 31); this.opacityLabel.TabIndex = 1; this.opacityLabel.Text = "100%"; this.opacityLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -1106,13 +1112,13 @@ private void InitializeComponent() // // opacitySlider // - this.opacitySlider.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.opacitySlider.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); this.opacitySlider.LargeChange = 10; - this.opacitySlider.Location = new System.Drawing.Point(6, 20); + this.opacitySlider.Location = new System.Drawing.Point(3, 3); this.opacitySlider.Maximum = 100; this.opacitySlider.Minimum = 1; this.opacitySlider.Name = "opacitySlider"; - this.opacitySlider.Size = new System.Drawing.Size(201, 45); + this.opacitySlider.Size = new System.Drawing.Size(213, 42); this.opacitySlider.TabIndex = 0; this.opacitySlider.TickFrequency = 10; this.opacitySlider.TickStyle = System.Windows.Forms.TickStyle.Both; @@ -1121,8 +1127,7 @@ private void InitializeComponent() // // borderGroup // - this.borderGroup.Controls.Add(this.bdSizeLabel); - this.borderGroup.Controls.Add(this.bdSizeSlider); + this.borderGroup.Controls.Add(this.tableLayoutPanel8); this.borderGroup.Dock = System.Windows.Forms.DockStyle.Fill; this.borderGroup.Location = new System.Drawing.Point(307, 222); this.borderGroup.Name = "borderGroup"; @@ -1133,10 +1138,10 @@ private void InitializeComponent() // // bdSizeLabel // - this.bdSizeLabel.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.bdSizeLabel.Location = new System.Drawing.Point(213, 19); + this.bdSizeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.bdSizeLabel.Location = new System.Drawing.Point(222, 2); this.bdSizeLabel.Name = "bdSizeLabel"; - this.bdSizeLabel.Size = new System.Drawing.Size(76, 43); + this.bdSizeLabel.Size = new System.Drawing.Size(67, 43); this.bdSizeLabel.TabIndex = 1; this.bdSizeLabel.Text = "4"; this.bdSizeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -1144,12 +1149,12 @@ private void InitializeComponent() // // bdSizeSlider // - this.bdSizeSlider.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.bdSizeSlider.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); this.bdSizeSlider.LargeChange = 10; - this.bdSizeSlider.Location = new System.Drawing.Point(6, 20); + this.bdSizeSlider.Location = new System.Drawing.Point(3, 3); this.bdSizeSlider.Maximum = 32; this.bdSizeSlider.Name = "bdSizeSlider"; - this.bdSizeSlider.Size = new System.Drawing.Size(201, 45); + this.bdSizeSlider.Size = new System.Drawing.Size(213, 42); this.bdSizeSlider.TabIndex = 0; this.bdSizeSlider.TickFrequency = 4; this.bdSizeSlider.TickStyle = System.Windows.Forms.TickStyle.Both; @@ -1297,6 +1302,53 @@ private void InitializeComponent() this.tutorialTimer.Interval = 1000; this.tutorialTimer.Tick += new System.EventHandler(this.tutorialTimer_Tick); // + // tableLayoutPanel6 + // + this.tableLayoutPanel6.ColumnCount = 2; + this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 75F)); + this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel6.Controls.Add(this.displayTimeSlider, 0, 0); + this.tableLayoutPanel6.Controls.Add(this.displayTimeLabel, 1, 0); + this.tableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel6.Location = new System.Drawing.Point(3, 19); + this.tableLayoutPanel6.Name = "tableLayoutPanel6"; + this.tableLayoutPanel6.RowCount = 1; + this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel6.Size = new System.Drawing.Size(292, 45); + this.tableLayoutPanel6.TabIndex = 3; + // + // tableLayoutPanel7 + // + this.tableLayoutPanel7.ColumnCount = 2; + this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 75F)); + this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel7.Controls.Add(this.opacitySlider, 0, 0); + this.tableLayoutPanel7.Controls.Add(this.opacityLabel, 1, 0); + this.tableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel7.Location = new System.Drawing.Point(3, 19); + this.tableLayoutPanel7.Name = "tableLayoutPanel7"; + this.tableLayoutPanel7.RowCount = 1; + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel7.Size = new System.Drawing.Size(292, 48); + this.tableLayoutPanel7.TabIndex = 2; + // + // tableLayoutPanel8 + // + this.tableLayoutPanel8.ColumnCount = 2; + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 75F)); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel8.Controls.Add(this.bdSizeSlider, 0, 0); + this.tableLayoutPanel8.Controls.Add(this.bdSizeLabel, 1, 0); + this.tableLayoutPanel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel8.Location = new System.Drawing.Point(3, 19); + this.tableLayoutPanel8.Name = "tableLayoutPanel8"; + this.tableLayoutPanel8.RowCount = 1; + this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel8.Size = new System.Drawing.Size(292, 48); + this.tableLayoutPanel8.TabIndex = 2; + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -1348,10 +1400,8 @@ private void InitializeComponent() this.positionGroup.ResumeLayout(false); this.positionButtonLayout.ResumeLayout(false); this.opacityGroup.ResumeLayout(false); - this.opacityGroup.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.opacitySlider)).EndInit(); this.borderGroup.ResumeLayout(false); - this.borderGroup.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.bdSizeSlider)).EndInit(); this.tabControl1.ResumeLayout(false); this.tabPage3.ResumeLayout(false); @@ -1360,6 +1410,12 @@ private void InitializeComponent() this.tabPage2.ResumeLayout(false); this.flowLayoutPanel1b.ResumeLayout(false); this.flowLayoutPanel1b.PerformLayout(); + this.tableLayoutPanel6.ResumeLayout(false); + this.tableLayoutPanel6.PerformLayout(); + this.tableLayoutPanel7.ResumeLayout(false); + this.tableLayoutPanel7.PerformLayout(); + this.tableLayoutPanel8.ResumeLayout(false); + this.tableLayoutPanel8.PerformLayout(); this.ResumeLayout(false); } @@ -1460,5 +1516,8 @@ private void InitializeComponent() private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5; private BetterToolTip tutorialToolTip; private System.Windows.Forms.Timer tutorialTimer; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel6; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel7; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel8; } } diff --git a/CapsLockIndicatorV3/MainForm.cs b/CapsLockIndicatorV3/MainForm.cs index 38553da..28fe778 100644 --- a/CapsLockIndicatorV3/MainForm.cs +++ b/CapsLockIndicatorV3/MainForm.cs @@ -155,10 +155,8 @@ public MainForm() SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; -#if !DEBUG && _DEBUG_FEATURE_EOL if (!SettingsManager.Get("supressEOLMessage")) CheckSupport(); -#endif displayTimeSlider.Value = SettingsManager.Get("indDisplayTime") > 0 ? SettingsManager.Get("indDisplayTime") : 2001; displayTimeLabel.Text = displayTimeSlider.Value < 2001 ? string.Format("{0} ms", displayTimeSlider.Value) : strings.permanentIndicator; @@ -237,7 +235,7 @@ public MainForm() private void TabControl1_SelectedIndexChanged(object sender, EventArgs e) { var sz = ClientSize; - sz.Height = int.Parse(tabControl1.SelectedTab.Tag.ToString()); + sz.Height = (int)(int.Parse(tabControl1.SelectedTab.Tag.ToString()) * DPIHelper.GetScalingFactorPercent()); ClientSize = sz; } diff --git a/CapsLockIndicatorV3/MainForm.resx b/CapsLockIndicatorV3/MainForm.resx index 956a82e..07711bb 100644 --- a/CapsLockIndicatorV3/MainForm.resx +++ b/CapsLockIndicatorV3/MainForm.resx @@ -132,9 +132,6 @@ 671, 17 - - 232, 56 - 799, 17 @@ -163,6 +160,12 @@ rEHgAKxB8AOsQQ== + + 232, 56 + + + 232, 56 + 351, 56 diff --git a/CapsLockIndicatorV3/Properties/AssemblyInfo.cs b/CapsLockIndicatorV3/Properties/AssemblyInfo.cs index 8ac8aca..9f3aa4e 100644 --- a/CapsLockIndicatorV3/Properties/AssemblyInfo.cs +++ b/CapsLockIndicatorV3/Properties/AssemblyInfo.cs @@ -24,6 +24,6 @@ // // You can specify all the values or you can use the default the Revision and // Build Numbers by using the '*' as shown below: -[assembly: AssemblyVersion("3.13.3.0")] -[assembly: AssemblyFileVersion("3.13.3.0")] +[assembly: AssemblyVersion("3.13.4.0")] +[assembly: AssemblyFileVersion("3.13.4.0")] [assembly: Guid ("6f54c357-0542-4d7d-9225-338bc3cd7834")] diff --git a/CapsLockIndicatorV3/strings.ar.resx b/CapsLockIndicatorV3/strings.ar.resx new file mode 100644 index 0000000..48f7013 --- /dev/null +++ b/CapsLockIndicatorV3/strings.ar.resx @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + جاري ضبط نظام الألوان ... الرجاء الانتظار ... + Shown in a popup when toggling dark mode + + + إعدادات متقدمة + Label of the hyperlink that opens the settings file + + + البحث التلقائي عن التحديثات + Tooltip for the checkbox next to the update button + + + تنشيط لون الخلفية + The caption for the "Background colour activated" button. + + + إلغاء تنشيط لون الخلفية + The caption for the "Background colour deactivated" button. + + + تنشيط لون الحد + The caption for the "Border colour activated" button. + + + إلغاء تنشيط لون الحد + The caption for the "Border colour deactivated" button. + + + سماكة الحد + Label of the border thickness groupbox + + + Caps lock + The name of the caps lock key + + + التحقق من وجود تحديثات + The caption for the button that manually checks for updates. The character after the "&" is the hotkey that is used with the ALT key. + + + البحث عن تحديثات ... + The caption for the "Check for updates" button when it's searching for updates. + + + الألوان + The title for the "Colours" group box + + + خروج + Used in the context menu of the CLI tray icon. + + + مشاهدة + Used in the context menu of the CLI tray icon. + + + الوضع الليلي + Label of options checkbox for dark mode + + + رفض + Used as tooltip (but may be used in other places in the future + + + رفض + The caption for the "Dismiss" button. The character after the "&" is the hotkey that is used with the ALT key. + + + وقت العرض + The title for the "Display time" group box + + + تحميل حزمة الأيقونات + Hyperlink for accessing the icon pack browser + + + التنزيل اليدوي + The caption for the "Download manually" button. The character after the "&" is the hotkey that is used with the ALT key. + + + تنزيل مزيد من الترجمات + The last dropdown item in the locale dropdown. + + + الخروج من البرنامج + The caption for the button that exits the application. The character after the "&" is the hotkey that is used with the ALT key. + + + الخروج من التطبيق يعني أن الرموز والإشعارات سيتم إخفائها . هل تريد الخروج على أي حال؟ + The message to display on application exit + + + السماح لمؤشر CapsLock بالتحقق بشكل دوري من التحديثات عبر الإنترنت (يمكن تغييره لاحقًا) + Label of the checkbox that determines whether or not CLI should search for updates + + + غامق + Button for selecting dark color scheme + + + فاتح + Button for selecting light color scheme + + + ما هو نظام الألوان الذي تفضله؟ + Label for selecting color scheme + + + فقط متوفر على ويندوز 10 او أعلى + Added to dark button if not running on Windows 10 + + + المساهمة + Label of the hyperlink that takes you to CLI's GitHub page + + + الخروج + Button that exists the application. The character after the "&" is the hotkey that is used with the ALT key. + + + مرحبا بك في برنامج CapsLock + The heading of the first-run dialog + + + شكرا لاختياربرنامج CapsLock! هذا البرنامج مفتوح المصدر ومجاني ، كان دائمًا وسيظل دائمًا! هل أنت مهتم بالمساهمة في مؤشر CapsLock بنفسك؟ قم بزيارة الرابط أدناه لمزيد من المعلومات! أيضًا ، يُرجى تخصيص بعض الوقت لمراجعة الإعدادات أدناه! + The message of the first-run dialog + + + ما هي المعلومات التي سيتم إرسالها؟ + The label of the hyperlink that shows which information will be sent on each update check + + + لنذهب! + Button that starts the application. The character after the "&" is the hotkey that is used with the ALT key. + + + خط + The title for the "Font" group box + + + تنشيط ألوان الخطوط + The caption for the "Text colour activated" button. + + + إلغاء تنشيط ألوان الخطوط + The caption for the "Text colour deactivated" button. + + + يمكنك إظهار برنامج CapsLock مرة أخرى بالنقر المزدوج على هذه الأيقونة. + The text that is shown in the icon balloon tip when CLI is being hidden. + + + إخفاء عند بدء التشغيل + Used for the hide on startup checkbox + + + إخفاء النافذة + The caption for the button that hides the window. The character after the "&" is the hotkey that is used with the ALT key. + + + التحميل من المصدر + Shown when downloading metadata for icon pack + + + تحميل الحزمة + Shown when downloading an icon pack + + + هل تريد تثبيت حزمة الرموز "{name}" (الإصدار {version}) بواسطة {authorName}؟ + Prompt shown when installing an icon pack + + + هل تريد إعادة تعيين الرموز إلى الرموز الافتراضية؟ + Shown when asked to reset the icons + + + تم إعادة تعيين الرموز إلى الافتراضي! + Shown after icons were reset + + + تم تثبيت حزمة الرموز "{name}" بنجاح (الإصدار {version})! + Shown after an icon pack was installed successfully + + + تم تغيير {0} + Used for the check boxes in the "Show notification when..." group box. "{0}" will be replaced with the key name + + + غير مفعّل {0} + The text to display in the notification when a key is off. "{0}" will be replaced with the key name + + + مفعل {0} + The text to display in the notification when a key is on. "{0}" will be replaced with the key name + + + إعدادات الإشعارات + The caption for the button that opens the notification settings. The character after the "&" is the hotkey that is used with the ALT key. + + + إعدادات الإشعارات + The caption of the notification settings window + + + Num lock + The name of the num lock key + + + التغميق + The title for the "Opacity" group box + + + الوضع الشفاف + The title for the "Overlay position" group box + + + بشكل دائم + Text to display instead of the time if indicator overlay display is set to permanently. + + + إعادة تحميل الرموز + Shown in a notification when hot-reloading icons. + + + & حفظ && إغلاق + The caption for the "Save & Close" button. The character after the "&" is the hotkey that is used with the ALT key. Use two "&" to display a "&" character + + + Scroll lock + The name of the scroll lock key + + + ابحث عن التحديثات في او استكمالها + Label of options checkbox for update search after resume + + + تم نقل الإعدادات! ستجدهم الآن في علامات التبويب هذه هنا! + The tutorial tooltip shown when upgrading to 3.13.0.0 + + + إظهار رموز لـ ... + The title for the "Show icons for..." group box + + + عدم إظهار الرموز + The label for the check box that enables or disables all icons + + + عدم إظهار الاشعارات + The label for the check box that enables or disables all notifications + + + إظهار الإشعار عند ... + The title for the "Show notification when..." group box + + + إظهار التراكب دائمًا عندما يكون نشطًا + The label for the check box that indicates whether overlay should only be shown when active + + + ابدأ عند تسجيل الدخول + The label for the check box that enables or disabled the auto start. + + + إعدادات متقدمة + Tab header for advanced options + + + عام + Tab header for general settings + + + الإشعارات + Tab header for advanced settings + + + هذا الإصدار من برنامج CapsLock (الإصدار {الإصدار}) غير مدعوم. يرجى التحديث إلى أحدث إصدار! + Banner text when CLI version is unsupported + + + أنت تستخدم {os} والذي لم يعد مدعومًا من قبل Microsoft. سوف يقوم CapsLock Indicator بإسقاط دعم نظام التشغيل هذا في المستقبل! الرجاء الترقية إلى إصدار حديث من Windows! + Banner text when Windows version is unsupported + + + يتوفر تحديث مؤشر CapsLock! + The title for the update window. + + + الإصدار{0}, تم إصدار{1} + Displayed in the "Update Available" dialog. {0} is the version, {1} is the release date and time. + + + التحديث الأن + The caption for the "Update now" button. The character after the "&" is the hotkey that is used with the ALT key. + + + \ No newline at end of file diff --git a/CapsLockIndicatorV3/strings.it.resx b/CapsLockIndicatorV3/strings.it.resx index 53010fd..d0d702b 100644 --- a/CapsLockIndicatorV3/strings.it.resx +++ b/CapsLockIndicatorV3/strings.it.resx @@ -117,13 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Impostazioni avanzate Label of the hyperlink that opens the settings file @@ -176,20 +173,14 @@ Vi&sualizza Used in the context menu of the CLI tray icon. - - - - A&nnulla The caption for the "Dismiss" button. The character after the "&" is the hotkey that is used with the ALT key. @@ -236,7 +227,7 @@ Vuoi uscire comunque? Label for selecting color scheme - Disponibile solo in Windows 10 + Disponibile solo in Windows 10 o successivi Added to dark button if not running on Windows 10 @@ -363,20 +354,16 @@ Inoltre, prenditi un momento per rivedere le impostazioni di seguito! Blocco scorrimento The name of the scroll lock key - - - - Visualizza icone per... The title for the "Show icons for..." group box @@ -401,41 +388,29 @@ Inoltre, prenditi un momento per rivedere le impostazioni di seguito! Esegui automaticamente all'avvio The label for the check box that enables or disabled the auto start. - - - - - - - - - - Aggiornamento disponibile per CapsLock Indicator! The title for the update window. diff --git a/CapsLockIndicatorV3/strings.pl.resx b/CapsLockIndicatorV3/strings.pl.resx index bfec2d4..ba420af 100644 --- a/CapsLockIndicatorV3/strings.pl.resx +++ b/CapsLockIndicatorV3/strings.pl.resx @@ -214,7 +214,7 @@ Label of the checkbox that determines whether or not CLI should search for updates - &Ciemny + &Ciemną Button for selecting dark color scheme diff --git a/CapsLockIndicatorV3/strings.tr-TR.resx b/CapsLockIndicatorV3/strings.tr-TR.resx index 56b4df9..150d705 100644 --- a/CapsLockIndicatorV3/strings.tr-TR.resx +++ b/CapsLockIndicatorV3/strings.tr-TR.resx @@ -117,13 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Gelişmiş Seçenekler Label of the hyperlink that opens the settings file @@ -176,20 +173,14 @@ &Göster Used in the context menu of the CLI tray icon. - - - - Reddet The caption for the "Dismiss" button. The character after the "&" is the hotkey that is used with the ALT key. @@ -235,7 +226,7 @@ Label for selecting color scheme - Sadece Windows 10'da + Sadece Windows 10 ve üstü için Added to dark button if not running on Windows 10 @@ -358,20 +349,14 @@ Scroll lock The name of the scroll lock key - - - - Simgeleri şunun için göster... The title for the "Show icons for..." group box @@ -396,41 +381,26 @@ Oturum açılışında başlat The label for the check box that enables or disabled the auto start. - - - - - - - - - - CapsLock Indicator için güncelleme mevcut! The title for the update window. diff --git a/CapsLockIndicatorV3/strings.zh-CN.resx b/CapsLockIndicatorV3/strings.zh-CN.resx index 91d552f..88719eb 100644 --- a/CapsLockIndicatorV3/strings.zh-CN.resx +++ b/CapsLockIndicatorV3/strings.zh-CN.resx @@ -117,24 +117,18 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 高级设置 Label of the hyperlink that opens the settings file - - 打开 - 背景颜色 The caption for the "Background colour activated" button. @@ -179,20 +173,14 @@ 显示主界面 (&S) Used in the context menu of the CLI tray icon. - - - - 忽略 (&D) The caption for the "Dismiss" button. The character after the "&" is the hotkey that is used with the ALT key. @@ -201,13 +189,10 @@ 展示时长 The title for the "Display time" group box - - 手动下载 (&M) The caption for the "Download manually" button. The character after the "&" is the hotkey that is used with the ALT key. @@ -228,34 +213,22 @@ 允许 CapsLock 指示器定期联网检查更新(稍后可修改) Label of the checkbox that determines whether or not CLI should search for updates - - - - - - - - 贡献 Label of the hyperlink that takes you to CLI's GitHub page @@ -304,48 +277,30 @@ 隐藏窗口 (&H) The caption for the button that hides the window. The character after the "&" is the hotkey that is used with the ALT key. - - - - - - - - - - - - 切换 {0} 时 Used for the check boxes in the "Show notification when..." group box. "{0}" will be replaced with the key name @@ -382,13 +337,10 @@ 一直显示 Text to display instead of the time if indicator overlay display is set to permanently. - - 保存并关闭 (&S) The caption for the "Save & Close" button. The character after the "&" is the hotkey that is used with the ALT key. Use two "&" to display a "&" character @@ -397,20 +349,14 @@ Scroll lock The name of the scroll lock key - - - - 显示托盘图标: The title for the "Show icons for..." group box @@ -427,52 +373,34 @@ 显示通知: The title for the "Show notification when..." group box - - 开机自启动 The label for the check box that enables or disabled the auto start. - - - - - - - - - - CapsLock 指示器有可用更新了! The title for the update window. diff --git a/CapsLockIndicatorV3/strings.zh-Hant-TW.resx b/CapsLockIndicatorV3/strings.zh-Hant-TW.resx index 2875b48..41dacd0 100644 --- a/CapsLockIndicatorV3/strings.zh-Hant-TW.resx +++ b/CapsLockIndicatorV3/strings.zh-Hant-TW.resx @@ -117,24 +117,18 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 進階設定 Label of the hyperlink that opens the settings file - - 開啟 - 背景顏色 The caption for the "Background colour activated" button. @@ -179,35 +173,26 @@ 顯示主畫面 (&S) Used in the context menu of the CLI tray icon. - - - - 忽略 (&D) The caption for the "Dismiss" button. The character after the "&" is the hotkey that is used with the ALT key. - 顯示時間 + 顯示時長 The title for the "Display time" group box - - 手動下載 (&M) The caption for the "Download manually" button. The character after the "&" is the hotkey that is used with the ALT key. @@ -242,7 +227,7 @@ Label for selecting color scheme - 僅適用於 Windows 10 + 僅適用於 Windows 10 或更新的作業系統 Added to dark button if not running on Windows 10 @@ -293,48 +278,30 @@ 隱藏視窗 (&H) The caption for the button that hides the window. The character after the "&" is the hotkey that is used with the ALT key. - - - - - - - - - - - - 切換 {0} 時 Used for the check boxes in the "Show notification when..." group box. "{0}" will be replaced with the key name @@ -383,20 +350,14 @@ Scroll Lock The name of the scroll lock key - - - - 通知區圖示: The title for the "Show icons for..." group box @@ -421,41 +382,26 @@ 開機時自動啟動 The label for the check box that enables or disabled the auto start. - - - - - - - - - - CapsLock Indicator 有可用的更新! The title for the update window. diff --git a/CapsLockIndicatorV3/strings.zh-TW.resx b/CapsLockIndicatorV3/strings.zh-TW.resx index 5756ca5..41dacd0 100644 --- a/CapsLockIndicatorV3/strings.zh-TW.resx +++ b/CapsLockIndicatorV3/strings.zh-TW.resx @@ -1,345 +1,418 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 進階設定 - Label of the hyperlink that opens the settings file - - - 開啟 - 背景顏色 - The caption for the "Background colour activated" button. - - - 關閉 - 背景顏色 - The caption for the "Background colour deactivated" button. - - - 開啟 - 邊框顏色 - The caption for the "Border colour activated" button. - - - 關閉 - 邊框顏色 - The caption for the "Border colour deactivated" button. - - - 邊框寬度 - Label of the border thickness groupbox - - - Caps Lock - The name of the caps lock key - - - 檢查更新 (&U) - The caption for the button that manually checks for updates. The character after the "&" is the hotkey that is used with the ALT key. - - - 正在檢查更新… - The caption for the "Check for updates" button when it's searching for updates. - - - 顏色 - The title for the "Colours" group box - - - 結束 (&E) - Used in the context menu of the CLI tray icon. - - - 顯示主畫面 (&S) - Used in the context menu of the CLI tray icon. - - - 忽略 (&D) - The caption for the "Dismiss" button. The character after the "&" is the hotkey that is used with the ALT key. - - - 顯示時間 - The title for the "Display time" group box - - - 手動下載 (&M) - The caption for the "Download manually" button. The character after the "&" is the hotkey that is used with the ALT key. - - - 下載更多翻譯… - The last dropdown item in the locale dropdown. - - - 退出程式 (&E) - The caption for the button that exits the application. The character after the "&" is the hotkey that is used with the ALT key. - - - 退出程式後,通知區的 CapsLock Indicator 圖示 -和切換通知都將不再顯示。確定要退出嗎? - The message to display on application exit - - - 自動檢查更新 (稍後可再更改) (&A) - Label of the checkbox that determines whether or not CLI should search for updates - - - 灰暗 (&D) - Button for selecting dark color scheme - - - 明亮 (&I) - Button for selecting light color scheme - - - 你喜歡哪種配色主題? - Label for selecting color scheme - - - 僅適用於 Windows 10 - Added to dark button if not running on Windows 10 - - - 貢獻 - Label of the hyperlink that takes you to CLI's GitHub page - - - 結束 (&E) - Button that exists the application. The character after the "&" is the hotkey that is used with the ALT key. - - - 歡迎使用 CapsLock Indicator - The heading of the first-run dialog - - - 感謝您使用 CapsLock Indicator!這個程式將會永遠維持開源和免費!您是否有興趣為 CapsLock Indicator 做出貢獻?前往左下方的 GitHub 連結了解更多資訊!另外,請花點時間查看以下設定! - The message of the first-run dialog - - - 會發送什麼資料? - The label of the hyperlink that shows which information will be sent on each update check - - - 開始! (&L) - Button that starts the application. The character after the "&" is the hotkey that is used with the ALT key. - - - 字體 - The title for the "Font" group box - - - 開啟 - 文字顏色 - The caption for the "Text colour activated" button. - - - 關閉 - 文字顏色 - The caption for the "Text colour deactivated" button. - - - 按兩下此圖示即可顯示 CapsLock 指示器主畫面 - The text that is shown in the icon balloon tip when CLI is being hidden. - - - 啟動時自動隱藏 - Used for the hide on startup checkbox - - - 隱藏視窗 (&H) - The caption for the button that hides the window. The character after the "&" is the hotkey that is used with the ALT key. - - - 切換 {0} 時 - Used for the check boxes in the "Show notification when..." group box. "{0}" will be replaced with the key name - - - {0} 已關閉 - The text to display in the notification when a key is off. "{0}" will be replaced with the key name - - - {0} 已開啟 - The text to display in the notification when a key is on. "{0}" will be replaced with the key name - - - 通知設定 (&N) - The caption for the button that opens the notification settings. The character after the "&" is the hotkey that is used with the ALT key. - - - 通知設定 - The caption of the notification settings window - - - Num Lock - The name of the num lock key - - - 透明度 - The title for the "Opacity" group box - - - 通知位置 - The title for the "Overlay position" group box - - - 持續顯示 - Text to display instead of the time if indicator overlay display is set to permanently. - - - 縮圖已重新載入 - Shown in a notification when hot-reloading icons. - - - 儲存並關閉 (&S) - The caption for the "Save & Close" button. The character after the "&" is the hotkey that is used with the ALT key. Use two "&" to display a "&" character - - - Scroll Lock - The name of the scroll lock key - - - 通知區圖示: - The title for the "Show icons for..." group box - - - 關閉通知區圖示 - The label for the check box that enables or disables all icons - - - 不顯示通知 - The label for the check box that enables or disables all notifications - - - 顯示通知: - The title for the "Show notification when..." group box - - - 開啟時始終顯示通知提示窗 - The label for the check box that indicates whether overlay should only be shown when active - - - 開機時自動啟動 - The label for the check box that enables or disabled the auto start. - - - CapsLock Indicator 有可用的更新! - The title for the update window. - - - 版本 {0},發佈於 {1} - Displayed in the "Update Available" dialog. {0} is the version, {1} is the release date and time. - - - 立即更新 (&U) - The caption for the "Update now" button. The character after the "&" is the hotkey that is used with the ALT key. - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 調整顏色主題中... 請稍候... + Shown in a popup when toggling dark mode + + + 進階設定 + Label of the hyperlink that opens the settings file + + + 自動檢查更新 + Tooltip for the checkbox next to the update button + + + 開啟 - 背景顏色 + The caption for the "Background colour activated" button. + + + 關閉 - 背景顏色 + The caption for the "Background colour deactivated" button. + + + 開啟 - 邊框顏色 + The caption for the "Border colour activated" button. + + + 關閉 - 邊框顏色 + The caption for the "Border colour deactivated" button. + + + 邊框寬度 + Label of the border thickness groupbox + + + Caps Lock + The name of the caps lock key + + + 檢查更新 (&U) + The caption for the button that manually checks for updates. The character after the "&" is the hotkey that is used with the ALT key. + + + 正在檢查更新… + The caption for the "Check for updates" button when it's searching for updates. + + + 顏色 + The title for the "Colours" group box + + + 結束 (&E) + Used in the context menu of the CLI tray icon. + + + 顯示主畫面 (&S) + Used in the context menu of the CLI tray icon. + + + 深色模式 (&D) + Label of options checkbox for dark mode + + + 忽略 + Used as tooltip (but may be used in other places in the future + + + 忽略 (&D) + The caption for the "Dismiss" button. The character after the "&" is the hotkey that is used with the ALT key. + + + 顯示時長 + The title for the "Display time" group box + + + 下載縮圖主題包 + Hyperlink for accessing the icon pack browser + + + 手動下載 (&M) + The caption for the "Download manually" button. The character after the "&" is the hotkey that is used with the ALT key. + + + 下載更多翻譯… + The last dropdown item in the locale dropdown. + + + 退出程式 (&E) + The caption for the button that exits the application. The character after the "&" is the hotkey that is used with the ALT key. + + + 退出程式後,通知區的 CapsLock Indicator 圖示 +和切換通知都將不再顯示。確定要退出嗎? + The message to display on application exit + + + 自動檢查更新 (稍後可再更改) (&A) + Label of the checkbox that determines whether or not CLI should search for updates + + + 灰暗 (&D) + Button for selecting dark color scheme + + + 明亮 (&I) + Button for selecting light color scheme + + + 你喜歡哪種配色主題? + Label for selecting color scheme + + + 僅適用於 Windows 10 或更新的作業系統 + Added to dark button if not running on Windows 10 + + + 貢獻 + Label of the hyperlink that takes you to CLI's GitHub page + + + 結束 (&E) + Button that exists the application. The character after the "&" is the hotkey that is used with the ALT key. + + + 歡迎使用 CapsLock Indicator + The heading of the first-run dialog + + + 感謝您使用 CapsLock Indicator!這個程式將會永遠維持開源和免費!您是否有興趣為 CapsLock Indicator 做出貢獻?前往左下方的 GitHub 連結了解更多資訊!另外,請花點時間查看以下設定! + The message of the first-run dialog + + + 會發送什麼資料? + The label of the hyperlink that shows which information will be sent on each update check + + + 開始! (&L) + Button that starts the application. The character after the "&" is the hotkey that is used with the ALT key. + + + 字體 + The title for the "Font" group box + + + 開啟 - 文字顏色 + The caption for the "Text colour activated" button. + + + 關閉 - 文字顏色 + The caption for the "Text colour deactivated" button. + + + 按兩下此圖示即可顯示 CapsLock 指示器主畫面 + The text that is shown in the icon balloon tip when CLI is being hidden. + + + 啟動時自動隱藏 + Used for the hide on startup checkbox + + + 隱藏視窗 (&H) + The caption for the button that hides the window. The character after the "&" is the hotkey that is used with the ALT key. + + + 正在下載 meta 資料... + Shown when downloading metadata for icon pack + + + 正在下載縮圖包... + Shown when downloading an icon pack + + + 確認要安裝縮圖主題 “{name}” (版本 {version}) 作者: {authorName}? + Prompt shown when installing an icon pack + + + 是否要將縮圖主題恢復為預設主題? + Shown when asked to reset the icons + + + 縮圖主題已恢復為預設! + Shown after icons were reset + + + “{name}” (版本 {version}) 安裝成功! + Shown after an icon pack was installed successfully + + + 切換 {0} 時 + Used for the check boxes in the "Show notification when..." group box. "{0}" will be replaced with the key name + + + {0} 已關閉 + The text to display in the notification when a key is off. "{0}" will be replaced with the key name + + + {0} 已開啟 + The text to display in the notification when a key is on. "{0}" will be replaced with the key name + + + 通知設定 (&N) + The caption for the button that opens the notification settings. The character after the "&" is the hotkey that is used with the ALT key. + + + 通知設定 + The caption of the notification settings window + + + Num Lock + The name of the num lock key + + + 透明度 + The title for the "Opacity" group box + + + 通知位置 + The title for the "Overlay position" group box + + + 持續顯示 + Text to display instead of the time if indicator overlay display is set to permanently. + + + 縮圖已重新載入 + Shown in a notification when hot-reloading icons. + + + 儲存並關閉 (&S) + The caption for the "Save & Close" button. The character after the "&" is the hotkey that is used with the ALT key. Use two "&" to display a "&" character + + + Scroll Lock + The name of the scroll lock key + + + 再次開啟畫面時檢查更新 (&U) + Label of options checkbox for update search after resume + + + 設定介面已更新!現在可於頂部頁籤找到各個對應設定! + The tutorial tooltip shown when upgrading to 3.13.0.0 + + + 通知區圖示: + The title for the "Show icons for..." group box + + + 關閉通知區圖示 + The label for the check box that enables or disables all icons + + + 不顯示通知 + The label for the check box that enables or disables all notifications + + + 顯示通知: + The title for the "Show notification when..." group box + + + 開啟時始終顯示通知提示窗 + The label for the check box that indicates whether overlay should only be shown when active + + + 開機時自動啟動 + The label for the check box that enables or disabled the auto start. + + + 進階設定 + Tab header for advanced options + + + 一般 + Tab header for general settings + + + 通知 + Tab header for advanced settings + + + 不支援此版本的 CapsLock Indicator (版本 {version})。請更新為最新版本! + Banner text when CLI version is unsupported + + + 你正在使用已不再受 Microsoft 支援的作業系統 {os}。CapsLock Indicator 未來的版本將不會再支援此作業系統!請盡早升級為最新版本的 Windows! + Banner text when Windows version is unsupported + + + CapsLock Indicator 有可用的更新! + The title for the update window. + + + 版本 {0},發佈於 {1} + Displayed in the "Update Available" dialog. {0} is the version, {1} is the release date and time. + + + 立即更新 (&U) + The caption for the "Update now" button. The character after the "&" is the hotkey that is used with the ALT key. + + \ No newline at end of file