Toon posts:

[VB.NET]Na wijzigen form vertaalde strings foetsie.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben druk bezig een bestaande applicatie te vertalen naar het Nederlands. De applicatie is geschreven in VB.NET voor VS2005.
Ik weet hoe het werkt met de resources.
Ik heb alle controls in een resource file en de Nederlandse heb ik allemaal vertaald. Dit werkt prima en eenvoudig.
Nu zit er in de code van de forms af en toe ook tekst die vertaald moeten worden, merendeel messageboxen.
Die krijg ik ook netjes in de resource files door deze regel toe te voegen:
Visual Basic .NET:
1
Private resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(formnaam))

en de messageboxen te wijzigen naar:
Visual Basic .NET:
1
MsgBox(resources.GetString("msgCannotStoreFieldValue.Text"), MsgBoxStyle.Exclamation)

Dit werkt ook netjes. Alles wordt goed vertaald getoont. Ik ben tevreden.

Maar als ik vervolgens ook maar iets aan het form verander in design-view, bijv. ik vergroot het form, dan gaat VS2005 opnieuw de resources genereren en worden mijn met de hand toegevoegde strings er uit gekiepert.

Is hier een oplossing voor anders dan het form niet meer wijzigen.
Is er iets van een 'Preserve' optie?

Alvast bedankt.

--
Paul

  • Survivor1979
  • Registratie: Februari 2005
  • Laatst online: 29-10-2025
De resx file van een formulier wordt altijd automatisch gegenereerd door de designer, en er is voorzover ik weet geen manier om je eigen resources daar te behouden na het opnieuw opslaan in de designer.

Dat wil dus zeggen dat je een aparte resource MOET file gebruiken voor je eigen resources. Maak bijvoorbeeld een class Resources, waar je met de hand een resource file onderhangt (Resources.resx). In de class kan je bijvoorbeeld je eigen GetString() methode zetten.

Verwijderd

Topicstarter
@Survivor1979:
Moet ik dan voor elk form een nieuwe resources.resx maken of 1 voor alle forms tegelijk?

Met 1 file wordt het wel wat onoverzichtelijk ben ik bang. Er zijn meer dan 50 forms.

Voor elk form een eigen tweede resource wordt weer wat rommelig, zeker als je bedenkt dat het in meerdere talen komt en je dus van elke resource dan ook weer tig resources krijgt.
Dus frm1.vb krijgt frm1Resources.resx en frm1Resources.nl.resx, frm1Resources.es.resx, frm1Resources.pt.resx, etc en dat dan voor elk form.

Wat adviseer jij?

_-
Paul

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

MrSleeves

You'll thank me later.

Ik gebruik meestal een (hele foute) work-around: Een label op het betreffende form met Visible=False. De text-property vul ik in en die gebruik ik dan in de Messagebox.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 17-01 10:57
Zo vies is dat niet hoor, doe ik ook zo.

Verwijderd

Topicstarter
@MrSleeves:
Dat klinkt wel heel erg ranzig ;)
Maar als het werkt! Het heet niet voor niets Visual Basic.
Ik zal het in ieder geval overwegen.

Het lijkt er in ieder geval op dat jullie vaker dit (vertalen) hebben gedaan. Misschien dat jullie ook een oplossing weten voor mijn ietwat ingewikkelder maar toch vergelijkbaar probleem over het vertalen van property windows (gebruikers instellingen). Ik heb daar ook een draadje voor op gestart, maar tot op heden nog zonder succes.
Het draadje is te vinden op:
\[VB.NET]Localize property

Edit:
Ik lees dat Mastermind het ook zo doet. Nu zal ik het zeker overwegen. Moet het natuurlijk wel even overleggen met de andere programmeurs ;)

[ Voor 11% gewijzigd door Verwijderd op 10-08-2006 16:29 . Reden: Had berichtje Mastermind nog niet gelezen, moet sneller typen ;) ]


  • Survivor1979
  • Registratie: Februari 2005
  • Laatst online: 29-10-2025
@pmeems: Persoonlijk zou ik 1 resource file doen per assembly. De localizable property op true zetten in formulieren geeft al een performance hit (de InitializeComponent() is tenslotte daardoor al veel groter geworden), en door "nep" controls toe te voegen in je formulieren verlaag je de performance van je win-forms applicatie ook weer iets. Als je alle 40 formulieren in 1 assembly hebt gezet (wat denk ik het overzicht niet ten goede zal komen), zou ik of overwegen om formulieren op te splitsen in verschillende DLL's, of en in ieder geval voor jou een logische indeling te kiezen van resources bestanden.
Persoonlijk zou ik in ieder geval proberen mijn formulieren zo "schoon" mogelijk te houden, en dus de oplossing van MrSleeves en MasterMind vermijden.

<offtopic>Edit: ik heb ook gereageerd op het andere draaitje over het vertalen van properties. Dat had ik al, maar blijkbaar heb je niet goed gekeken :)</offtopic>

[ Voor 9% gewijzigd door Survivor1979 op 10-08-2006 16:54 ]


Verwijderd

Topicstarter
Bedankt allemaal.

Ik ga de suggesties bespreken met de andere ontwikkelaars. Het betreft hier een OpenSource project: MapWindow (www.mapwindow.org)
Pagina: 1