Tag: 本地化

如何在运行时更改WinForms应用程序的文化

我用C#创建了Windows Form程序。 本地化有一些问题。 我有2种语言的资源文件(一种用于英语,另一种用于法语)。 我想单击每个语言按钮并在运行时更改语言。 但是,当我点击按钮时,它不起作用。 我正在使用此代码。 private void btnfrench_Click(object sender, EventArgs e) { getlanguage(“fr-FR”); } private void getlanguage(string lan) { foreach (Control c in this.Controls) { ComponentResourceManager cmp = new ComponentResourceManager(typeof(BanksForm)); cmp.ApplyResources(c, c.Name, new CultureInfo(lan)); } } 请问有什么帮助…… 非常感谢….

在运行时更改语言的正确方法

在运行时更改Form语言的正确方法是什么? 使用这样的递归手动设置所有控件 将语言选择保存到文件>重新启动应用程序>在InitializeComponent();之前加载语言选项InitializeComponent(); 使用Form构造函数替换active的实例(如果这是可能的话) 还有别的 关于这个问题有很多半成文,但没有一个能提供真正的答案,说明什么是正确的方法呢? 更新: 澄清我的问题: 做这样的事情: public Form1() { Thread.CurrentThread.CurrentUICulture = new CultureInfo(“de”); this.InitializeComponent(); } 工作正常,我的所有控件和资源中的其他所有内容都可以正确转换。 做类似的事情: private void button1_Click(object sender, EventArgs e) { Thread.CurrentThread.CurrentUICulture = new CultureInfo(“en”); } 什么都不做,Form保留在我在InitializeComponent();之前设置的语言中InitializeComponent();

如何检测角色是否属于右到左语言?

什么是判断字符串是否包含“从右到左”语言的文本的好方法。 我发现这个问题建议采用以下方法: public bool IsArabic(string strCompare) { char[] chars = strCompare.ToCharArray(); foreach (char ch in chars) if (ch >= ‘\u0627’ && ch <= '\u0649') return true; return false; } 虽然这可能适用于阿拉伯语,但这似乎不包括其他RTL语言,如希伯来语。 有没有通用的方法来知道某个特定字符属于RTL语言?

以编程方式获取所有可用语言(在卫星assembly中)

我正在使用.resx文件设计一个多语言应用程序。 我有一些文件,如GlobalStrings.resx,GlobalStrings.es.resx,GlobalStrings.en.resx等。当我想使用它时,我只需要设置Thread.CurrentThread.CurrentCulture。 问题:我有一个包含所有可用语言的combobox,但我手动加载: comboLanguage.Items.Add(CultureInfo.GetCultureInfo(“en”)); comboLanguage.Items.Add(CultureInfo.GetCultureInfo(“es”)); 我试过了 cmbLanguage.Items.AddRange(CultureInfo.GetCultures(CultureTypes.UserCustomCulture)); 没有任何成功。 还尝试了CultureTypes中的所有元素,但是我只获得了一个包含更多我不使用的语言的大列表,或者是一个空列表。 有没有办法只获得支持的语言?

如何在winforms中制作多语言应用程序

我有一个应用程序,我需要在该应用程序中使用两种语言(例如,英语和阿拉伯语),但我不知道我该怎么做。 有人可以帮我这个吗? 我需要在C#Windows窗体中使用一些示例。