How To...

We use our native language in source files, while our translators require English resources. Should I re-build all source files?

No, you do not need it if you use Sisulizer to localize your files, because Sisulizer has implemented a feature for using in project a so called “alternative original” language. Usually English is the best choice for original language because it is likely that you can find much more translator from English to your target language as for example from French to your target languages. By setting alternative original language to some other than none Sisulizer does not show the original strings in the original column but translated string in the selected language. This makes it possible to change the translator language pair suitable for your translator.

You can set up alternative original via context menu of “Original” column’s header, or via “Project” menu -> “Options” -> “Alternative Original”.

Project options

If your translator uses Sisulizer for translation of your application, you can set up alternative original also in “Exchange Wizard”, so when translator opens your project, he should to see alternative original in “Original” column. This setting is independent of alternative original setting in your project. However, I don’t recommend send project with alternative original without review it in your native Sisulizer’s project.

Exchange options

You can find alternative original setting also in “Export Wizard”. This setting depends on alternative original’s setting of your project. So, if your project doesn’t use alternative original, this option is not active in Export Wizard. Using this setting can be useful if your translator use other localization tools, or if you would like create your own localization repository for future using (e.g. as CSV or TMX files). For example if you change “real” language of your source files, you can quickly import translations for this changed original language from these external files.

Export options


1. When you use alternative language, in Original column header is displayed name of alternative language

Alternative original column header

2. When you use alternative language, Sisulizer’s filters related to text filtering (Sheet Filter -> Text tab) work with alternative original instead original. For example if you select “Translated strings compared to originals” -> “Identical”, Sisulizer compares contents of currently edited translation column with alternative original language contents.

3. You can use as alternative original only translation languages already added to your Sisulizer’s project

4. You should remember this feature doesn’t switch original language of your source.


How To...

I can’t import translations from my other projects and Translation Memory to some source in my project, despite the fact that original strings in these projects are identical. What happened?

Sisulizer can import translations when language pairs, that is, original and translation language are matched in both project. Targeted language is always visible in language column header, but original language name is not visible directly in translation sheet. Sisulizer during adding source files to project try detect original language, but if e.g. binary C++, .NET or VCL files contain resources with different language IDs, Sisulizer may incorrectly set up original language. Of course, user can change original language in Project Wizard, but this option is often overlooked. In a result project language pairs (original and translation languages) doesn’t match with language pairs of imported project and Sisulizer can’t import translations. Luckily, you can always check and optionally change original language in project via “Encodings” tab of source properties. You can go to source properties dialog via:

  • Click on “Project” menu -> “Edit source” -> select your source -> “Encodings” tab
  • Right click on your source in Project tree -> select “Properties” item from context menu -> “Encodings” tab

Encodings tab


If you would like check your language IDs of your resources in your C++ (Win32) or Delphi binary files, right click on your source in Project tree and select “Explore” item from context menu.

Explore binary source

Of course you can use also third party resource editors for example:

  • XN Resource Editor (freeware)
  • Resource Hacker (freeware)
  • ResEdit (freeware)
  • PE Explorer (commercial)
  • Restorator (commercial)


How To...

I have two Sisulizer projects and I would like merge it to one project. Is this possible?

Sisulizer hasn’t implemented feature for directly merging several projects to one project. However, you can do it with Sisulizer in really easy and flexible way:

1. First, you should add all sources to one project, which belong to second project. You can add these new source items to project via “Add source” UI items available via “Project” menu, main toolbar icon or via context menu of Project Tree.

2. If your second project contains some translation languages unavailable in your targeted project, you should add these languages to this project via “Project” menu -> “Languages” or via “Select target language” dropdown menu on main toolbar.

3. Next, you should use “File” menu -> “Import”. This UI item opens dialog of Import Wizard. In first step you can select imported languages. Of course, you can use here standard Windows keys (Ctrl and Shift) for selecting multiple languages. Clicking on “Next” button navigates you to next wizard step, that is, “Import Wizard – Options”. Here you can find all import options. Below are short descriptions of most important options.

Import options

Import method

  • By value – Sisulizer compares original values in both projects during import. The item is imported to all rows where the original value equals to the original value of the import item. This setting could automatically translate not translated originals in your first project which have been translated already in second project. However, you can lose some translations from second project, if this project contains originals translated in different way.
  • By context – Sisulizer compares context values in both projects during import. The item is imported to the row where the context value equals to the context value of the import item. You can use this setting, if you would like get translations exact matched with translations from second (imported) project. So this option can be useful, if you have duplicate originals which have been translated in different ways in imported project.  However, this setting doesn’t translate automatically not translated items in first project identical with items from second project.
  • By context first then by value – Sisulizer tries first to import by context. If no match, then import by value. This setting combines merits of both mentioned above methods.

Import also those items where the translated value equals to the original value
Some translations should be identical with identical with originals, for example names or some common captions (e.g. “OK” buttons) in most languages. So you can check this option.

Import only if context and original value match
I recommend checking this option, if you would like get results exact matched with your second (imported) project.

Import translation status:
I recommend checking of “Yes” option, because it allows you import to first project all translation statuses from second project

If your imported project contains translation comments, you can select “Import if there is no comment at the moment” setting, because it allows you import these comments.

If your second project contains items with “Do Not Translate” status and with maximum string length setting, you should also check following options:

  • Import Read Only status
  • Import maximum string length value

When you are ready, simply click on “Finish” button, and that’s all.


How To...

I can’t resize my controls in Visual Editor. How I can change it?

This issue could have different reasons, but most common reasons are:

1. You have checked “Integer” item on list of excluded data types in source properties -> “Excluded types”. You can open source properties via Project menu -> “Edit source”, or via “Properties” item in context menu of source node in project tree.
X, Y coordinates, width and height values are integer numbers, so if you want to change these values you need to enable integer numbers for localization in source properties.

Excluded data types

2. You have checked “Project” menu -> “Options” -> “Lock all the components” option.

Project options

3. You have checked “Locked” option in “General” settings of “Visual Editor Properties”. “Visual Editor Properties” are available via “Tools” menu -> “Editors”-> “Form” item, or via context menu of Visual editor.

Editor properties


How To...

What means red dot in right top corner of translation cell?

Red dots in translation cells mark items with so called “Invalidated” status. Sisulizer automatically assigns this status to rows with existing translations marked with “Changed” status after scan for changes (red dot in Flags column of translation sheet). Invalidated status is cleared automatically after edit of translation for changed original. If you don’t change translation for changed original, you need manually clear this status via row context menu -> “Translation” -> “Invalidated” (Of course you can also check this item for any translation cell). If you use “Project” menu > “Clear Changed Status” all “Changed” statuses will be cleared and by accident you can overlook important changes in original strings required also changes in translations. You can’t revert “Changed” status for items in project, but “Invalidated” dots allows you still to find these potential overlooked items.

Invalidated item


You can use special filter for filtering of invalidated items via “Sheet Filter” -> “Other” tab. It allows you to find quickly all invalidated translations in project. Additionally you can exclude/include invalidated items from/to exchange package (“Exchange Wizard – Filter” step of wizard -> “Other” tab) or export file (“Export Wizard – Options” step of wizard -> “Other” tab). Below is a screenshot with this filter for translation sheet.

Invalidated filter


How To...

How I can create localized versions of my files?

If you would like create localized versions of your sources included to project, you should use “Build” features available via “Project” menu, main toolbar icons and project Tree icon:
Below is a list of “Build” features available via “Project” menu:

  • “Build in Selected Language” – this feature creates localized version of source file selected from sub menu for currently edited language
  • “Build All sources in Selected Language” – this feature creates localized versions of all source files included to project for currently edited language
  • “Build All sources in All Languages” – this feature creates localized versions of all source files included to project for all project’s languages
  • “Build…” – it opens dialog window where you can select items (sources and languages) to batch building, e.g. Czech version of one source file, French version of second file etc.

Build items in Project menu

“Build All sources in Selected Language” and “Build All sources in All Languages” items are also available via icons on standard toolbar of main Sisulizer window

Build icons on toolbar

…and via context menu “All” node of Project Tree.

Build items in context menu of Project Tree

If you right click on source node item in Project tree, you can find following “Build” items in context menu:

  • “Build in Selected Language” – it creates localized version of selected source for currently edited language
  • “Build All sources in All Languages”- it creates localized version of selected source for all languages.

Build items in context menu of selected source node


  1. Build features aren’t available in Sisulizer’s Free edition. If you need e.g. a subsidary or distributor to build the localized version he needs Sisulizer Translator edition.
  2. Sisulizer can’t create localized files without access to your source files. You can set up source file paths, output file paths and names via “File” tab of your source properties. These features are described in this article on our blog.


How To...

Where I can set up output file names and paths?

You can set up different output file path names for each source of your Sisulizer project. You can change output path and file name paths via “Project” menu -> “Edit source” -> select your source -> “File” tab or via right click on your source in Project tree -> select “Properties” item from context menu -> “File” tab. “File” tab is very important item of Sisulizer, because it contains:

  • Source file setting with file path field, where you can select source file path. Sisulizer selects a path to source file automatically during adding source file to project, but here you can change it. Correct path to source file is necessary for scanning process and of course, to build output files (Sisulizer can’t build output files without access to source file)
  • Output files settings. Sisulizer automatically selects most appropriate output parameters for your platform, but you have possibility of changing and adjusting all these output settings.

Important note: source file and output directory paths are always displayed as full paths, but Sisulizer internally use relative paths, so you can move your directory with sources, Sisulizer project and output directory to another drive or even PC.
Below you can find descriptions for all common output settings and parameters:

Output directory

This is the root directory where Sisulizer creates localized files with optional source directories structure and specified directories created by Sisulizer. By default the output directory is the same directory where the original source file is located. You can change this by pressing button (browse) on right side of combo box.

Output files

Here you can specify type of output files (check box) and their names (filename combo box). Available types of localized files depend on your source file platform. For example recommended output file type for Delphi applications is resource DLLs, while of course, you can’t use this type of output file for HTML or txt source files. Below is a short preview of output file kinds capabilities:

  • VCL and Visual C++:  Localized files, Multilingual file, Resource DLLs, Embedded resource DLLs
  • XML files:  Localized files, Multilingual file
  • .NET binary and projects, TXT, Java, HTML, INI, Qt etc.:  Localized files

If your source file platform allows to use more than one output file kind, you should see in “Output files” section additional  checkboxes for every available kind of output files for selecting your favorite method. We recommend using only one kind of output files, but of course, you can check more than one method, or even all. For all output file kind you can also set up separated output file name parameters. It could be good solution for testing Sisulizer capabilities and, next select one, final method.
Below you can find short descriptions of all available kinds of output files:

  • Localized files: Sisulizer creates a  localized files for each language in the project. For example if the original file is MySample.exe and the project contains German and Japanese, Sisulizer creates de\MySample.exe and ja\MySample.exe. These files are equal to the original file except resource data has been localized.
  • Multilingual file:  Sisulizer creates one multilingual file containing all the languages of the project. For example if the original file is MySample.exe, Sisulizer creates all\MySample.exe that contains resources in each language of the project.
  • Resource DLLs: Sisulizer creates localized resource DLL files. They are resource-only DLLs that contains the same resource data as the original file but the resource data has been localized to the target language. You can use it with Delphi and C++Builder (VCL) and Visual C++ (MFC) files.  For example if the original file is MySample.exe and the project contains German and Japanese, Sisulizer creates Sample.DE and Sample.JA resource DLL files.
  • Embedded resource DLLs: Sisulizer creates an output files that contains all the resource DLL files embedded into the original file. Such an EXE can support several language in one file and the user can even change the language of the application on run time. The output directory for the embedded file is “emb”.

If your source file platform supports only one output file kind (localized files) you can find in “Output files” section only file name combo box (without above mentioned checkboxes), because you can’t change output file kind.

In next step you can type appropriate file name for output files.  Of course you can directly type file name, but this is very impractical solution if you would like to create output files for several targeted languages, because you can type here only one file name. So if you would like create files for 10 languages you should do it in 10 filename combo boxes!  But what happens if you add next 3 languages? Don’t worry Sisulizer has implemented “…” button by the combo box, Sisulizer open dropdown list (visible on attached screenshot) with friendly captions of all available patterns, and you need only click on desired item. Of course you can select from list more items, and Sisulizer add next pattern one by one. Of course, you can then manually adjust your pattern in combo box.

File tab

Short descriptions of all patterns

Add sub directory
Syntax: <dir>
Description: Variable is replaced with the relative directory to the source file including the last backslash. If the file locates in the same directory as the source directory this parameter is ignored.
Example: If the source file is C:\MyFiles\*.html and if the file to be processed is C:\MyFiles\SubFiles\Sample.html variable is replaced with SubFiles\

Add file name
Syntax: <file>
Description: Variable is replaced with the original file name with extension.
Example: C:\MyFiles\Sample.exe -> Sample.exe

Add file name without extension
Syntax: <body>
Description: Variable is replaced with the original file name without extension.
Example: C:\MyFiles\Sample.exe -> Sample

Add item name
Syntax: <name>
Description: Variable is replaced with the fixed name of the file or original file extension without period (if the file does not have a fixed name). Fixed name is a name determined by the original platform and it can’t be fixed (e.g. .NET specifies assembly name in the project file and that name must be used in order to enable satellite assembly file).
Example: C:\MyFiles\Sample.exe -> MyName

Add file extension
Syntax: <ext>
Description: Variable is replaced with the original file extension without period.
Example: C:\MyFiles\Sample.exe -> exe

Add Sisulizer language code
Syntax: <sl>
Description: Sisulizer’s locale code is used.
Example: “en” is for English, “en-US” is for English (United States), and “zh.tra” is for Traditional Chinese. The default Chinese script is the Simplified Chinese. This is why the language code of Traditional Chinese is “zh.tra”.

Add ISO language code
Syntax: <iso>
Description: ISO locale code is used. It is combination of language and country.
Example: “en” is for English, “en_US” is for English (United States), and “zh_TW” is for Traditional Chinese. ISO language code does not have any way to code a country neutral Traditional Chinese. That is why Chinese (Taiwan) is used.

Add .NET language code
Syntax: <net>
Description: NET culture code is used. It is combination of language and country.
Example: “en” is for English, “en-US” is for English (United States), and “zh-TW” is for Traditional Chinese. .NET language code does not have any way to code a country neutral Traditional Chinese. That is why Chinese (Taiwan) is used.

Add Windows language code
Syntax: <win>
Description: Windows locale code is used. It contains two or three upper case characters.
Example: “EN” is for English, “ENU” is for English (United Stated), and “CHT” is for Traditional Chinese.

Add MFC language code
Syntax: <mfc>
Description: MFC locale code is used. It contains three upper case characters.
Example: “ENE” is for English, “ENG” is for English (United Kingdom), and “CHT” is for Traditional Chinese.

Add decimal NLS language code
Syntax: <nls>
Description: Windows locale id is used. It is a integer number containing the primary and sub language ids.
Example: “9” is for English, “2057” is for English (United Kingdom), and “1028” is for Traditional Chinese.

Add hexadecimal NLS language code
Syntax: <hex>
Description: Windows locale id is used, but four digit hex value is used instead decimal value.
Example: “0009” is for English, “0809” is for English (United Kingdom), and “0404” is for Traditional Chinese.


  1. Below combo box you can see sample path based on your output directory path and selected pattern. It allows you quickly check your output setting without building output files.
    Output path sample
  2. If you type backslash after pattern item, Sisulizer doesn’t apply pattern item to output file name, but creates folder with name based on pattern item. For example, for Polish version of sample.exe and pattern <body>\<body>.<mfc>, Sisulizer create \sample\sample.PLK output path.
  3. Build features responsible for creation of output files are described in this article on our blog.


You're speaking my language?

English for Dummies, pt 2 – You’re Speaking my Language?

A follow-up to part 1, make sure to read that first. These posts are mostly for Software Companies who are in the same situation as we are: We understand, speak, read and write English quite well. The problem is, “quite well” is not good enough.

A World Full of Choices

Yes, you are selling the best software in the world! It has unique features, performs great and has a nice dollar-to-bit ratio (cheap!).

The problem is, your website visitors do not, by some way of magic, understand this. You must first convince them to download or buy and for that to happen, you better make sure they don’t leave your site in 2 seconds. Back to Google where they have 200 other search results to look at. Other Companies, selling their own Great Software…

Your Website

Did you write the text yourself? Unless you are from the US or UK, I can assure you: it is one big bucket of spelling and grammar errors. If someone from the US visits your site, he will first laugh and then quickly press the back-button. One more lost sale…

Simple Solutions

Sadly, for this you must part with something you really love: Money. You need to pay Professionals to look at your website. They will rewrite your site and give you tips how to improve it.

A future post will talk more about my experience with Martin who is our main English Language Specialist (and very good & quick at it). He used to send us a Word document with his findings, but these days he just translates our English software to English using a tool you may know.

I believe the Sisulizer team uses the same kind of services offered by Becky at Epic Trends. We used her service years ago and were also very happy with it.

Rent Someone’s Brain

Another service we often use is Al Harberg’s Web Site Makeover. Al is a marketing expert who will make sure your website is as convincing as possible, making people “Want to Buy” your program.

He will create a very detailed report of his findings and suggestions and revisit your site after you made the suggested changes. This is an investment (just $159) you will easily earn back in sales. Just do the math:

$159 / ThePriceOfYourSoftware = HowManyLicensesYouNeedToSellToEarnYourMoneyBack

If Al’s advice helps even just a little bit, you see this is an investment you will earn back soon enough. For us, it was just 1.2 extra licenses we needed to sell. I really believe Al’s suggestions made us hundreds of extra sales the last few years.

Contact me (gert at gdpsoftware dot com) if you want to see the report Al made for this site a few years ago.

Sure, Free is Possible

Ask your current English customers to review your website, offer a free upgrade to them in return, make them feel “Special”. But remember, those people already bought your software, they already know its value. A fresh look by people like Martin and Al is much more valuable.

If you really can not afford to spend any money, make sure to read all Al’s old Newsletters and some tips from Martin. If you are stressed for time, please just read Al’s Famous 10 Tips to Sell More. I really like his quote

There are no gimmicks involved.
In fact, each of the things that you need to do to sell more software
has been cleverly disguised as work.

(but he probably stole that quote from someone else).

You're speaking my language?

Not Just Sauerkraut – You’re Speaking my Language?

In my first post, German Language Software, I talked about the German market a bit. Here are a few more quick thoughts if you want to be successful in the German Language market.

I want to emphasize I am not a German market expert (correct me in the comments, please), but as you can read in the above post, we managed to multiply the German share of our sales ten times, from 2% to 20%! Something we do must be good 😉 Yes, this is the percentage of sales, not the number of sales (which obviously increased as well).

What we did

I will just post all things we did. I leave it up to you to decide what is important or not. My personal feeling is that all is important, miss one and it won’t work…

  1. German translation of the software
  2. German translation of the website
  3. German support, email, forum etcetera
  4. Make it easy to buy for German customers

German translation of the software

Please also see my first post, German Language Software. I am very much surprised about the German market, I expected tech tools in English-Language-only would be no problem at all.

Sure, if you are writing games or any other non-business software, it is super-duper-important to have localized versions of your software. To my surprise, it seems German customers really want to have German software, also for tech-tools (business).

German translation of the website

I don’t think I need to explain much here? When people search on Google in their own language (German), they won’t find your English website.

Remember to use proper html tags to convince google it is a German webpage:

<html lang="de" xml:lang="de" xmlns="">
<meta http-equiv="Content-Language" content="de" />

German Language Support

Everybody likes being helped in their own language. These days it is even more important: Germans from former eastern Germany (DDR) didn’t even learn English in school!

Remember to address German customers as Sie and not Du. Both mean “You”, but Du is only used between close friends and children. If you hire someone from Germany to do your support, this won’t be an issue – He will know.

Easy to Buy

Did you know German companies do not normally have credit-cards? The normal way to buy is by bank transfer. Our German translator noted that one of the first things he does when he searches for software is to see if he is able to buy without credit-card.

If he can’t buy by bank transfer, he needs to use his personal credit-card and try to get his money back from his company. Much easier to look at the next Google search result for a software company that understands the needs of German customers.

Read All “You’re Speaking My Language” posts

You're speaking my language?

64 Bit builds with Sisulizer – You’re Speaking my Language?

Yes, I promised to continue English for Dummies, I will do so somewhere next week. Remember, I am a Software Developer, bits and bytes are my life… In this post I will share how I created a 64 bit build of our File Viking program with Sisu.

Developers Only

For most Windows programs a 64 bit build means totally nothing. The size of pointers in our programs (and thus memory usage) will double. If your 32 bit program is not memory hungry (2GB is enough), there is no real reason to support 64 bit Windows, your 32 bit program will run fine on Win64 in most cases.

OK, our File Viking is a special case. One of its optional functions is to integrate with Windows Explorer (add a menu entry and detect Drag & Drop) and for this “the number of bits” (32 or 64) must correspond to the Operating System. We really need a 64 bit version of our software.

Marketeers Only

Do you have a 64 bit build of your program? In the next few years, the market will be moving to “64”, is your software ready? Even now, your customer installs your 32 bit program on Win64, he will immediately notice it is installed in the legacy corner of Windows:

C:\Program Files (x86)\My Program\

Show them you are ready for this century, have a 64 bit build of your software…

Sisulizer supports 64 Bit Software

Unlike other Translation Tools, Sisulizer is Ready for “64”. When we tried to create a 64 bit build, we were happily surprised Sisu translated the exe to 64 bit without any issue. Well, maybe one, see this forum post.

mmm, adding the 64 bit version of the .exe (and lots of DLLs) to the Sisulizer .slp file seems a bit weird as it already has “the same” 32 bit versions…. What we did instead was to change our build script a bit. Before copying the files to the “build directory”, it changes the Sisulizer .SLP file to have a new “source directory” (the binaries to translate). This way, our translator only needs to translate the 32 bit builds, the 64 bit builds are “magically” created as well.

rem prepare sisu file for 64bit
del "E:\cpp\FileViking64.slp"
change.exe "E:\cpp\FileViking.slp" "E:\cpp\FileViking64.slp" bin\Win32\Release bin\x64\Release

rem run sisulizer (translates to F:\File Viking Localized Output)
"E:\cpp\File Viking\FileViking64.slp"
rem obviously, you can also use slmake if you have the Enterprise Sisu


I am sure the Sisulizer developers will implement a better, automatic, solution for this soon. Multiple operating systems are something we have to deal with now.