Years ago, I used Tsilang, and found it very well done. I remember seeing good reports from users of localizer, as well as from those using Sisulizer. I don't recall, from those days, hearing of any significant negative issues with any of them.
Lars Fosdal Meanwhile any annoyances are covered with some self written utilities. The language files are stored in source control in XML format using a command line converter. The built-in XML import/export turned out to leave out some internal stuff so I wrote one by myself that covers 100%. I have several related projects driven by a common set of language files where the syncing is also done automatically. Actually I found no stock solution being perfect, but Localizer comes with full source and lets you fix all the glitches. Now, with all the tools at hand and working smoothly, I am not very inclined to switch to some other product. If you have some concrete questions please feel free to contact me directly at uwe-at-uweraabe-dot-de.
May I take this chance to ask a question for people who's using any of the above mentioned *commercial* packages, if you happened to have tried/used DK Lang also, what *significant* features the latter is lacking, when comparing to any of the commercial packages? By significant features, I mean *must have* features. Thanks. yktoo.com - DKLang Localization Package
Edwin Yip Before settling with Localizer I tried several other solutions. To that time (and that is a couple of years ago when DKLang and Sisulizer simply didn't exist) Localizer had the smallest impact (only one uses reference in the DPR), worked straight out of the box (no source code changes, no additional components) and came with full source code (including the IDE expert and the Language Manager). With the above mentioned tweaks it works reliably and without problems since then. As I have a lifetime license any other solution (even a free one) will cost me a lot of work to switch (projects, build system, editing translations). Thus the question for me is not "What is missing", but "What is significantly better?".
Uwe Raabe Thanks for the info, same situation here - I've been using Dk Lang for years and it does everything I need, except the ability to scan and generate constants from project source. It also has some minor flaws and it's open source so I tweaked it myself. So as you said, switching to another solution will cost a lot without significant gaining.
shlomo abuisak I'm using DKLang 4.x, since the rewritten new 5.X requires XE5 or above. But maybe I'm wrong, where's the entry point of the function? I'm thinking of an IDE function that will scan a unit or the entire project for all constants and put them into my *.dkl_const.res file. Thanks.
Edwin Yip although i use modern Delphi i have dklang on Delphi 7 with old projects and still active. The ver i have is dktraned-3.0-LangSrc.zip. And to the point open project menu near the bottom "edit project constants..." P.S on Delphi XE newer component the same. Constants are included
shlomo abuisak Well, that's the feature I've been using since day one, but with the constant editor you *manually* input the contains. By auto scanning and convert to DK Lang constants, I mean something like the "String Conversion Wizard" in MMX, it's good for integrating DK Lang for an *existing project*: modelmakertools.com - Scan, Find, Extract and Convert hard coded string in Borland Delphi
Edwin Yip I am not aware of this program but using dklang without changing the hard coded string. My software is English . Never hard code in another language. Unless i will always use the program ONLY in my country. So do not see the point why translate the hard coded strings?
Edwin Yip On second thought what you mite be looking for is an AUTO translate for strings. May be DKlang+Google. Since what i do with DKlang it to use a person that knows both languages and translate one string at a time. But since *.lng is text file you can put it in google translate. But still a person with mother tong language has to modify.
shlomo abuisak Although not sure either, it may be the request for a functionality that extracts all hard coded strings from a program and makes them translatable. For the questioned Localizer such function is a menu item named "Extract hardcoded strings" and it replaces the selected string literals with resourcestrings. There are a couple of other IDE plugins (f.i. MMX) that also offer this functionality. Even the Refactor menu of the IDE itself offers this when a string literal is selected in the editor.
Uwe Raabe this is what dklang dose (beside other things) it takes all hard coded strings and give you the option to translate. So when a user get an ERROR for example the string is translated.
shlomo abuisak Re "So do not see the point why translate the hard coded strings?", let's assume an old project contains a lot of strings like `MessageBox('Are you sure?')`, The 'Are you sure?' hard-coded string is what one might want DK Lang to handle automatically.
[fMain] 00000001=Beispielform 00000002=Das ist eine Beispielmitteilung. 00000003=Test
[$CONSTANTS] STestMessage=Oops, Sie bet?tigten die Testschaltfl?che! <<<< this line comes from in the source DKLangConstW('SMessageCaption') + ': ' + DKLangConstW('STestMessage')); DKLangConstW <<< this what dose the trick. In the program menu last line scan the source for ANY changes include the constants if you have this DKLangConstW !!!! And the line before the end give you MORE OPTIONS to edit the constants
shlomo abuisak We are not talking about the same thing, I also have been using the functionality you showed for many years ;) To try again, I'm talking about functionality to be executed *in design time* by the IDE, to parse my .pas source files, find and extract any strings, and selectively put them in the [$CONSTANTS] section you mentioned. Actually that's exactly what Uwe described above...
You are close. DKLangConstW is what we need, in order to read translation strings from the language files. But why the constants exist? With the current implementation of DKLang you have to enter them via the "DKLang - Edit project constants" menu, right? There is currently no second way, right? What I'm talking about is a second way, which is already described above...
Edwin Yip OOPS it seem i did not use it for a wile. You are right. So all is needed is a small program to scan (pars) for DKLangConstW in the pas and add it to the *.lng file. I thought the constants are updated too.
Yes, working with it for a couple of years now.
ReplyDeleteHas anyone done (or seen) a comparison to Tsilang?
ReplyDeleteUwe Raabe Any particular annoyances, or is it good enough? Have you used Sisulizer as well? Which one do you prefer?
ReplyDelete/sub
ReplyDeleteYes we've been very happy with it
ReplyDeleteRhett Price No issues with having multiple developers working on the same project / translation?
ReplyDelete/sub
ReplyDelete/sub
ReplyDeleteYears ago, I used Tsilang, and found it very well done. I remember seeing good reports from users of localizer, as well as from those using Sisulizer. I don't recall, from those days, hearing of any significant negative issues with any of them.
ReplyDeleteMy main issue with Tsilang is that it stores its information in a binary blob in the .dfm - that does not play well with git.
ReplyDeleteLars Fosdal Meanwhile any annoyances are covered with some self written utilities.
ReplyDeleteThe language files are stored in source control in XML format using a command line converter. The built-in XML import/export turned out to leave out some internal stuff so I wrote one by myself that covers 100%.
I have several related projects driven by a common set of language files where the syncing is also done automatically.
Actually I found no stock solution being perfect, but Localizer comes with full source and lets you fix all the glitches. Now, with all the tools at hand and working smoothly, I am not very inclined to switch to some other product.
If you have some concrete questions please feel free to contact me directly at uwe-at-uweraabe-dot-de.
Used Multilizer back in the days, but later years stayed with gnugettrxt/dxgettext - a standard format for translators.
ReplyDeleteUsed Multilizer, switched to Sisulizer years ago and never looked back. Gregor Steinweg might know something about the little annoyances though ;)
ReplyDeleteFeaturewise Localizer looks similar to Sisulizer (and Multilizer). The tools and the automation make the difference though.
Yet another website without an imprint.
ReplyDeleteWhy are people ashamed of exposing themselves, I can't understand.
May I take this chance to ask a question for people who's using any of the above mentioned *commercial* packages, if you happened to have tried/used DK Lang also, what *significant* features the latter is lacking, when comparing to any of the commercial packages? By significant features, I mean *must have* features. Thanks.
ReplyDeleteyktoo.com - DKLang Localization Package
Edwin Yip Before settling with Localizer I tried several other solutions. To that time (and that is a couple of years ago when DKLang and Sisulizer simply didn't exist) Localizer had the smallest impact (only one uses reference in the DPR), worked straight out of the box (no source code changes, no additional components) and came with full source code (including the IDE expert and the Language Manager). With the above mentioned tweaks it works reliably and without problems since then. As I have a lifetime license any other solution (even a free one) will cost me a lot of work to switch (projects, build system, editing translations). Thus the question for me is not "What is missing", but "What is significantly better?".
ReplyDeleteloooong time ago, then switched to TSiLang, using it up to now
ReplyDeleteUsing github.com - yktoo/dklang with excellent result on all my projects
ReplyDeleteEdwin Yip I have been using for years DKLANG
ReplyDeleteUwe Raabe Thanks for the info, same situation here - I've been using Dk Lang for years and it does everything I need, except the ability to scan and generate constants from project source. It also has some minor flaws and it's open source so I tweaked it myself. So as you said, switching to another solution will cost a lot without significant gaining.
ReplyDeleteEdwin Yip Unless i did not understand you it dose that too
ReplyDelete"except the ability to scan and generate constant"
shlomo abuisak I'm using DKLang 4.x, since the rewritten new 5.X requires XE5 or above. But maybe I'm wrong, where's the entry point of the function? I'm thinking of an IDE function that will scan a unit or the entire project for all constants and put them into my *.dkl_const.res file. Thanks.
ReplyDeleteshlomo abuisak an update: Upgraded to the latest 5.x from github, read all the commit logs, no such function found. Just FYI.
ReplyDeleteEdwin Yip although i use modern Delphi i have dklang on Delphi 7
ReplyDeletewith old projects and still active. The ver i have is dktraned-3.0-LangSrc.zip.
And to the point open project menu near the bottom "edit project constants..."
P.S on Delphi XE newer component the same. Constants are included
Edwin Yip For you i installed the newer component on BERLIN the same open project menu at the bottom you have the constants
ReplyDeleteshlomo abuisak Well, that's the feature I've been using since day one, but with the constant editor you *manually* input the contains. By auto scanning and convert to DK Lang constants, I mean something like the "String Conversion Wizard" in MMX, it's good for integrating DK Lang for an *existing project*: modelmakertools.com - Scan, Find, Extract and Convert hard coded string in Borland Delphi
ReplyDeleteEdwin Yip I am not aware of this program but using dklang without
ReplyDeletechanging the hard coded string. My software is English . Never hard code in another language. Unless i will always use the program ONLY in my country. So do not see the point why translate the hard coded strings?
Edwin Yip On second thought what you mite be looking for is an AUTO translate for strings. May be DKlang+Google.
ReplyDeleteSince what i do with DKlang it to use a person that knows both languages and translate one string at a time. But since *.lng is text file
you can put it in google translate. But still a person with mother tong
language has to modify.
shlomo abuisak Although not sure either, it may be the request for a functionality that extracts all hard coded strings from a program and makes them translatable. For the questioned Localizer such function is a menu item named "Extract hardcoded strings" and it replaces the selected string literals with resourcestrings. There are a couple of other IDE plugins (f.i. MMX) that also offer this functionality. Even the Refactor menu of the IDE itself offers this when a string literal is selected in the editor.
ReplyDeleteUwe Raabe this is what dklang dose (beside other things) it takes all hard coded strings and give you the option to translate. So when a user get an ERROR for example the string is translated.
ReplyDeleteshlomo abuisak Re "So do not see the point why translate the hard coded strings?", let's assume an old project contains a lot of strings like `MessageBox('Are you sure?')`, The 'Are you sure?' hard-coded string is what one might want DK Lang to handle automatically.
ReplyDeleteEdwin Yip and it dose
ReplyDeleteshlomo abuisak Are you sure? Would you tell me the entry point of such function? I checked the examples of the latest version, nothing found. Thanks.
ReplyDeleteEdwin Yip Yes i am sure since i am using it many but many years.
ReplyDeleteThis is from the demo Constants_FireMonkey_Desktop (GERMAN)
TargetApplication=DKLang_Constants_Demo
Author=Dmitry Kann
SourceLANGID=1033
LANGID=1031
Generator=DKLang Translation Editor v2.1
LastModified=2004-09-26 00:17:03
[fMain]
00000001=Beispielform
00000002=Das ist eine Beispielmitteilung.
00000003=Test
[$CONSTANTS]
STestMessage=Oops, Sie bet?tigten die Testschaltfl?che! <<<< this line comes from in the source
DKLangConstW('SMessageCaption') + ': ' + DKLangConstW('STestMessage'));
DKLangConstW <<< this what dose the trick.
In the program menu last line scan the source for ANY changes include the constants if you have this DKLangConstW !!!!
And the line before the end give you MORE OPTIONS to edit the constants
Edwin Yip Do not forget any time you change the source strings to scan again with program menu last line. THIS IS MANDATORY !!!!
ReplyDeleteEdwin Yip
ReplyDeletehttps://plus.google.com/photos/...
shlomo abuisak We are not talking about the same thing, I also have been using the functionality you showed for many years ;) To try again, I'm talking about functionality to be executed *in design time* by the IDE, to parse my .pas source files, find and extract any strings, and selectively put them in the [$CONSTANTS] section you mentioned. Actually that's exactly what Uwe described above...
ReplyDeleteEdwin Yip It seems i do not understand. If DKLangConstW is not the
ReplyDeletefunction you are looking for in dklang SCAN so i really do not know what to say.
You are close. DKLangConstW is what we need, in order to read translation strings from the language files. But why the constants exist? With the current implementation of DKLang you have to enter them via the "DKLang - Edit project constants" menu, right? There is currently no second way, right? What I'm talking about is a second way, which is already described above...
ReplyDeleteEdwin Yip OOPS it seem i did not use it for a wile. You are right.
ReplyDeleteSo all is needed is a small program to scan (pars) for DKLangConstW in the pas and add it to the *.lng file. I thought the constants are updated too.
Edwin Yip further thoughts. The constants are in a resource file
ReplyDeleteOnce a pascal file is parsed you can make a .res file named
.dkl_const.res