如何实现软件的多语言切换?????

syliuxybj 2010-08-04 03:38:34
窗体的本地化 不用说了。 切换Language的时候会自动生成一个资源文件。
我想要做到的是,如何在切换Language的时候能让程序中的提示信息也能切换语言?
比如说 后台程序中有 MessageBox.Show("欢迎光临!");
在切换到英语的时候,应该是弹出一个 “Welcome!” 的窗体,而不是“欢迎光临!”
我现在已经添加了两个资源文件,一个是中文的Language-CH.resx,一个是英文的Language-EN.resx,但是不知道如何在程序中判断是调用Language-CH.resx还是Language-EN.resx???
我可不想在每次有MessageBox.Show()的时候都判断一下Thread.CurrentThread.CurrentUICulture

最好是能有一个类似于工厂模式的办法,能根据Thread.CurrentThread.CurrentUICulture来判断是应该用Language-CH.resx还是Language-EN.resx
这样就只需要 MessageBox.show(CurLanguage.****)就可以了。
其中CurLanguage是根据Thread.CurrentThread.CurrentUICulture来决定是返回的Resource.Language-CH还是Resource.Language-EN

请问有高人知道怎么实现吗????
...全文
304 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
deknight 2010-08-04
  • 打赏
  • 举报
回复
资源文件
syliuxybj 2010-08-04
  • 打赏
  • 举报
回复
经研究 已经解决..........
资源文件命名上采用:Language.zh-CH.resx和Language.en-EN.resx再默认一个Language.resx文件即可。
但是又发现一个新问题。。。。。。。
MessageBox.Show(Language.***,MessageBoxButtons.OK,MessageBoxIcon.Information);
这个时候 弹出来的 按钮 是“确定”而不是“OK”............
syliuxybj 2010-08-04
  • 打赏
  • 举报
回复
不单单是 MessageBox.Show()
也可能是程序中对 界面元素的覆值啊。
比如说: button1.text="保存";button1.text="更新";
cherho0 2010-08-04
  • 打赏
  • 举报
回复
  public class MsgShow
{
//1是什么语,2是什么语
int language = 0;
public MsgShow()
{
//判断语言
language = ?;
}
public static void showMsg()
{
switch (switch_on)
{
MessageBox.Show();
default:
}
}
}
cherho0 2010-08-04
  • 打赏
  • 举报
回复
你可以这样啊,自己写一个弹消息的类,然后在这个类里面进行判断,然后其他弹消息的调用你这个类的方法,不就可以了,写个静态方法,基本一样的啊
Roy99 2010-08-04
  • 打赏
  • 举报
回复
public static Languages SystemLanguages
{
get
{
return (Languages)System.Reflection.Assembly.Load(".......").CreateInstance(string.Format("......."), true);

}
}
不可以吗?
老Key 2010-08-04
  • 打赏
  • 举报
回复
做的时候做成多种语言的呗!!!
cherho0 2010-08-04
  • 打赏
  • 举报
回复
这个是要卖钱的。。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧