请问各位大侠们,有没有人可以详细的告诉我怎么做啊?
我目前对翻译类的软件原理了解程度为零。。。希望高手可以耐心的做一个详细讲解。
谢谢谢谢。。
18 个解决方案
#1
类似于金山的咚咚?
#2
winForm 不会要是webform会。
#3
我们用的是在config里面设置多国语言。然后用一个语言类来控制那个语言。
还有一种是JS的多国语言。
还有一种是JS的多国语言。
#4
进来学习了
#5
什么都行。。就是桌面应用程序用的。只要是C#的代码就可以。
还有就是请高手一定说的详细的,小弟接触编程的时间不长啊。。。
目前希望时间的功能如下:
文本框1:输入韩文==》点击按钮或其他途径==》文本框2:显示对应中文。
文本框1:输入中文==》点击按钮或其他途径==》文本框2:显示对应韩文。
还有就是请高手一定说的详细的,小弟接触编程的时间不长啊。。。
目前希望时间的功能如下:
文本框1:输入韩文==》点击按钮或其他途径==》文本框2:显示对应中文。
文本框1:输入中文==》点击按钮或其他途径==》文本框2:显示对应韩文。
#6
我给你找找那个转换语言类吧。希望对你有帮助,我要分。多给点
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using FSSoft.Common;
using FSSoft.Common.IO;
using FSSoft.Common.TextUtil;
namespace FSSoft.Web.UI
{
/// <summary>
/// 多語言操作類。
/// </summary>
public sealed class Language
{
private static readonly string SessionKey=typeof(Language).FullName;
/// <summary>
/// 存储或取得預載入語言信息的相關配置文件的絕對路徑集合。
/// </summary>
public static ArrayList config_Load_Paths=new ArrayList();
private static short sysOnlySingleLanguageKBN_Value=-1;
/// <summary>
/// 配置系統只採用單一語言(默認採用多語言)。
/// </summary>
/// <remarks>若系統採用多語言則值為-1。</remarks>
public static short SysOnlySingleLanguageKBN_Value
{
set
{
if(value!=-1)
{
short[] LanguageKBNValues=(short[])Enum.GetValues(typeof(LanguageKBN));
bool legality=false;
foreach(short LanguageKBNValue in LanguageKBNValues)
{
if(LanguageKBNValue==value)
{
legality=true;
break;
}
}
if(!legality)
{
throw new Exception(consts_Web.UI_LANGUAGE_EX_INFO4);
}
}
sysOnlySingleLanguageKBN_Value=value;
}
get
{
return sysOnlySingleLanguageKBN_Value;
}
}
private static DataSet[] ds=null;
private static DataSet DS(string configName)
{
if(ds==null&&config_Load_Paths.Count>0)
{
ds=new DataSet[config_Load_Paths.Count];
try
{
for(int i=0;i<config_Load_Paths.Count;i++)
{
ds[i]=XMLUtil.InitXml((string)config_Load_Paths[i]);
}
}
catch(Exception e)
{
ds=null;
throw e;
}
}
foreach(DataSet getds in ds)
{
if(getds.DataSetName==configName)
{
return getds;
}
}
throw new Exception(string.Format(consts_Web.UI_LANGUAGE_EX_INFO3,configName));
}
/// <summary>
/// 设置或取得用户当前语言设置。
/// </summary>
public static LanguageKBN Current
{
set
{
HttpContext.Current.Session.Add(SessionKey,value);
}
get
{
if(sysOnlySingleLanguageKBN_Value!=-1)
return (LanguageKBN)Enum.Parse(typeof(LanguageKBN),sysOnlySingleLanguageKBN_Value.ToString());
if(HttpContext.Current.Session[SessionKey]==null)
{
string CurrentLanguage=HttpContext.Current.Request.UserLanguages[0];
switch(CurrentLanguage.Substring(0,2))
{
case "zh":
if(CurrentLanguage=="zh-cn")
return LanguageKBN.CHS;
else
return LanguageKBN.CHT;
case "ja":
return LanguageKBN.JP;
case "ko":
return LanguageKBN.KR;
default:
return LanguageKBN.EN;
}
}
else
{
return (LanguageKBN)HttpContext.Current.Session[SessionKey];
}
}
}
/// <summary>
/// 根據Msg.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <returns>返回文本值。</returns>
public static string Msg(string key)
{
return TAG_Value(key,consts_Web.UI_LANGUAGE_CONFIG_MSG_NAME);
}
/// <summary>
/// 根據Msg.config内已有的key以及指定的語言區分進行文本的取得。
/// </summary>
/// <param name="key">Msg.config内已有的key。</param>
/// <param name="languagekbn">指定的語言區分對象。</param>
/// <returns>返回文本值。</returns>
public static string Msg(string key,LanguageKBN languagekbn)
{
return TAG_Value(key,consts_Web.UI_LANGUAGE_CONFIG_MSG_NAME,true,languagekbn);
}
/// <summary>
/// 根據*.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <param name="configName">*对应名称</param>
/// <returns>返回文本值。</returns>
public static string TAG_Value(string key,string configName)
{
return TAG_Value(key,configName,false,LanguageKBN.EN);
}
/// <summary>
/// 根據*.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <param name="configName">*对应名称</param>
/// <param name="IsSetLanguageKBN">是否通過最後一個參數(languagekbn)來進行文本的取得。</param>
/// <param name="languagekbn">指定文本取得依據的語言區分對象。</param>
/// <returns>返回文本值。</returns>
private static string TAG_Value(string key,string configName,bool IsSetLanguageKBN,LanguageKBN languagekbn)
{
DataRow[] DDR=DS(configName).Tables[0].Select(string.Format(consts_Web.UI_LANGUAGE_KEY_EXPRESSION,key));
switch(DDR.Length)
{
case 0:
Console.WriteLine(consts_Web.UI_LANGUAGE_EX_INFO1,configName+consts_Web.UI_LANGUAGE_CONFIG_SUFFIXNAME,key);
return consts_Web.UI_LANGUAGE_CONFIG_NOKEY_TEXT;
case 1:
break;
default:
throw new Exception(
string.Format(consts_Web.UI_LANGUAGE_EX_INFO2,
configName+consts_Web.UI_LANGUAGE_CONFIG_SUFFIXNAME,DDR.Length,key));
}
string CurrentLanguageKBN=null;
if(sysOnlySingleLanguageKBN_Value==-1)
{
if(IsSetLanguageKBN)
{
if(SysOnlySingleLanguageKBN_Value!=-1&&SysOnlySingleLanguageKBN_Value!=(short)languagekbn)
throw new Exception(consts_Web.UI_LANGUAGE_EX_INFO6);
CurrentLanguageKBN=languagekbn.ToString();
}
else
{
CurrentLanguageKBN=Current.ToString();
}
}
else
{
CurrentLanguageKBN=Enum.GetName(typeof(LanguageKBN),sysOnlySingleLanguageKBN_Value);
}
if(CurrentLanguageKBN==LanguageKBN.CHT.ToString())
{
return StringConvert.SChineseToTChinese(DDR[0][LanguageKBN.CHS.ToString()].ToString());
}
else
{
return DDR[0][CurrentLanguageKBN].ToString();
}
}
/// <summary>
/// 對Web界面控件文本進行多語言切換。
/// </summary>
/// <param name="ContainerCtl">包含所有服務器控件的容器控件。</param>
/// <remarks>只對遵照命名規則的服務器控件的文本進行語言切換。</remarks>
public static void ChangeControlsText(Control ContainerCtl)
{
if(SysOnlySingleLanguageKBN_Value!=-1)
throw new Exception(consts_Web.UI_LANGUAGE_EX_INFO5);
foreach(Control ctr in ContainerCtl.Controls)
{
if(ctr.ID!=null&&ctr.ID.StartsWith(consts_Web.UI_LANGUAGE_TAGPREFIX))
{
string[] ctrID=ctr.ID.Split('_');
if(ctrID.Length>1)
{
string Value=TAG_Value(ctrID[1],consts_Web.UI_LANGUAGE_CONFIG_TEXT_NAME);
switch(ctr.GetType().Name)
{
case "Label":
((Label)ctr).Text=Value;
break;
case "LinkButton":
((LinkButton)ctr).Text=Value;
break;
case "CButton":
((Button)ctr).Text=Value;
break;
//...
}
}
}
if(ctr.HasControls())
{
ChangeControlsText(ctr);
}
}
}
}
}
#7
大哥~~~~我看不懂。也不会用啊。。
#8
去看MSDN中“全球化和本地化”部分章节...
ps:别指望可以自动翻译韩文中文...全部都得人工翻译...程序只能按事先翻译好的显示而已...
ps:别指望可以自动翻译韩文中文...全部都得人工翻译...程序只能按事先翻译好的显示而已...
#9
^ō^ 同意楼上...
#10
555555555555555555555555555555555
#11
关注
#12
樓主要的這種,首先要有一個對照的詞庫
#13
<?xml version="1.0" encoding="utf-8"?>
<Text>
<TAG key="0001" CHS="国际贸易-供应链系统" JP="" KR="치과병원예약시스템" EN="" />
<TAG key="0002" CHS="中文" JP="" KR="중문등록" EN="" />
<TAG key="0003" CHS="韩文" JP="" KR="한문등록" EN="" />
<TAG key="0004" CHS="国际贸易" JP="" KR="" EN="" />
<TAG key="0005" CHS="供应链系统" JP="" KR="" EN="" />
<TAG key="00001" CHS="添加药品类别-" JP="" KR="약품분류추가" EN="" />
</Text>
这个写在在Text.config里面,假设一个Label吧你起名字就的LG_lblName 其余的控件都的起这样的前面加上LG_XX
然后在aspx里面的<form> <asp:Panel ID="LG_Panel" runat="server" Width="100%">
<table><tr><td>ddd</td></tr></table></asp:Panel ></form>这些都是必须的。然后调用的时候也就是我
给你的那个类在上面
CS里面这样调用 Language.ChangeControlsText(LG_Panel);
支持多国语言。
<Text>
<TAG key="0001" CHS="国际贸易-供应链系统" JP="" KR="치과병원예약시스템" EN="" />
<TAG key="0002" CHS="中文" JP="" KR="중문등록" EN="" />
<TAG key="0003" CHS="韩文" JP="" KR="한문등록" EN="" />
<TAG key="0004" CHS="国际贸易" JP="" KR="" EN="" />
<TAG key="0005" CHS="供应链系统" JP="" KR="" EN="" />
<TAG key="00001" CHS="添加药品类别-" JP="" KR="약품분류추가" EN="" />
</Text>
这个写在在Text.config里面,假设一个Label吧你起名字就的LG_lblName 其余的控件都的起这样的前面加上LG_XX
然后在aspx里面的<form> <asp:Panel ID="LG_Panel" runat="server" Width="100%">
<table><tr><td>ddd</td></tr></table></asp:Panel ></form>这些都是必须的。然后调用的时候也就是我
给你的那个类在上面
CS里面这样调用 Language.ChangeControlsText(LG_Panel);
支持多国语言。
#14
忘了起名字的时候假设国际贸易-供应链系统叫这个名字吧 ,那这个Label吧你起名字就的叫LG_0001必须和
Text.Config里面的 对起来 <TAG key="0001" CHS="国际贸易-供应链系统" JP=""
KR="치과병원예약시스템" EN="" />
Text.Config里面的 对起来 <TAG key="0001" CHS="国际贸易-供应链系统" JP=""
KR="치과병원예약시스템" EN="" />
#15
如果用数据库就简单多了,access都可以
#16
这个可以用被人的接口,或者数据库
估计要买的,自己做划不来,时间太长,也很麻烦。
估计要买的,自己做划不来,时间太长,也很麻烦。
#17
谢谢大家
#18
你这代码中有部分引用了其它类呀。。请一起放出来吧
#1
类似于金山的咚咚?
#2
winForm 不会要是webform会。
#3
我们用的是在config里面设置多国语言。然后用一个语言类来控制那个语言。
还有一种是JS的多国语言。
还有一种是JS的多国语言。
#4
进来学习了
#5
什么都行。。就是桌面应用程序用的。只要是C#的代码就可以。
还有就是请高手一定说的详细的,小弟接触编程的时间不长啊。。。
目前希望时间的功能如下:
文本框1:输入韩文==》点击按钮或其他途径==》文本框2:显示对应中文。
文本框1:输入中文==》点击按钮或其他途径==》文本框2:显示对应韩文。
还有就是请高手一定说的详细的,小弟接触编程的时间不长啊。。。
目前希望时间的功能如下:
文本框1:输入韩文==》点击按钮或其他途径==》文本框2:显示对应中文。
文本框1:输入中文==》点击按钮或其他途径==》文本框2:显示对应韩文。
#6
我给你找找那个转换语言类吧。希望对你有帮助,我要分。多给点
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using FSSoft.Common;
using FSSoft.Common.IO;
using FSSoft.Common.TextUtil;
namespace FSSoft.Web.UI
{
/// <summary>
/// 多語言操作類。
/// </summary>
public sealed class Language
{
private static readonly string SessionKey=typeof(Language).FullName;
/// <summary>
/// 存储或取得預載入語言信息的相關配置文件的絕對路徑集合。
/// </summary>
public static ArrayList config_Load_Paths=new ArrayList();
private static short sysOnlySingleLanguageKBN_Value=-1;
/// <summary>
/// 配置系統只採用單一語言(默認採用多語言)。
/// </summary>
/// <remarks>若系統採用多語言則值為-1。</remarks>
public static short SysOnlySingleLanguageKBN_Value
{
set
{
if(value!=-1)
{
short[] LanguageKBNValues=(short[])Enum.GetValues(typeof(LanguageKBN));
bool legality=false;
foreach(short LanguageKBNValue in LanguageKBNValues)
{
if(LanguageKBNValue==value)
{
legality=true;
break;
}
}
if(!legality)
{
throw new Exception(consts_Web.UI_LANGUAGE_EX_INFO4);
}
}
sysOnlySingleLanguageKBN_Value=value;
}
get
{
return sysOnlySingleLanguageKBN_Value;
}
}
private static DataSet[] ds=null;
private static DataSet DS(string configName)
{
if(ds==null&&config_Load_Paths.Count>0)
{
ds=new DataSet[config_Load_Paths.Count];
try
{
for(int i=0;i<config_Load_Paths.Count;i++)
{
ds[i]=XMLUtil.InitXml((string)config_Load_Paths[i]);
}
}
catch(Exception e)
{
ds=null;
throw e;
}
}
foreach(DataSet getds in ds)
{
if(getds.DataSetName==configName)
{
return getds;
}
}
throw new Exception(string.Format(consts_Web.UI_LANGUAGE_EX_INFO3,configName));
}
/// <summary>
/// 设置或取得用户当前语言设置。
/// </summary>
public static LanguageKBN Current
{
set
{
HttpContext.Current.Session.Add(SessionKey,value);
}
get
{
if(sysOnlySingleLanguageKBN_Value!=-1)
return (LanguageKBN)Enum.Parse(typeof(LanguageKBN),sysOnlySingleLanguageKBN_Value.ToString());
if(HttpContext.Current.Session[SessionKey]==null)
{
string CurrentLanguage=HttpContext.Current.Request.UserLanguages[0];
switch(CurrentLanguage.Substring(0,2))
{
case "zh":
if(CurrentLanguage=="zh-cn")
return LanguageKBN.CHS;
else
return LanguageKBN.CHT;
case "ja":
return LanguageKBN.JP;
case "ko":
return LanguageKBN.KR;
default:
return LanguageKBN.EN;
}
}
else
{
return (LanguageKBN)HttpContext.Current.Session[SessionKey];
}
}
}
/// <summary>
/// 根據Msg.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <returns>返回文本值。</returns>
public static string Msg(string key)
{
return TAG_Value(key,consts_Web.UI_LANGUAGE_CONFIG_MSG_NAME);
}
/// <summary>
/// 根據Msg.config内已有的key以及指定的語言區分進行文本的取得。
/// </summary>
/// <param name="key">Msg.config内已有的key。</param>
/// <param name="languagekbn">指定的語言區分對象。</param>
/// <returns>返回文本值。</returns>
public static string Msg(string key,LanguageKBN languagekbn)
{
return TAG_Value(key,consts_Web.UI_LANGUAGE_CONFIG_MSG_NAME,true,languagekbn);
}
/// <summary>
/// 根據*.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <param name="configName">*对应名称</param>
/// <returns>返回文本值。</returns>
public static string TAG_Value(string key,string configName)
{
return TAG_Value(key,configName,false,LanguageKBN.EN);
}
/// <summary>
/// 根據*.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <param name="configName">*对应名称</param>
/// <param name="IsSetLanguageKBN">是否通過最後一個參數(languagekbn)來進行文本的取得。</param>
/// <param name="languagekbn">指定文本取得依據的語言區分對象。</param>
/// <returns>返回文本值。</returns>
private static string TAG_Value(string key,string configName,bool IsSetLanguageKBN,LanguageKBN languagekbn)
{
DataRow[] DDR=DS(configName).Tables[0].Select(string.Format(consts_Web.UI_LANGUAGE_KEY_EXPRESSION,key));
switch(DDR.Length)
{
case 0:
Console.WriteLine(consts_Web.UI_LANGUAGE_EX_INFO1,configName+consts_Web.UI_LANGUAGE_CONFIG_SUFFIXNAME,key);
return consts_Web.UI_LANGUAGE_CONFIG_NOKEY_TEXT;
case 1:
break;
default:
throw new Exception(
string.Format(consts_Web.UI_LANGUAGE_EX_INFO2,
configName+consts_Web.UI_LANGUAGE_CONFIG_SUFFIXNAME,DDR.Length,key));
}
string CurrentLanguageKBN=null;
if(sysOnlySingleLanguageKBN_Value==-1)
{
if(IsSetLanguageKBN)
{
if(SysOnlySingleLanguageKBN_Value!=-1&&SysOnlySingleLanguageKBN_Value!=(short)languagekbn)
throw new Exception(consts_Web.UI_LANGUAGE_EX_INFO6);
CurrentLanguageKBN=languagekbn.ToString();
}
else
{
CurrentLanguageKBN=Current.ToString();
}
}
else
{
CurrentLanguageKBN=Enum.GetName(typeof(LanguageKBN),sysOnlySingleLanguageKBN_Value);
}
if(CurrentLanguageKBN==LanguageKBN.CHT.ToString())
{
return StringConvert.SChineseToTChinese(DDR[0][LanguageKBN.CHS.ToString()].ToString());
}
else
{
return DDR[0][CurrentLanguageKBN].ToString();
}
}
/// <summary>
/// 對Web界面控件文本進行多語言切換。
/// </summary>
/// <param name="ContainerCtl">包含所有服務器控件的容器控件。</param>
/// <remarks>只對遵照命名規則的服務器控件的文本進行語言切換。</remarks>
public static void ChangeControlsText(Control ContainerCtl)
{
if(SysOnlySingleLanguageKBN_Value!=-1)
throw new Exception(consts_Web.UI_LANGUAGE_EX_INFO5);
foreach(Control ctr in ContainerCtl.Controls)
{
if(ctr.ID!=null&&ctr.ID.StartsWith(consts_Web.UI_LANGUAGE_TAGPREFIX))
{
string[] ctrID=ctr.ID.Split('_');
if(ctrID.Length>1)
{
string Value=TAG_Value(ctrID[1],consts_Web.UI_LANGUAGE_CONFIG_TEXT_NAME);
switch(ctr.GetType().Name)
{
case "Label":
((Label)ctr).Text=Value;
break;
case "LinkButton":
((LinkButton)ctr).Text=Value;
break;
case "CButton":
((Button)ctr).Text=Value;
break;
//...
}
}
}
if(ctr.HasControls())
{
ChangeControlsText(ctr);
}
}
}
}
}
#7
大哥~~~~我看不懂。也不会用啊。。
#8
去看MSDN中“全球化和本地化”部分章节...
ps:别指望可以自动翻译韩文中文...全部都得人工翻译...程序只能按事先翻译好的显示而已...
ps:别指望可以自动翻译韩文中文...全部都得人工翻译...程序只能按事先翻译好的显示而已...
#9
^ō^ 同意楼上...
#10
555555555555555555555555555555555
#11
关注
#12
樓主要的這種,首先要有一個對照的詞庫
#13
<?xml version="1.0" encoding="utf-8"?>
<Text>
<TAG key="0001" CHS="国际贸易-供应链系统" JP="" KR="치과병원예약시스템" EN="" />
<TAG key="0002" CHS="中文" JP="" KR="중문등록" EN="" />
<TAG key="0003" CHS="韩文" JP="" KR="한문등록" EN="" />
<TAG key="0004" CHS="国际贸易" JP="" KR="" EN="" />
<TAG key="0005" CHS="供应链系统" JP="" KR="" EN="" />
<TAG key="00001" CHS="添加药品类别-" JP="" KR="약품분류추가" EN="" />
</Text>
这个写在在Text.config里面,假设一个Label吧你起名字就的LG_lblName 其余的控件都的起这样的前面加上LG_XX
然后在aspx里面的<form> <asp:Panel ID="LG_Panel" runat="server" Width="100%">
<table><tr><td>ddd</td></tr></table></asp:Panel ></form>这些都是必须的。然后调用的时候也就是我
给你的那个类在上面
CS里面这样调用 Language.ChangeControlsText(LG_Panel);
支持多国语言。
<Text>
<TAG key="0001" CHS="国际贸易-供应链系统" JP="" KR="치과병원예약시스템" EN="" />
<TAG key="0002" CHS="中文" JP="" KR="중문등록" EN="" />
<TAG key="0003" CHS="韩文" JP="" KR="한문등록" EN="" />
<TAG key="0004" CHS="国际贸易" JP="" KR="" EN="" />
<TAG key="0005" CHS="供应链系统" JP="" KR="" EN="" />
<TAG key="00001" CHS="添加药品类别-" JP="" KR="약품분류추가" EN="" />
</Text>
这个写在在Text.config里面,假设一个Label吧你起名字就的LG_lblName 其余的控件都的起这样的前面加上LG_XX
然后在aspx里面的<form> <asp:Panel ID="LG_Panel" runat="server" Width="100%">
<table><tr><td>ddd</td></tr></table></asp:Panel ></form>这些都是必须的。然后调用的时候也就是我
给你的那个类在上面
CS里面这样调用 Language.ChangeControlsText(LG_Panel);
支持多国语言。
#14
忘了起名字的时候假设国际贸易-供应链系统叫这个名字吧 ,那这个Label吧你起名字就的叫LG_0001必须和
Text.Config里面的 对起来 <TAG key="0001" CHS="国际贸易-供应链系统" JP=""
KR="치과병원예약시스템" EN="" />
Text.Config里面的 对起来 <TAG key="0001" CHS="国际贸易-供应链系统" JP=""
KR="치과병원예약시스템" EN="" />
#15
如果用数据库就简单多了,access都可以
#16
这个可以用被人的接口,或者数据库
估计要买的,自己做划不来,时间太长,也很麻烦。
估计要买的,自己做划不来,时间太长,也很麻烦。
#17
谢谢大家
#18
你这代码中有部分引用了其它类呀。。请一起放出来吧