Toon posts:

[VB.NET]Localize property

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het vertalen van een bestaande applicatie die in VS 2005 is gebouwd.
De forms heb ik inmiddels allemaal vertaald naar het Nederlands door gebruik te maken van resourcefiles.

Nu worden er ook propertyschermen gebruikt zodat gebruikers eenvoudig settings kunnen wijzigen.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
    <Category("Project Projection"), _
    TypeConverter(GetType(NameCls)), _
    Description("The name of the projection for this project. Choose this third."), _
    ReadOnlyAttribute(False)> _
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set(ByVal Value As String)
            m_Name = Value
            frmMain.SetModified(True)
        End Set
    End Property


Nu wil ik graag de Description in het Nederlands hebben, maar daar kom ik niet uit.
Ik heb een resourcefile gemaakt zoals ze ook voor de forms zijn gemaakt.
Bovenstaande code zit in PrjSetGrid.vb. De resourcefile heet PrjSetGrid.nl.resx
Ik heb een resource-object gedeclareerd:
Visual Basic .NET:
1
Private resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(PrjSetGrid))


Bij de forms wijzig ik de tekst door de 'hard-coded' tekst te vervangen met
Visual Basic .NET:
1
resources.GetString("msgError.Text")

Als ik dat hier ook wel doen:
Visual Basic .NET:
1
2
3
4
    <Category("Project Projection"), _
    TypeConverter(GetType(NameCls)), _
    Description(resources.GetString("NameCls.Description")), _
    ReadOnlyAttribute(False)> _

Krijg ik de melding dat Description alleen een Constante accepteerd.
Dus dat werkt niet.

Als ik Localizable op True zet, heeft ook geen effect:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <Category("Project Projection"), _
    TypeConverter(GetType(NameCls)), _
    Description("The name of the projection for this project. Choose this third."), _
    ReadOnlyAttribute(False), _
    Localizable(True)> _
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set(ByVal Value As String)
            m_Name = Value
            frmMain.SetModified(True)
        End Set
    End Property


Ik weet het niet meer. Heeft iemand een idee?

Alvast bedankt.

--
Paul

Verwijderd

Topicstarter
Klein schopje :$

Iemand een idee?

  • Survivor1979
  • Registratie: Februari 2005
  • Laatst online: 29-10-2025
Ik denk dat de enige mogelijkheid is om dit meertalig te maken, door een nieuwe class te maken die overerft van System.ComponentModel.DescriptionAttribute. Ik weet niet of je de Lutz Roeder Reflector decompiler in je bezit hebt (download het anders van http://www.aisto.com/roeder/dotnet/), maar je kan in het .NET Framework zelf even kijken hoe ze dat bij Microsoft hebben opgelost. Zie bijvoorbeeld de class System.Drawing.SRDescriptionAttribute. Deze class overeft dus van de DescriptionAttribute, en bevat een override van de Description property. Deze implementatie van de Description property leest vervolgens weer een resource file uit.

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 13-10-2025

MrSleeves

You'll thank me later.

Op codeproject staat er een artikel over. Ik weet niet of dit makkelijk te implementeren is in een bestaande applicatie.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


Verwijderd

Topicstarter
Bedankt allemaal

Het artikel van MrSleeves lijkt te doen wat ik zoek.

Ik ga nu proberen het te (laten) implementeren.

Bedankt.