Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 10/24/19 in all areas

  1. Better Translation Manager https://bitbucket.org/anders_melander/better-translation-manager The Better Translation Manager (BTM) is a replacement for the Delphi Translation Manager a.k.a. the Integrated Translation Environment (ITE) and External Translation Manager (ETM). Why is it better? Well, for one thing, it's free but more important; It actually works - unlike the ITE/ETM. Why? The standard Translation Manager that ships with Delphi today was originally an individual product known as the Borland Translation Suite. With Delphi 5 it became a part of the enterprise edition. The Borland Translation Suite showed great promise but unfortunately it never evolved from its roots as an external tool and has always been hampered by severe bugs that made it completely unusable in practice. As a result nobody uses it. This can be witnessed by the plethora of homegrown and commercial alternatives. The great benefit of the standard translation system is that it just works (this is the system itself I'm talking about, not the tools. The tools suck). Apart from the requirement that you must use resourcestrings you don't need to do anything special when writing your code. At run time you just place the compiled resource modules in the same folder as your application and the Delphi Run Time Library automatically takes care of loading and using the translations based on the current Windows user interface language. Anyway, since Embarcadero has now finally admitted that they are never going to fix the Delphi Translation Manager and instead recommend that we find alternative solutions, I decided that it was time I solved this little problem once and for all. The core functionality of the Better Translation Manager was written in two weeks during my summer vacation in Italy 2019. Amazing what you can do with a little pasta! Features Does not require any changes to the source code of the application being translated. Works with the existing standard Delphi localization system. Translates resourcestrings and all strings in forms regardless of any 3rd party components used. Works on compiled application. Source code is never used. Generates localized binary resource modules (resource DLLs). Does not use an external compiler. Can import existing translations from compiled application and resource modules or from XLIFF localization source files (dfn, rcn files). Read and save TMX and TBX translation memory files. Import Translation Memory from TMX (Translation Memory eXchange), TBX (TermBase eXchange), Microsoft Glossary and CSV. Machine Translation using Translation Memory, Microsoft Translation Service or Microsoft Terminology Service. Forms, Components, Types and Values that should be ignored can be specified in a Stop List. Translations are Spell Checked. Validation Rules to catch common translation mistakes. Supports Right To Left (RTL) editing based on translation language. Translation project is stored in a single XML file. Command line interface for use in automated build systems. Fast! Refreshing a large project typically takes less than a second vs. many minutes with the ITE/ETM. Supports all Unicode versions of Delphi (i.e. Delphi 9 and later). Resource modules contain the version resource of the source application. What it doesn't do There's one task that BTM, by design, doesn't attempt to solve: Localizing the placement and size of controls. Since it has been my experience that it is a far better idea to design the user interface in such a way that the layout automatically accommodates changes in font- and text size and shorter/longer texts due to translation, I decided from the start that I would not be supporting localization of size and position of controls. This also relieved me of having to create a run time form designer, supporting 3rd party controls visually (something that nobody so far has managed to find a foolproof solution to) and deciding what individual properties constitutes size/position values. Instead I just localize all string values - and only string values. But wait... There's More! Yup, you not only get this little wonder for free. You get the full source code too. Grab it at the repository linked at top. More details at the repository. Enjoy / Anders Melander
  2. David Schwartz

    Any update on the v10.3.3 release?

    I use a VM. Installing a new Delphi update is just as much of a PITA on a VM as on a host machine.
  3. PeterPanettone

    Improvements in Uses Clause Manager Identifier Search

    That would be very CONFUSING for the user: Showing "matches at the start first even in "match anywhere" mode": The user would think: Why are there only matches at the start if the option to start matches anywhere is selected? I am not sure, maybe you mean something different. You could make the "match at start" option the DEFAULT option, if you prefer that. BTW, do you have a slow computer? Then why should users with a fast computer SUFFER only because the programmer has a slow computer? This seems to be ILLOGICAL. But maybe this is only a misunderstanding.
  4. Jacek Laskowski

    MMX for Delphi 10.3 Rio

    However, saving an entity before editing does not always help, MMX rarely hangs, but it still happens. But I have new observation. If I manually add new property to the class, but without the getter and setter (as in the picture) and press the ctrl+E shortcut, first the question appears about adding accessor methods and only after clicking "Yes" MMX hangs.
  5. Uwe Raabe

    Any update on the v10.3.3 release?

    I am pretty sure he definitely had an idea, but then things were going to change a bit. Let's see the positive side: Embarcadero obviously has some sort of agile culture.
  6. Alexander Elagin

    Any update on the v10.3.3 release?

    Deja vu
  7. Joseph MItzen

    Any update on the v10.3.3 release?

    They're unknown internally too. I'll never forget the time Marco scheduled a preview webinar for an upcoming release and Embarcadero went and released it two or three days before the preview was scheduled! Marco joked it was now a "postview webinar", but it struck me as strange that not even the project manager had any idea when the product would be released.
  8. Delphi 10.2.3 I had a problem. On my Vcl program i had ImageList with 250 bitmaps. When making the same project for Android (fmx) ImageList is not the same.To transfer all bitmaps to fmx ImageList i made this program. 1. Make a VCL project with a button. Close the project. 2. Make new>Multi-Device form. 3. place on it a button and ImageList. 4. Make sure both forms have different name. 5. Save and close. 7. Open Vcl project. 8. Add Fmx Form to the VCL project. 9. Disregard ERRORS !! 10. Add below program to fmx uses Unit2; procedure TForm1.Button1Click(Sender: TObject); var FileStream: TFileStream; MemStream: TMemoryStream; w, h, scale, iPos: Integer; btBitmap: tbitmap; si: TCustomSourceItem; d: TCustomDestinationItem; Layer: TLayer; begin for iPos := 0 to Form2.ImageList1.Count - 1 do begin btBitmap := tbitmap.create; btBitmap.PixelFormat := pf32bit; btBitmap.AlphaFormat := afIgnored; Form2.ImageList1.GetBitmap(iPos, btBitmap); MemStream := TMemoryStream.Create; btBitmap.SaveToStream(MemStream); si := ImageList1.Source.Add; si.Name := 'Source' + inttostr(iPos); scale := 1; si.MultiResBitmap.LoadItemFromStream(MemStream, scale); W := si.MultiResBitmap.Bitmaps[scale].Width; //Get width from scale H := si.MultiResBitmap.Bitmaps[scale].Height; //Get height from scale // Destination d := ImageList1.Destination.Add; Layer := d.Layers.Add; Layer.SourceRect.Rect := TRectF.Create(0, 0, W, H); // Create rect W x H Layer.Name := si.name; MemStream.Free; btBitmap.Free; end; MemStream := nil; FileStream := TFileStream.Create('MyList.DAT', fmCreate); try MemStream := TMemoryStream.Create; MemStream.WriteComponent(Form1); MemStream.Position := 0; ObjectBinaryToText(MemStream, FileStream); finally MemStream.Free; FileStream.Free; end; end; 11. On vcl add uses Unit1; procedure TForm2.Button1Click(Sender: TObject); begin Form1.ShowModal; end; 12. Execute vcl. 13. Press button. Open fmx form. 14. Press fmx button. 15. MyList.DAT file is created which is realy an fmx form with all bitmaps populated in in fmx ImageList1. 16. To end rename MyList.DAT > Unit1.fmx so you end up with Unit1.pas and unit1.fmx. 17. Close the project. 18. Open your FMX project. 19. Open UNIT1 in the project 20. Copy ImageList1 from unit1 to your project. I hop it will help some one . And happy coding.
  9. Even though I have a subscription, I did not receive an invitation and now I have a quick Android project that I wanted to beta-test through the play store and... impossible. While this is a small hurdle now, there are projects that are due in a month or two that I simple can't release, it doesn't seem like google is accepting exemptions on new projects.
  10. dummzeuch

    Improvements in Uses Clause Manager Identifier Search

    @PeterPanettone I have been testing the new functionality and I like it. One thing I that I would change (and probably will when I find th time) is to always show the matches at the start first even in "match anywhere" mode. This might also solve the small performance problem in that mode, because it's noticably slower than "Match at start" even on my very fast computer. So searching for matches at the start could be done first and displayed immediately, searching for matches anywhere else could be moved to a background thread and appended to the list once that thread finishes. Thinking about this: After that change there would be no need to distinguish between those modes...
  11. Yaron

    Any update on the v10.3.3 release?

    I'm aware of the beta, but like I wrote above, I would like to avoid wasting an entire work day installing & configuring a beta version of Delphi if the final release is just around the corner. And if it's not just around the corner then my subscription might end and I'll be stuck with a beta version. Like I wrote, no good options for me to plan for when no release information is forthcoming.
  12. Yaron

    Any update on the v10.3.3 release?

    Just got word from google that my 32bit project that was in beta would not be approved for the extension, not sure if it was because it was in beta or if I requested the extension too late. It's a shame that Embarcadero couldn't get the extension accepted all the way to the actual release date of v10.3.3. Now I'm stuck between a choice of two bad options: 1. Waste hours installing a beta version. 2. Wait an unknown period of time with the hope that a release will be out soon. All this while the clock is ticking on my subscription and without the ability to release anything for Android.
×