3050311118 发表于 2012-7-28 17:32:09

C#编写的软件怎么通过菜单 改变中英文界面哦?

C#编写的软件怎么通过菜单 改变中英文界面哦?客户要求有两种语言,可以通过选择菜单切换

cyr_hongfeng 发表于 2012-7-28 17:53:46

有一个笨的办法,就是每一条文字显示都用switch来判断
switch(SelectLanguage)
{
    casechinese :xxx.Text = "中文菜单";
    caseEnglish :xxx.Text = "menu";
.....
}

3050311118 发表于 2012-7-28 18:19:25

cyr_hongfeng 发表于 2012-7-28 17:53 static/image/common/back.gif
有一个笨的办法,就是每一条文字显示都用switch来判断
switch(SelectLanguage)
{


嗯 也是一个办法

riabox 发表于 2012-7-28 18:25:10

上面那个是最笨的方法。
正确的方式是写语言配置文件,菜单上的文本都是从这个配置文中读取的。

配置文件的格式可以是一个INI
如下这个文件 是cn.lang:
menu=菜单
ok=是
...

具体的做法是,写一个LangManager,
有以下属性
pbulic string language
这个表示语言,是这个字符串类型,比如"cn","jp",然后你的语言配置文件夹底下有对应的配置文件,比如叫cn.lang

设置这个值后,他会跟据你设置的值去读语言配置文件,读完后,把键值对存到这个类的键值对字典里,然后发送语言更改事件,每个你认为需要的地方都要监听这个事件,在收到时这个事件时,重置界面的文字

这个类还有一个方法。
public string getLable(string key)

这个方法的参数是一个KEY,如"menu",他会返回字典里对应的值,如果字典里没有对应的值,他就会返回这个键值,比如你的语言设置为language = "cn"的话,假设我上面举例子的这个文件存在,他就会返回"菜单",再比如你设置的值为language = "en"的话,因为读不到这个配置文件,所以字典是空的,所以这里就会返回"menu".

--------------------
以上是实现方式,这样你改语言时,只要把langManager.language更改一下就行了。

nongxiaoming 发表于 2012-7-28 18:37:17

riabox 发表于 2012-7-28 18:25 static/image/common/back.gif
上面那个是最笨的方法。
正确的方式是写语言配置文件,菜单上的文本都是从这个配置文中读取的。



方法还不错

nongxiaoming 发表于 2012-7-28 18:39:13

楼主会Linq for XML吗?会的话可以操作XML来存储你菜单的显示文本,类似安卓应用程序中的String.xml那种

3050311118 发表于 2012-7-28 18:47:19

riabox 发表于 2012-7-28 18:25 static/image/common/back.gif
上面那个是最笨的方法。
正确的方式是写语言配置文件,菜单上的文本都是从这个配置文中读取的。



哦 非常感谢你!!!!

3050311118 发表于 2012-7-28 18:48:14

nongxiaoming 发表于 2012-7-28 18:39 static/image/common/back.gif
楼主会Linq for XML吗?会的话可以操作XML来存储你菜单的显示文本,类似安卓应用程序中的String.xml那种 ...

不会偶有学过一点安卓   我看看那个Linq for XML

riabox 发表于 2012-7-28 18:55:27

XML只是配置文件的格式问题,在你这个应用上,INI是最合适的,XML在复杂结构的定义有优势,但你这个应用只是简单的键值对。

nongxiaoming 发表于 2012-7-28 19:37:37

有Linq在,XML变得简单许多~
页: [1]
查看完整版本: C#编写的软件怎么通过菜单 改变中英文界面哦?