Refactoring InitText

This commit is contained in:
ChsBuffer
2020-09-27 01:40:23 +08:00
parent 49e2eb6a56
commit ecd1257a35
15 changed files with 149 additions and 163 deletions

View File

@@ -14,9 +14,7 @@ namespace Netch.Forms
private void AboutForm_Load(object sender, EventArgs e)
{
Text = i18N.Translate(Text);
ChannelLabel.Text = i18N.Translate(ChannelLabel.Text);
SponsorGroupBox.Text = i18N.Translate(SponsorGroupBox.Text);
i18N.TranslateForm(this);
}
private void NetchPictureBox_Click(object sender, EventArgs e)

View File

@@ -14,10 +14,7 @@ namespace Netch.Forms
private void GlobalBypassIPForm_Load(object sender, EventArgs e)
{
Text = i18N.Translate(Text);
AddButton.Text = i18N.Translate(AddButton.Text);
DeleteButton.Text = i18N.Translate(DeleteButton.Text);
ControlButton.Text = i18N.Translate(ControlButton.Text);
i18N.TranslateForm(this);
IPListBox.Items.AddRange(Global.Settings.BypassIPs.ToArray());

View File

@@ -166,6 +166,7 @@ namespace Netch.Forms
Size = new Size(259, 22),
Text = i18N.TranslateFormat("Add [{0}] Server", fullName),
};
_mainFormText.Add(control.Name, new[] {"Add [{0}] Server", fullName});
control.Click += AddServerToolStripMenuItem_Click;
ServerToolStripMenuItem.DropDownItems.Add(control);
}

View File

@@ -1,4 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -174,47 +177,82 @@ namespace Netch.Forms
Show();
}
private readonly Dictionary<string, object> _mainFormText = new Dictionary<string, object>();
private bool _textRecorded;
private void InitText()
{
ServerToolStripMenuItem.Text = i18N.Translate("Server");
ImportServersFromClipboardToolStripMenuItem.Text = i18N.Translate("Import Servers From Clipboard");
ModeToolStripMenuItem.Text = i18N.Translate("Mode");
HelpToolStripMenuItem.Text = i18N.Translate("Help");
CreateProcessModeToolStripMenuItem.Text = i18N.Translate("Create Process Mode");
SubscribeToolStripMenuItem.Text = i18N.Translate("Subscribe");
ManageSubscribeLinksToolStripMenuItem.Text = i18N.Translate("Manage Subscribe Links");
UpdateServersFromSubscribeLinksToolStripMenuItem.Text = i18N.Translate("Update Servers From Subscribe Links");
OptionsToolStripMenuItem.Text = i18N.Translate("Options");
ReloadModesToolStripMenuItem.Text = i18N.Translate("Reload Modes");
UninstallServiceToolStripMenuItem.Text = i18N.Translate("Uninstall NF Service");
CleanDNSCacheToolStripMenuItem.Text = i18N.Translate("Clean DNS Cache");
UpdateACLToolStripMenuItem.Text = i18N.Translate("Update ACL");
updateACLWithProxyToolStripMenuItem.Text = i18N.Translate("Update ACL with proxy");
reinstallTapDriverToolStripMenuItem.Text = i18N.Translate("Reinstall TUN/TAP driver");
CheckForUpdatesToolStripMenuItem.Text = i18N.Translate("Check for updates");
OpenDirectoryToolStripMenuItem.Text = i18N.Translate("Open Directory");
AboutToolStripButton.Text = i18N.Translate("About");
fAQToolStripMenuItem.Text = i18N.Translate("FAQ");
NewVersionLabel.Text = i18N.Translate("New version available");
// VersionLabel.Text = i18N.Translate("xxx");
exitToolStripMenuItem.Text = i18N.Translate("Exit");
ConfigurationGroupBox.Text = i18N.Translate("Configuration");
ProfileLabel.Text = i18N.Translate("Profile");
ModeLabel.Text = i18N.Translate("Mode");
ServerLabel.Text = i18N.Translate("Server");
// UsedBandwidthLabel.Text = i18N.Translate("Used: 0 KB");
// DownloadSpeedLabel.Text = i18N.Translate("↓: 0 KB/s");
// UploadSpeedLabel.Text = i18N.Translate("↑: 0 KB/s");
NotifyIcon.Text = i18N.Translate("Netch");
ShowMainFormToolStripButton.Text = i18N.Translate("Show");
ExitToolStripButton.Text = i18N.Translate("Exit");
SettingsButton.Text = i18N.Translate("Settings");
ProfileGroupBox.Text = i18N.Translate("Profiles");
// 加载翻译
#region Record English
if (!_textRecorded)
{
void RecordText(Component component)
{
try
{
switch (component)
{
case TextBoxBase _:
case ListControl _:
break;
case Control c:
_mainFormText.Add(c.Name, c.Text);
break;
case ToolStripItem c:
_mainFormText.Add(c.Name, c.Text);
break;
}
}
catch (ArgumentException)
{
// ignored
}
}
Utils.Utils.ComponentIterator(this, RecordText);
Utils.Utils.ComponentIterator(NotifyMenu, RecordText);
_textRecorded = true;
}
#endregion
#region Translate
void TranslateText(Component component)
{
switch (component)
{
case TextBoxBase _:
case ListControl _:
break;
case Control c:
c.Text = ControlText(c.Name);
break;
case ToolStripItem c:
c.Text = ControlText(c.Name);
break;
}
string ControlText(string name)
{
var value = _mainFormText[name];
if (value.Equals(string.Empty)) return string.Empty;
if (value is object[] values)
return i18N.TranslateFormat(values.First() as string, values.Skip(1).ToArray());
else
return i18N.Translate(value);
}
}
Utils.Utils.ComponentIterator(this, TranslateText);
Utils.Utils.ComponentIterator(NotifyMenu, TranslateText);
#endregion
UsedBandwidthLabel.Text = $@"{i18N.Translate("Used", ": ")}0 KB";
State = State;
VersionLabel.Text = UpdateChecker.Version;
}
@@ -275,10 +313,8 @@ namespace Netch.Forms
}
Hide();
var server = Global.Settings.Server[ServerComboBox.SelectedIndex];
Servers.GetUtilByTypeName(server.Type).Edit(server);
InitServer();
Configuration.Save();
Show();
@@ -288,7 +324,6 @@ namespace Netch.Forms
{
Enabled = false;
StatusText(i18N.Translate("Testing"));
try
{
await Task.Run(TestServer);
@@ -382,12 +417,9 @@ namespace Netch.Forms
}
var index = ServerComboBox.SelectedIndex;
Global.Settings.Server.Remove(ServerComboBox.SelectedItem as Server);
InitServer();
Configuration.Save();
if (ServerComboBox.Items.Count > 0)
{
ServerComboBox.SelectedIndex = index != 0 ? index - 1 : index;

View File

@@ -110,15 +110,8 @@ namespace Netch.Forms.Mode
public void ModeForm_Load(object sender, EventArgs e)
{
Text = i18N.Translate(Text);
ConfigurationGroupBox.Text = i18N.Translate(ConfigurationGroupBox.Text);
RemarkLabel.Text = i18N.Translate(RemarkLabel.Text);
FilenameLabel.Text = i18N.Translate(FilenameLabel.Text);
UseCustomFilenameBox.Text = i18N.Translate(UseCustomFilenameBox.Text);
AddButton.Text = i18N.Translate(AddButton.Text);
ScanButton.Text = i18N.Translate(ScanButton.Text);
ControlButton.Text = i18N.Translate(ControlButton.Text);
DeleteToolStripMenuItem.Text = i18N.Translate(DeleteToolStripMenuItem.Text);
i18N.TranslateForm(this);
i18N.Translate(contextMenuStrip);
}
/// <summary>

View File

@@ -79,35 +79,7 @@ namespace Netch.Forms
private void InitText()
{
Text = i18N.Translate(Text);
PortGroupBox.Text = i18N.Translate(PortGroupBox.Text);
AllowDevicesCheckBox.Text = i18N.Translate(AllowDevicesCheckBox.Text);
TUNTAPAddressLabel.Text = i18N.Translate(TUNTAPAddressLabel.Text);
TUNTAPNetmaskLabel.Text = i18N.Translate(TUNTAPNetmaskLabel.Text);
TUNTAPGatewayLabel.Text = i18N.Translate(TUNTAPGatewayLabel.Text);
UseCustomDNSCheckBox.Text = i18N.Translate(UseCustomDNSCheckBox.Text);
ProxyDNSCheckBox.Text = i18N.Translate(ProxyDNSCheckBox.Text);
UseFakeDNSCheckBox.Text = i18N.Translate(UseFakeDNSCheckBox.Text);
GlobalBypassIPsButton.Text = i18N.Translate(GlobalBypassIPsButton.Text);
ControlButton.Text = i18N.Translate(ControlButton.Text);
BootShadowsocksFromDLLCheckBox.Text = i18N.Translate(BootShadowsocksFromDLLCheckBox.Text);
ModifySystemDNSCheckBox.Text = i18N.Translate(ModifySystemDNSCheckBox.Text);
CheckBetaUpdateCheckBox.Text = i18N.Translate(CheckBetaUpdateCheckBox.Text);
BehaviorGroupBox.Text = i18N.Translate(BehaviorGroupBox.Text);
ExitWhenClosedCheckBox.Text = i18N.Translate(ExitWhenClosedCheckBox.Text);
StopWhenExitedCheckBox.Text = i18N.Translate(StopWhenExitedCheckBox.Text);
StartWhenOpenedCheckBox.Text = i18N.Translate(StartWhenOpenedCheckBox.Text);
MinimizeWhenStartedCheckBox.Text = i18N.Translate(MinimizeWhenStartedCheckBox.Text);
RunAtStartupCheckBox.Text = i18N.Translate(RunAtStartupCheckBox.Text);
UpdateSubscribeatWhenOpenedCheckBox.Text = i18N.Translate(UpdateSubscribeatWhenOpenedCheckBox.Text);
CheckUpdateWhenOpenedCheckBox.Text = i18N.Translate(CheckUpdateWhenOpenedCheckBox.Text);
ProfileCountLabel.Text = i18N.Translate(ProfileCountLabel.Text);
TcpingAtStartedCheckBox.Text = i18N.Translate(TcpingAtStartedCheckBox.Text);
DetectionIntervalLabel.Text = i18N.Translate(DetectionIntervalLabel.Text);
STUNServerLabel.Text = i18N.Translate(STUNServerLabel.Text);
AclLabel.Text = i18N.Translate(AclLabel.Text);
LanguageLabel.Text = i18N.Translate(LanguageLabel.Text);
i18N.TranslateForm(this);
}
private void InitSTUN()

View File

@@ -32,16 +32,8 @@ namespace Netch.Forms
private void SubscribeForm_Load(object sender, EventArgs e)
{
Text = i18N.Translate(Text);
RemarkColumnHeader.Text = i18N.Translate(RemarkColumnHeader.Text);
LinkColumnHeader.Text = i18N.Translate(LinkColumnHeader.Text);
UseSelectedServerCheckBox.Text = i18N.Translate(UseSelectedServerCheckBox.Text);
DeleteToolStripMenuItem.Text = i18N.Translate(DeleteToolStripMenuItem.Text);
CopyLinkToolStripMenuItem.Text = i18N.Translate(CopyLinkToolStripMenuItem.Text);
RemarkLabel.Text = i18N.Translate(RemarkLabel.Text);
LinkLabel.Text = i18N.Translate(LinkLabel.Text);
ClearButton.Text = i18N.Translate(ClearButton.Text);
AddButton.Text = i18N.Translate(AddButton.Text);
i18N.TranslateForm(this);
i18N.TranslateForm(pContextMenuStrip);
ResetEditingGroup();