Winform 我用的方法是资源文件修改参数的方法参考这里的方法,里面提到了“要实现国际化的控件在资源文件中命名规则是: Form窗体 + 控件名称。” 我用label和button都没有问题,但我想将menuStrip上的,比如文件。汉化为File,他的控件名称“文件FToolStripMenuItem”我在前面加上窗体名称,放到资源文件里修改,但还是不能达到效果,同样的方法,Label和button都可以。。求解……

解决方案 »

  1.   


    我喜欢这样!!!所有可视控件的text都初始化、更新自文件,然后文件就可以自由diy了~~~
      

  2.   

    原文章并没有处理MenuItem。
    如果你理解了,自己加上相应处理就可以了。
      

  3.   

    private static void AppLang(ToolStripItem item, System.ComponentModel.ComponentResourceManager resources)
            {
                if (item is ToolStripMenuItem)
                {
                    resources.ApplyResources(item, item.Name);
                    ToolStripMenuItem tsmi = (ToolStripMenuItem)item;
                    if (tsmi.DropDownItems.Count > 0)
                    {
                        foreach (ToolStripItem c in tsmi.DropDownItems)
                        {
                            if(c is ToolStripMenuItem)
                                AppLang(c, resources);
                        }
                    }
                }
            }
    http://hi.baidu.com/89806/blog/item/b054712c2c4e24ea8b13997b.html
      

  4.   

    我喜欢用XML来放语言字串~翻译方便。添加也方便。
      

  5.   

    原文的case中加上,你需要做多语言的控件类型处理分支,其他类型照这个做就可以了. case "ToolStripMenuItem":
                            control.Controls[i].Text = getMsg(formName + control.Controls[i].Name);
                            break;
    其实,这样处理很笨.CodeProject上,有个UICultureChanger组件,是基于资源的多语言的更好的实现,可以动态切换语言.UICultureChanger
      

  6.   

    楼主的菜单可能是通过设计器设计的,这样的话,要修改设计器生成的文件,
    如果不会使用,可以试着给菜单加一个图标,然后到设计器生成的文件(*.designer.cs)
    中找到菜单一项,看看他的图标文件是怎么使用资源文件的
    其实和你button什么的一样的用法
      

  7.   

    看看这篇文章,通过xml文件方式实现多语言
    http://blog.csdn.net/dunao/archive/2010/10/19/5952723.aspx
      

  8.   

    使用资源文件实现多语言
    类似
    Form.en-us.resx
    Form.zh-ch.resx
    这是Windows Form内置的多语言支持机制,推荐使用.很多人提及的建立自己的语言文件,只能处理语言,
    能处理控件的 字体,大小,位置 吗? 
    答案是不能,但基于资源文件的多语言可以做到.