我想做一个韩文和中文可以自动转换的c# winForm 程序。
请问各位大侠们,有没有人可以详细的告诉我怎么做啊?
我目前对翻译类的软件原理了解程度为零希望高手可以耐心的做一个详细讲解。
谢谢谢谢。。
请问各位大侠们,有没有人可以详细的告诉我怎么做啊?
我目前对翻译类的软件原理了解程度为零希望高手可以耐心的做一个详细讲解。
谢谢谢谢。。
解决方案 »
- WPF中使用WebClient 向win7 上传文件
- 关于c#设计像QQ音乐那样的歌词显示条
- asp.net2.0中资源文件的调用问题
- 命名空间冲突问题
- 找不到类型或命名空间名称“Server”(是否缺少 using 指令或程序集引用?)
- SqlServer创建索引视图报错
- C#如何操作Excel文字颜色
- 我这样做好像textBox3的Text属性没有变啊?????
- 查询一个时间段内的记录,并显示在datagridview
- 怎样用程序动态的 修改 xml 文件的样式表文件,即 <?xml-stylesheet type="text/xsl" href="http://localhost:/xsl/formXsl.xsl"?> 在线
- 在一个3*3方格中填入数字1~n(N>10)内的某9个互不相同的整数,使所有相邻两个方格的两个整数之和为质数,试求出满足这个要求的所有填法!
- 关于触发器的理解,请帮帮忙谢谢了
还有一种是JS的多国语言。
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>
/// <res>若系統採用多語言則值為-1。</res>
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>
/// <res>只對遵照命名規則的服務器控件的文本進行語言切換。</res>
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);
}
}
}
}
}
<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.Config里面的 对起来 <TAG key="0001" CHS="国际贸易-供应链系统" JP=""
KR="치과병원예약시스템" EN="" />