日期:2014-05-17  浏览次数:20956 次

c# 多国语言转换问题
多语言转换时 主窗体的多语言转换无效。点击主窗体中的控件,弹出的窗体多语言转换有效。
当主窗体加入MainForm.ja_JP.rexc资源文件时,主窗体就显示日文,添加别国的资源文件,却只显示日语。
请问各位这个问题怎么解决。

------解决方案--------------------
有可能是因为你别的窗体和当前主窗体不在同一个线程上导致加载默认语言。
介意把语言加入配置文件中,开放API在创建线程的同时,设置LanguageReource.Culture
------解决方案--------------------
想设置哪一个语言呢,就在public FrmMain()
        {
            //Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-Hant");//手动设置语言。
            InitializeComponent();
        }

加上。或者formload之前加也可以。



百度一下“演练:本地化 Windows 窗体”

对你很有用,这也在做窗体本地化的活,现在
------解决方案--------------------
用过一段日语切换代码,楼主请参考:
要主窗口切换语言:Lan.SwitchLang(this);
public class Lan
{
    private static List<CultureInfo> areas = new List<CultureInfo>();
    private static int current = 0;

    /// <summary>
    /// 切换语言(默认和日语)
    /// </summary>
    /// <param name="form"></param>
    public static void SwitchLang(Form form)
    {
        if (areas.Count == 0)
        {
            areas.Add(Thread.CurrentThread.CurrentCulture);
            areas.Add(new CultureInfo("ja"));
        }
        current = (current + 1) % 2;
        Thread.CurrentThread.CurrentUICulture = areas[current];
        if (form != null)
        {
            SetLang(form);
        }
    }

    /// <summary>
    /// 设置当前线程的语言与主窗体相同
    /// </summary>
    public static void SetLang()
    {
        if (current < areas.Count)
        {
            Thread.CurrentThread.CurrentUICulture = areas[current];
        }
    }

    public static void SetLang(Form form)