1.参考资料
C# 类库json转换为资源文件
遍历控件
Excel Json在线转换工具
2.最终实现代码
1)InterpretBase类实现:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; //控件遍历所需
using System.Text.RegularExpressions; //String处理
using Newtonsoft.Json;
using System.IO;
namespace ClassLibrary_MultiLanguage
{
public class InterpretBase
{
//定义字典用于储存Json配置文件资源
public static Dictionary<string, string> resources = new Dictionary<string, string>();
/// <summary>
/// 当前项目文件夹Debug\Language\参数文件夹
/// </summary>
/// <param name="language">配置文件所在文件夹名</param>
public static void LoadLanguage(string language = "")
{
if (string.IsNullOrEmpty(language))
{
language = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
}
resources = new Dictionary<string, string>();
//string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format("Language"));
string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format("Language"));
if (Directory.Exists(dir))
{
var jaonFile = Directory.GetFiles(dir, language + ".json", SearchOption.AllDirectories);
foreach (string file in jaonFile)
{
LoadFile(file);
}
}
}
public static string textTran(string str)
{
return str = (resources.ContainsKey(str)) ? resources[str] : str;
}
/// <summary>
/// 配置文件加载
/// </summary>
/// <param name="path">配置文件绝对路径(包括文件本身)</param>
public static void LoadFile(string path)
{
var content = File.ReadAllText(path, Encoding.UTF8);
if (!string.IsNullOrEmpty(content))
{
var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(content);
foreach (string key in dict.Keys)
{
if (!resources.ContainsKey(key))
{
resources.Add(key, dict[key]);
}
else
resources[key] = dict[key];
}
}
}
/// <summary>
/// 遍历翻译 窗体或控件及其子控件
/// </summary>
/// <param name="control">需要翻译的控件或窗体</param>
public static void InitLanguage(Control control)
{
SetControlLanguage(control);
foreach (Control ctrl in control.Controls)
{
InitLanguage(ctrl);
}
//工具栏或者菜单动态构建窗体或者控件的时候,重新对子控件进行处理
control.ControlAdded += (sender, e) =>
{
InitLanguage(e.Control);
};
}
/// <summary>
/// 控件及子控件翻译
/// </summary>
/// <param name="control">需要翻译的控件</param>
public static void SetControlLanguage(Control control)
{
if (control is ComboBox)
{
ComboBox combox = control as ComboBox;
string[] NewItems = new string[combox.Items.Count];
for (int i = 0; i < combox.Items.Count; i++)
{
if (resources.ContainsKey(combox.Items[i].ToString()))
{
combox.Items[i] = resources[combox.Items[i].ToString()];
}
else
NewItems[i] = combox.Items[i].ToString();
}
combox.Text = (resources.ContainsKey(combox.Text)) ? resources[combox.Text] : combox.Text;
//combox.Items.Clear();
//combox.Items.AddRange(NewItems);
}
//control is 其他控件或者特殊控件 如:TreeView
else if (control is TreeView)
{
TreeView treeView = (TreeView)control;
foreach (TreeNode node in treeView.Nodes)
{
try
{
node.Text = (resources.ContainsKey(node.Text)) ? resources[node.Text] : node.Text;
}
catch (Exception)
{
}
finally
{
if (node.Nodes.Count > 0)
{
GetNodeText(node);
}
}
}
}
else if (control is MenuStrip)
{
MenuStrip menuStrip = (MenuStrip)control;
foreach (ToolStripMenuItem toolItem in menuStrip.Items)
{
try
{
toolItem.Text = (resources.ContainsKey(toolItem.Text)) ? resources[toolItem.Text] : toolItem.Text;
}
catch (Exception)
{
}
finally
{
if (toolItem.DropDownItems.Count > 0)
{
GetItemText(toolItem);
}
}
}
}
else if (control is TabControl)
{
TabControl tabCtrl = (TabControl)control;
try
{
foreach (TabPage tabPage in tabCtrl.TabPages)
{
tabPage.Text = (resources.ContainsKey(tabPage.Text)) ? resources[tabPage.Text] : tabPage.Text;
}
}
catch (Exception)
{
}
}
else if (control is ToolStrip)
{
ToolStrip statusStrip = (ToolStrip)control;
foreach (ToolStripItem toolItem in statusStrip.Items)
{
try
{
toolItem.Text = (resources.ContainsKey(toolItem.Text)) ? resources[toolItem.Text] : toolItem.Text;
}
catch (Exception)
{
}
}
}
else if (control is CheckedListBox)
{
CheckedListBox chkListBox = (CheckedListBox)control;
try
{
for (int n = 0; n < chkListBox.Items.Count; n++)
{
chkListBox.Items[n] = (resources.ContainsKey(chkListBox.Items[n].ToString())) ? resources[chkListBox.Items[n].ToString()] : chkListBox.Items[n].ToString();
}
}
catch (Exception)
{ }
}
else if (control is Label)
{
Label label = control as Label;
try
{
label.Text = (resources.ContainsKey(label.Text)) ? resources[label.Text] : label.Text;
}
catch (Exception)
{
}
}
else if (control is Button)
{
Button button = control as Button;
try
{
button.Text = (resources.ContainsKey(button.Text)) ? resources[button.Text] : button.Text;
}
catch (Exception)
{
}
}
else if (control is RadioButton)
{
RadioButton radioButton = (RadioButton)control;
try
{
radioButton.Text = (resources.ContainsKey(radioButton.Text)) ? resources[radioButton.Text] : radioButton.Text;
}
catch (Exception)
{
}
}
else if (control is DataGridView)
{
try
{
DataGridView dataGridView = (DataGridView)control;
foreach (DataGridViewColumn dgvc in dataGridView.Columns)
{
try
{
if (dgvc.HeaderText.ToString() != "" && dgvc.Visible)
{
dgvc.HeaderText = (resources.ContainsKey(dgvc.HeaderText)) ? resources[dgvc.HeaderText] : dgvc.HeaderText;
}
}
catch
{
}
}
}
catch (Exception)
{ }
}
else
{
control.Text = (resources.ContainsKey(control.Text)) ? resources[control.Text] : control.Text;
}
/* if (control.HasChildren)
{
foreach (System.Windows.Forms.Control c in control.Controls)
{
SetControlLanguage(c);
}
}
else
{
SetControlLanguage(control);
}*/
}
#region 简繁体转换
/// <summary>
/// 内容的语言转化
/// </summary>
/// <param name="parent"></param>
public static void SetControlLanguageText(System.Windows.Forms.Control parent)
{
if (parent.HasChildren)
{
foreach (System.Windows.Forms.Control ctrl in parent.Controls)
{
SetControlLanguage(ctrl);
}
}
else
{
SetControlLanguage(parent);
}
}
#endregion
/// <summary>
/// 局部匹配翻译,不存在则不翻译
/// </summary>
/// <param name="text">需要翻译的正则公式</param>
public static void PartInterpret(ref string text)
{
if (resources.Keys == null && resources.Keys.Count == 0)
{
MessageBox.Show(InterpretBase.textTran("未添加资源文件,请及时确认或与工作人员联系"), InterpretBase.textTran("提示!!"));
return;
}
foreach (var item in resources)
{
if (text.Contains(item.Key))
{
text = text.Replace(item.Key, item.Value);
}
}
}
/// <summary>
/// 递归转化树
/// </summary>
/// <param name="menuItem"></param>
private static void GetNodeText(TreeNode node)
{
foreach (TreeNode treeNode in node.Nodes)
{
try
{
treeNode.Text = (resources.ContainsKey(treeNode.Text)) ? resources[treeNode.Text] : treeNode.Text;
}
catch (Exception)
{
}
finally
{
if (treeNode.Nodes.Count > 0)
{
GetNodeText(treeNode);
}
}
}
}
/// <summary>
/// 递归转化菜单
/// </summary>
/// <param name="menuItem"></param>
private static void GetItemText(ToolStripDropDownItem menuItem)
{
foreach (ToolStripItem toolItem in menuItem.DropDownItems)
{
try
{
toolItem.Text = (resources.ContainsKey(toolItem.Text)) ? resources[toolItem.Text] : toolItem.Text;
}
catch (Exception)
{
}
finally
{
if (toolItem is ToolStripDropDownItem)
{
ToolStripDropDownItem subMenuStrip = (ToolStripDropDownItem)toolItem;
if (subMenuStrip.DropDownItems.Count > 0)
{
GetItemText(subMenuStrip);
}
}
}
}
}
}
}
2)主函数调用类
private void ToolStripMenuItem_zhCN_Click(object sender, EventArgs e)
{
lang = "zh-CN";
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
IPret.LoadLanguage(lang);
IPret.InitLanguage(this);//此窗体
}
3)json文件中英文格式
{
"File":"文件",
"Tool":"工具",
"Operate":"操作",
"User":"用户",
"Help":"帮助",
"New":"新建",
"Open":"打开",
"Local":"本地",
"Database":"数据库",
"User management":"用户管理",
"SysConf":"系统配置",
"WaveMon":"波形监测",
"OperMon":"运行监测",
"DtStor":"数据存储",
"Calibr":"校 准",
"Wait to Trig":"等待触发",
"Rec Data":"接收数据",
"Save Database":"存储数据库",
"Instrument Config":"仪器配置",
"Channel Config":"通道配置",
"Display Config":"显示配置",
"Record Config":"记录配置",
"DataCompar":"数据对比",
"Failed to initialize the interpolation coefficients table!":"初始化插值系数表失败!",
"Warning":"警告",
"The channel configuration page has not been applied. Do you want to apply the configuration?":"通道配置页面未被应用,是否应用?",
"Prompt message":"提示信息",
"The number of devices cannot be 0!":"设备数量不能为0!",
"The file has been saved successfully! The storage path is":"文件已保存完毕,存储路径为",
"Save or not":"保存情况",
"The file is saving...":"文件保存中...",
"No available port":"无可用端口",
"Service off, data written, memory cleared":"服务已关闭,数据已写入,内存已清理",
"You haven't saved the project. Do you want to save it?":"您尚未保存工程,是否保存工程?",
"Add User":"添加用户",
"Account":"账户",
"Password":"密码",
"Authority":"权限",
"OK":"确认",
"Cancel":"取消",
"Modify User Info":"修改用户信息",
"Modify":"修改",
"Administrator":"管理员",
"Guest":"访客",
"You haven't completed the full information, please check again.":"存在没有填写的信息,请确认",
"The user name already exists.":"该账号已存在",
"Device Name":"设备名称",
"SN":"序列号",
"Delay Calibration Time":"设备延时校准时间",
"Delay":"设备延时",
"Channel Calibration Time":"通道校准时间",
"Apply":"应用",
"TrigSource":"触发源:",
"TrigMode":"触发方式:",
"TrigLevel":"触发电平:",
"TrigHoldoff":"触发释抑:",
"HorScale":"水平时基:",
"HorOffset":"水平偏移:",
"MemDepth":"存储深度:",
"Host IP":"主机IP:",
"Acquire":"采集",
"Record":"记录",
"Device":"设备",
"Channel":"通道",
"Channel Tag":"通道标记",
"Remarks":"标记注释",
"Measurement Type":"测量类型",
"Amplitude Range":"幅值范围",
"Offset":"偏移",
"Impedance":"阻抗",
"Coupling":"耦合",
"Probe Ratio":"探头比",
"Channel configuration completed.":"通道配置已完成",
"Configuration":"配置情况",
"Null exists or no device information is available. Please input complete information or register the instrument before clicking Apply.":"存在空值或无设备信息,请输入完成或注册仪器再点击应用",
"Invalid input. Please try to input again.":"此输入不合法,请重新输入",
"Apply to all channels?":"是否应用所有通道",
"OK.":"确定",
"Unconventional value for offset value.":"偏移值输入非常规值",
"Unconventional value for max. value.":"最大值输入非常规值",
"Unconventional value for min. value.":"最小值输入非常规值",
"Lower limit cannot exceed the upper limit.":"下限不能超过上限",
"Lower and upper limits cannot be the same.":"上下限不能相等",
"Load Data from Database":"数据库导入数据",
"Project Time:":"项目名称:",
"Test Time:":"测试时间:",
"Query":"查询",
"Project and Test Time cannot be null.":"项目和测试时间不允许为空",
"No project information that meets the conditions is found.":"未查询到满足条件的项目信息",
"Tip":"提示",
"You haven't created a project. Please create a project first.":"还未创建过项目,请先创建项目",
"Project Name":"项目名称",
"Acquisition Time":"采集时间",
"Load":"导入",
"Please select the acquisition time":"请选择采集时间",
"New Project":"新建工程",
"ProjName:":"工程名:",
"Location:":"位 置:",
"Remarks:":"注 释:",
"Browse":"浏览",
"You haven't filled in all the information.":"您有信息未填写",
"The project information already exists. Please input a new project name.":"该工程信息已存在,请重新输入工程名",
"Please select a path for storing the file.":"请选择文件存储位置",
"Data Operation in the Database":"数据库数据操作",
"Query Condition":"查询条件",
"Configur Time:":"配置时间:",
"Channel Start No.":"通道起始编号:",
"Channel Stop No.":"通道终止编号:",
"Query Structure":"查询结构",
"Check":"检查",
"Device Aliases":"设备别名",
"Points":"点数",
"Sample Rate:":"采样率:",
"Select All.":"全选",
"Select All":"全 选",
"Deselect All":"取消全选",
"Save to Local":"保存至本地",
"No waveform data that meet the conditions are found.":"未查询到满足条件的波形数据",
"The table for the channel does not exist. Please check whether this table exists in the database.":"该通道对应的表不存在,请检查数据库中存在该表",
"The file has been saved":"文件已经保存在",
"Alarm message":"警告信息",
"Cancel the instrument?":"是否删除仪器(设备)",
"Channel delay calibration":"通道延时校准",
"Start calibrating":"开始校准",
"Load Info":"加载设备信息",
"Calibration process information":"校准过程信息",
"External trigger delay calibration":"外触发延时校准",
"Please ensure that the sync module output is enabled!":"请确保同步机输出打开!",
"All the input channels of the device under calibration should be properly connected to the sync module via the 50 Ω terminal!":"被校准设备的所有输入通道和外触发通道均需通过50Ω端子与同步机连接完好!",
"Click OK to start calibration.":"点击确认开始校准",
"No calibration device is selected!":"未选择校准设备!",
"The device is starting to perform the channel delay calibration.":"设备开始通道延时校准",
"Writing into the database completed!":"写入数据库完成!",
"Please ensure that CH1 of each device under calibration has been properly connected to the sync module via the 50 Ω terminal!":"请确保每台被校准设备的CH1通道和外触发通过均已通过50Ω端子与外触发连接!",
"The clock signals among the devices should be in cascaded connection via 10 M In/Out!":"机器间的时钟信号需要通过10M IN/OUT进行级联!",
"Instrument list":"仪器列表",
"Registered Instrument":"注册仪器",
"Delete":"删除",
"Registered Instru List":"注册仪器列表",
"Online Instru List":"在线仪器列表",
"Search":"检索",
"SN.":"仪器序列号",
"Model":"仪器型号",
"Firmware Version":"固件版本",
"Device No.":"机器编号",
"IP Address":"IP地址",
"Failed to add the instrument.":"添加失败",
"The instrument already exists in the current instrument configuration list.":"当前仪器配置列表已存在该设备",
"Add Instrument":"添加情况",
"Memory error":"内存错误",
"Communication I/O error. Please check the parameters of the instrument.":"通信I/O错误,请检查设备参数",
"Query timeout. Please confirm whether the IP address matches the selected instrument model.":"查询超时,请确保是否为支持的设备型号列表",
"The instrument already exists in the current location.":"当前位置已存在设备",
"UserName":"账号",
"Master Login":"管理员登录",
"Slave Login":"访客登录",
"User Login":"用户登录",
"Incorrect password":"该账号不存在",
"Login":"登录情况",
"You are guest, please click on the Slave Login button to log in as a guest.":"权限为访客,请点击访客按钮",
"You are administrator, please click on the Master Login button to log in as an administrator.":"权限为管理员,请点击管理员按钮",
"Channel configurin...":"通道配置中",
"Error!":"出错啦!",
"Acquisition Condition":"采集条件:",
"Record Location":"记录位置:",
"Local File Record Type":"本地文件记录类型:",
"Bin":"二进制",
"Local File Storage Location":"本地文件保存位置:",
"File Naming Rule":"文件命名规则:",
"Device Name.":"设备名",
"No. of Channels":"通道数",
"Additional Time":"附加时间",
"Device Information":"设备信息",
"Model":"型号",
"Device IP":"设备IP",
"Device SN.":"设备SN",
"Communication Interface":"通讯接口",
"Information incomplete.Unable to register.":"您的信息未填写完全,无法注册",
"Small Icon":"小图标显示模式",
"Normal Icon":"正常图标显示模式",
"Large Icon":"大图标显示模式",
"Display Range":"显示范围设置",
"Please input a valid range!":"请输入有效的范围!",
"No. of displayed should be greater than 0.":"最小显示个数需大于0",
"System Operating Status":"系统运行状态",
"Project Status":"工程状态:",
"Last Calibration Record":"上次校准记录:",
"Time to Start Test ":"开始测试时间:",
"Recorded":"已记录条目数:",
"Data Loss":"数据丢失:",
"Written Error":"写入错误:",
"Instrument Operating Status":"仪器运行状态",
"Refresh":"刷新",
"Refresh.":"刷 新",
"View Details":"查看详情",
"User Name":"用户名",
"Creation Time":"创建时间",
"Not query data":"未查询到数据",
"Group Name":"组名",
"Channel Selection":"通道选择",
"Waveform Color":"波形颜色",
"Trend Graph":"趋势图",
"The uppper and lower limits cannot be the same.":"上下限不能相同",
"Channel Information":"通道信息",
"Measurement Results":"测量结果",
"Interpolation Factor":"内插倍数:",
"1st Peak":"第一个峰值",
"Half Peak Width":"半峰宽",
"Vertical Scale":"垂直档位",
"Vertical Offset":"垂直偏移",
"Inverse":"反向",
"The min. value cannot exceed the max. value!":"最小值不能超过最大值!",
"The min. value of the amplitude range must be smaller than the max. value!":"幅度范围的最小值必须<最大值!",
"Error occurred for the min. value input format!":"最小值输入格式有误!",
"The max. value of the amplitude range must be greater than the min. value!":"幅度范围的最大值必须>最小值!",
"Error occurred for the max. value input format!":"最大值输入格式有误!",
"Scale":"时基",
"Position":"位移",
"LangTran":"语言转换",
"Chinese":"中文",
"English":"英文",
"The general parameters of the instrument have not been set successfully:":"仪器的通用参数未设置成功:",
"The project is queried, but the test information is not queried":"查询到项目,但是未查询到测试信息",
"Queryed project":"查询到项目",
"No relevant collected data was queried":"未查询到相关采集数据",
"Please select data to add to the drawing table":"请先选择数据添加绘制表中",
"under the directory of":"目录下",
"The device starts external trigger delay calibration.":"设备开始外触发延时校准",
"Calibration failed":"校准失败",
"Calibration failed!":"校准失败!",
"The end of calibration, whether to store the database.":"校准结束,是否存储数据库",
"Click OK to start storing the database":"点击确认开始存储数据库",
"Failed to add the instrument,the instrument already exists in the current instrument configuration list.":"添加失败,当前仪器配置列表已存在该设备",
"Failed to add the instrument,the instrument already exists in the current location.":"添加失败,当前位置已存在设备",
"Search complete":"检索完成",
"The max. value cannot be lower than the min. value!":"最大值不能低于最小值!",
"Normalization is complete!":"归一化完成!",
"Message":"消息",
"Half peak height alignment is complete!":"半峰高对齐完成!",
"Half peak height alignment is wrong!":"半峰高对齐错误!",
"The password you entered is not correct!":"您输入的密码不正确!",
"Your information is incomplete and cannot be added":"您的信息未填写完全,无法添加",
"The device SN corresponding to the IP you entered does not match the original location, please re-enter":"您输入的IP对应的设备SN和原位置的不匹配,请重新输入",
"Successfully modified":"修改成功",
"Your IP is invalid, please confirm.":"您的IP无效,请确认",
"Your IP has not been filled in completely and cannot be added.":"您的IP未填写完全,无法添加",
"No resource file has been added, please confirm or contact staff in time.":"未添加资源文件,请及时确认或与工作人员联系",
"Device Alias:":"设备别名:",
"Model:":"型 号:",
"IP:":"设备 IP:",
"SN:":"设备 SN:",
"Commu Interf:":"通讯接口:",
"of time record, sure to import?":"的时间记录,确定导入?",
"Impendence(Ω)":"阻抗(Ω)",
"Measurement Type:":"测量类型:",
"Acquisition Time:":"采集时间:",
"Channel Offset":"通道偏移",
"Save":"保存",
"Add":"添加",
"Empty":"清空",
"Remove":"移除",
"Single-Calibr":"单机校准",
"Sys-Calibr":"系统校准",
"The receiving service is starting...":"接收服务启动中...",
"The receiving service has been started and completed":"接收服务已启动完成",
"Service startup":"服务启动情况",
"Choose":"选择",
"Search result":"查询结果",
"Device Model":"设备型号",
"Calibration Status":"校准状态",
"in":"在",
"Selected":"已选",
"SN:":"仪器序列号:",
"Model:":"仪器型号:",
"Firmware Version:":"固件版本:",
"Device No.:":"机器编号:",
"IP Address:":"IP 地址:",
"No test record found.":"未查询到测试记录",
"Interpolation Factor:X":"内插倍数:X",
"Register":"注册",
"Kilomega":"千兆",
"This account is a super administrator and cannot be modified as a guest":"此账号为超级管理员,无法修改权限为访客",
"This account is the default administrator and cannot be deleted":"此账号为默认管理员,无法删除"
}
{
"文件":"File",
"工具":"Tool",
"操作":"Operate",
"用户":"User",
"帮助":"Help",
"新建":"New",
"打开":"Open",
"本地":"Local",
"数据库":"Database",
"用户管理":"User management",
"系统配置":"SysConf",
"波形监测":"WaveMon",
"运行监测":"OperMon",
"数据存储":"DtStor",
"校 准":"Calibr",
"等待触发":"Wait to Trig",
"接收数据":"Rec Data",
"存储数据库":"Save Database",
"仪器配置":"Instrument Config",
"通道配置":"Channel Config",
"显示配置":"Display Config",
"记录配置":"Record Config",
"数据对比":"DataCompar",
"初始化插值系数表失败!":"Failed to initialize the interpolation coefficients table!",
"警告":"Warning",
"通道配置页面未被应用,是否应用?":"The channel configuration page has not been applied. Do you want to apply the configuration?",
"提示信息":"Prompt message",
"设备数量不能为0!":"The number of devices cannot be 0!",
"文件已保存完毕,存储路径为":"The file has been saved successfully! The storage path is",
"保存情况":"Save or not",
"文件保存中...":"The file is saving...",
"无可用端口":"No available port",
"服务已关闭,数据已写入,内存已清理":"Service off, data written, memory cleared",
"您尚未保存工程,是否保存工程?":"You haven't saved the project. Do you want to save it?",
"添加用户":"Add User",
"账户":"Account",
"密码":"Password",
"权限":"Authority",
"确认":"OK",
"取消":"Cancel",
"修改用户信息":"Modify User Info",
"修改":"Modify",
"管理员":"Administrator",
"访客":"Guest",
"存在没有填写的信息,请确认":"You haven't completed the full information, please check again.",
"该账号已存在":"The user name already exists.",
"设备名称":"Device Name",
"序列号":"SN",
"设备延时校准时间":"Delay Calibration Time",
"设备延时":"Delay",
"通道校准时间":"Channel Calibration Time",
"应用":"Apply",
"触发源:":"TrigSource",
"触发方式:":"TrigMode",
"触发电平:":"TrigLevel",
"触发释抑:":"TrigHoldoff",
"水平时基:":"HorScale",
"水平偏移:":"HorOffset",
"存储深度:":"MemDepth",
"主机IP:":"Host IP",
"采集":"Acquire",
"记录":"Record",
"设备":"Device",
"通道":"Channel",
"通道标记":"Channel Tag",
"标记注释":"Remarks",
"测量类型":"Measurement Type",
"幅值范围":"Amplitude Range",
"偏移":"Offset",
"阻抗":"Impedance",
"耦合":"Coupling",
"探头比":"Probe Ratio",
"通道配置已完成":"Channel configuration completed.",
"配置情况":"Configuration",
"存在空值或无设备信息,请输入完成或注册仪器再点击应用":"Null exists or no device information is available. Please input complete information or register the instrument before clicking Apply.",
"此输入不合法,请重新输入":"Invalid input. Please try to input again.",
"是否应用所有通道":"Apply to all channels?",
"确定":"OK.",
"偏移值输入非常规值":"Unconventional value for offset value.",
"最大值输入非常规值":"Unconventional value for max. value.",
"最小值输入非常规值":"Unconventional value for min. value.",
"下限不能超过上限":"Lower limit cannot exceed the upper limit.",
"上下限不能相等":"Lower and upper limits cannot be the same.",
"数据库导入数据":"Load Data from Database",
"项目名称:":"Project Time:",
"测试时间:":"Test Time:",
"查询":"Query",
"项目和测试时间不允许为空":"Project and Test Time cannot be null.",
"未查询到满足条件的项目信息":"No project information that meets the conditions is found.",
"提示":"Tip",
"还未创建过项目,请先创建项目":"You haven't created a project. Please create a project first.",
"项目名称":"Project Name",
"采集时间":"Acquisition Time",
"导入":"Load",
"请选择采集时间":"Please select the acquisition time",
"新建工程":"New Project",
"工程名:":"ProjName:",
"位 置:":"Location:",
"注 释:":"Remarks:",
"浏览":"Browse",
"您有信息未填写":"You haven't filled in all the information.",
"该工程信息已存在,请重新输入工程名":"The project information already exists. Please input a new project name.",
"请选择文件存储位置":"Please select a path for storing the file.",
"数据库数据操作":"Data Operation in the Database",
"查询条件":"Query Condition",
"配置时间:":"Configur Time:",
"通道起始编号:":"Channel Start No.",
"通道终止编号:":"Channel Stop No.",
"查询结构":"Query Structure",
"检查":"Check",
"设备别名":"Device Aliases",
"点数":"Points",
"采样率:":"Sample Rate:",
"全选":"Select All.",
"全 选":"Select All",
"取消全选":"Deselect All",
"保存至本地":"Save to Local",
"未查询到满足条件的波形数据":"No waveform data that meet the conditions are found.",
"该通道对应的表不存在,请检查数据库中存在该表":"The table for the channel does not exist. Please check whether this table exists in the database.",
"文件已经保存在":"The file has been saved",
"警告信息":"Alarm message",
"是否删除仪器(设备)":"Cancel the instrument?",
"通道延时校准":"Channel delay calibration",
"开始校准":"Start calibrating",
"加载设备信息":"Load Info",
"校准过程信息":"Calibration process information",
"外触发延时校准":"External trigger delay calibration",
"请确保同步机输出打开!":"Please ensure that the sync module output is enabled!",
"被校准设备的所有输入通道和外触发通道均需通过50Ω端子与同步机连接完好!":"All the input channels of the device under calibration should be properly connected to the sync module via the 50 Ω terminal!",
"点击确认开始校准":"Click OK to start calibration.",
"未选择校准设备!":"No calibration device is selected!",
"设备开始通道延时校准":"The device is starting to perform the channel delay calibration.",
"写入数据库完成!":"Writing into the database completed!",
"请确保每台被校准设备的CH1通道和外触发通过均已通过50Ω端子与外触发连接!":"Please ensure that CH1 of each device under calibration has been properly connected to the sync module via the 50 Ω terminal!",
"机器间的时钟信号需要通过10M IN/OUT进行级联!":"The clock signals among the devices should be in cascaded connection via 10 M In/Out!",
"仪器列表":"Instrument list",
"注册仪器":"Registered Instrument",
"删除":"Delete",
"注册仪器列表":"Registered Instru List",
"在线仪器列表":"Online Instru List",
"检索":"Search",
"仪器序列号":"SN.",
"仪器型号":"Model",
"固件版本":"Firmware Version",
"机器编号":"Device No.",
"IP地址":"IP Address",
"添加失败":"Failed to add the instrument.",
"当前仪器配置列表已存在该设备":"The instrument already exists in the current instrument configuration list.",
"添加情况":"Add Instrument",
"内存错误":"Memory error",
"通信I/O错误,请检查设备参数":"Communication I/O error. Please check the parameters of the instrument.",
"查询超时,请确保是否为支持的设备型号列表":"Query timeout. Please confirm whether the IP address matches the selected instrument model.",
"当前位置已存在设备":"The instrument already exists in the current location.",
"账号":"UserName",
"管理员登录":"Master Login",
"访客登录":"Slave Login",
"用户登录":"User Login",
"该账号不存在":"Incorrect password",
"登录情况":"Login",
"权限为访客,请点击访客按钮":"You are guest, please click on the Slave Login button to log in as a guest.",
"权限为管理员,请点击管理员按钮":"You are administrator, please click on the Master Login button to log in as an administrator.",
"通道配置中":"Channel configurin...",
"出错啦!":"Error!",
"采集条件:":"Acquisition Condition",
"记录位置:":"Record Location",
"本地文件记录类型:":"Local File Record Type",
"二进制":"Bin",
"本地文件保存位置:":"Local File Storage Location",
"文件命名规则:":"File Naming Rule",
"设备名":"Device Name.",
"通道数":"No. of Channels",
"附加时间":"Additional Time",
"设备信息":"Device Information",
"型号":"Model",
"设备IP":"Device IP",
"设备SN":"Device SN.",
"通讯接口":"Communication Interface",
"您的信息未填写完全,无法注册":"Information incomplete.Unable to register.",
"小图标显示模式":"Small Icon",
"正常图标显示模式":"Normal Icon",
"大图标显示模式":"Large Icon",
"显示范围设置":"Display Range",
"请输入有效的范围!":"Please input a valid range!",
"最小显示个数需大于0":"No. of displayed should be greater than 0.",
"系统运行状态":"System Operating Status",
"工程状态:":"Project Status",
"上次校准记录:":"Last Calibration Record",
"开始测试时间:":"Time to Start Test ",
"已记录条目数:":"Recorded",
"数据丢失:":"Data Loss",
"写入错误:":"Written Error",
"仪器运行状态":"Instrument Operating Status",
"刷新":"Refresh",
"刷 新":"Refresh.",
"查看详情":"View Details",
"用户名":"User Name",
"创建时间":"Creation Time",
"未查询到数据":"Not query data",
"组名":"Group Name",
"通道选择":"Channel Selection",
"波形颜色":"Waveform Color",
"趋势图":"Trend Graph",
"上下限不能相同":"The uppper and lower limits cannot be the same.",
"通道信息":"Channel Information",
"测量结果":"Measurement Results",
"内插倍数:":"Interpolation Factor",
"第一个峰值":"1st Peak",
"半峰宽":"Half Peak Width",
"垂直档位":"Vertical Scale",
"垂直偏移":"Vertical Offset",
"反向":"Inverse",
"最小值不能超过最大值!":"The min. value cannot exceed the max. value!",
"幅度范围的最小值必须<最大值!":"The min. value of the amplitude range must be smaller than the max. value!",
"最小值输入格式有误!":"Error occurred for the min. value input format!",
"幅度范围的最大值必须>最小值!":"The max. value of the amplitude range must be greater than the min. value!",
"最大值输入格式有误!":"Error occurred for the max. value input format!",
"时基":"Scale",
"位移":"Position",
"语言转换":"LangTran",
"中文":"Chinese",
"英文":"English",
"仪器的通用参数未设置成功:":"The general parameters of the instrument have not been set successfully:",
"查询到项目,但是未查询到测试信息":"The project is queried, but the test information is not queried",
"查询到项目":"Queryed project",
"未查询到相关采集数据":"No relevant collected data was queried",
"请先选择数据添加绘制表中":"Please select data to add to the drawing table",
"目录下":"under the directory of",
"设备开始外触发延时校准":"The device starts external trigger delay calibration.",
"校准失败":"Calibration failed",
"校准失败!":"Calibration failed!",
"校准结束,是否存储数据库":"The end of calibration, whether to store the database.",
"点击确认开始存储数据库":"Click OK to start storing the database",
"添加失败,当前仪器配置列表已存在该设备":"Failed to add the instrument,the instrument already exists in the current instrument configuration list.",
"添加失败,当前位置已存在设备":"Failed to add the instrument,the instrument already exists in the current location.",
"检索完成":"Search complete",
"最大值不能低于最小值!":"The max. value cannot be lower than the min. value!",
"归一化完成!":"Normalization is complete!",
"消息":"Message",
"半峰高对齐完成!":"Half peak height alignment is complete!",
"半峰高对齐错误!":"Half peak height alignment is wrong!",
"您输入的密码不正确!":"The password you entered is not correct!",
"您的信息未填写完全,无法添加":"Your information is incomplete and cannot be added",
"您输入的IP对应的设备SN和原位置的不匹配,请重新输入":"The device SN corresponding to the IP you entered does not match the original location, please re-enter",
"修改成功":"Successfully modified",
"您的IP无效,请确认":"Your IP is invalid, please confirm.",
"您的IP未填写完全,无法添加":"Your IP has not been filled in completely and cannot be added.",
"未添加资源文件,请及时确认或与工作人员联系":"No resource file has been added, please confirm or contact staff in time.",
"设备别名:":"Device Alias:",
"型 号:":"Model:",
"设备 IP:":"IP:",
"设备 SN:":"SN:",
"通讯接口:":"Commu Interf:",
"的时间记录,确定导入?":"of time record, sure to import?",
"阻抗(Ω)":"Impendence(Ω)",
"测量类型:":"Measurement Type:",
"采集时间:":"Acquisition Time:",
"通道偏移":"Channel Offset",
"保存":"Save",
"添加":"Add",
"清空":"Empty",
"移除":"Remove",
"单机校准":"Single-Calibr",
"系统校准":"Sys-Calibr",
"接收服务启动中...":"The receiving service is starting...",
"接收服务已启动完成":"The receiving service has been started and completed",
"服务启动情况":"Service startup",
"选择":"Choose",
"查询结果":"Search result",
"设备型号":"Device Model",
"校准状态":"Calibration Status",
"在":"in",
"已选":"Selected",
"仪器序列号:":"SN:",
"仪器型号:":"Model:",
"固件版本:":"Firmware Version:",
"机器编号:":"Device No.:",
"IP 地址:":"IP Address:",
"未查询到测试记录":"No test record found.",
"内插倍数:X":"Interpolation Factor:X",
"注册":"Register",
"千兆":"Kilomega",
"此账号为超级管理员,无法修改权限为访客":"This account is a super administrator and cannot be modified as a guest",
"此账号为默认管理员,无法删除":"This account is the default administrator and cannot be deleted"
}