通过winx在winforms中进行本地化

时间:2017-09-28 07:25:09

标签: c# .net winforms localization resx

关于它有很多问题,但仍然没有为我找到解决方案

我将所有资源都放在一个单独的项目中,这个项目有一个包含3种语言的资源文件夹。

在构造函数中的任何控件中调用InitializeLanguage() 我在哪里为正确的语言设置正确的文本:

public void InitializeLanguage()
    {
        bOK.Text = Lastenboek.Language.Ok;
        cbSM.Text = Lastenboek.Language.SamenvattendeMeetstaat;
        cbDM.Text = Lastenboek.Language.DetailMeetstaat;
        cbDMHeadingStyles.Text = Lastenboek.Language.KopStijlen;
        cbExportArtikelsZonderMeetstaat.Text = Lastenboek.Language.ArtikelsZonderMeetstaat;
        cbSMHeadingStyles.Text = Lastenboek.Language.KopStijlen;
        cbRamingsPrijs.Text = Lastenboek.Language.Ramingsprijs;
        cbBeknopteOmschrijving.Text = Lastenboek.Language.BeknopteOmschrijving;
        cbFaseSM.Text = Lastenboek.Language.GesplitstOpFase;
        groupBox3.Text = Lastenboek.Language.Filter;
        label2.Text = Lastenboek.Language.Tot;
        label1.Text = Lastenboek.Language.DatumVan;
        gbPrijzen.Text = Lastenboek.Language.Prijzen;
        label3.Text = Lastenboek.Language.Account;
        cbTotaalSM.Text = Lastenboek.Language.Totaal;
        groupBox4.Text = Lastenboek.Language.Template;
        label4.Text = Lastenboek.Language.Layout;
        Text = Lastenboek.Language.ExporteerMeetstaat;
    }

一切正常但现在有时候标签对于其他语言的文字来说太小了。有没有一种很好的方法可以在设计时更改语言并更改不同语言的维度?

2 个答案:

答案 0 :(得分:1)

是。而且您甚至不需要以编程方式设置本地化的文本/图像和其他值。

只需将表单上的Localizable属性设置为true,然后您就可以在设计时切换语言,并在设计时编辑该语言的所有内容。

启动应用程序时,表单将使用Windows语言。如果要以编程方式更改它,只需设置Thread.CurrentThread.CurrentUICulture属性。您可能希望重新创建表单以应用该语言或明确调用InitializeComponent()

答案 1 :(得分:1)

问题是你有控件的动态文本,但是你希望每种语言都有“硬编码”固定控件大小。

使用这种方法维护可能很复杂。翻译中的每个变化都应该在UI中进行测试 - 它是否适合控制。

另一种方法是支持控件的“AutoSize”。 Winforms具有TableLayoutPanel控件,这对于具有动态文本的控件非常有用。