Commit aa5e55a0 LN

中英文优化

1 个父辈 23b1e36c
......@@ -118,8 +118,8 @@
<Compile Include="manager\PTipSoundProcess.cs" />
<Compile Include="deviceLibrary\led\LedManager.cs" />
<Compile Include="manager\LineWidthManager.cs" />
<Compile Include="manager\ResourceControl.cs" />
<Compile Include="deviceLibrary\ledLabel\ScanRequestLabel.cs" />
<Compile Include="manager\ResourceControl.cs" />
<Compile Include="manager\work\StockInfo.cs" />
<Compile Include="manager\work\TSAVBean.cs" />
<Compile Include="manager\work\TSAVBean_Partial.cs" />
......@@ -132,10 +132,15 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="manager\AlarmType.cs" />
<Compile Include="manager\BoardManager.cs" />
<Compile Include="resource\BaseResourceControl.cs" />
<Compile Include="resource\NCsvResourceControl.cs" />
<Compile Include="resource\ResourceCulture.cs" />
<Compile Include="resource\SysResourceControl.cs" />
<Compile Include="smf\MyWebClient.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="smf\ServerCommunication.cs" />
<Compile Include="smf\SMF.cs" />
<Compile Include="SQLite.cs" />
<Compile Include="tool\HandRecordManager.cs" />
<Compile Include="tool\HVideoManager.cs" />
......@@ -202,6 +207,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
......
......@@ -26,18 +26,23 @@ namespace TSA_V
public static event GetLanDelegate GetLanEvent;
public static string GetString(string id,string defaultStr)
{
string result = GetStrEvent?.Invoke(id, defaultStr);
return result;
return ResourceCulture.GetString(id, defaultStr);
//string result = GetStrEvent?.Invoke(id, defaultStr);
//return result;
}
public static string GetString(string id, string defaultStr, params object[] param)
{
string result = GetStringEvent?.Invoke(id, defaultStr,param);
return result;
return ResourceCulture.GetString(id, defaultStr,param);
//string result = GetStringEvent?.Invoke(id, defaultStr,param);
//return result;
}
public static string GetLanguage( )
public static string GetLanguage()
{
string result = GetLanEvent?.Invoke();
return result;
return ResourceCulture.GetLanguage();
//string result = GetLanEvent?.Invoke();
//return result;
}
/// <summary>
/// 宽度
......
using log4net;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using TSA_V.Common;
namespace TSA_V
{
public class BaseResourceControl
{
public static readonly ILog LOG = LogManager.GetLogger("LngResource");
public Dictionary<string, Dictionary<string, string>> LangMap = new Dictionary<string, Dictionary<string, string>>();
public Dictionary<string, string> defaultMap = new Dictionary<string, string>();
public virtual void SetCurrentCulture(string name)
{
//ResourceControl.GetStrEvent += GetString;
//ResourceControl.GetStringEvent += GetString;
//ResourceControl.GetLanEvent += GetLanguage;
//UserFromControl.UserControlResource.GetStrEvent += GetString;
//UserFromControl.UserControlResource.GetStringEvent += GetString;
if (string.IsNullOrEmpty(name))
{
name = "en-US";
}
//CurrLanguage = name;
Thread.CurrentThread.CurrentCulture = new CultureInfo(name);
}
public virtual string GetString(string id, params object[] param)
{
return GetString(id, id, param);
}
public virtual string GetString(string id, string defaultStr)
{
string strCurLanguage = "";
try
{
// 使用入口程序集(EXE)来查找资源,避免在库(DeviceLibrary)程序集内找不到资源的问题
Assembly entryAsm = Assembly.GetEntryAssembly() ?? Assembly.GetCallingAssembly() ?? Assembly.GetExecutingAssembly();
ResourceManager rm = new ResourceManager("TSA_V.Properties.Resource", entryAsm);
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
strCurLanguage = rm.GetString(id, ci).Trim();
if (strCurLanguage.Equals("") && (!defaultStr.Equals("")))
{
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
}
catch (Exception ex)
{
if (defaultStr.Equals(""))
{
}
else
{
strCurLanguage = "No id:[" + id + "], please add.";
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
}
return strCurLanguage;
}
public virtual string GetString(string id, string defaultStr, params object[] param)
{
string strCurLanguage = "";
try
{
// 使用入口程序集(EXE)来查找资源,避免在库(DeviceLibrary)程序集内找不到资源的问题
Assembly entryAsm = Assembly.GetEntryAssembly() ?? Assembly.GetCallingAssembly() ?? Assembly.GetExecutingAssembly();
ResourceManager rm = new ResourceManager("TSA_V.Properties.Resource", entryAsm);
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
strCurLanguage = rm.GetString(id, ci).Trim();
if (strCurLanguage.Equals("") && (!defaultStr.Equals("")))
{
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
}
catch (Exception ex)
{
if (defaultStr.Equals(""))
{
}
else
{
strCurLanguage = "No id:[" + id + "], please add.";
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
}
return String.Format(strCurLanguage, param);
}
protected virtual void NoIdLog(string id, string defaultStr)
{
LogUtil.debug("No id:[" + id + "], please add,use default string :" + defaultStr);
if (!defaultMap.ContainsKey(id))
{
defaultMap.Add(id, defaultStr);
}
}
public virtual void LogDefaultMap()
{
if (defaultMap == null || defaultMap.Count <= 0)
{
return;
}
//LogUtil.info("开始打印缺少的文字配置" + defaultMap.Count);
StringBuilder builder = new StringBuilder();
builder.Append("开始打印缺少的文字配置" + defaultMap.Count + "\r\n");
foreach (string key in defaultMap.Keys)
{
string value = defaultMap[key];
builder.Append($"<data name = \"{key}\" xml:space = \"preserve\"> <value> {value} </value> </data> \r\n");
//LogUtil.info(" 缺少文字配置[" + key + "] 默认值[" + value + "]");
}
builder.Append("结束打印缺少的文字配置");
LogUtil.info(builder.ToString());
}
}
}
using log4net;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.Layout;
using TSA_V.Common;
namespace TSA_V.DeviceLibrary
{
public class crc : CrcResourceControl
{
}
public class CrcResourceControl
{
public static readonly ILog LOG = LogManager.GetLogger("LngResource");
public static bool OpenResourceLog = false;
public static string China = "zh-CN";
public static string English = "en-US";
public static string French = "fr-FR";
private static Dictionary<string, Dictionary<string, string>> LangMap = new Dictionary<string, Dictionary<string, string>>();
public delegate string GetLanguageDelegate();
public static event GetLanguageDelegate GetLanguageEvent;
public delegate void RefreshLanguageDelegate();
public static event RefreshLanguageDelegate RefreshLanguageEvent;
public static event EventHandler LanguageChangeEvent;
static CrcResourceControl()
{
LoadData();
var lngjson = JsonHelper.SerializeObject(LangMap);
Task.Run(() => {
return;
try
{
Task.Delay(10 * 1000).Wait();
if (SMF.UploadLangJsonData(lngjson, out SmfResult smfResult))
{
LogUtil.info("语言资源上传成功");
}
else
{
LogUtil.info("语言资源上传失败");
}
var lngdatas = SMF.DownloadLngData();
foreach (var lngdata in lngdatas)
{
var datalines = lngdata.resourceMap.ToList().Select((kv) => { return kv.Key + "\t\t" + kv.Value; }).ToArray();
string lngfilename = "server\\" + lngdata.lanCode + ".lngres";
Directory.CreateDirectory(Path.Combine(rPath, "server"));
File.WriteAllLines(Path.Combine(rPath, lngfilename), datalines);
}
LoadData(true);
//SetCurrentCulture(CurrLanguage);
//LanguageChangeEvent?.Invoke(null, EventArgs.Empty);
}
catch (Exception e)
{
LogUtil.info("语言资源处理出错:" + e.ToString());
}
});
LoadData(true);
}
private static char spilt = '\t';
private static string rPath = Application.StartupPath + @"\resources\";
private static void LoadData(bool loadserverdir = false)
{
try
{
string loadpath = rPath;
if (loadserverdir)
loadpath = Path.Combine(rPath, "server");
Directory.CreateDirectory(loadpath);
string[] lngresfiles = Directory.GetFiles(loadpath, "*.lngres");
foreach (var lngresfile in lngresfiles)
{
Dictionary<string, string> newLins = new Dictionary<string, string>();
List<string> keys = new List<string>();
Dictionary<string, string> lngMap;
var lngname = Path.GetFileNameWithoutExtension(lngresfile);
if (!LangMap.ContainsKey(lngname))
{
LangMap.Add(lngname, new Dictionary<string, string>());
}
lngMap = LangMap[lngname];
string[] lines = File.ReadAllLines(lngresfile);
foreach (string line in lines)
{
if (string.IsNullOrEmpty(line))
continue;
string nline = line.Replace("\t\t", spilt + "");
string[] array = nline.Split(spilt);
if (array.Length >= 4 && array[2] == "")
{
LogUtil.error("line="+line);
}
if (array.Length >= 2)
{
string key = array[0].Trim();
if (key.Equals("Res.OutStringMoveInfo"))
{
}
string value = array[1];
if (array.Length >= 3)
{
value = array[2];
}
if (lngMap.ContainsKey(key))
{
lngMap[key] = value;
newLins[key] = line;
}
else
{
lngMap.Add(key, value);
keys.Add(key);
newLins.Add(key, line);
}
}
}
//try
//{
// if (newLins.Count > 0)
// {
// string newFileName = lngresfile+".back"+ DateTime.Now.ToString("yyMMddHHmmss");
// List<string> newlineStr = new List<string>();
// foreach (string key in keys)
// {
// newlineStr.Add(newLins[key]);
// }
// File.WriteAllLines(newFileName, newlineStr.ToArray());
// }
//}
//catch (Exception ex)
//{
// LOG.Error("backfile error :" + ex.ToString());
//}
LOG.Info($"加载{lngresfile}完成,{lngname}共{lngMap.Count}条配置");
}
}
catch (Exception ex)
{
LOG.Error(ex.ToString());
}
}
static Dictionary<string, string> LangName = new Dictionary<string, string>() {
{"zh-CN","简体中文" },
{"zh-TW","繁體中文" },
{ "en-US", "English" },
{ "ja-JP", "日本語" },
{ "fr-FR", "Français" },
{ "de-DE", "Deutsche" },
};
public static Dictionary<string, string> GetLangList()
{
Dictionary<string, string> LangList = new Dictionary<string, string>();
foreach (var v in LangName)
{
if (LangMap.ContainsKey(v.Key))
{
if (!LangList.ContainsKey(v.Key))
LangList.Add(v.Key, v.Value);
}
}
return LangList;
}
public static void LanguageChange()
{
LanguageChangeEvent?.Invoke(null, EventArgs.Empty);
}
public static string GetLanguage()
{
if (GetLanguageEvent == null)
{
return China;
}
string result = GetLanguageEvent?.Invoke();
if (result == null)
{
return "";
}
return result;
}
private static string spiltStr = "_";
private static string Text = "Text";
public static string GetTextIdStr(string className, string controlName)
{
return className + spiltStr + controlName + spiltStr + Text;
}
public static string GetString(object id, string defaultStr)
{
return GetString(id.ToString(), defaultStr);
}
public static string GetString(string id, string defaultStr)
{
string strCurLanguage = defaultStr;
var haslang = getLangRes(CurrLanguage);
if (!haslang)
{
return strCurLanguage;
}
try
{
LangMap[CurrLanguage].TryGetValue(id, out strCurLanguage);
if ((strCurLanguage == null || strCurLanguage.Equals("")) && (!defaultStr.Equals("")))
{
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
else if(strCurLanguage != null &&(! strCurLanguage.Equals("")))
{
//如果中文值和英文值和默认值都不一样,需要重新打印
if(!strCurLanguage.Equals(defaultStr)&& LangMap.ContainsKey("zh-CN") && LangMap.ContainsKey("en-US"))
{
LangMap["zh-CN"].TryGetValue(id, out string zhStr);
if (zhStr != null && zhStr != "" && zhStr != defaultStr)
{
LangMap["en-US"].TryGetValue(id, out string enStr);
if (enStr != null && enStr== defaultStr)
{
}
else
{
ChangeLog(id,defaultStr);
}
}
}
}
}
catch (Exception ex)
{
if (defaultStr.Equals(""))
{
}
else
{
strCurLanguage = "No id:[" + id + "], please add.";
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
}
if (strCurLanguage == null)
{
strCurLanguage = "";
}
return strCurLanguage;
}
public static string GetString(string id, string defaultStr, params object[] param)
{
string strCurLanguage = GetString(id, defaultStr);
return String.Format(strCurLanguage, param);
}
static HashSet<string> hss = new HashSet<string>();
private static void NoIdLog(string id, string defaultStr)
{
if (OpenResourceLog)
{
getLangRes("zh-CN");
if (!LangMap["zh-CN"].ContainsKey(id) && checkInterid(id) && !hss.Contains(id))
{
hss.Add(id);
LOG.Info("" + id + "\t" + defaultStr);
}
}
}
static HashSet<string> changeSss = new HashSet<string>();
private static void ChangeLog(string id, string defaultStr)
{
if (OpenResourceLog&&!changeSss.Contains(id))
{
changeSss.Add(id);
LOG.Info("CHANGE:" + id + "\t" + defaultStr);
}
}
private static bool checkInterid(string id)
{
return true;
string[] interstring = new string[] { "_txt", "_lbl" };
var x = from a in interstring
where id.IndexOf(a) > -1
select a;
return x.Count() == 0;
}
private static bool getLangRes(string lang)
{
if (!LangMap.ContainsKey(lang))
{
string path = Application.StartupPath + @"\resources\" + lang + ".lngres";
if (!File.Exists(path))
{
return false;
}
string[] lines = File.ReadAllLines(path);
var map = new Dictionary<string, string>();
foreach (string line in lines)
{
string[] array = line.Split('\t');
if (array.Length >= 3)
{
string key = array[0];
string chinese = array[1];
string english = array[2];
if (map.ContainsKey(key))
{
map.Remove(key);
}
map.Add(key, english);
}
}
LangMap.Add(lang, map);
return true;
}
return true;
}
public static string CurrLanguage = "";
public static void LanguageProcess(ContainerControl cc, string className = "")
{
if (string.IsNullOrEmpty(className))
className = cc.GetType().Name;
if (CurrLanguage.Equals(CrcResourceControl.GetLanguage()))
{
//return;
}
//string className = cc.ClassName;
CurrLanguage = CrcResourceControl.GetLanguage();
//string name = CodeResourceControl.GetString(CodeResourceControl.GetTextIdStr(className), cc.Text);
//if (!name.Equals("")) { cc.Text = name; }
PreControlLanaguage(cc, className);
RefreshLanguageEvent?.Invoke();
}
private static void PreControlLanaguage(Control partentControl, string className)
{
string newStr = "";
if (partentControl is Form)//判断是否为最上层窗口
{
Con_GetTxt(partentControl, out string title);
newStr = GetString(GetTextIdStr(className, partentControl.Name), title);
if (!newStr.Equals(""))
{
Con_SetTxt(partentControl, newStr.Replace("\\n", "\n"));
}
}
foreach (Control con in partentControl.Controls)
{
string txt = "";
bool haslang = false;
if (con.Tag != null && con.Tag.ToString() == "not")
{
continue;
}
if (Con_GetTxt(con, out txt))
{
newStr = GetString(GetTextIdStr(className, con.Name), txt);
if (!newStr.Equals(""))
{
Con_SetTxt(con, newStr.Replace("\\n", "\n"));
//haslang = true;
}
}
if (con.Tag != null && con.Tag.ToString() == "nochiled")
{
continue;
}
if (con.Controls.Count > 0 && !haslang)
{
PreControlLanaguage(con, className + "_" + con.Name);
}
//Console.WriteLine(con is IList<Component>);
//Console.WriteLine(con is IList<Component>);
}
}
public static void ProcessListItem<T>(T con, string ClassName) where T : ToolStripItemCollection
{
for (int i = 0; i < con.Count; i++)
{
if (con[i].Tag != null && con[i].Tag.ToString() == "not")
{
continue;
}
string txt = con[i].Text;
string newStr = GetString(GetTextIdStr(ClassName, con[i].Name), txt);
if (!newStr.Equals(""))
{
con[i].Text = newStr.Replace("\\n", "\n");
//haslang = true;
}
if (con[i] is ToolStripMenuItem)
{
var tt = ((ToolStripMenuItem)con[i]);
ProcessListItem(tt.DropDownItems, tt.Name);
}
}
}
static bool Con_GetTxt(Control con, out string txt)
{
txt = "";
if (con is Label || con is Button || con is RadioButton || con is CheckBox)
{
txt = con.Text;
return true;
}
string methodname = getMethodname(con);
var t = con.GetType();
var p = t.GetProperty(methodname);
if (p != null)
{
txt = p.GetValue(con, null).ToString();
return true;
}
return false;
}
static void Con_SetTxt(Control con, string txt)
{
if (con is Label || con is Button || con is RadioButton || con is CheckBox)
{
con.Text = txt;
return;
}
string methodname = getMethodname(con);
var t = con.GetType();
var p = t.GetProperty(methodname);
if (p == null)
return;
else
p.SetValue(con, txt, null);
}
static string getMethodname(Control con)
{
string methodname = "Text";
//if (con is UCBtnExt) methodname = "BtnText";
//if (con is UCTextBoxEx) methodname = "InputText";
//if (con is UCCheckBox) methodname = "TextValue";
//if (con is UCPanelTitle || con is FrmWithTitle) methodname = "Title";
//if (con is Form) methodname = "Title";
return methodname;
}
}
}
using log4net;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.Layout;
using TSA_V.Common;
namespace TSA_V
{
public class csvR : NCsvResourceControl
{
}
public class NCsvResourceControl : BaseResourceControl
{
public NCsvResourceControl()
{
LoadData();
var lngjson = JsonHelper.SerializeObject(LangMap);
Task.Run(() =>
{
return;
try
{
Task.Delay(10 * 1000).Wait();
if (SMF.UploadLangJsonData(lngjson, out SmfResult smfResult))
{
LogUtil.info("语言资源上传成功");
}
else
{
LogUtil.info("语言资源上传失败");
}
var lngdatas = SMF.DownloadLngData();
foreach (var lngdata in lngdatas)
{
var datalines = lngdata.resourceMap.ToList().Select((kv) => { return kv.Key + "\t\t" + kv.Value; }).ToArray();
string lngfilename = "server\\" + lngdata.lanCode + ".lngres";
Directory.CreateDirectory(Path.Combine(rPath, "server"));
File.WriteAllLines(Path.Combine(rPath, lngfilename), datalines);
}
LoadData(true);
//SetCurrentCulture(CurrLanguage);
//LanguageChangeEvent?.Invoke(null, EventArgs.Empty);
}
catch (Exception e)
{
LogUtil.info("语言资源处理出错:" + e.ToString());
}
});
//LoadData(true);
}
public static bool HasFile()
{
string file = Application.StartupPath + @"\languageResources\" + "resourcesAll.lngres";
if (File.Exists(file))
{
return true;
}
return false;
}
private char spilt = '\t';
private string rPath = Application.StartupPath + @"\languageResources\";
private void LoadData(bool loadserverdir = false)
{
try
{
string loadpath = rPath;
if (loadserverdir)
loadpath = Path.Combine(rPath, "server");
Directory.CreateDirectory(loadpath);
string[] lngresfiles = Directory.GetFiles(loadpath, "*.lngres");
string csvFileName = "";
foreach (var lngresfile in lngresfiles)
{
var lngname = Path.GetFileNameWithoutExtension(lngresfile);
if (lngname.Equals("resourcesAll"))
{
csvFileName = lngresfile;
}
}
if (File.Exists(csvFileName))
{
LoadCsvFile(csvFileName);
}
else
{
foreach (var lngresfile in lngresfiles)
{
Dictionary<string, string> newLins = new Dictionary<string, string>();
List<string> keys = new List<string>();
Dictionary<string, string> lngMap;
var lngname = Path.GetFileNameWithoutExtension(lngresfile);
if (!LangMap.ContainsKey(lngname))
{
LangMap.Add(lngname, new Dictionary<string, string>());
}
lngMap = LangMap[lngname];
string[] lines = File.ReadAllLines(lngresfile);
foreach (string line in lines)
{
if (string.IsNullOrEmpty(line))
continue;
string nline = line.Replace("\t\t", spilt + "");
string[] array = nline.Split(spilt);
if (array.Length >= 4 && array[2] == "")
{
LogUtil.error("line=" + line);
}
if (array.Length >= 2)
{
string key = array[0].Trim();
if (key.Equals("Res.OutStringMoveInfo"))
{
}
string value = array[1];
if (array.Length >= 3)
{
value = array[2];
}
if (lngMap.ContainsKey(key))
{
lngMap[key] = value;
newLins[key] = line;
}
else
{
lngMap.Add(key, value);
keys.Add(key);
newLins.Add(key, line);
}
}
}
LOG.Info($"加载{lngresfile}完成,{lngname}共{lngMap.Count}条配置");
}
}
//try
//{
// if (newLins.Count > 0)
// {
// string newFileName = lngresfile+".back"+ DateTime.Now.ToString("yyMMddHHmmss");
// List<string> newlineStr = new List<string>();
// foreach (string key in keys)
// {
// newlineStr.Add(newLins[key]);
// }
// File.WriteAllLines(newFileName, newlineStr.ToArray());
// }
//}
//catch (Exception ex)
//{
// LOG.Error("backfile error :" + ex.ToString());
//}
}
catch (Exception ex)
{
LOG.Error(ex.ToString());
}
}
private void LoadCsvFile(string csvFileName)
{
string[] lines = File.ReadAllLines(csvFileName);
int index = -1;
foreach (string line in lines)
{
index++;
if (index == 0)
{
continue;
}
if (string.IsNullOrEmpty(line))
continue;
string nline = line.Replace("\t\t", spilt + "");
string[] array = nline.Split(spilt);
if (array.Length >= 4 && array[0] == "")
{
LogUtil.error("line=" + line);
continue;
}
//顺序:key,中文,英文,法文
if (array.Length >= 2)
{
string key = array[0].Trim();
string chStr = array[1].Trim();
updateLanguageMap(ResourceCulture.China, key, chStr);
if (array.Length >= 3)
{
string enStr = array[2].Trim();
updateLanguageMap(ResourceCulture.English, key, enStr);
}
if (array.Length >= 4)
{
string frStr = array[3].Trim();
updateLanguageMap(ResourceCulture.Russian, key, frStr);
}
}
}
LOG.Info($"加载{csvFileName}完成, 共{index}条配置");
}
private void updateLanguageMap(string language, string key, string value)
{
if (!LangMap.ContainsKey(language))
{
LangMap.Add(language, new Dictionary<string, string>());
}
LangMap[language][key] = value;
}
public override string GetString(string id, string defaultStr)
{
string strCurLanguage = defaultStr;
var haslang = getLangRes(ResourceCulture.CurrLanguage);
if (!haslang)
{
return strCurLanguage;
}
try
{
LangMap[ResourceCulture.CurrLanguage].TryGetValue(id, out strCurLanguage);
if ((strCurLanguage == null || strCurLanguage.Equals("")) && (!defaultStr.Equals("")))
{
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
else if (strCurLanguage != null && (!strCurLanguage.Equals("")))
{
//如果中文值和英文值和默认值都不一样,需要重新打印
if (!strCurLanguage.Equals(defaultStr) && LangMap.ContainsKey("zh-CN") && LangMap.ContainsKey("en-US"))
{
LangMap["zh-CN"].TryGetValue(id, out string zhStr);
if (zhStr != null && zhStr != "" && zhStr != defaultStr)
{
LangMap["en-US"].TryGetValue(id, out string enStr);
if (enStr != null && enStr == defaultStr)
{
}
else
{
ChangeLog(id, defaultStr);
}
}
}
}
}
catch (Exception ex)
{
if (defaultStr.Equals(""))
{
}
else
{
strCurLanguage = "No id:[" + id + "], please add.";
strCurLanguage = defaultStr;
NoIdLog(id, defaultStr);
}
}
if (strCurLanguage == null)
{
strCurLanguage = "";
}
return strCurLanguage;
}
public override string GetString(string id, string defaultStr, params object[] param)
{
string strCurLanguage = GetString(id, defaultStr);
return String.Format(strCurLanguage, param);
}
static HashSet<string> hss = new HashSet<string>();
protected override void NoIdLog(string id, string defaultStr)
{
getLangRes("zh-CN");
if (!LangMap["zh-CN"].ContainsKey(id) && checkInterid(id) && !hss.Contains(id))
{
hss.Add(id);
LOG.Info("" + id + "\t" + defaultStr);
}
}
static HashSet<string> changeSss = new HashSet<string>();
private static void ChangeLog(string id, string defaultStr)
{
//if (OpenResourceLog && !changeSss.Contains(id))
//{
// changeSss.Add(id);
// LOG.Info("CHANGE:" + id + "\t" + defaultStr);
//}
}
private static bool checkInterid(string id)
{
return true;
string[] interstring = new string[] { "_txt", "_lbl" };
var x = from a in interstring
where id.IndexOf(a) > -1
select a;
return x.Count() == 0;
}
private bool getLangRes(string lang)
{
if (!LangMap.ContainsKey(lang))
{
string path = Application.StartupPath + @"\resources\" + lang + ".lngres";
if (!File.Exists(path))
{
return false;
}
string[] lines = File.ReadAllLines(path);
var map = new Dictionary<string, string>();
foreach (string line in lines)
{
string[] array = line.Split('\t');
if (array.Length >= 3)
{
string key = array[0];
string chinese = array[1];
string english = array[2];
if (map.ContainsKey(key))
{
map.Remove(key);
}
map.Add(key, english);
}
}
LangMap.Add(lang, map);
return true;
}
return true;
}
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using TSA_V.Common;
using TSA_V.DeviceLibrary;
namespace TSA_V
{
public class ResourceCulture
{
public static string China = "zh-CN";
public static string English = "en-US";
public static string Russian = "ru-RU";
public static string French = "fr-FR";
public static string CurrLanguage = "zh-CN";
public static Dictionary<string, string> defaultMap = new Dictionary<string, string>();
private static BaseResourceControl resourceControl = null;
public static BaseResourceControl baseResource
{
get
{
if (resourceControl == null)
{
if (NCsvResourceControl.HasFile())
{
resourceControl = new NCsvResourceControl();
}
else
{
resourceControl = new SysResourceControl();
}
}
return resourceControl;
}
}
/// <summary>
/// Set current culture by name
/// </summary>
/// <param name="name">name</param>
public static void SetCurrentCulture(string name)
{
baseResource.SetCurrentCulture(name);
CurrLanguage = name;
//ResourceControl.GetStrEvent += GetString;
//ResourceControl.GetStringEvent += GetString;
//ResourceControl.GetLanEvent += GetLanguage;
//UserFromControl.UserControlResource.GetStrEvent += GetString;
//UserFromControl.UserControlResource.GetStringEvent += GetString;
//if (string.IsNullOrEmpty(name))
//{
// name = "en-US";
//}
//CurrLanguage = name;
//Thread.CurrentThread.CurrentCulture = new CultureInfo(name);
}
public static string GetLanguage()
{
return CurrLanguage;
}
public static string GetString(string id, params object[] param)
{
return baseResource.GetString(id, id,param);
}
public static string GetString(string id,string defaultStr)
{
return baseResource.GetString(id, defaultStr);
}
public static string GetString(string id, string defaultStr, params object[] param)
{
return baseResource.GetString(id, defaultStr, param);
}
//private static void NoIdLog(string id, string defaultStr)
//{
// LogUtil.debug("No id:[" + id + "], please add,use default string :" + defaultStr);
// if (!defaultMap.ContainsKey(id))
// {
// defaultMap.Add(id, defaultStr);
// }
//}
public static void LogDefaultMap()
{
if (defaultMap == null || defaultMap.Count <= 0)
{
return;
}
//LogUtil.info("开始打印缺少的文字配置" + defaultMap.Count);
StringBuilder builder = new StringBuilder();
builder.Append("开始打印缺少的文字配置" + defaultMap.Count+"\r\n");
foreach (string key in defaultMap.Keys)
{
string value = defaultMap[key];
builder.Append($"<data name = \"{key}\" xml:space = \"preserve\"> <value> { value} </value> </data> \r\n");
//LogUtil.info(" 缺少文字配置[" + key + "] 默认值[" + value + "]");
}
builder.Append("结束打印缺少的文字配置");
LogUtil.info(builder.ToString());
}
private static string spiltStr = "_";
private static string Text = "Text";
public static string GetIdStr(string className, string controlName, string propertyName)
{
return className + spiltStr + controlName + spiltStr + propertyName;
}
public static string GetIdStr(string className, string propertyName)
{
return className + spiltStr + propertyName;
}
public static string GetTextIdStr(string className, string controlName )
{
return className + spiltStr + controlName + spiltStr + Text;
}
public static string GetTextIdStr(string className )
{
return className + spiltStr + Text;
}
private Dictionary<string, string> LangName = new Dictionary<string, string>() {
{"zh-CN","简体中文" },
{"zh-TW","繁體中文" },
{ "en-US", "English" },
{ "ja-JP", "日本語" },
{ "fr-FR", "Français" },
{ "de-DE", "Deutsche" },
};
public Dictionary<string, string> GetLangList()
{
Dictionary<string, string> LangList = new Dictionary<string, string>();
foreach (var v in LangName)
{
if (!baseResource.LangMap.ContainsKey(v.Key))
{
if (!LangList.ContainsKey(v.Key))
LangList.Add(v.Key, v.Value);
}
}
return LangList;
}
public static Dictionary<string, string> GetXYControlMap() {
Dictionary<string, string> controlTextMap = new Dictionary<string, string>();
controlTextMap.Add("group_Text", ResourceCulture.GetString("FrmPointInfo_group_Text", "坐标"));
controlTextMap.Add("lblLineWidth_Text", ResourceCulture.GetString("FrmPointInfo_lblLineWidth_Text", "画笔宽度:"));
controlTextMap.Add("lblName_Text", ResourceCulture.GetString("FrmPointInfo_lblName_Text", "投影文字:"));
controlTextMap.Add("lblSizeLength_Text", ResourceCulture.GetString("FrmPointInfo_lblSizeLength_Text", "横向大小→:"));
controlTextMap.Add("lblSizeWidth_Text", ResourceCulture.GetString("FrmPointInfo_lblSizeWidth_Text", "纵向大小↓: "));
controlTextMap.Add("lblStepValue_Text", ResourceCulture.GetString("FrmPointInfo_lblStepValue_Text", "步进值:"));
controlTextMap.Add("lbltype_Text", ResourceCulture.GetString("FrmPointInfo_lbltype_Text", "坐标点形状:"));
controlTextMap.Add("lblx_Text", ResourceCulture.GetString("FrmPointInfo_lblx_Text", "Y轴坐标:"));
controlTextMap.Add("lbly_Text", ResourceCulture.GetString("FrmPointInfo_lbly_Text", "X轴坐标:"));
controlTextMap.Add("btnDown_Text", ResourceCulture.GetString("FrmPointInfo_btnDown_Text", "下移"));
controlTextMap.Add("btnUp_Text", ResourceCulture.GetString("FrmPointInfo_btnUp_Text", "上移"));
controlTextMap.Add("btnShowPoint_Text", ResourceCulture.GetString("FrmPointInfo_btnShowPoint_Text", "移动测试"));
controlTextMap.Add("btnLeft_Text", ResourceCulture.GetString("FrmPointInfo_btnLeft_Text", "左移"));
controlTextMap.Add("btnRight_Text", ResourceCulture.GetString("FrmPointInfo_btnRight_Text", "右移"));
controlTextMap.Add("lblPolarities_Text", ResourceCulture.GetString("FrmPointInfo_lblPolarities_Text", "极性"));
return controlTextMap;
}
public static string[] GetPTypes()
{
string str7 = ResourceCulture.GetString(ResourceCulture.Type7, "极性_上方");
string str8 = ResourceCulture.GetString(ResourceCulture.Type8, "极性_下方");
string str9 = ResourceCulture.GetString(ResourceCulture.Type9, "极性_左方");
string str10 = ResourceCulture.GetString(ResourceCulture.Type10, "极性_右方");
string str11 = ResourceCulture.GetString(ResourceCulture.Type11, "极性_左上方");
string str12 = ResourceCulture.GetString(ResourceCulture.Type12, "极性_右上方");
string str13 = ResourceCulture.GetString(ResourceCulture.Type13, "极性_左下方");
string str14 = ResourceCulture.GetString(ResourceCulture.Type14, "极性_右下方");
string[] typeList = new string[] {
"1=●",
"2=✚",
"3=┃",
"4=━━",
"5=□",
"6=○",
//"7="+str7,
//"8="+str8,
//"9="+str9,
//"10="+str10,
//"11="+str11,
//"12="+str12,
//"13="+str13,
//"14="+str14
};
return typeList;
}
public static string[] GetDirTypes()
{
string str7 = ResourceCulture.GetString(ResourceCulture.Type7, "极性_上方");
string str8 = ResourceCulture.GetString(ResourceCulture.Type8, "极性_下方");
string str9 = ResourceCulture.GetString(ResourceCulture.Type9, "极性_左方");
string str10 = ResourceCulture.GetString(ResourceCulture.Type10, "极性_右方");
string str11 = ResourceCulture.GetString(ResourceCulture.Type11, "极性_左上方");
string str12 = ResourceCulture.GetString(ResourceCulture.Type12, "极性_右上方");
string str13 = ResourceCulture.GetString(ResourceCulture.Type13, "极性_左下方");
string str14 = ResourceCulture.GetString(ResourceCulture.Type14, "极性_右下方");
string str100 = ResourceCulture.GetString(ResourceCulture.Type100, "极性_自定义");
string wu = ResourceCulture.GetString(ResourceCulture.Type_None, "无");
string[] typeList = new string[] {
//"1=●",
//"2=✚",
//"3=┃",
//"4=━━",
//"5=□",
//"6=○",
"0="+wu,
"1="+str7,
"2="+str8,
"3="+str9,
"4="+str10,
"5="+str11,
"6="+str12,
"7="+str13,
"8="+str14,
"100="+str100
};
return typeList;
}
/// <summary>
/// 保存成功!
/// </summary>
public static string SaveOk = "SaveOk";
/// <summary>
/// 保存失败!
/// </summary>
public static string SaveError = "SaveError";
/// <summary>
/// 请输入程序名称!
/// </summary>
public static string WritePName = "WritePName";
/// <summary>
/// 程序名【{0}】已存在,请重新输入!
/// </summary>
public static string PNameExist = "PNameExist";
/// <summary>
/// 请选择元器件库
/// </summary>
public static string ChoiceLibrary = "ChoiceLibrary";
/// <summary>
/// 请导入程序图片
/// </summary>
public static string ImportPImage = "ImportPImage";
/// <summary>
/// 请输入长度
/// </summary>
public static string WriteLength = "WriteLength";
/// <summary>
/// 请输入宽度
/// </summary>
public static string WriteWidth = "WriteWidth";
/// <summary>
/// 元器件库【{0}】已存在,请重新输入!
/// </summary>
public static string CNameHasExits = "CNameHasExits";
/// <summary>
/// 请导入元件文件!
/// </summary>
public static string ImportFile = "ImportFile";
/// <summary>
/// 请先输入元器件库名称
/// </summary>
public static string WriteCName = "WriteCName";
///// <summary>
///// 两个不同的元器件中都配置在库位【{0}】中,请检查文件
///// </summary>
//public static string CheckFile = "CheckFile";
///// <summary>
///// 元器件【{0}】配置了两个位置【(1)】和【(2)】,是否确定导入?
///// </summary>
//public static string SureImport = "SureImport";
/// <summary>
/// 请选择正确的文件(文件格式可以通过下载模板获得)
/// </summary>
public static string SelectRightFile = "SelectRightFile";
/// <summary>
/// 请先选择图片中的位置
/// </summary>
public static string SelectImagePosition = "SelectImagePosition";
/// <summary>
/// 位置:{0},{1}无效,请检查配置是否正确?
/// </summary>
public static string PositionError = "PositionError";
/// <summary>
/// 提示
/// </summary>
public static string MsgTitle = "MsgTitle";
/// <summary>
/// 确认要删除该行数据吗
/// </summary>
public static string SureDelete = "SureDelete";
/// <summary>
/// 请检查组装信息数据是否正确
/// </summary>
public static string CheckZZh = "CheckZZh";
/// <summary>
/// 未找到组装信息信息
/// </summary>
public static string NoZZh = "NoZZh";
/// <summary>
/// 请点击要保存的组装信息
/// </summary>
public static string SelectZZh = "SelectZZh";
/// <summary>
/// 请先导入元器件库
/// </summary>
public static string ImportComList = "ImportComList";
/// <summary>
/// 【{0}】是默认工作程序,不能删除
/// </summary>
public static string CanotDel = "CanotDel";
/// <summary>
/// 确认要删除程序【{0}】吗
/// </summary>
public static string SureDeleteP = "SureDeleteP";
/// <summary>
/// 删除程序【{0}】成功
/// </summary>
public static string DeletePOk = "DeletePOk";
/// <summary>
/// 请选择程序
/// </summary>
public static string SelectP = "SelectP";
/// <summary>
/// 请先配置程序
/// </summary>
public static string ConfigProduct = "ConfigProduct";
/// <summary>
/// 请选择元器件
/// </summary>
public static string SelectC = "SelectC";
/// <summary>
/// 请选择元器件位置
/// </summary>
public static string SelectCPosition = "SelectCPosition";
/// <summary>
/// 请输入元器件名称
/// </summary>
public static string WriteComName = "WriteComName";
/// <summary>
/// 请输入元器件编号
/// </summary>
public static string WritePartName = "WritePartName";
/// <summary>
/// 请输入元器件数量
/// </summary>
public static string WriteComNum = "WriteComNum";
/// <summary>
/// 元器件【{0}】的基本信息
/// </summary>
public static string ComInfo = "ComInfo";
/// <summary>
/// 元器件【{0}】保存成功
/// </summary>
public static string ComSaveOk = "ComSaveOk";
/// <summary>
/// 请检查元器件数据是否正确
/// </summary>
public static string CheckComNum = "CheckComNum";
/// <summary>
/// 请选择元器件
/// </summary>
public static string ChoiceCom = "ChoiceCom";
/// <summary>
/// 新增元器件
/// </summary>
public static string NewCom = "NewCom";
/// <summary>
/// 元器件编号[{0}]已存在
/// </summary>
public static string PartNAExist = "PartNAExist";
/// <summary>
/// 确认要删除元器件【{0}】吗
/// </summary>
public static string SureDelCom = "SureDelCom";
/// <summary>
/// 元器件【{0}】删除成功
/// </summary>
public static string DelComOk = "DelComOk";
/// <summary>
/// 模板已保存在:
/// </summary>
public static string DemoSave = "DemoSave";
/// <summary>
/// 元器件库【{0}】在程序【{1}】中使用,不能删除
/// </summary>
public static string CanotDelC = "CanotDelC";
/// <summary>
/// 确认要删除元器件库【{0}】吗?
/// </summary>
public static string SureDeleteC = "SureDeleteC";
/// <summary>
/// IO模块连接失败
/// </summary>
public static string IOConnectError = "IOConnectError";
/// <summary>
/// 未找到库位【{0}】的坐标
/// </summary>
public static string CanotFindPosition = "CanotFindPosition";
/// <summary>
/// 请输入正确的数量
/// </summary>
public static string WriteNum = "WriteNum";
/// <summary>
/// 未找到需要备料的元器件
/// </summary>
public static string ConotFindCom = "ConotFindCom";
/// <summary>
/// 设备未连接,无法备料
/// </summary>
public static string DeviceNotOk = "DeviceNotOk";
/// <summary>
/// 设备正在重置中,请稍后再备料
/// </summary>
public static string DeviceInReset = "DeviceInReset";
/// <summary>
/// 设备未连接
/// </summary>
public static string DeviceNotOkMsg = "DeviceNotOkMsg";
/// <summary>
/// 启动失败
/// </summary>
public static string StartError = "StartError";
/// <summary>
/// 元器件【{0}】的数量已更新为【{1}】
/// </summary>
public static string UpdateCNumOk = "UpdateCNumOk";
/// <summary>
/// 请选择元器件所在位置
/// </summary>
public static string ChoiceComPosition = "ChoiceComPosition";
/// <summary>
/// 请输入名称
/// </summary>
public static string WriteName = "WriteName";
/// <summary>
/// 请输入编号
/// </summary>
public static string WritePartNumber = "WritePartNumber";
/// <summary>
/// 暂未开放
/// </summary>
public static string NotOpen = "NotOpen";
/// <summary>
/// 确定清理今日统计信息
/// </summary>
public static string SureClearToday = "SureClearToday";
/// <summary>
/// 确定清理所有统计信息
/// </summary>
public static string SureClearAll = "SureClearAll";
/// <summary>
/// 请输入正确的焊接温度
/// </summary>
public static string WriteRightTemp = "WriteRightTemp";
/// <summary>
/// 请输入正确的焊接时间
/// </summary>
public static string WriteRightTime = "WriteRightTime";
/// <summary>
/// 是否确定重置,重置后当前工作将结束
/// </summary>
public static string SureReset = "SureReset";
/// <summary>
/// 输入的间隔时间无效
/// </summary>
public static string TimeNotVailid = "TimeNotVailid";
/// <summary>
/// 时间间隔未改变,不需要更新
/// </summary>
public static string NotNeedUpdate = "NotNeedUpdate";
/// <summary>
/// 已更新自动工作时间间隔为{0}秒
/// </summary>
public static string UpdateTOK = "UpdateTOK";
/// <summary>
/// 请输入有效的左下角坐标
/// </summary>
public static string WPointP = "WPointP";
/// <summary>
/// 请输入正确的XY待机点
/// </summary>
public static string PWXYDefaultPoint = "PWXYDefaultPoint";
/// <summary>
/// 请输入正确的IO模块IP
/// </summary>
public static string PWIoIp = "PWIoIp";
/// <summary>
/// 请输入正确的IO模块端口号
/// </summary>
public static string PWIOPort = "PWIOPort";
/// <summary>
/// 请输入修正值
/// </summary>
public static string PWUpdateValue = "PWUpdateValue";
/// <summary>
/// 所有程序的组装位置都将修正,偏移量X[{0}],Y[{0}],是否确定修正
/// </summary>
public static string PWXYPianYi = "PWXYPianYi";
/// <summary>
/// 程序【{0}】的组装位置将修正,偏移量X[{1}],Y[{2}],是否确定修正
/// </summary>
public static string PWSureUPdateXY = "PWSureUPdateXY";
/// <summary>
///确定以左下角为基准顺时针旋转{0}度?
/// </summary>
public static string PWSureXuanzhuan = "PWSureXuanzhuan";
/// <summary>
/// SuerCopyPoint, "确定复制?目标为{0}行,{1}列,X间距={2}, Y间距={3}"
/// </summary>
public static string PWSureCopyPoint = "PWSureCopyPoint";
/// <summary>
/// 确定删除
/// </summary>
public static string PWSureDeletePoint = "PWSureDeletePoint";
/// <summary>
/// 确认
/// </summary>
public static string Sure = "Sure";
/// <summary>
/// 修正完成
/// </summary>
public static string UpdateOk = "UpdateOk";
/// <summary>
/// 已取消修正
/// </summary>
public static string CancelUpdate = "CancelUpdate";
/// <summary>
/// 打开串口{0}失败
/// </summary>
public static string OpenSeiralFail = "OpenSeiralFail";
/// <summary>
/// 请输入正常的电压(范围{0}-{1})
/// </summary>
public static string PWDianYa = "PWDianYa";
/// <summary>
/// 当前程序没有标记的焊点的,不需要导出
/// </summary>
public static string NoPointExport = "NoPointExport";
/// <summary>
/// 电路板【{0}】没有组装信息,请选择其他程序
/// </summary>
public static string CanotFindInfo = "CanotFindInfo";
/// <summary>
/// 宽度
/// </summary>
public static string Width = "Width";
/// <summary>
/// 长度
/// </summary>
public static string Length = "Length";
/// <summary>
/// 组件数量
/// </summary>
public static string InfoCount = "InfoCount";
/// <summary>
/// 红外X轴初始化失败
/// </summary>
public static string InitXFail = "InitXFail";
/// <summary>
/// 红外Y轴初始化失败
/// </summary>
public static string InitYFail = "InitYFail";
/// <summary>
/// Can协议连接失败
/// </summary>
public static string CanConnectFail = "CanConnectFail";
/// <summary>
/// XY轴回待机点
/// </summary>
public static string XTGoHome = "XTGoHome";
/// <summary>
/// 旋转轴[{0}][{1}]上线
/// </summary>
public static string RNodeOnLine = "RNodeOnLine";
/// <summary>
/// 旋转轴[{0}]原点返回完成
/// </summary>
public static string RNodeGoHome = "RNodeGoHome";
/// <summary>
/// 旋转轴[{0}]走到待机点[{1}]
/// </summary>
public static string RNodeToPosition = "RNodeToPosition";
/// <summary>
/// 重置等待[{0}]超时,已等待:{1}分
/// </summary>
public static string TimeOutMsg = "TimeOutMsg";
/// <summary>
/// 收到急停信号,停止所有运动,设备断开连接
/// </summary>
public static string SuddenDownMsg = "SuddenDownMsg";
/// <summary>
/// 急停恢复,自动重置设备
/// </summary>
public static string AutoResetMsg = "AutoResetMsg";
/// <summary>
/// 旋转轴[{0}]堵转,需要重置
/// </summary>
public static string DuZhuanMsg = "DuZhuanMsg";
/// <summary>
/// 组装中,等待【{0}】超时 已等待[{1}]秒
/// </summary>
public static string WaitTimeOutMsg = "WaitTimeOutMsg";
/// <summary>
/// 流水线转动中,等待【{0}】超时 已等待[{1}]秒
/// </summary>
public static string LineTimeOutMsg = "LineTimeOutMsg";
/// <summary>
/// 设备急停中
/// </summary>
public static string DeviceInSuddenStop = "DeviceInSuddenStop";
/// <summary>
/// 设备未启动
/// </summary>
public static string DeviceNotStart = "DeviceNotStart";
/// <summary>
/// 设备正在原点返回中
/// </summary>
public static string DeviceInGohome = "DeviceInGohome";
/// <summary>
/// 设备工作中
/// </summary>
public static string DeviceInWork = "DeviceInWork";
/// <summary>
/// 流水线转动中
/// </summary>
public static string LineTurn = "LineTurn";
/// <summary>
/// 已工作{0},{1}块电路板
/// </summary>
public static string WorkInfoMsg = "WorkInfoMsg";
/// <summary>
/// 焊接完成,点击 '确定' 按钮进入AOI检测
/// </summary>
public static string WeldEndMsg = "WeldEndMsg";
/// <summary>
/// 数据丢失
/// </summary>
public static string DataLostMsg = "DataLostMsg";
/// <summary>
/// 暂无
/// </summary>
public static string NoData = "NoData";
/// <summary>
/// 下一个程序
/// </summary>
public static string NexProText = "NexProText";
/// <summary>
/// 当前:第{0}步,剩余{1}步
/// </summary>
public static string PointInfoMsg = "PointInfoMsg";
/// <summary>
/// 当前:第{0}步
/// </summary>
public static string PointInfoMsg2 = "PointInfoMsg2";
/// <summary>
/// 元器件库存不足
/// </summary>
public static string ComInsufficient = "ComInsufficient";
/// <summary>
/// 设备连接成功
/// </summary>
public static string DeviceInConnect = "DeviceInConnect";
/// <summary>
/// 更新为组装位置
/// </summary>
public static string ItemText_UpdateN = "ItemText_UpdateN";
/// <summary>
/// 上升
/// </summary>
public static string ItemText_Up = "ItemText_Up";
/// <summary>
/// 下降
/// </summary>
public static string ItemText_Down = "ItemText_Down";
/// <summary>
/// 删除
/// </summary>
public static string ItemText_Delete = "ItemText_Delete";
/// <summary>
/// 详情
/// </summary>
public static string ItemText_Detial = "ItemText_Detial";
/// <summary>
/// 移动测试
/// </summary>
public static string ItemText_MoveTest = "ItemText_MoveTest";
/// <summary>
/// 校准点
/// </summary>
public static string ItemText_Check = "ItemText_Check";
/// <summary>
/// 禁用
/// </summary>
public static string ItemText_Disable = "ItemText_Disable";
/// <summary>
/// 编号
/// </summary>
public static string Col_Num = "Col_Num";
/// <summary>
/// 名称
/// </summary>
public static string Col_Name = "Col_Name";
/// <summary>
/// 位置
/// </summary>
public static string Col_Position = "Col_Position";
/// <summary>
/// 需焊接
/// </summary>
public static string Col_NWeld = "Col_NWeld";
/// <summary>
/// 焊接温度
/// </summary>
public static string Col_WeldTemp = "Col_WeldTemp";
/// <summary>
/// 焊接时间
/// </summary>
public static string Col_WeldTime = "Col_WeldTime";
/// <summary>
/// 需检测
/// </summary>
public static string Col_NCheck = "Col_NCheck";
/// <summary>
/// 更新坐标
/// </summary>
public static string Col_UpdateP = "Col_UpdateP";
/// <summary>
/// 描述
/// </summary>
public static string Col_Del = "Col_Del";
/// <summary>
/// 注意事项
/// </summary>
public static string Col_Notes = "Col_Notes";
/// <summary>
/// 数量
/// </summary>
public static string Col_Count = "Col_Count";
/// <summary>
/// 更新为【{0}-{1}】的位置
/// </summary>
public static string ItemTextUpdateP = "ItemTextUpdateP";
/// <summary>
/// 库存
/// </summary>
public static string Col_KuCun = "Col_KuCun";
///// <summary>
/////
///// </summary>
////public static string DeviceInSuddenStop = "DeviceInSuddenStop";
/// <summary>
/// 步进值
/// </summary>
public static string StepValue = "StepValue";
/// <summary>
/// 请输入有效的基准点坐标
/// </summary>
public static string WBasePointP = "WBasePointP";
/// <summary>
/// 坐标校准完成
/// </summary>
public static string TrainOK = "TrainOK";
/// <summary>
/// 至少需要校准{0}个点
/// </summary>
public static string MinPoint = "MinPoint";
/// <summary>
/// 中心点确认之后不可更改
/// </summary>
public static string CenterConotEdit = "CenterConotEdit";
/// <summary>
/// 请输入线体宽度
/// </summary>
public static string WriteLineWidth = "WriteLineWidth";
/// <summary>
/// 当前宽度[{0}],目标宽度[{1}],是否开始调宽?
/// </summary>
public static string SureChangeWidth = "SureChangeWidth";
/// <summary>
/// 启动调宽失败
/// </summary>
public static string ChangeWFail = "ChangeWFail";
/// <summary>
/// 调宽{0}={1}完成
/// </summary>
public static string ChangeWOk = "ChangeWOk";
/// <summary>
/// 调宽{0}={1}结束:{2}
/// </summary>
public static string ChangeWEnd = "ChangeWEnd";
/// <summary>
/// 请上传程序文件
/// </summary>
public static string UploadFile = "UploadFile";
/// <summary>
/// 元器件已使用,不能删除
/// </summary>
public static string CanotDelCom = "CanotDelCom";
/// <summary>
/// 元器件【{0}】配置多个位置【{1}】
/// </summary>
public static string SureImportPosition = "SureImportPosition";
/// <summary>
/// 是否确定导入?
/// </summary>
public static string SureImportPositionStr= "SureImportPositionStr";
/// <summary>
/// 元器件已存在
/// </summary>
public static string ComExists= "ComExists";
/// <summary>
/// 移动中
/// </summary>
public static string Move= "Move";
/// <summary>
/// 已到位
/// </summary>
public static string Inplace= "Inplace";
public static string ItemText_Global= "ItemText_Global";
public static string ItemText_EnableAll = "ItemText_EnableAll";
public static string ItemText_DisableAll = "ItemText_DisableAll";
public static string ItemText_AutoSort = "ItemText_AutoSort";
public static string smtpoint_select= "smtpoint_select";
/// <summary>
/// 位置【{0}】配置多个元器件【{1}】
/// </summary>
public static readonly string SureImportPn= "SureImportPn";
/// <summary>
/// 程序【{0}】元器件库【{1}】备料中
/// </summary>
public static readonly string BLText = "BLText";
/// <summary>
/// 已完成
/// </summary>
public static readonly string State_End = "State_End";
/// <summary>
/// 未开始
/// </summary>
public static readonly string State_NotStart = "State_NotStart";
/// <summary>
/// 实时位置
/// </summary>
public static readonly string State_Postiion = "State_Postiion";
/// <summary>
/// 极性_上方
/// </summary>
public static readonly string Type7 = "Type7";
/// <summary>
/// 极性_下方
/// </summary>
public static readonly string Type8 = "Type8";
/// <summary>
/// 极性_左方
/// </summary>
public static readonly string Type9 = "Type9";
/// <summary>
/// 极性_右方
/// </summary>
public static readonly string Type10 = "Type10";
/// <summary>
/// 极性_左上方
/// </summary>
public static readonly string Type11 = "Type11";
/// <summary>
/// 极性_右上方
/// </summary>
public static readonly string Type12 = "Type12";
/// <summary>
/// 极性_左下方
/// </summary>
public static readonly string Type13 = "Type13";
/// <summary>
/// 极性_右下方
/// </summary>
public static readonly string Type14 = "Type14";
/// <summary>
/// 极性_自定义
/// </summary>
public static readonly string Type100 = "Type100";
/// <summary>
/// 无
/// </summary>
public static readonly string Type_None= "Type_None";
public static readonly string CreateNew = "CreateNew";
/// <summary>
/// NoSaveBack=不保存直接返回
/// </summary>
public static readonly string NoSaveBack= "NoSaveBack";
/// <summary>
/// 元器件【{0}】已配置位置【{1}】,请重新输入位置
/// </summary>
public static string PnHasPos = "PnHasPos";
/// <summary>
/// 图片名称
/// </summary>
public static string Column_imgName = "Column_imgName";
/// <summary>
/// 图片
/// </summary>
public static string Column_img = "Column_img";
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using TSA_V.Common;
namespace TSA_V
{
public class SysResourceControl:BaseResourceControl
{
}
}
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TSA_V.Common;
namespace TSA_V.Common
{
public class SMF
{
public static string DeviceType = "20117";
static string _server = Setting_NInit.App_Server;
static string server
{
get
{
//_server = "http://192.168.1.243/smf-core";
if (_server.EndsWith("/"))
{
return _server.Remove(_server.Length - 1, 1);
}
else
return _server;
}
}
public static bool UploadLangJsonData(string json, out SmfResult smfResult)
{
var insertindex = json.IndexOf("{");
json = json.Insert(insertindex + 1, "\"type\": \"" + DeviceType + "\",");
return UploadJsonData("/api/translation/resource", json, out smfResult);
}
public static bool UploadJsonData(string api, string json, out SmfResult smfResult)
{
smfResult = new SmfResult();
if (string.IsNullOrEmpty(server))
return false;
try
{
MyWebClient wc = new MyWebClient(10 * 1000);
wc.Headers.Add("Content-Type", "application/json;charset=UTF-8");
var resp = wc.UploadData(server + api, Encoding.UTF8.GetBytes(json));
smfResult = JsonHelper.DeserializeJsonToObject<SmfResult>(Encoding.UTF8.GetString(resp));
}
catch (Exception e)
{
LogUtil.info($"UploadJsonData:{api}" + e.ToString());
}
return smfResult.okResult;
}
public static List<SmfLangData> DownloadLngData()
{
string api = "/api/translation/resource?type=" + DeviceType;
try
{
MyWebClient wc = new MyWebClient(10 * 1000);
wc.Headers.Add("Content-Type", "application/json;charset=UTF-8");
var resp = wc.DownloadData(server + api);
var jsondata = Encoding.UTF8.GetString(resp);
return JsonConvert.DeserializeObject<List<SmfLangData>>(jsondata);
}
catch (Exception e)
{
LogUtil.info($"DownloadLngData:{api}" + e.ToString());
}
return new List<SmfLangData>();
}
}
//{"code":0,"data":"ok","msg":"ok","msgKey":"smfcore.ok","okResult":true}
public class SmfResult
{
public int code;
public string data;
public string msg;
public string msgKey;
public bool okResult;
}
public class SmfLangData
{
public string lanCode;
public Dictionary<string, string> resourceMap;
}
}
......@@ -104,6 +104,16 @@
<conversionPattern value="[%date][%t]%-5p %m%n" />
</layout>
</appender>
<appender name="LngResource" type="log4net.Appender.RollingFileAppender">
<file value="logs/LngResource.log" />
<param name="Encoding" value="UTF-8" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date][%t]%-5p %m%n" />
</layout>
</appender>
<appender name="MetcalLogAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/metcal/NW_revicedata.log" />
<param name="Encoding" value="UTF-8" />
......@@ -122,6 +132,10 @@
<level value="Info" />
<appender-ref ref="MetcalLogAppender" />
</logger>
<logger name="LngResource">
<level value="Info" />
<appender-ref ref="LngResource" />
</logger>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
......
......@@ -55,8 +55,11 @@ namespace TSA_V
{
Setting_NInit.Data_LastOpenImagePath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
}
}
UserFromControl.UserControlResource.GetStrEvent += ResourceCulture.GetString;
UserFromControl.UserControlResource.GetStringEvent += ResourceCulture.GetString;
}
private void AGerberController_ErrorLogEvent(Exception ex)
{
LogUtil.error("AGerberController_ErrorLogEvent: " + ex.ToString());
......
......@@ -368,7 +368,6 @@
<DependentUpon>FrmCodeInPut.cs</DependentUpon>
</Compile>
<Compile Include="workForm\PointDisplay.cs" />
<Compile Include="ResourceCulture.cs" />
<Compile Include="workForm\FrmSolderingMsg.cs">
<SubType>Form</SubType>
</Compile>
......@@ -629,6 +628,9 @@
<Content Include="hands\config.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="languageResources\resourcesAll.lngres">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="Properties\app.manifest" />
<Content Include="image\form\NS.ico">
......
......@@ -133,19 +133,18 @@ namespace TSA_V
int pcbRowValue = FormUtil.GetIntValue(txtRowS);
int pcbColValue = FormUtil.GetIntValue(txtColS);
if (pcbRow < 1)
if (pcbRow < 1 || pcbCol < 1)
{
MessageBox.Show(ResourceCulture.GetString("PcbRowInvalid", "行数必须大于等于1!"),
MessageBox.Show(ResourceCulture.GetString("PcbRowColInvalid", "行列数必须都大于等于1!"),
ResourceCulture.GetString("MsgTitle", "提示"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
if (pcbRow < 1)
{
numRow.Focus();
return;
}
if (pcbCol < 1)
if(pcbCol < 1)
{
MessageBox.Show(ResourceCulture.GetString("PcbColInvalid", "列数必须大于等于1!"),
ResourceCulture.GetString("MsgTitle", "提示"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
numCol.Focus();
}
return;
}
......@@ -201,20 +200,31 @@ namespace TSA_V
ResourceCulture.GetString("MsgTitle", "提示"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (pcbRowValue <= 0 || pcbColValue <= 0)
if (pcbRowValue <= 0)
{
MessageBox.Show(ResourceCulture.GetString("PcbRowValueInvalid", "行间距必须大于0!"),
ResourceCulture.GetString("MsgTitle", "提示"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtRowS.Focus();
return;
}
if (pcbColValue <= 0)
{
MessageBox.Show(ResourceCulture.GetString("PcbSpacingInvalid", "行/列间距必须都大于0!"),
MessageBox.Show(ResourceCulture.GetString("PcbColValueInvalid", "列间距必须大于0!"),
ResourceCulture.GetString("MsgTitle", "提示"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtColS.Focus();
return;
}
if (currBoardInfo == null)
{
MessageBox.Show(ResourceCulture.GetString("BoardNull", "板卡信息为空,无法测试。"));
LogUtil.info("板卡信息为空,无法测试");
return;
}
if (currBoardInfo.smtList == null || currBoardInfo.smtList.Count == 0)
{
MessageBox.Show(ResourceCulture.GetString("NoPoints", "当前程序没有组装点,无法测试。"));
LogUtil.info("当前程序没有组装点,无法测试");
return;
}
......
key 中文 英文 俄语
AutoResetMsg 急停恢复,自动重置设备 Emergency stop recovery, automatic reset device 急停恢复,自动重置设备
BLText 程序【{0}】元器件库【{1}】备料中 Program [{0}] component library [{1}] is preparing materials 程序【{0}】元器件库【{1}】备料中
BOM_SelBomTagNumberTitle 请选择BOM表位号对应表头! Please select the BOM file Tag number header! 请选择BOM表位号对应表头!
BOM_SelDesTitle 请选择Y请选择描述对应表头! YPlease select the description header! 请选择Y请选择描述对应表头!
BOM_SelPnTitle 请选择物料编码对应表头! Please select Part Number header! 请选择物料编码对应表头!
BOM_SelXTitle 请选择X坐标对应表头! Please select the X coordinate header! 请选择X坐标对应表头!
BOM_SelXYTagNumberTitle 请选择XY表位号对应表头! Please select the Location file Tag number header! 请选择XY表位号对应表头!
BOM_SelYTitle 请选择Y坐标对应表头! Please select the Y coordinate header! 请选择Y坐标对应表头!
CNameHasExits 元器件库【{0}】已存在,请重新输入! Position 【{0}】exists. Please rename. 元器件库【{0}】已存在,请重新输入!
CalMsg1 第一步:请将光标移动至如图示电路板左上角位置,确认后点击设置按钮 Step 1: Move the projection cursor to the upper left corner of the board and click on the Setup button. 第一步:请将光标移动至如图示电路板左上角位置,确认后点击设置按钮
CalMsg2 第二步:请将光标移动至如图示电路板右下角位置,确认后点击设置按钮 Step 2: Move the projection cursor to the lower right corner of the board 第二步:请将光标移动至如图示电路板右下角位置,确认后点击设置按钮
CalMsg3 第三步:请点击开始校准按钮,自动计算投影坐标 Step 3: Click the Start Calibration button 第三步:请点击开始校准按钮,自动计算投影坐标
CanConnectFail Can协议连接失败 CAN protocol connection failed Can协议连接失败
CancelUpdate 已取消修正 Correction to cancel 已取消修正
CanotDel 【{0}】是默认工作程序,不能删除 Default program【{0}】 cannot be deleted. 【{0}】是默认工作程序,不能删除
CanotDelC 元器件库【{0}】在程序【{1}】中使用,不能删除 Position 【{0}】is used in 【{1}】. It cannot be deleted. 元器件库【{0}】在程序【{1}】中使用,不能删除
CanotDelCom 元器件已使用,不能删除 The component is in use and cannot be deleted. 元器件已使用,不能删除
CanotFindInfo 电路板【{0}】没有组装信息,请选择其他程序 Circuit board [{0}] hasn't assembly information. Please select other procedures. 电路板【{0}】没有组装信息,请选择其他程序
CanotFindPosition 未找到库位【{0}】的坐标 No coordinate of position【{0}】 未找到库位【{0}】的坐标
CenterConotEdit 中心点确认之后不可更改 The center point cannot be changed after confirmation. 中心点确认之后不可更改
ChangeWEnd 调宽{0}={1}结束:{2} Adjust width {0}={1} End: {2} 调宽{0}={1}结束:{2}
ChangeWFail 启动调宽失败 Failed to start widening 启动调宽失败
ChangeWOk 调宽{0}={1}完成 Adjust width {0}={1} completed 调宽{0}={1}完成
CheckComNum 请检查元器件数据是否正确 Check Component Data 请检查元器件数据是否正确
CheckFile 两个元器件【{0}】和【{1}】都配置在位置【{2}】中,是否确定导入? Both [{0}] and [{1}] are configured in location [{2}].  Still import [{0}] ? 两个元器件【{0}】和【{1}】都配置在位置【{2}】中,是否确定导入?
CheckZZh 请检查组装信息数据是否正确 Please check the assembly information. 请检查组装信息数据是否正确
ChoiceCom 请选择元器件 Select Component 请选择元器件
ChoiceComPosition 请选择元器件所在料盘位置 Select component plate position 请选择元器件所在料盘位置
ChoiceLibrary 请选择元器件库 Position Selection 请选择元器件库
Col_Count 数量 Quantity 数量
Col_Count_N 修改后数量 Modified Quantity 修改后数量
Col_Del 描述 Description 描述
Col_KuCun 库存 Qty 库存
Col_NCheck 需检测 Check 需检测
Col_NWeld 需焊接 Weld 需焊接
Col_Name 物料编码 Component 物料编码
Col_Notes 注意事项 Notes 注意事项
Col_Num 位号 Component Loc. 位号
Col_Position 料盘位置 Position 料盘位置
Col_Text 投影文字 projected text 投影文字
Col_UpdateP 更新坐标 Update Position 更新坐标
Col_WeldTemp 焊接温度 Temperature 焊接温度
Col_WeldTime 焊接时间 Weld Time 焊接时间
Column_ISUpdate 是否修改 modified 是否修改
Column_img 图片 Image 图片
Column_imgName 图片名称 Image Name 图片名称
ComExists 元器件已存在 The component already exists. 元器件已存在
ComInfo 元器件【{0}】的基本信息 Component【{0}】Basic Information 元器件【{0}】的基本信息
ComInsufficient 元器件库存不足 Insufficient component inventory 元器件库存不足
ComSaveOk 元器件【{0}】保存成功 Component 【{0}】 is saved. 元器件【{0}】保存成功
ConfigProduct 请先配置程序 Configuration Program 请先配置程序
ConotFindCom 未找到需要备料的元器件 No stock component. 未找到需要备料的元器件
CreateNew 新建 Create New 新建
DataLostMsg 数据丢失 No data 数据丢失
DelComOk 元器件【{0}】删除成功 Component 【{0}】is deleted. 元器件【{0}】删除成功
DeletePOk  删除程序【{0}】成功 Program【{0}】 is deleted.  删除程序【{0}】成功
DemoSave 模板已保存在: Module exists. 模板已保存在:
DeviceInConnect 设备连接成功 Equipment Connection 设备连接成功
DeviceInGohome 设备正在原点返回中 11:34Backing to origin. 设备正在原点返回中
DeviceInReset 设备正在重置中,请稍后再备料 Device needs reset. Please wait. 设备正在重置中,请稍后再备料
DeviceInSuddenStop 设备急停中 Sudden Stop 设备急停中
DeviceInWork 设备工作中 Working 设备工作中
DeviceNotOk 设备未连接,无法备料 Device isn't connected. Please wait. 设备未连接,无法备料
DeviceNotOkMsg 设备未连接 Device isn't connected. 设备未连接
DeviceNotStart 设备未启动 The equipment did not start. 设备未启动
DisableOk 禁用成功 Disabled Success 禁用成功
DuZhuanMsg 旋转轴[{0}]堵转,需要重置 The rotation axis [{0}] is blocked and needs to be reset. 旋转轴[{0}]堵转,需要重置
EnableOk 启用成功 Enable Success 启用成功
FileError 文件格式错误 File format error 文件格式错误
FrmAOICheck_Text AOI检测 AOI AOI检测
FrmAOICheck_btnExit_Text 完成 Finish 完成
FrmAOICheck_btnRun_Text 执行检测 Perform Testing 执行检测
FrmAOICheck_btnUpdateImg_Text 修正 amendment 修正
FrmAOICheck_chbAllShow_Text 显示所有 Show All 显示所有
FrmAOICheck_label1_Text 基准 Reference Picture 基准
FrmAOICheck_label2_Text 效果图 Effect Picture 效果图
FrmAOICheck_lblCurrWorkTime_Text 3秒后自动检测 Automatic detect after three seconds 3秒后自动检测
FrmAddBoard_Text 新增程序 New Program 新增程序
FrmAddBoard_btnCancel_Text 取消 Cancel 取消
FrmAddBoard_btnDown_Text 下移 Down 下移
FrmAddBoard_btnLeft_Text 左移 Left 左移
FrmAddBoard_btnMove_Text 移动测试 Motion Test 移动测试
FrmAddBoard_btnOpenFile_Text 更改图片 File Selection 更改图片
FrmAddBoard_btnRight_Text 右移 Right 右移
FrmAddBoard_btnSave_Text 保存程序 Save 保存程序
FrmAddBoard_btnShowPoint_Text 移动测试 Verification 移动测试
FrmAddBoard_btnStart_Text 开始示教 Teach In 开始示教
FrmAddBoard_btnUp_Text 上移 Up 上移
FrmAddBoard_btnUpdatePosition_Text 更新坐标 Coordinate Update 更新坐标
FrmAddBoard_btnUpdate_Text 更新坐标 Coordinate Update 更新坐标
FrmAddBoard_chbNeedUse_Text 使用基准点 Use Reference Point 使用基准点
FrmAddBoard_chbShowText_Text 默认设置位号为投影文字 Set bit number to projected text 默认设置位号为投影文字
FrmAddBoard_chbSort_Text 自动排序 Component Sequence Automation 自动排序
FrmAddBoard_groupBox1_Text 基准点坐标 Reference Coordinate 基准点坐标
FrmAddBoard_groupBox4_Text 点位默认设置 Point Default Settings 点位默认设置
FrmAddBoard_groupBoxSelCom_Text 数据 Data 请选择元器件库
FrmAddBoard_groupBox_new_Text 程序 Program 程序
FrmAddBoard_group_Text 右下角坐标 Coordinates 右下角坐标
FrmAddBoard_label10_Text 宽→: Landscape size→: 横向大小→:
FrmAddBoard_label18_Text X: X: X:
FrmAddBoard_label1_Text 导入图片: Image Import 导入图片:
FrmAddBoard_label20_Text Y: Y: Y:
FrmAddBoard_label24_Text mm mm mm
FrmAddBoard_label25_Text mm mm mm
FrmAddBoard_label2_Text 程序名称: Program 程序名称:
FrmAddBoard_label3_Text 元器件库: Component Library 元器件库:
FrmAddBoard_label4_Text X轴长度 →: Width → X轴长度 →:
FrmAddBoard_label5_Text Y轴长度 ↑: Length ↑ Y轴长度 ↑:
FrmAddBoard_label6_Text 条码: Assembly Code: 条码:
FrmAddBoard_label7_Text 基准点离左侧距离
FrmAddBoard_label8_Text 坐标原点位置: Home Position: 坐标原点位置:
FrmAddBoard_label9_Text mm mm mm
FrmAddBoard_lblBaseImageY_Text 基准点离上方距离:
FrmAddBoard_lblCurrPosition_Text 实时坐标 Real-Time Coordinate 实时坐标
FrmAddBoard_lblLight_Text 点亮度 : Luminance : 点亮度 :
FrmAddBoard_lblLineWidth_Text 像素: Boldness: 画笔宽度:
FrmAddBoard_lblName_Text 投影文字: Text: 投影文字:
FrmAddBoard_lblPolarities_Text 极性: Polarity: 极性
FrmAddBoard_lblSizeLength_Text 宽→: Margin: 横向大小→:
FrmAddBoard_lblSizeWidth_Text 高↓: Padding: 纵向大小↓:
FrmAddBoard_lblSize_Text 点大小 : Size : 点大小 :
FrmAddBoard_lblSpeedText_Text 步进值:1cm Step Value:1cm 步进值:1cm
FrmAddBoard_lblStepValue_Text 步进值: Step: 步进值:
FrmAddBoard_lblWidth_Text 流水线宽度: Conveyor: 线体宽度:
FrmAddBoard_lblYArea_Text Y轴范围 : Y Area : Y轴范围 :
FrmAddBoard_lbltype_Text 形状: Type: 点形状:
FrmAddBoard_lblxArea_Text X轴范围 : X Area : X轴范围 :
FrmAddBoard_lblx_Text X轴点坐标 : X : X轴点坐标 :
FrmAddBoard_lbly_Text Y轴点坐标 : Y : Y轴点坐标 :
FrmAddBoard_likDownFile_Text 下载模板 Template Download 下载模板
FrmAddBoard_likSelCsvFile_Text 选择文件 Select File 选择文件
FrmAddBoard_linkBomUpload_Text 数据表上传 data sheet upload BOM表上传
FrmAddBoard_linkDataViewer_Text 数据预览 Data Preview 数据预览
FrmAddBoard_linkLabel1_Text 选择文件 Select File 选择文件
FrmAddBoard_linkLabel2_Text 选择Gerber文件 Select Gerber file 选择Gerber文件
FrmAddBoard_linkLabel3_Text 预览 Previews 预览
FrmAddBoard_rdbData_Text 数据表上传 Data Sheet Upload 数据表上传
FrmAddBoard_rdbSelCom_Text 选择元器件库 Select Position 选择元器件库
FrmAddBoard_rdbUpload_Text 上传元件数据 Uploading component data 上传程序
FrmAddBoard_xyMoveControl1_Text 右下角坐标 Coordinates 右下角坐标
FrmAddCom_Text 新增元器件库 Add New Component Library 新增元器件库
FrmAddCom_btnBeginIn_Text 保存并开始备料 Save and start component preparation. 保存并开始备料
FrmAddCom_btnBomImport_Text 选择文件 File Selection 选择文件
FrmAddCom_btnCancel_Text 取消 Cancel 取消
FrmAddCom_btnSave_Text 保存元器件库 Save  保存元器件库
FrmAddCom_label1_Text 元器件库名称: Component Library Name 元器件库名称:
FrmAddCom_label2_Text 导入元件文件: Component File Import 导入元件文件:
FrmAutoMsg_btnContinue_Text 确定 Confirm 确定
FrmAutoMsg_btnStop_Text 取消 Cancel 取消
FrmBoardInfo_Text 新增程序 New Program 新增程序
FrmBoardInfo_btnCalibrate_Text 校准 Projection Calibration 投影标定
FrmBoardInfo_btnCheck_Text 校准红外坐标 COORDINATE ALIGNMENT 校准红外坐标
FrmBoardInfo_btnColorChange_Text 投影颜色 Projection Color 投影颜色
FrmBoardInfo_btnConfigAOI_Text 配置AOI AOI Config 配置AOI
FrmBoardInfo_btnDown_Text 下移 Down 下移
FrmBoardInfo_btnGoHome_Text 设备复位 Reset 设备复位
FrmBoardInfo_btnLeft_Text 左移 Left 左移
FrmBoardInfo_btnMEdit_Text 批量操作 Batch Operation 批量操作
FrmBoardInfo_btnMPCbMode_Text 多PCB模式 Multi PCB Mode 多PCB模式
FrmBoardInfo_btnOpenFile_Text 打开图片 Open Image 打开图片
FrmBoardInfo_btnRight_Text 右移 Right 右移
FrmBoardInfo_btnSave_Text 保存 Save 保存
FrmBoardInfo_btnSetOrigin_Text 重置基准点 """Fiducial Mark Reset""" 重置基准点
FrmBoardInfo_btnSort_Text 自动排序 Sequence 自动排序
FrmBoardInfo_btnUp_Text 上移 Up 上移
FrmBoardInfo_btnUpdate_Text 更新 Update 更新
FrmBoardInfo_button1_Text 返回 Exit 返回
FrmBoardInfo_chbMPoint_Text 多点位投影功能 Multi-Points Projection 多点位投影功能
FrmBoardInfo_chbNormal_Text 图片自适应 Image Adaptation 图片自适应
FrmBoardInfo_chbShowName_Text 显示名称 Show Name 显示名称
FrmBoardInfo_gbOriginInfo_Text 基准点信息  Fiducial Mark 基准点信息
FrmBoardInfo_groupBox1_Text 程序基本信息 Information 程序基本信息
FrmBoardInfo_groupBox2_Text 图片坐标偏移 Picture Coordinate Migration 图片坐标偏移
FrmBoardInfo_label10_Text Y轴偏移量↓: Y-Axis Offset ↓: Y轴偏移量↓:
FrmBoardInfo_label122_Text mm mm mm
FrmBoardInfo_label12_Text Y坐标 Y-Axis Y坐标
FrmBoardInfo_label14_Text 条码 Code 条码
FrmBoardInfo_label1_Text X坐标 X-Axis X坐标
FrmBoardInfo_label24_Text mm mm mm
FrmBoardInfo_label25_Text mm mm mm
FrmBoardInfo_label2_Text 名称 Name 名称
FrmBoardInfo_label3_Text X轴长度→ Width → X轴长度→
FrmBoardInfo_label4_Text Y坐标 Y-Axis Y坐标
FrmBoardInfo_label5_Text Y轴长度 ↑ length ↑ Y轴长度 ↑
FrmBoardInfo_label6_Text X坐标 X-Axis X坐标
FrmBoardInfo_label7_Text 使用键盘上的左右键可放大或缩小图片 Use left and right to zoom in and zoom out. 使用键盘上的左右键可放大或缩小图片
FrmBoardInfo_label8_Text mm mm mm
FrmBoardInfo_label9_Text X轴偏移量→: X-Axis Offset →: X轴偏移量→:
FrmBoardInfo_lblAoi_Text AOI程序: AOI Program nName : AOI程序:
FrmBoardInfo_lblLineW_Text 流水线宽度: Conveyor width: 线体宽度:
FrmBoardInfo_lblMousePosition_Text X坐标 X-Axis X坐标
FrmBoardInfo_lblMsg_Text 急停未开  Emergency stop isn't ready. 急停未开
FrmBoardInfo_lbllinews_Text mm mm mm
FrmBoardInfo_linkDis_Text 批量禁用 Batch Disable 批量禁用
FrmBoardInfo_linkEnable_Text 批量启用 Batch Enable 批量启用
FrmBoardInfo_llblAllSel_Text 全部启用 Enable All 全部启用
FrmBoardInfo_llblAllUSel_Text 全部禁用 Disable All 全部禁用
FrmBoardInfo_焊点列表_Text 组装信息(使用键盘上的上下键可更改选中行) Assembly 组装信息(使用键盘上的上下键可更改选中行)
FrmBoardList_Text 程序编辑 Configuration 程序编辑
FrmBoardList_btnBack_Text 返回 Exit 返回
FrmBoardList_btnBeiliao_Text 备料 Component Preparation 备料
FrmBoardList_btnDel_Text 删除 Delete 删除
FrmBoardList_btnExport_Text 导出 Export Data 导出
FrmBoardList_btnImport_Text 导入 Import Data 导入
FrmBoardList_btnNew_Text 新增 New 新增
FrmBoardList_btnSave_Text 修改 Edit 修改
FrmBoardList_groupBox1_Text 程序管理 Program 程序管理
FrmBoardList_groupBox2_Text 程序信息 Information 程序信息
FrmBoardList_label1_Text 程序列表: Program List 程序列表:
FrmBoardList_label24_Text mm mm mm
FrmBoardList_label2_Text 元器件库名称: Component Library 元器件库名称:
FrmBoardList_label3_Text 宽度: Width ↑ : 宽度:
FrmBoardList_label4_Text 长度: Length→ : 长度:
FrmBoardList_label5_Text 组装数量: Component Qty: 组装数量:
FrmBoardList_label6_Text 焊点列表: Soldering Joint List 焊点列表:
FrmBoardList_label7_Text 面积: Area 面积:
FrmBoardList_label8_Text mm mm mm
FrmBoardList_label9_Text mm2 mm mm2
FrmBoardPutCom_btnCancel_Text 结束 End 结束
FrmBoardPutCom_btnNext_Text 下一个元器件 Next 下一个元器件
FrmBoardPutCom_btnPre_Text 上一个元器件 Previous 上一个元器件
FrmBoardPutCom_btnSaveCount_Text 保存数量 Save 保存数量
FrmBoardPutCom_label1_Text 料盘位置: Plate Position: 料盘位置:
FrmBoardPutCom_label2_Text 物料编号: Material Code: 物料编号:
FrmBoardPutCom_label3_Text 数量: Number: 数量:
FrmBoardPutCom_label4_Text 位号: Material Code: 位号:
FrmBoardPutCom_label5_Text 描述: Descibe: 描述:
FrmBoardSelect_Text 请选择程序 Program selection 请选择程序
FrmBoardSelect_btnBack_Text 返回 Return 返回
FrmBoardSelect_btnChangeW_Text 调宽 Adjust the line width 调宽
FrmBoardSelect_btnNext_Text 下一步 Next 下一步
FrmBoardSelect_chbGuoban_Text 流水线过板模式 Inline Mode 流水线过板模式
FrmBoardSelect_chbOffLine_Text 离线工作模式 Offline Mode 离线工作模式
FrmBoardSelect_chbSoftMode_Text 简洁模式 Lite Mode 简洁模式
FrmBoardSelect_chbWorkSingleStart_Text 启用工作区检测开始工作 Work Area 启用工作区检测开始工作
FrmBoardSelect_label1_Text 扫码条码自动匹配程序: Program Selection 扫码条码自动匹配程序:
FrmBoardSelect_lblBoardMsg_Text 程序信息 Program 程序信息
FrmBomUpload_Text 数据表上传 data sheet upload BOM表上传
FrmBomUpload_btnCancel_Text 取消 Cancel 取消
FrmBomUpload_btnUpload_Text 确定上传 Confirm upload 确定上传
FrmBomUpload_chbAutoPos_Text 同物料自动合并库位 Automatic consolidation of libraries 同物料自动合并库位
FrmBomUpload_groupBox1_Text 请选择文件 select file 请选择文件
FrmBomUpload_groupBox2_Text 请选择映射关系 Please select a correspondence 请选择对应关系
FrmBomUpload_groupBox3_Text 其他设置 Other settings 其他设置
FrmBomUpload_label1_Text 物料编码: Part Number: 物料编码:
FrmBomUpload_label2_Text BOM文件位号分隔符: File Separator: BOM文件位号分隔符:
FrmBomUpload_label3_Text 元器件默认数量: Default number of components: 元器件默认数量:
FrmBomUpload_label4_Text BOM文件位号: BOM Tag number: BOM文件位号:
FrmBomUpload_label5_Text 位置文件位号: Location Tag number: 位置文件位号:
FrmBomUpload_label6_Text 说明: Description : 说明:
FrmBomUpload_label7_Text Y坐标: Y : Y坐标:
FrmBomUpload_label8_Text X坐标: X : X坐标:
FrmBomUpload_linkSelBom_Text 选择Bom文件 Select Bom File 选择Bom文件
FrmBomUpload_linkSelXy_Text 选择位置文件 Select Location File 选择位置文件
FrmBomViewer_linkDelete_Text 批量删除 Batch Delete 批量删除
FrmCalibrate_Text 校准 Projection Calibration 投影标定
FrmCalibrate_btnCal_Text 开始校准 Start Calibration 开始校准
FrmCalibrate_btnExit_Text 退出 Exit 退出
FrmCalibrate_btnLeftUp_Text 设置为左上角位置 Set to top left position 设置为左上角位置
FrmCalibrate_btnRightBottom_Text 设置为右下角位置 Set to bottom right position 设置为右下角位置
FrmCalibrate_groupBox1_Text 校准 Projection Calibration 投影标定
FrmCalibrate_groupBox2_Text 图示 illustration 图示
FrmCalibrate_lblMsg_Text 第一步:请将光标移动至如图示电路板左上角位置,确认后点击设置按钮 Step 1: Move the projection cursor to the upper left corner of the board 第一步:请将光标移动至如图示电路板左上角位置,确认后点击设置按钮
FrmCameraAOI_Text AOI检测 Inspection AOI检测
FrmCameraAOI_btnExit_Text 退出 Exit 退出
FrmCameraAOI_btnRun_Text 执行检测 Perform Testing 执行检测
FrmChangeWidth_Text 轨道 Conveyor 轨道调宽
FrmChangeWidth_btnChWidth_Text 调整宽度 Adjust the width 调整宽度
FrmChangeWidth_btnClose_Text 返回 Return 返回
FrmChangeWidth_btnDSave_Text 保存 Save 保存
FrmChangeWidth_btnHomeM_Text 原点返回 Origin Back 原点返回
FrmChangeWidth_btnSave_Text 保存参数 Save parameters 保存参数
FrmChangeWidth_groupBox1_Text 轨道调宽 Conveyor Control 轨道调宽
FrmChangeWidth_groupBox2_Text 轨道配置 Configuration 轨道配置
FrmChangeWidth_groupDetial_Text 宽度位置配置 Width Position Configuration 宽度位置配置
FrmChangeWidth_label1_Text 目标宽度(mm): Target Width(mm): 目标宽度(mm):
FrmChangeWidth_label2_Text 电机地址: Motor Address: 电机地址:
FrmChangeWidth_label3_Text 原点宽度(mm): Origin Width(mm): 原点宽度(mm):
FrmChangeWidth_label4_Text 系数(/mm): Coefficient(/mm): 系数(/mm):
FrmChangeWidth_label5_Text 轨道电机位置: Motor Position: 轨道电机位置:
FrmChangeWidth_label6_Text 宽度(mm): Width(mm): 宽度(mm):
FrmChangeWidth_label7_Text 轨道电机位置 Motor Position 轨道电机位置
FrmCodeInPut_Text 请输入当前产品的条码信息 Please enter the barcode information of the current product 请输入当前产品的条码信息
FrmCodeInPut_btnCancel_Text 取消 Cancel 取消
FrmCodeInPut_btnContinue_Text 完成 Confirm 完成
FrmCodeInPut_label1_Text PCB板条码: PCB Barcode: PCB板条码:
FrmComponentList_Text 元器件信息 Component 元器件信息
FrmComponentList_btnBack_Text 返回 Exit 返回
FrmComponentList_btnBeiLiao_Text 备料 Component Preparation 备料
FrmComponentList_btnDel_Text 删除 Delete 删除
FrmComponentList_btnDownLoad_Text 下载模板 Template Download 下载模板
FrmComponentList_btnExport_Text 导出 Export EXPORT
FrmComponentList_btnImport_Text 导入 Import 导入
FrmComponentList_btnNewCom_Text 新增元器件 Add Component 新增元器件
FrmComponentList_btnNew_Text 上传元器件库 Component List Upload 上传元器件库
FrmComponentList_btnSave_Text 保存 Save 保存
FrmComponentList_groupBox1_Text 元器件库管理 Component Library 元器件库管理
FrmComponentList_groupInfo_Text 元器件基本信息 Component 元器件基本信息
FrmComponentList_label1_Text 物料编码: Material Code 物料编码:
FrmComponentList_label2_Text 描述: Description 描述:
FrmComponentList_label3_Text 元器件库列表 Component Library List 元器件库列表
FrmComponentList_label4_Text 注意事项: Note 注意事项:
FrmComponentList_label5_Text 数量: Quantity 数量:
FrmComponentList_label6_Text 料盘位置: Reel Position 料盘位置:
FrmComponentList_label7_Text 位号: Component Loc. 位号:
FrmComponentList_label8_Text 图片: Image: 图片:
FrmComponentList_linkCloseAll_Text 全关 Close All 全关
FrmComponentList_linkLabel1_Text 亮灯测试 Open LED 亮灯测试
FrmComponentList_linkLabel2_Text 关灯测试 Close LED 关灯测试
FrmComponentList_linkOpenAll_Text 全开 Open All 全开
FrmComponentList_linkUpdate_Text 显示测试 Display Test 显示测试
FrmComponentList_lklSelImage_Text 选择文件 Select File 选择文件
FrmDACTest18
FrmDACTest_Text DAC模块调试 DAC Module Debugging DAC模块调试
FrmDACTest_btnClear_Text 清理日志 Delete Log 清理日志
FrmDACTest_btnCloseForm_Text 返回(&B) Exit 返回(&B)
FrmDACTest_btnClose_Text 关闭串口 Close 关闭串口
FrmDACTest_btnOpen_Text 打开串口 Open 打开串口
FrmDACTest_btnSetList_Text 开始 Start 开始
FrmDACTest_btnSetValue_Text 设置电压 Set Voltage 设置电压
FrmDACTest_btnSetVoltage_Text 设置电压 Set Voltage 设置电压
FrmDACTest_btnSet_Text 0电压点校准 Zero Calibration 0电压点校准
FrmDACTest_btnSopList_Text 停止 Stop 停止
FrmDACTest_groupBox1_Text 串口信息 Serial information 串口信息
FrmDACTest_groupBox2_Text 增量测试 Incremental Test 增量测试
FrmDACTest_groupBox6_Text 电压测试 Voltage Test 电压测试
FrmDACTest_label12_Text 端口号: Port: 端口号:
FrmDACTest_label18_Text 电压值: Voltage Value: 电压值:
FrmDACTest_label1_Text 目标电压值: Target Voltage : 目标电压值:
FrmDACTest_label2_Text 目标电压列表: Target Voltage List: 目标电压列表:
FrmDACTest_lblLastvalue_Text 当前电压值: Current Voltage 当前电压值:
FrmDeviceConfig_Text 设备参数 Equipment Parameters 设备参数
FrmDeviceConfig_btnCancel_Text 取消 Cancel 取消
FrmDeviceConfig_btnOk_Text 保存 OK 保存
FrmDeviceConfig_btnTest_Text 发送数据测试 Send Data Test 发送数据测试
FrmDeviceConfig_btnUpdateSize_Text 更改所有点 Modify 更改所有点
FrmDeviceConfig_btnUpdate_Text 更新 Update 更新
FrmDeviceConfig_chbAlarmT_Text 开启报警音效 Turn on the alarm sound 开启报警音效
FrmDeviceConfig_chbDisBottomCylinder_Text 禁用底部气缸 Disable bottom cylinder 禁用底部气缸
FrmDeviceConfig_chbDisBottonCylinder_Text 禁用底部气缸 Disable bottom cylinder 禁用底部气缸
FrmDeviceConfig_chbDisSideCylinder_Text 禁用侧挡气缸 Disable the side brake cylinder. 禁用侧挡气缸
FrmDeviceConfig_chbISDebug_Text 是否调试模式,会自动下一步 Debug Module, Automatic Next Step 是否调试模式,会自动下一步
FrmDeviceConfig_chbMouse_Text 鼠标保持在主屏幕 Keep the mouse on the home screen 鼠标保持在主屏幕
FrmDeviceConfig_chbWorkT_Text 开启工作音效 Turn on the work sound 开启工作音效
FrmDeviceConfig_cheDisCount_Text 开启元器件计数 Enable Component Counting 开启元器件计数
FrmDeviceConfig_gbKNDSetting_Text IO模块配置 I/O Module Configuration IO模块配置
FrmDeviceConfig_groupBox1_Text 其他参数 Other Parameter 其他参数
FrmDeviceConfig_groupBox2_Text 待机点配置 Standby Configuration 待机点配置
FrmDeviceConfig_groupBox3_Text HTTP接口测试 Data Upload Test 数据上传测试
FrmDeviceConfig_groupBox4_Text 点信息批量修改 Projection Modification 点信息批量修改
FrmDeviceConfig_label10_Text Y轴偏移量→/毫米: Y-Axis Offset→/mm: Y轴偏移量→/毫米:
FrmDeviceConfig_label1_Text X轴待机点位置: X-Axis Standby Position X轴待机点位置:
FrmDeviceConfig_label2_Text Y轴待机点位置: Y-Axis Standby Position Y轴待机点位置:
FrmDeviceConfig_label3_Text 程序: Program: 程序:
FrmDeviceConfig_label4_Text 点大小: Size: 点大小:
FrmDeviceConfig_label5_Text 程序: Program: 程序:
FrmDeviceConfig_label6_Text 接口地址: Address: 接口地址:
FrmDeviceConfig_label9_Text X轴偏移量↓/毫米: X-Axis Offset↓/mm: X轴偏移量↓/毫米:
FrmDeviceConfig_lblCode_Text 条码: Barcode: 条码:
FrmDeviceConfig_lblKNDIP_Text IP地址: IP Address: IP地址:
FrmDeviceConfig_lblKNDPort_Text 端口号: Port: 端口号:
FrmDeviceConfig_lblLineWidth_Text 像素: Boldness: 画笔宽度:
FrmDeviceConfig_lbltype_Text 形状: Type: 点形状:
FrmDeviceSelect_Text 设备选择 Equipment Selection 设备选择
FrmDeviceSelect_btnCancel_Text 取消 Cancel 取消
FrmDeviceSelect_btnOk_Text 保存 Save 保存
FrmDeviceSelect_gbIronSetting_Text 烙铁参数配置 Soldering Parameter Setting 烙铁参数配置
FrmDeviceSelect_groupBox1_Text 烙铁选择 Soldering Iron 烙铁选择
FrmDeviceSelect_lblIron_Text 连接串口号: Serial Connection 连接串口号:
FrmDeviceSelect_rbtnJBC_Text JBC烙铁 JBC Soldering JBC烙铁
FrmDeviceSelect_rbtnOKi_Text OKi烙铁 OKI Soldering OKi烙铁
FrmDeviceSelect_rbtnWellre_Text Weller烙铁 Weller Soldering Weller烙铁
FrmEditMPoint_Text 点位批量操作 Point Batch Operation 点位批量操作
FrmEditMPoint_btnClose_Text 返回 Return 返回
FrmEditMPoint_btnSave_Text 保存 Save 保存
FrmEditMPoint_checkBox1_Text 自动为位号增加后缀 Automatically Add Suffix to Number 自动为位号增加后缀
FrmEditMPoint_label10_Text Y轴偏移量↓: Y-Axis Offset ↓: Y轴偏移量↓:
FrmEditMPoint_label11_Text 行间距: Row Spacing: 行间距:
FrmEditMPoint_label122_Text mm mm mm
FrmEditMPoint_label12_Text 列: Column: 列:
FrmEditMPoint_label1_Text ° ° °
FrmEditMPoint_label2_Text 列间距: Column Spacing: 列间距:
FrmEditMPoint_label3_Text mm mm mm
FrmEditMPoint_label4_Text 旋转角度: Rotation Angle: 旋转角度:
FrmEditMPoint_label5_Text mm mm mm
FrmEditMPoint_label6_Text 删除左侧列表中的点位 Delete Points from the Left List 删除左侧列表中的点位
FrmEditMPoint_label7_Text 行: Row: 行:
FrmEditMPoint_label8_Text mm mm mm
FrmEditMPoint_label9_Text X轴偏移量→: X-Axis Offset →: X轴偏移量→:
FrmEditMPoint_radioButton1_Text 删除 Delete 删除
FrmEditMPoint_rdbCopy_Text 复制 Copy 复制
FrmEditMPoint_rdbDelete_Text 删除 Delete 删除
FrmEditMPoint_rdbPianyi_Text 坐标偏移/旋转 Coordinate Offset/Rotation 坐标偏移/旋转
FrmEditMPoint_焊点列表_Text 列表 List 列表
FrmGalvanometerTest_Text 振镜测试 Galvanometer Test 振镜测试
FrmGalvanometerTest_btnClosePort_Text 关闭串口 Close Port 关闭串口
FrmGalvanometerTest_btnContinue_Text 继续播放 Continue 继续播放
FrmGalvanometerTest_btnDown_Text 下移 Down 下移
FrmGalvanometerTest_btnGetAddr_Text 查询地址 Select Address 查询地址
FrmGalvanometerTest_btnGetArea_Text 获取范围 Get Area 获取范围
FrmGalvanometerTest_btnGetPoint_Text 获取状态 Get Status 获取状态
FrmGalvanometerTest_btnLeft_Text 左移 Left 左移
FrmGalvanometerTest_btnOpenPort_Text 打开串口 Open Port 打开串口
FrmGalvanometerTest_btnRight_Text 右移 Right 右移
FrmGalvanometerTest_btnSetArea_Text 设置范围 Set Area 设置范围
FrmGalvanometerTest_btnShowArea_Text 显示区域 Show Area 显示区域
FrmGalvanometerTest_btnShowPoint_Text 显示点 Display Point 显示点
FrmGalvanometerTest_btnStop_Text 停止播放 Stop 停止播放
FrmGalvanometerTest_btnTest_Text 图形测试 Graphics test 图形测试
FrmGalvanometerTest_btnUp_Text 上移 Up 上移
FrmGalvanometerTest_btnUpdateAddr_Text 更改地址 Update Address 更改地址
FrmGalvanometerTest_button3_Text 握手 Handshake 握手
FrmGalvanometerTest_checkPoint_Text 激光打开 Open LED 激光打开
FrmGalvanometerTest_chkUsb_Text 使用小板转换 Use PCB 使用小板转换
FrmGalvanometerTest_groupBox1_Text 显示点测试 Shop Point 显示点测试
FrmGalvanometerTest_groupBox2_Text 地址信息 Address 地址信息
FrmGalvanometerTest_groupBox3_Text 串口信息 Port 串口信息
FrmGalvanometerTest_groupBox4_Text 扫描范围 Scan Area 扫描范围
FrmGalvanometerTest_groupBox5_Text 状态信息 Status 状态信息
FrmGalvanometerTest_label10_Text X轴点坐标 : X : X轴点坐标 :
FrmGalvanometerTest_label1_Text X轴范围 : X Area : X轴范围 :
FrmGalvanometerTest_label2_Text Y轴范围 : Y Area : Y轴范围 :
FrmGalvanometerTest_label3_Text 请选择串口: Select Port: 请选择串口:
FrmGalvanometerTest_label4_Text RS485地址(0~60000): RS485 Address(0~60000): RS485地址(0~60000):
FrmGalvanometerTest_label5_Text 形状: Type: 点形状:
FrmGalvanometerTest_label6_Text 点大小 : Size : 点大小 :
FrmGalvanometerTest_label7_Text 点亮度 : Luminance : 点亮度 :
FrmGalvanometerTest_label8_Text 步进值: Step Value: 步进值:
FrmGalvanometerTest_label9_Text Y轴点坐标 : Y : Y轴点坐标 :
FrmHistorySearch_BtnQuery_Text 查询 Search 查询
FrmHistorySearch_Text 历史记录 History 历史记录
FrmHistorySearch_btnExit_Text 退出 Exit 退出
FrmHistorySearch_groupBox1_Text 历史记录查询 History 历史记录查询
FrmHistorySearch_label1_Text 条码 Code 条码
FrmHistorySearch_label2_Text 开始时间 Start Time 开始时间
FrmHistorySearch_label3_Text 结束时间 End Time 结束时间
FrmImageViewer_Text 图片预览 Image Preview 图片预览
FrmImageViewer_btnCancel_Text 取消 Cancel 取消
FrmImageViewer_btnOK_Text 确认 Confirm 确认
FrmIoManager_Text IO模块调试 I/O Module Test IO模块调试
FrmIoManager_btnBottomDown_Text 底部气缸下降 Bottom Cylinder Down 底部气缸下降
FrmIoManager_btnBottomUp_Text 底部气缸上升 Bottom Cylinder Up 底部气缸上升
FrmIoManager_btnCloseCameraLed_Text 关闭光源 Close Light 关闭光源
FrmIoManager_btnCloseForm_Text 返回 Exit 返回
FrmIoManager_btnClose_Text 关闭 Close 关闭
FrmIoManager_btnFixtedBack_Text 固定气缸后退 Stationary Cylinder Backward 固定气缸后退
FrmIoManager_btnFixtedForward_Text 固定气缸前进 Stationary Cylinder Forward 固定气缸前进
FrmIoManager_btnLineB_Text 流水线反转 Pipeline Inversion 流水线反转
FrmIoManager_btnLineF_Text 流水线正转 Pipeline Rotation 流水线正转
FrmIoManager_btnLineRun_Text 流水线正转 Pipeline Corotation 流水线正转
FrmIoManager_btnLineStop_Text 流水线停止 Pipeline Stop 流水线停止
FrmIoManager_btnOpenCameraLed_Text 打开光源 Open Light 打开光源
FrmIoManager_btnOpenDO_Text 打开 Open 打开
FrmIoManager_btnReadAllDi_Text 读取所有DI Read All DI 读取所有DI
FrmIoManager_btnReadAllDo_Text 读取所有DO Read All DO 读取所有DO
FrmIoManager_btnReadIO_Text 读取IO状态 Read I/O Status 读取IO状态
FrmIoManager_btnSideBack_Text 侧挡气缸后退 Side Stopper Cylinder Backward 侧挡气缸后退
FrmIoManager_btnSideForward_Text 侧挡气缸前进 Side Stopper Cylinder Forward 侧挡气缸前进
FrmIoManager_btnStopDown_Text 阻挡气缸下降 Stopper Cylinder Down 阻挡气缸下降
FrmIoManager_btnStopStop_Text 阻挡气缸停止 Stop Stopper Cylinder 阻挡气缸停止
FrmIoManager_btnStopUp_Text 阻挡气缸上升 Stopper Cylinder Up 阻挡气缸上升
FrmIoManager_btnWriteSingleDO_Text 写入DO Enter DO 写入DO
FrmIoManager_button1_Text 写DO100 Write DO100 写DO100
FrmIoManager_button2_Text 关闭DO100  Close DO100 关闭DO100
FrmIoManager_button3_Text 写DO101 Write DO101 写DO101
FrmIoManager_button4_Text 关闭DO101  Close DO101 关闭DO101
FrmIoManager_button5_Text 读取所有DI Real All DI 读取所有DI
FrmIoManager_button6_Text 读取所有DO Real All DO 读取所有DO
FrmIoManager_chbAutoRead_Text 自动读取IO Auto Read DO 自动读取IO
FrmIoManager_groupBox1_Text DO写入 Enter DO DO写入
FrmIoManager_groupBox2_Text DO列表 DO List DO列表
FrmIoManager_groupBox3_Text DI列表 DI List DI列表
FrmIoManager_label14_Text 地址: Address 地址:
FrmIoManager_label17_Text 设备IP: IP 设备IP:
FrmIoManager_label1_Text 100_DO1_激光打开 100_DO1_Open LED 100_DO1_激光打开
FrmIoManager_label2_Text SlaveId SLAVELD SlaveId
FrmIoManager_label3_Text 选择DO: Select DO 选择DO:
FrmIoManager_label5_Text 定时(ms): Time Set(ms) 定时(ms):
FrmIoManager_label6_Text 写入值: Enter Value 写入值:
FrmIoManager_lblMsg_Text 急停未开   Emergency stop isn't ready. 急停未开
FrmIoManager_radioButton1_Text 打开 Open 打开
FrmIoManager_radioButton2_Text 关闭 Close 关闭
FrmLanguage_Text 语言 Language 语言
FrmLanguage_btnCancel_Text 取消 Cancel 取消
FrmLanguage_btnOk_Text 确定 OK 确定
FrmLanguage_rbtnChina_Text 中文 Chinese 中文
FrmLanguage_rbtnEnglish_Text 英文 English 英文
FrmLanguage_rbtnRussian_Text 俄文 Russian 俄文
FrmLedTest_Text LED灯调试 LEDs Debugging LED灯调试
FrmLedTest_btnExit_Text 退出 Exit 退出
FrmLedTest_btnInStore_Text 全开 All ON 全开
FrmLedTest_btnOutStore_Text 全关 All OFF 全关
FrmLedTest_buttonCloseOne_Text 关 OFF 关
FrmLedTest_buttonOpenOne_Text 开 ON 开
FrmLedTest_button_LedOff_Text 关闭 Close 关闭
FrmLedTest_button_LedOn_Text 打开 Open 打开
FrmLedTest_groupBox2_Text 操作测试 Operational Test 操作测试
FrmLedTest_label1_Text 设备IP: Device IP: 设备IP:
FrmLedTest_label2_Text 灯列表: LED List: 灯列表:
FrmLedTest_label3_Text 库位: Storage: 库位:
FrmLedTest_label6_Text 指定灯操作: Assign LED: 指定灯操作:
FrmListViewer_Text 数据预览 Data Preview 图片预览
FrmListViewer_btnCancel_Text 取消 Cancel 取消
FrmListViewer_btnOK_Text 确认 OK 确认
FrmLogin_BtnExit_Text 退出 Exit 退出
FrmLogin_BtnLogin_Text 登录 Login 登录
FrmLogin_Text 登录 Login 登录
FrmLogin_button1_Text Smart Workstation NEO STATION Smart Workstation
FrmLogin_label1_Text 用户名 User Name 用户名
FrmLogin_label2_Text 密码 Password 密码
FrmLogin_label3_Text Neo Station Neo Station Neo Station
FrmMPcbConfig_Text 多PCB模式配置 Multi PCB Mode Configuration 多PCB模式配置
FrmMPcbConfig__Text PCB1 PCB1 PCB1
FrmMPcbConfig_btnClose_Text 返回 Back 返回
FrmMPcbConfig_btnSave_Text 保存 Save 保存
FrmMPcbConfig_btnTest_Text 测试 Test 测试
FrmMPcbConfig_label11_Text 行间距: Row Spacing: 行间距:
FrmMPcbConfig_label12_Text 列: Columns: 列:
FrmMPcbConfig_label1_Text *多PCB模式时,PCB必须均匀放置 *In multi PCB mode, PCBs must be placed evenly *多PCB模式时,PCB必须均匀放置
FrmMPcbConfig_label2_Text 列间距: Column Spacing: 列间距:
FrmMPcbConfig_label3_Text mm mm mm
FrmMPcbConfig_label5_Text mm mm mm
FrmMPcbConfig_label7_Text 行: Rows: 行:
FrmMaintenance_LblUserName_Text admin/Admin admin/Admin admin/Admin
FrmMaintenance_Text 设备维护 Maintenance 设备维护
FrmMaintenance_btnDACTest_Text DAC模块调试 DAC Module Debug DAC模块调试
FrmMaintenance_btnDebug_Text IO模块 I/O Module IO模块
FrmMaintenance_btnDeviceSelect_Text 用户管理 User Management 用户管理
FrmMaintenance_btnExit_Text 返回 Exit 返回
FrmMaintenance_btnGalTest_Text 振镜模块调试 Galvanometer Test 振镜模块调试
FrmMaintenance_btnLanguage_Text 语言 Language 语言
FrmMaintenance_btnLed_Text LED模块调试 LED Module Debug LED模块调试
FrmMaintenance_btnPoint_Text 校准 Calibration 校准
FrmMaintenance_btnPosition_Text 电机 Motor 电机调试
FrmMaintenance_btnPwdUpdate_Text 密码修改 Password Modification 密码修改
FrmMaintenance_btnTest_Text 停止图像循环 Stop Image Loop 停止图像循环
FrmMaintenance_btnWidthC_Text 轨道 Conveyor 轨道调宽
FrmMaintenance_button1_Text 设备参数 Device Parameters 设备参数
FrmMaintenance_label1_Text Neo Station Neo Station Neo Station
FrmMaintenance_lblVersion_Text V4.1.9152.25101 V4.1.9152.25101 V4.1.9152.25101
FrmMenu_Text 智能组装工作站/智能工作站 SMART WORK STATION 智能组装工作站/智能工作站
FrmMenu_btnChangeSkin_Text 换肤 SKIN CHANGE 换肤
FrmMenu_btnCom_Text 元器件信息 Component 元器件信息
FrmMenu_btnDefaultSkin_Text 默认皮肤 DEFAULT SKIN 默认皮肤
FrmMenu_btnExit_Text 退出 Quit 退出
FrmMenu_btnMaintenance 设备配置 设备配置
FrmMenu_btnMaintenance_Text 设备维护 Maintenance 设备维护
FrmMenu_btnProduct_Text 程序编辑 PROGRAMMING 程序编辑
FrmMenu_btnWork_Text 开始工作 Start 开始工作
FrmMenu_lblVersion_Text 版本号 4.1.2 Version 4.1.2 版本号 4.1.2
FrmNImageViewer_Text 图片预览 Image Preview 图片预览
FrmNImageViewer_btnCancel_Text 取消 Cancel 取消
FrmNImageViewer_btnCut_Text 剪切 Cut 剪切
FrmNImageViewer_btnOK_Text 确认 OK 确认
FrmNImageViewer_btnR_Text 旋转 Rotate 旋转
FrmPCbOffsetConfig_Text 设置 PCB{0} 相对偏移(mm) Set PCB{0} Relative Offset (mm) 设置 PCB{0} 相对偏移(mm)
FrmPCbOffsetConfig_btnCancel_Text 取消 Cancel 取消
FrmPCbOffsetConfig_btnOK_Text 确定 OK 确定
FrmPCbOffsetConfig_labelX_Text X偏移(mm): X Offset (mm): X偏移(mm):
FrmPCbOffsetConfig_labelY_Text Y偏移(mm): Y Offset (mm): Y偏移(mm):
FrmPointInfo_Text 修改组装信息【元器件1】 Assembly Edit 修改组装信息【元器件1】
FrmPointInfo_btnCancel_Text 取消 Cancel 取消
FrmPointInfo_btnColorChange_Text 颜色 Color 颜色
FrmPointInfo_btnDown_Text 下移 Down 下移
FrmPointInfo_btnLeft_Text 左移 Left 左移
FrmPointInfo_btnMove_Text 移动测试 Motion Test 移动测试
FrmPointInfo_btnPre_Text 上一个 Last 上一个
FrmPointInfo_btnRight_Text 右移 Right 右移
FrmPointInfo_btnSaveAndNext_Text 保存并继续 Next 保存并继续
FrmPointInfo_btnSave_Text 保存 Save 保存
FrmPointInfo_btnShowPoint_Text 移动测试 Verification 移动测试
FrmPointInfo_btnUp_Text 上移 Up 上移
FrmPointInfo_btnUpdate_Text 更新坐标 Coordinate Update 更新坐标
FrmPointInfo_chbCheck_Text 设置为红外坐标校准点 Home position 设置为红外坐标校准点
FrmPointInfo_chbNeedCheck_Text 需要检测 Need to detect 需要检测
FrmPointInfo_chbNeedSoldering_Text 需要焊接 Need weld 需要焊接
FrmPointInfo_groupBox1_Text 组装信息 Assembly 组装信息
FrmPointInfo_groupBox2_Text 坐标  Axis 坐标
FrmPointInfo_group_Text 坐标 Coordinates 坐标
FrmPointInfo_label18_Text X:  X: X:
FrmPointInfo_label1_Text 物料编码: Name 物料编码:
FrmPointInfo_label20_Text Y: Y: Y:
FrmPointInfo_label2_Text 位号: Sequence 位号:
FrmPointInfo_label3_Text X:  X: X:
FrmPointInfo_label4_Text Y: Y: Y:
FrmPointInfo_label5_Text 元器件位置: Component Position 元器件位置:
FrmPointInfo_label6_Text 焊接时间: Weld Time: 焊接时间:
FrmPointInfo_label7_Text 焊接温度: Temperature 焊接温度:
FrmPointInfo_label8_Text 步进值: Step Value: 步进值:
FrmPointInfo_lblCurrPosition_Text 实时坐标  Real-Time Coordinate 实时坐标
FrmPointInfo_lblLight_Text 点亮度 : Luminance : 点亮度 :
FrmPointInfo_lblLineWidth_Text 像素: Boldness: 画笔宽度:
FrmPointInfo_lblName_Text 投影文字: Text: 投影文字:
FrmPointInfo_lblPolarities_Text 极性: Polarity: 极性
FrmPointInfo_lblSizeLength_Text 宽→: Margin: 横向大小→:
FrmPointInfo_lblSizeWidth_Text 高↓: Padding: 纵向大小↓:
FrmPointInfo_lblSize_Text 点大小 : Size : 点大小 :
FrmPointInfo_lblSpeedText_Text 步进值:1cm Step Value: 1cm 步进值:1cm
FrmPointInfo_lblStepValue_Text 步进值: Step: 步进值:
FrmPointInfo_lblYArea_Text Y轴范围 : Y Area : Y轴范围 :
FrmPointInfo_lbltype_Text 形状: Type: 点形状:
FrmPointInfo_lblxArea_Text X轴范围 : X Area : X轴范围 :
FrmPointInfo_lblx_Text X轴点坐标 : X : X轴点坐标 :
FrmPointInfo_lbly_Text Y轴点坐标 : Y : Y轴点坐标 :
FrmPointInfo_rdbImg_Text 实际坐标/mm actual coordinates/mm 实际坐标/mm
FrmPointInfo_rdbPro_Text 投影坐标/pixels projected coordinate/pixels 投影坐标/pixels
FrmPositionCalibration_Text 坐标校准 Coordinates Calibration 坐标校准
FrmPositionCalibration_btnCheck_Text 自动校准 Auto Coordinates 自动校准
FrmPositionCalibration_btnDown2_Text ↓ ↓ ↓
FrmPositionCalibration_btnDown_Text 下移 Down 下移
FrmPositionCalibration_btnExit_Text 退出 Exit 退出
FrmPositionCalibration_btnLeft2_Text ← ← ←
FrmPositionCalibration_btnLeft_Text 左移 Left 左移
FrmPositionCalibration_btnMove_Text 移动测试 Verification 移动测试
FrmPositionCalibration_btnNext_Text 保存并继续 Save and Continue 保存并继续
FrmPositionCalibration_btnOK_Text 完成校准 Complete Calibration 完成校准
FrmPositionCalibration_btnRight2_Text → → →
FrmPositionCalibration_btnRight_Text 右移 Right 右移
FrmPositionCalibration_btnS_Text 保存当前点 Save 保存当前点
FrmPositionCalibration_btnShowPoint_Text 移动测试 Verification 移动测试
FrmPositionCalibration_btnToOrg_Text 回中心点 Center 回中心点
FrmPositionCalibration_btnUp2_Text ↑ ↑ ↑
FrmPositionCalibration_btnUp_Text 上移 Up 上移
FrmPositionCalibration_btnUpdate_Text 更新坐标 Coordinate Update 更新坐标
FrmPositionCalibration_groupBox1_Text 校准点设置 Calibration Point Setting 校准点设置
FrmPositionCalibration_group_Text 坐标 Coordinates 坐标
FrmPositionCalibration_label8_Text 步进值: Step Value: 步进值:
FrmPositionCalibration_lblCurrInfo_Text (10,10 ) (10,10 ) (10,10 )
FrmPositionCalibration_lblCurrPosition_Text 实时坐标 Real-Time Coordinate 实时坐标
FrmPositionCalibration_lblLight_Text 点亮度 : Luminance : 点亮度 :
FrmPositionCalibration_lblSize_Text 点大小 : Size : 点大小 :
FrmPositionCalibration_lblSpeedText_Text 步进值:1cm Step Value: 1cm 步进值:1cm
FrmPositionCalibration_lblYArea_Text Y轴范围 : Y Area : Y轴范围 :
FrmPositionCalibration_lbltype_Text 形状: Type: 点形状:
FrmPositionCalibration_lblxArea_Text X轴范围 : X Area : X轴范围 :
FrmPositionCalibration_lblx_Text X轴点坐标 : X : X轴点坐标 :
FrmPositionCalibration_lbly_Text Y轴点坐标 : Y : Y轴点坐标 :
FrmPusicanTest_Text 位置列表 Position List 位置列表
FrmPusicanTest_btnAbsMove_Text 绝对运动  Absolute Motion 绝对运动
FrmPusicanTest_btnBack_Text 返回 Exit 返回
FrmPusicanTest_btnClearStatus_Text 清除控制器状态 Clear 清除控制器状态
FrmPusicanTest_btnGetStatus_Text 控制器状态 Controller Status 控制器状态
FrmPusicanTest_btnHomeMove_Text 原点返回 Home Move 原点返回
FrmPusicanTest_btnReadAll_Text 读取所有参数 Read Parameter 读取所有参数
FrmPusicanTest_btnRelMove_Text 相对运动 Relative Motion 相对运动
FrmPusicanTest_btnSetPosition_Text 设置 Set 设置
FrmPusicanTest_btnSpeedMove_Text 匀速运动 Constant Motion 匀速运动
FrmPusicanTest_btnStopMove_Text 停止运动 Stop 停止运动
FrmPusicanTest_btnWriteAll_Text 写入所有参数 Write Parameter 写入所有参数
FrmPusicanTest_checkBox1_Text 自动读取位置 Auto Read Position 自动读取位置
FrmPusicanTest_groupBox1_Text 选择运动节点 Select Motion Node 选择运动节点
FrmPusicanTest_groupBox2_Text 节点参数信息 Node Parameter 节点参数信息
FrmPusicanTest_groupBox5_Text 运动测试 Motion Test 运动测试
FrmPusicanTest_label11_Text 马达位置: Motor Position 马达位置:
FrmPusicanTest_label12_Text 转动方向: Rotation 转动方向:
FrmPusicanTest_label13_Text 细分数: Fine Fraction 细分数:
FrmPusicanTest_label14_Text 最大速度: Max Speed 最大速度:
FrmPusicanTest_label15_Text 启动速度: Start Speed 启动速度:
FrmPusicanTest_label16_Text 停止速度: Stop Speed 停止速度:
FrmPusicanTest_label17_Text 加速度系数: Acceleration Factor 加速度系数:
FrmPusicanTest_label18_Text 减速度系数:  Deceleration Factor 减速度系数:
FrmPusicanTest_label19_Text 步进模式: Step Mode 步进模式:
FrmPusicanTest_label1_Text 节点值: Node Value 节点值:
FrmPusicanTest_label20_Text 步进位置: Step Position 步进位置:
FrmPusicanTest_label22_Text 电流衰减: Current Attenuation 电流衰减:
FrmPusicanTest_label23_Text 峰值电流: Current Peak 峰值电流:
FrmPusicanTest_label2_Text 原点返回速度: Return Velocity of Origin: 原点返回速度:
FrmPusicanTest_lblCanMsg_Text 设备未连接 Device Unconnect 设备未连接
FrmPusicanTest_lkSetMaxSpeed_Text 设置 Set 设置
FrmPusicanTest_llblClearp_Text 清零位置 Zero Position 清零位置
FrmPusicanTest_nudAddSpeed_Text 0 0 0
FrmPusicanTest_nudDelSpeed_Text 0 0 0
FrmPusicanTest_nudFengzhi_Text 0 0 0
FrmPusicanTest_nudMaxSpeed_Text 0 0 0
FrmPusicanTest_nudShuaijian_Text 0 0 0
FrmPusicanTest_nudStartSpeed_Text 0 0 0
FrmPusicanTest_nudStopSpeed_Text 0 0 0
FrmPusicanTest_节点_Text 运动节点: Motion Node 运动节点:
FrmPutCom_Text 元器件库【元器件库A】备料中   元器件库【元器件库A】备料中
FrmPutCom_btnCancel_Text 结束 End 结束
FrmPutCom_btnNext_Text 下一个元器件 Next 下一个元器件
FrmPutCom_btnPre_Text 上一个元器件 Previous 上一个元器件
FrmPutCom_btnSaveCount_Text 保存数量 Save 保存数量
FrmPutCom_label1_Text 料盘位置: Plate Position 料盘位置:
FrmPutCom_label2_Text 物料编码: Material Code 物料编码:
FrmPutCom_label3_Text 数量: Quantity 数量:
FrmPutCom_label4_Text 位号: Tag Number 位号:
FrmPutCom_label5_Text 描述: Describe: 描述:
FrmPutCom_lblEndInfo_Text
FrmPutCom_lblLeftInfo_Text
FrmPutCom_lblMoveStr_Text 移动中 Moving 移动中
FrmPwd_Text 请输入密码 Please enter password 请输入密码
FrmPwd_btnBack_Text 返回 Back 返回
FrmPwd_btnNext_Text 确定 Confirm 确定
FrmPwd_label1_Text 请输入密码: Please enter password: 请输入密码:
FrmScanPutCom_Text 程序【43】元器件库【43】备料中 Program [43] Component Library [43] Replenishing 程序【43】元器件库【43】备料中
FrmScanPutCom_btnCancel_Text 结束 End 结束
FrmScanPutCom_btnSaveCount_Text 保存数量 Save Quantity 保存数量
FrmScanPutCom_label1_Text 料盘位置: Tray Position: 料盘位置:
FrmScanPutCom_label2_Text 物料编号: Material Number: 物料编号:
FrmScanPutCom_label3_Text 数量: Quantity: 数量:
FrmScanPutCom_label4_Text 位号: Position: 位号:
FrmScanPutCom_label5_Text 描述: Description: 描述:
FrmScanPutCom_label6_Text PN: PN: PN:
FrmScanPutCom_label7_Text 料盘位置: Pos: Pos:
FrmSelectPoint_Text 请选择组件 Please select a component 请选择组件
FrmSelectPoint_btnCancel_Text 取消 Cancel 取消
FrmSelectPoint_btnOk_Text 确定 OK 确定
FrmSelectPoint_chkScanMode_Text 扫码补料模式 Scan Replenishment Mode 扫码补料模式
FrmSureAddCom_Text 新增元器件 Add New Component 新增元器件
FrmSureAddCom_btnClose_Text 放弃添加 Cancel Addition 放弃添加
FrmSureAddCom_btnSave_Text 确认添加 Confirm Addition 确认添加
FrmSureAddCom_label1_Text 新元器件添加到以下程序 New Component Added to the Following Program 新元器件添加到以下程序
FrmSureAddCom_焊点列表_Text 列表 List 列表
FrmUpdatePwd_Text 密码修改 Password Modification 密码修改
FrmUpdatePwd_btnBack_Text 返回 Back 返回
FrmUpdatePwd_btnNext_Text 确定 Confirm 确定
FrmUpdatePwd_label1_Text 旧密码: Old Password : 旧密码:
FrmUpdatePwd_label2_Text 新密码: New Password: 新密码:
FrmWorkCount_Text 工作统计 Statistics 工作统计
FrmWorkCount_btnClearAll_Text 清理 Reset 清理
FrmWorkCount_btnClearToday_Text 清理 Reset 清理
FrmWorkCount_btnClose_Text 返回 Back 返回
FrmWorkCount_chbIsWork_Text 开启统计 Record 开启统计
FrmWorkCount_groupBox1_Text 整体工作统计 Overall 整体工作统计
FrmWorkCount_groupBox2_Text 今日工作统计 Today 今日工作统计
FrmWorkCount_label1_Text 开始时间: Start Time: 开始时间:
FrmWorkCount_label2_Text 工作数量: Assembly Finished: 工作数量:
FrmWorkCount_label5_Text 工作数量: Assembly Finished: 工作数量:
FrmWorkCount_label6_Text 开始时间: Start Time: 开始时间:
FrmWorkMenu_Text 请选择工作类型/选择模式 Mode Selection 请选择工作类型/选择模式
FrmWorkMenu_btnAutoSoldering_Text 自动检测 Auto Detection 自动检测
FrmWorkMenu_btnCheck_Text 检测 INSPECTION 检测
FrmWorkMenu_btnExit_Text 退出 Quit 退出
FrmWorkMenu_btnSoldering_Text 焊接 SOLDERING 焊接
FrmWorkMenu_btnTSAV_Text 组装 ASSEMBLY 组装
FrmWork_Text TSA_V工作  Neo Station TSA_V工作
FrmWork_btnCamera_Text 相机 Inspection 相机
FrmWork_btnCancel_Text 取消 Cancel 取消
FrmWork_btnCodeTest_Text 条码测试 Barcode Test 条码测试
FrmWork_btnGoHome_Text 复位 Resume 复位
FrmWork_btnNextPoint_Text 下一步 Next 下一步
FrmWork_btnPrePoint_Text 上一步 Last 上一步
FrmWork_btnResetAOI_Text 还原 Reset 还原
FrmWork_btnSave_Text 保存 Save 保存
FrmWork_btnStartWorking_Text 开始工作 Start 开始工作
FrmWork_btnStart_Text 启动 Initiliazation 启动
FrmWork_btnStopMove_Text 紧急停止 Emergency Stop 紧急停止
FrmWork_btnStopWork_Text 停止工作 Stop 停止工作
FrmWork_btnStop_Text 结束 Complete 结束
FrmWork_btnTest_Text 测试 Test 测试
FrmWork_btnUpateCount_Text 编辑数量 Quantity Edit 编辑数量
FrmWork_btnUpdateAutoTime_Text 更新 Update 更新
FrmWork_btnWorkInfo_Text 工作统计 Statistics 工作统计
FrmWork_gbBoardInfo_Text 全局图 PCB Top View 全局图
FrmWork_groupBox1_Text 组装信息: Assembly 组装信息:
FrmWork_groupBox2_Text 局部图 Operation Area View 局部图
FrmWork_groupBox3_Text 工作方式 Working Mode 工作方式
FrmWork_groupHand_Text 手势监控 Hand gesture monitoring 手势监控
FrmWork_label1_Text 描述: Description: 描述:
FrmWork_label2_Text 注意事项: Notice: 注意事项:
FrmWork_label3_Text 物料编码: Component: 物料编码:
FrmWork_label4_Text 料盘位置: Position: 料盘位置:
FrmWork_label5_Text 库存数量: Qty: 库存数量:
FrmWork_label6_Text 位号: Component Loc.: 位号:
FrmWork_label7_Text 间隔时间: Time Interval: 间隔时间:
FrmWork_label8_Text 秒 s 秒
FrmWork_lblComDes_Text 暂无 Not available 暂无
FrmWork_lblComName_Text 暂无 Not available 暂无
FrmWork_lblComNotices_Text 暂无 Not available 暂无
FrmWork_lblCount_Text 暂无 Not available 暂无
FrmWork_lblGuoBan_Text 过板模式 over-boarding mode 过板模式
FrmWork_lblLast_Text 注意:当前最后一步,即将开始新程序 Note: The last step is to start the new program. 注意:当前最后一步,即将开始新程序
FrmWork_lblMsg_Text 未开始工作 Offline 未开始工作
FrmWork_lblPartNum_Text 暂无 Not available 暂无
FrmWork_lblPause_Text 已暂停 Paused 已暂停
FrmWork_lblPointName_Text 暂无 Not available 暂无
FrmWork_lblPositionNum_Text 暂无 Not available 暂无
FrmWork_lblStart_Text 注意:新程序已开始,已到达第一个组装点 Note: New program, reached 1st position. 注意:新程序已开始,已到达第一个组装点
FrmWork_linkLabel1_Text 显示原图 Reset reduction
FrmWork_lkPutCom_Text 补料 Replenishment 补料
FrmWork_lklUpdateNum_Text 修改 Modify 修改
FrmWork_radioButton1_Text 脚踏工作 Foot Peddler 脚踏工作
FrmWork_radioButton2_Text 自动工作: Auto: 自动工作
GuobanMode 操作失败,当前为过板模式 Operation failed, currently in InLine mode 操作失败,当前为过板模式
HomeMoveTimeout 等待原点完成超时 Timeout waiting for the origin to complete 等待原点完成超时
IOConnectError  IO模块连接失败 I/O module connection failed.  IO模块连接失败
ImportComList 请先导入元器件库 Import Position 请先导入元器件库
ImportFile 请导入元件文件! Import Component File 请导入元件文件!
ImportPImage 请导入程序图片 Import Program Image 请导入程序图片
InChangeW 已在调宽中 It is already being broadened 已在调宽中
InfoCount 组件数量 Component Qty 组件数量
InitXFail 红外X轴初始化失败 Failed to initialize infrared X axis. 红外X轴初始化失败
InitYFail 红外Y轴初始化失败 Failed to initialize the infrared Y axis. 红外Y轴初始化失败
Inplace 已到位 Already in place 已到位
ItemTextUpdateP 更新为【{0}-{1}】的位置 Update the location of [{0}-{1}] 更新为【{0}-{1}】的位置
ItemText_AutoSort 自动排序 Sort List 自动排序
ItemText_Check 校准点 Calibratoin Point 校准点
ItemText_Delete 删除 Delete 删除
ItemText_Detial 详情 Details 详情
ItemText_Disable 禁用/启用 Disable/Enable 禁用/启用
ItemText_DisableAll 全部禁用 Disable All Item 全部禁用
ItemText_Down 下降 Down 下降
ItemText_EnableAll 全部启用 Enable All Item 全部启用
ItemText_Global 全局 Global 全局
ItemText_MoveTest 移动测试 Test 移动测试
ItemText_Up 上升 Up 上升
ItemText_UpdateN 更新为组装位置 Update for assembly location 更新为组装位置
Label_lblDes 描述: Description:
Label_lblNotes 注意事项: Notice:
Label_lblNum 库存数量: Qty:
Label_lblPn 物料编码: Component:
Label_lblPos 位置: Postion:
Length 长度 Length 长度
LineCheckHigh 流水线检测信号亮 Line detection signal on 线体检测信号亮
LineNotInitOk 设备未初始化完成 Device not initialized 设备未初始化完成
LineTimeOutMsg 流水线转动{0}-{1},等待【{2}】超时[{3}]秒 Pipeline rotation {0}-{1}, waiting for [{2}] timeout [{3}] seconds 流水线转动{0}-{1},等待【{2}】超时[{3}]秒
LineTurn 流水线转动中 Pipeline Rotation 流水线转动中
LineWidth 流水线宽度 Line body width 线体宽度
MPCBTips 点击下方PCB块可设置其相对PCB1的偏移(单位:mm)。未设置则按上方行/列间距均匀排布 Click the PCB block below to set its offset relative to PCB1 (Unit: mm). If not set, it will be arranged evenly according to the row/column spacing above. 点击下方PCB块可设置其相对PCB1的偏移(单位:mm)。未设置则按上方行/列间距均匀排布
MinPoint 至少需要校准{0}个点 At least {0} calibration point is required. 至少需要校准{0}个点
Move 移动中 Moving 移动中
MsgTitle 提示 Reminder 提示
NeedAdd 需要添加 Need to Add 需要添加
NewCom 新增元器件 Add Component 新增元器件
NexProText 下一个程序 Next Program 下一个程序
NoAirAlarm 未检测到气压信号 No air pressure signal. 未检测到气压信号
NoData 暂无 not available 暂无
NoPointExport 当前程序没有标记的焊点的,不需要导出 The current program didn't mark solder spot. It doesn't need to export 当前程序没有标记的焊点的,不需要导出
NoSaveBack 不保存直接返回? Return without Saving? 不保存直接返回?
NoZZh 未找到组装信息信息 No assembly information.SSEMBLY INFO. NOT FOUND 未找到组装信息信息
NotFindPN 未找到对应的PN={0},请重新扫码 PN={0} not found, please scan again 未找到对应的PN={0},请重新扫码
NotFindPNPos 未找到数据:PN={0},位置={1},请重新扫码 Data Not Found: PN={0}, Location={1}, Please Scan Again 未找到数据:PN={0},位置={1},请重新扫码
NotNeedUpdate 时间间隔未改变,不需要更新 The time interval has not changed and no update is required 时间间隔未改变,不需要更新
NotOpen 暂未开放 Temporarily isn't open. 暂未开放
OpenSeiralFail 打开串口{0}失败 Failed to open serial port {0} 打开串口{0}失败
PNameExist 程序名【{0}】已存在,请重新输入! Program 【{0}】Exists. Please rename. 程序名【{0}】已存在,请重新输入!
PWDianYa 请输入正常的电压(范围{0}-{1}) Please enter normal voltage (range {0}-{1}) 请输入正常的电压(范围{0}-{1})
PWIOPort 请输入正确的IO模块端口号 Please enter the correct IO module port number 请输入正确的IO模块端口号
PWIoIp 请输入正确的IO模块IP Please enter the correct IO module IP 请输入正确的IO模块IP
PWSureCopyPoint 确定复制?目标为{0}行,{1}列,X间距={2}, Y间距={3} Confirm Copy? Target is {0} Rows, {1} Columns, X Spacing={2}, Y Spacing={3} 确定复制?目标为{0}行,{1}列,X间距={2}, Y间距={3}
PWSureUPdateXY 程序【{0}】的组装位置将修正,偏移量X[{1}],Y[{2}],是否确定修正 The assembly position of the program [{0}] will be modified, offset X[{1}],Y[{2}], whether the correction is determined 程序【{0}】的组装位置将修正,偏移量X[{1}],Y[{2}],是否确定修正
PWSureXuanzhuan 以左下角为基准顺时针旋转{0}度? Rotate clockwise {0} degrees with the bottom left corner as the reference? 以左下角为基准顺时针旋转{0}度?
PWUpdateValue 请输入修正值 Please enter the correction 请输入修正值
PWXYDefaultPoint 请输入正确的XY待机点 Please enter the correct standby of XY 请输入正确的XY待机点
PWXYPianYi 所有程序的组装位置都将修正,偏移量X[{0}],Y[{1}],是否确定修正 The assembly position of all programs will be modified, offset X[{0}],Y[{1}], determine the correction 所有程序的组装位置都将修正,偏移量X[{0}],Y[{1}],是否确定修正
PartNAExist 元器件位号[{0}]已存在 The component number [{0}] already exists. 元器件位号[{0}]已存在
Pcb1Fixed PCB1作为基准,偏移固定为(0,0) PCB1 is used as the reference, and its offset is fixed at (0,0) PCB1作为基准,偏移固定为(0,0)
PnHasPos 元器件【{0}】已配置位置【{1}】,请重新输入位置 The component [{0}] has been configured at position [{1}], please re-enter the position 元器件【{0}】已配置位置【{1}】,请重新输入位置
PointInfoMsg 当前:第{0}步,剩余{1}步 Current: step {0}, remaining {1} step 当前:第{0}步,剩余{1}步
PointInfoMsg2 当前:第{0}步 Current: step {0} 当前:第{0}步
PositionError 位置:{0},{1}无效,请检查配置是否正确? Position:{0},{1}  invaild. Please check the configuration.  位置:{0},{1}无效,请检查配置是否正确?
PreNotEnd 上次调宽还未结束 The last adjustment of width has not yet ended 上次调宽还未结束
RNodeGoHome 旋转轴[{0}]原点返回完成 The rotation axis [{0}] is complete. 旋转轴[{0}]原点返回完成
RNodeOnLine 旋转轴[{0}][{1}]上线 Rotation axis [{0}][{1}] goes online 旋转轴[{0}][{1}]上线
RNodeToPosition 旋转轴[{0}]走到待机点[{1}] The rotation axis [{0}] goes to the standby point [{1}] 旋转轴[{0}]走到待机点[{1}]
SaveError 保存失败! Save failed 保存失败!
SaveOk 保存成功 Save OK 保存成功
ScanReplenish 扫码补料模式 Scan Replenishment Mode 扫码补料模式
SelectC 请选择元器件 Select Component 请选择元器件
SelectCPosition 请选择元器件料盘位置 Select Plate Position 请选择元器件料盘位置
SelectImagePosition 请先选择图片中的位置 Select position in the image. 请先选择图片中的位置
SelectModeMsg 料塔加载失败,是否进入过板模式 Tower loading failure, whether to enter the InLine mode 料塔加载失败,是否进入过板模式
SelectModeMsgOK 您已选择流水线过板模式 InLine mode has been selected 您已选择流水线过板模式
SelectP 请选择程序 Notice: Please select program. 请选择程序
SelectRightFile 请选择正确的文件(文件格式可以通过下载模板获得) Select right file (you need to download the template and file first) 请选择正确的文件(文件格式可以通过下载模板获得)
SelectZZh 请点击要保存的组装信息 Save assembly information. 请点击要保存的组装信息
StartError 启动失败 Start Error : 启动失败
State_End 已完成 Complete 已完成
State_NotStart 未开始 Waiting 未开始
State_Postiion 实时位置 Working 实时位置
StepValue 步进值 Step Value 步进值
SuddenDownMsg 收到急停信号,停止所有运动,设备断开连接 Received emergency stop signal, stop all movement, equipment disconnection 收到急停信号,停止所有运动,设备断开连接
Sure 确认 Notice 确认
SureCancelData 确认取消数据上传? Confirm cancellation? 确认取消数据上传?
SureChangeWidth 当前宽度[{0}],目标宽度[{1}],是否开始调宽? Current width [{0}], target width [{1}], whether to start adjusting the width? 当前宽度[{0}],目标宽度[{1}],是否开始调宽?
SureClearAll 确定清理所有统计信息 Determine to clean up all statistics 确定清理所有统计信息
SureClearToday 确定清理今日统计信息 Determine to clean up today's statistics 确定清理今日统计信息
SureDelCom 确认要删除元器件【{0}】吗 Sure to delete component【{0}】? 确认要删除元器件【{0}】吗
SureDelete 确认要删除该行数据吗 Sure to delete the row? 确认要删除该行数据吗
SureDeleteC 确认要删除元器件库【{0}】吗? Delete position【{0}】? 确认要删除元器件库【{0}】吗?
SureDeleteP 确认要删除程序【{0}】吗 Sure to delete【{0}】? 确认要删除程序【{0}】吗
SureDeleteSel 确定删除选中的数据? OK to delete the selected data? 确定删除选中的数据?
SureImport 元器件【{0}】配置了两个位置【{1}】和【{2}】,是否确定导入? Component【{0}】in two position【{1}】and【{2}】.  Still import 【{0}】? 元器件【{0}】配置了两个位置【{1}】和【{2}】,是否确定导入?
SureImportPn 位置【{0}】配置多个元器件【{1}】 Location [{0}] Configure multiple components [{1}] 位置【{0}】配置多个元器件【{1}】
SureImportPosition 元器件【{0}】配置多个位置【{1}】 The component [{0}] is configured with multiple locations [{1}] 元器件【{0}】配置多个位置【{1}】
SureImportPositionStr 是否确定导入 whether it is determined to import 是否确定导入?
SureReset 是否确定重置,重置后当前工作将结束 Determines reset, after reset the current work will end 是否确定重置,重置后当前工作将结束
SureUpdateMethod 确定修正{0}? Sure about the amendment?{0}? 确定修正{0}?
TimeNotVailid 输入的间隔时间无效 The input interval is invalid 输入的间隔时间无效
TimeOutMsg 重置等待[{0}]超时{1}分 Reset wait for [{0}] timeout {1} minutes 重置等待[{0}]超时{1}分
TrainOK 坐标校准完成 Coordinate calibration is complete. 坐标校准完成
Type10 极性_右方 Polarity_right 极性_右方
Type100 极性_自定义 Polarity_Custom 极性_自定义
Type11 极性_左上方 Polarity_upper-left 极性_左上方
Type12 极性_右上方 Polarity_upper-right 极性_右上方
Type13 极性_左下方 Polarity_bottom-left 极性_左下方
Type14 极性_右下方 Polarity_bottom-right 极性_右下方
Type7 极性_上方 Polarity_up 极性_上方
Type8 极性_下方 Polarity_botton 极性_下方
Type9 极性_左方 Polarity_left 极性_左方
Type_None 无 None 无
UpdateCNumOk 元器件【{0}】的数量已更新为【{1}】 Component 【{0}】amount change to 【{1}】 元器件【{0}】的数量已更新为【{1}】
UpdateOk 修正完成 Fix is complete. 修正完成
UpdateTOK 已更新自动工作时间间隔为{0}秒 Updated automatic working time interval is {0} seconds 已更新自动工作时间间隔为{0}秒
UploadFile 请上传程序文件 Please upload the program file. 请上传程序文件
UserStop 用户中止 Suspend 用户中止
WBasePointP 请输入有效的基准点坐标 Please enter a valid reference point coordinate. 请输入有效的基准点坐标
WPointP 请输入有效的右下角坐标 Please enter valid lower right coordinates. 请输入有效的右下角坐标
WaitChangeWOk 等待目标位置{0}超时 Wait for the target location {0} time out 等待目标位置{0}超时
WaitTimeOutMsg 组装中,等待【{0}】超时 已等待[{1}]秒 In assembly, waiting for [{0}] timeout has waited for [{1}] seconds 组装中,等待【{0}】超时 已等待[{1}]秒
WeldEndMsg 组装完成,点击 '确定' 开始检测,点击 '取消' 结束工作 "After assembly, click ""ok"" button to enter AOI detection,click 'cancel' to end the work" 组装完成,点击 '确定' 开始检测,点击 '取消' 结束工作
Width 宽度 Width 宽度
WidthInvalid 宽度无效 The width is invalid. 宽度无效
WorkInfoMsg 已工作{0},{1}块电路板 Working {0},{1} circuit board 已工作{0},{1}块电路板
WriteCName 请先输入元器件库名称 Position Name 请先输入元器件库名称
WriteComName 请输入元器件物料编码 Enter Component Material Code 请输入元器件物料编码
WriteComNum 请输入元器件数量 Enter Component Quantity 请输入元器件数量
WriteLength 请输入宽度 Enter Width 请输入宽度
WriteLineWidth 请输入流水线宽度 Please enter the line width 请输入线体宽度
WriteName 请输入物料编码 Enter Material Code 请输入物料编码
WriteNum 请输入正确的数量 Enter Right Quantity 请输入正确的数量
WritePName 请输入程序名称! Programe Name 请输入程序名称!
WritePartName 请输入元器件位号 Please enter the component number. 请输入元器件位号
WritePartNumber 请输入位号 Enter Tag Number 请输入位号
WriteRightTemp 请输入正确的焊接温度 Please enter correct welding temperature. 请输入正确的焊接温度
WriteRightTime 请输入正确的焊接时间 Please enter correct welding time. 请输入正确的焊接时间
WriteWidth 请输入长度 Enter Length 请输入长度
XTGoHome XY轴回待机点 Axis XY Reset XY轴回待机点
arrive 到达目标位置 Reach target position 到达目标位置
boardName 程序名称 Program Name 程序名称
bomName Bom名称 BOM Name Bom名称
comInitError {0}初始化失败 {0}Initialization failure {0}初始化失败
comOpenFail 串口{0}打开失败 Serial port {0} open failed 串口{0}打开失败
getBarcode 输入条码 Enter barcode 输入条码
handCount 次数 Times 次数
handTime 总时长 Total Time 总时长
handWork 组装中 Assembling 组装中
homeMove 原点返回 Return to origin 原点返回
isRestart 更改此模式需要重新加载设备,是否现在重启软件? Changing this mode requires reloading the device, whether to restart the software now? 更改此模式需要重新加载设备,是否现在重启软件?
iscontinue 有未结束的程序'{0}',是否继续? There is an open program '{0}', whether to continue or not? 有未结束的程序'{0}',是否继续?
poingtNum 组装数量 Assembly Quantity 组装数量
shortageInfo 缺料信息: Outage information : 缺料信息:
smtpoint_select 请选择组件 Component Selection 请选择组件
xyAxisArrive XY轴目标 XYaxial target XY轴目标
{0}秒后自动完成 {0}秒后自动完成 Automatically complete after {0} seconds {0}秒后自动完成
{0}秒后自动检测 {0}秒后自动检测 Automatically detect after {0} seconds {0}秒后自动检测
不使用AOI 不使用AOI Without AOI 不使用AOI
位号 位号 Tag Number 位号
修改 修改 Modify 修改
修改密码成功 修改密码成功 Password is changed. 修改密码成功
修改用户失败 修改用户失败 修改用户失败
修改用户成功 修改用户成功 修改用户成功
元器件库模板 元器件库模板 Component Library Template 元器件库模板
元器件数量不足 元器件数量不足 Component out of stock 元器件数量不足
元器件数量不足,请及时补充 元器件数量不足,请及时补充 Component out of stock, please replenish 元器件数量不足,请及时补充
删除 删除 Delete 删除
删除用户失败 删除用户失败 删除用户失败
删除用户成功 删除用户成功 删除用户成功
加载AOI失败 加载AOI失败 Failed to load AOI 加载AOI失败
加载AOI失败. Load AOI profile failed.
取消条码输入 取消条码输入 Cancel barcode input 取消条码输入
名称 名称 Point Name 名称
图像循环已停止 图像循环已停止 The image loop has been stopped. 图像循环已停止
增加 增加 Add 增加
宽度 宽度 ↑ Width ↑ 宽度 ↑
密码 密码 Password 密码
导入失败:程序名已存在 导入失败:程序名已存在 Import failed: the program name already exists 导入失败:程序名已存在
导入成功 导入成功 Imported 导入成功
已取消更改 已取消更改 Cancelled 已取消更改
开始自动检测 开始自动检测 Start automatic detection 开始自动检测
成功停止图像循环 成功停止图像循环 Stop image loop successfully. 成功停止图像循环
成功导出程序到文件: 成功导出程序到文件: The program has been exported to file: 成功导出程序到文件:
打开串口失败 打开串口失败 Failed to open serial port. 打开串口失败
执行检测失败 执行检测失败 Failed to execute test 执行检测失败
提示 提示 reminder 提示
新增组装点 新增组装点 New Assembly Point 新增组装点
时间 时间 Creat time 时间
是否更改中心点 是否更改中心点 Whether to change the center point. 是否更改中心点
更改完成 更改完成 Changed 更改完成
权限 权限 Authority 权限
条码 条码 Barcode 条码
查询出错 查询出错 Query Error
没有下一个点 没有下一个点 There's no next point. 没有下一个点
没有找到记录 没有找到记录 No records found
注意事项 注意事项 Notice 注意事项
添加用户失败 添加用户失败 Failed to add user 添加用户失败
添加用户成功 添加用户成功 User is added. 添加用户成功
清先等待预热结束 清先等待预热结束 Please wait for preheating end. 清先等待预热结束
清先配置校准版 清先配置校准版 Please configure the calibration version first. 清先配置校准版
用户 用户 User Name 用户
用户修改失败 Failed to modify user
用户修改成功 User is modified.
用户删除失败 Failed to delete user
用户删除成功 User is deleted.
用户名 用户名 User Name 用户名
用户名或密码错误 用户名或密码错误 Incorrect user name or password 用户名或密码错误
用户管理 用户管理 User Management 用户管理
确定不保存直接退出? 确定不保存直接退出? Sure to exit directly without saving? 确定不保存直接退出?
确定修改用户信息 确定修改用户信息 Confirm to modify user information 确定修改用户信息
确定取消条码输入? 确定取消条码输入? Make sure to cancel barcode input? 确定取消条码输入?
确定更新所有程序的组装点信息 确定更新所有程序的组装点信息 确定更新所有程序的组装点信息
确定更新所有程序的组装点信息? Update the projection modification?
确定更新程序【{0}】的组装点信息 确定更新程序【{0}】的组装点信息 Determine the assembly point information for the update program [{0}] 确定更新程序【{0}】的组装点信息
确认删除用户 确认删除用户 Confirm to delete user 确认删除用户
禁用 禁用 Disabled 禁用
程序名称 程序名称 Program Name 程序名称
程序类型 程序类型 Program Type 程序类型
结果 结果 Result 结果
编号 编号 Point Number 编号
至少需要校准五个点 至少需要校准五个点 At least five points need to be calibrated. 至少需要校准五个点
获取相机图片失败 获取相机图片失败 Failed to get camera picture 获取相机图片失败
解析程序失败,请选择正确文件 解析程序失败,请选择正确文件 The parser failed. Please select the correct file. 解析程序失败,请选择正确文件
请先去校准界面完成校准 请先去校准界面完成校准 Please go to the calibration interface to complete the calibration. 请先去校准界面完成校准
请先设置至少1个校准点 请先设置至少1个校准点 Please set at least 1 calibration point first. 请先设置至少1个校准点
请先设置至少五个校准点 请先设置至少五个校准点 Set at least five calibration points first. 请先设置至少五个校准点
请点击完成按钮结束检测 请点击完成按钮结束检测 Please click the finish button to end the detection. 请点击完成按钮结束检测
请输入PCB板条码 请输入PCB板条码 Please enter the PCB bar code. 请输入PCB板条码
请输入正确的密码 请输入正确的密码 Please enter the correct password. 请输入正确的密码
请输入正确的接口地址 Please enter the correct interface address.
请输入正确的新密码 请输入正确的新密码 Please enter the correct new password. 请输入正确的新密码
请输入正确的旧密码 请输入正确的旧密码 Please enter the correct old password. 请输入正确的旧密码
请输入正确的点大小 请输入正确的点大小 Please enter the correct point size. 请输入正确的点大小
请选择正确的串口 请选择正确的串口 Please select the correct serial port. 请选择正确的串口
还未开始工作,没有需要标记的焊点! 还未开始工作,没有需要标记的焊点! It has not started working yet. There are no welding spots to mark! 还未开始工作,没有需要标记的焊点!
退出 退出 Exit 退出
长度 长度→ Length→ 长度→
预热倒计时: 预热剩余时间: Preheating Remaining Time: 预热剩余时间:
BoardNull 板卡信息为空,无法测试 The board card information is empty, so testing cannot be performed. 板卡信息为空,无法测试
PcbRowValueInvalid 行间距必须大于0 The line spacing must be greater than 0. 行间距必须大于0
PcbColValueInvalid 列间距必须大于0 The column spacing must be greater than 0. 列间距必须大于0
PcbRowColInvalid 行列数必须都大于等于1 Both the number of rows and columns must be greater than or equal to 1. 行列数必须都大于等于1
NoPoints 当前程序没有组装点,无法测试 The current program has no assembly points, so testing cannot be performed. 当前程序没有组装点,无法测试
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!