Results 1 to 5 of 5

Thread: NLDTranslate v1.0

  1. #1
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269

    Post NLDTranslate

    Wat is het?


    NLDTranslate is een set open-source componenten, gedoneerd aan NLDelphi, die het makkelijk maken een applicatie te vertalen zonder gebruik te maken van de ITE (Integrated Translation Environment) of andere prijzige oplossingen. De reden: ik begreep er niks van.

    De componenten zijn zo opgebouwd dat je amper code hoeft te schrijven, gooi een TNLDTranslateManager op je form samen met een TNLDTranslate en je bent al halverwege, de rest gebeurd in feite in het taalbestand. Er zullen ook meer mogelijkheden beschikbaar zijn die wel iets meer code vereisen, maar het zwaarste werk is dan al gedaan.



    Wat is zo'n 'taalbestand'?

    Een taalbestand is niets meer dan een XML bestand met daarin beschreven welke componenten welke eigenschappen hebben. Het wijzigen van de tekst op bijvoorbeeld een menu item hoeft niets meer te zijn dan de regel:

    Code:
    <mnuFile Caption="&amp;Bestand" />

    Simpel, nietwaar? . Aangezien er op deze manier weinig beperkingen zijn aan wat een taalbestand kan wijzigen kan het ook schade aanbrengen: door middel van een aantal events zal in de toekomst de applicatie kunnen bepalen welke componenten, en zelfs welke properties wel of niet ingesteld mogen worden.



    Waar dienen de componenten voor?

    TNLDTranslate

    Dit component komt op je form te staan, en wijzigt de properties van de componenten. Het instellen is simpel: de Manager property verwijst naar een TNLDTranslateManager, en de Section property verwijst naar een 2nd-level item in de XML file. Met 2nd-level bedoel ik dan dat het item een subitem is van het hoofditem 'language'. Bekijk de XML bestanden die meegeleverd zijn bij de demo ook eens, daar zal het een en ander duidelijk worden.


    TNLDTranslateManager

    Dit component zorgt voor het inladen van het XML bestand en het stelt de TNLDTranslate's op de hoogte van wijzigingen. Dit maakt het mogelijk om met 1 aanroep alle forms van taal te laten wijzigen. Ook het instellen van dit component is makkelijk: stel de bestandsnaam in op het taalbestand. Dit mag op elk moment gewijzigd worden, en eventuele wijzigingen worden direct doorgevoerd...


    Genoeg gezwets, laat maar eens zien dan...

    In het bijgesloten ZIP bestand zal je het component, 2 packages (voor Delphi 5 en 6) en een demo vinden. Compilen van het component gaat gegarandeerd onder Delphi 5 en 6, eventuele andere versies heb ik nog niet getest. De demo is gemaakt in Delphi 6 en ongetest in andere versies.

    Om goed te zien hoe makkelijk het eigenlijk werkt, open het tweede form en wijzig de taal. Geen gedoe met alle forms handmatig aflopen, alles gaat automatisch. Dat is het doel van NLDTranslate. En nu ga ik kappen, want straks lijkt dit nog een TelSell commercial.


    Wat heb ik nodig om het te installeren?



    To-do / bugs / undocumented features:
    • Events toevoegen om vertaling te beperken
    • TNLDTranslateFiles maken, houdt bij welke taalbestanden er zijn
    • Alle informatie uit taalbestand opslaan, bv: beschrijving van taal wordt nog niet opgeslagen. Kleinigheid, maar wel belangrijk voor TNLDTranslateFiles...




    Een nieuwe versie komt dus nog, maar ik wou 'm toch al releasen om zo eventuele feedback gelijk mee te kunnen nemen. Ik hoor het wel als er problemen/op/aanmerkingen zijn
    Last edited by PsychoMark; 13-Jan-03 at 10:11.
    Qui custodiet ipsos custodes

  2. #2
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Update:
    • Alle bovenstaande to-do items opgelost/toegevoegd
    • GetMessage/GetProperty functies toegevoegd
    • Ondersteuning voor een hele lijst XML/HTML entities, zie linkje voor de lijst, alle items met een 'name code' zijn geimplementeerd alhoewel nog niet uitvoerig getest op de belangrijkste na (euro, e-umlaut, enz)...
    • Een aantal vergeten properties gepublished




    Bugs:
    • TNLDTranslateFiles geeft bestandslijst 3 keer door assignen properties bij laden, en daarnaast wordt FItems.Clear niet aangeroepen in de Refresh procedure
    • TNLDTranslateFiles geeft een exception als er geen taalbestanden geinstalleerd zijn
    Last edited by PsychoMark; 15-Sep-02 at 18:36.
    Qui custodiet ipsos custodes

  3. #3
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Update:
    • Alle bovenstaande bugs opgelost
    • Extra parameter 'Default' in GetProperty/GetMessage functies als de message niet gevonden kan worden...



    To-do:
    • Vermoedelijke bug fixen: bij geen geinstalleerde taalbestanden gaat GetProperty/GetMessage waarschijnlijk fout. Default waarde moet teruggegeven worden in dat geval.
    • Gerelateerd daaraan: mogelijkheid bieden om een default taalbestand te integreren in het programma voor het geval er geen bestanden geinstalleerd zijn, hierdoor is een Default parameter vrijwel overbodig en kan de taal alsnog enigzins gescheiden blijven van het programma...
    • Properties van het form zelf kunnen benaderen in het taalbestand...
    • Mogelijkheid om sub-properties te benaderen, en uitzoeken of het mogelijk is collection properties te benaderen (denk aan "StatusBar.Panels[0].Text" kunnen instellen in het taalbestand)
    Last edited by PsychoMark; 15-Sep-02 at 18:36.
    Qui custodiet ipsos custodes

  4. #4
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Update:
    • De source van versie 1.2 bleek achteraf niet alle fixes te bevatten die het zou moeten, waarschijnlijk foute ZIP geupload, dit keer wel de goede versie...
    • Packages in tweeën verdeeld: NLDComponentsDx.dpk (runtime) en NLDComponentsDxD.dpk (design time). Open eerst de runtime package, druk op Compile, als je hierbij geen foutmeldingen krijgt, voeg dan het NLDTranslate pad toe aan je library path (Tools -> Environment Options -> Library -> Library Path), open de design time package en druk op Compile. De componenten en property editor worden nu geregistreerd.
    • De reden van de splitsing behalve dat het zo eigenlijk hoort: de TNLDTranslateFiles component heeft nu een property 'Embedded'. Door de property editor in de design time package kan je bij die property op de '...' knop drukken en een XML bestand integreren in de applicatie, zodat alle functionaliteit ook werkt als er geen externe taalbestanden kunnen worden gevonden. De Items hebben een extra property 'Embedded' die aangeeft of dat item verwijst naar het embedded bestand.
    • Een extra OnChange event in zowel de TNLDTranslateManager als de gekoppelde TNLDTranslate's zodat hier bijvoorbeeld runtime messages (GetMessage/GetProperty) ververst kunnen worden... (de reden van het ontstaan van deze events )
    • Nieuwe property bij TNLDTranslateFiles: Storage. Hier kan je een van de 3 nieuwe componenten aan koppelen, die dienen voor het automatisch laden/opslaan van de huidige taal. De INI en Registry componenten wijzen voor zich, de Custom component is voor de mensen die de data op een andere manier willen opslaan maar geen zin hebben om hiervoor een eigen descendant te schrijven: de OnRead/OnWrite events voor deze component zijn aangepast met een AValue parameter, waardoor je zelf de waarde kan laden/opslaan...



    To-do:
    • Zie laatste 2 items van vorige post
    • Secties die ontbreken in een extern taalbestand maar wel aanwezig zijn in het embedded bestand toevoegen, zodat altijd de waarde wordt herkend
    • Een component/unit schrijven met daarin de functies om alle talen in de UI te verwerken (denk aan een lijst met talen in een ListBox, of in een menu), samen met eventuele andere handige functies... een component heeft de voorkeur, op die manier kan je een menu in design time eraan koppelen en zo de talen inladen zonder code te schrijven, maar uiteraard zijn de functies dan wel public zodat je ze ook in code kan gebruiken
    • Ondersteuning voor set/enum properties...
    Last edited by PsychoMark; 27-Sep-02 at 21:45.
    Qui custodiet ipsos custodes

  5. #5
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Update:
    • Zie alle niet-schuingedrukte items hierboven...
    • Een verbeterde demo...
    • Een hoop kleine bugfixes die bij het maken van de demo naar voren kwamen


    To-do:
    • Help-bestand maken ter ondersteuning
    • NLDTranslateUtils uitbreiden voor extreem gemak, misschien de structuur hiervan wijzigen, 't is kort gezegd een zooitje...




    Vooral de toevoegingen van de enum/sets/collection properties en de mogelijkheid om form-properties te benaderen maken deze set toch vrij compleet ondertussen. Oh, de demo laat dit nog niet zien: maar maak attributes in het XML bestand aan bij de section-nodes (<main>, <second>) en deze worden toegepast op het form/datamodule/welke owner dan ook


    Enjoy! En laat eventuele bugs en comments achter in een nieuwe thread!
    Last edited by PsychoMark; 13-Jan-03 at 10:12.
    Qui custodiet ipsos custodes

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. NLDCalendar Versiehistorie
    By eagle00789 in forum NLDCalendar
    Replies: 3
    Last Post: 15-Apr-08, 11:01
  2. NLDTranslate v2 - Beta
    By PsychoMark in forum NLDTranslate
    Replies: 1
    Last Post: 02-Feb-06, 20:43
  3. NldTranslate ook voor Kylix ??
    By Viper in forum NLDTranslate
    Replies: 7
    Last Post: 26-Mar-03, 00:19
  4. Applicatie in meerdere talen
    By cliov6 in forum Artikelen & tips
    Replies: 20
    Last Post: 21-Feb-03, 10:11
  5. NLDStringgrid v1.0
    By walterheck in forum NLDStringGrid
    Replies: 1
    Last Post: 24-Jun-02, 10:25

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •