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.
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.
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?
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.
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…
Yes, working with it for a couple of years now.
LikeLike
Has anyone done (or seen) a comparison to Tsilang?
LikeLike
Uwe Raabe Any particular annoyances, or is it good enough? Have you used Sisulizer as well? Which one do you prefer?
LikeLike
/sub
LikeLike
Yes we’ve been very happy with it
LikeLike
Rhett Price No issues with having multiple developers working on the same project / translation?
LikeLike
/sub
LikeLike
/sub
LikeLike
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.
LikeLike
My main issue with Tsilang is that it stores its information in a binary blob in the .dfm – that does not play well with git.
LikeLike
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.
LikeLike
Used Multilizer back in the days, but later years stayed with gnugettrxt/dxgettext – a standard format for translators.
LikeLike
Used Multilizer, switched to Sisulizer years ago and never looked back. Gregor Steinweg might know something about the little annoyances though đŸ˜‰
Featurewise Localizer looks similar to Sisulizer (and Multilizer). The tools and the automation make the difference though.
LikeLike
Yet another website without an imprint.
Why are people ashamed of exposing themselves, I can’t understand.
LikeLike
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
LikeLike
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?”.
LikeLike
loooong time ago, then switched to TSiLang, using it up to now
LikeLike
Using github.com – yktoo/dklang with excellent result on all my projects
LikeLike
Edwin Yip I have been using for years DKLANG
LikeLike
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.
LikeLike
Edwin Yip Unless i did not understand you it dose that too
“except the ability to scan and generate constant”
LikeLike
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.
LikeLike
shlomo abuisak an update: Upgraded to the latest 5.x from github, read all the commit logs, no such function found. Just FYI.
LikeLike
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
LikeLike
Edwin Yip For you i installed the newer component on BERLIN the same open project menu at the bottom you have the constants
LikeLike
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
LikeLike
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?
LikeLike
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.
LikeLike
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.
LikeLike
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.
LikeLike
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.
LikeLike
Edwin Yip and it dose
LikeLike
shlomo 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.
LikeLike
Edwin Yip Yes i am sure since i am using it many but many years.
This 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
LikeLike
Edwin Yip Do not forget any time you change the source strings to scan again with program menu last line. THIS IS MANDATORY !!!!
LikeLike
Edwin Yip
https://plus.google.com/photos/…
LikeLike
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…
LikeLike
Edwin Yip It seems i do not understand. If DKLangConstW is not the
function you are looking for in dklang SCAN so i really do not know what to say.
LikeLike
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…
LikeLike
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.
LikeLike
Edwin Yip further thoughts. The constants are in a resource file
Once a pascal file is parsed you can make a .res file named
.dkl_const.res
LikeLike