Software Localization

See Sisulizer Live at Delphi Tage 2012 in Heidelberg

The next Delphi Tage conference will be held 20th to 22th September at the Print Media Akedemie in Heidelberg. It is a good tradition that the Sisulizer Team will join to present the newest development in Software Localization. You’ll find more info in German language on the website

We hope to meet you all in beautiful Heidelberg

How To...

Build 330 – Improved Gettext support

Our developers continuously improve support of Gettext localization.  Gettext is free software and an OS independent platform. It is definitely a very popular localization solution chosen by developers. With Sisulizer build 330 our customers get following new or improved features related to Gettext support:

Support for partially translated source PO files

In build 330 added support for partially translated PO/POT files. For clarifying this improvement I need basically to explain how Gettext works. Gettext localization based on following item pair in PO/POT files:

  • msgid – this item contains original string
  • mgstr – this item contains translation

Before build 330, Sisulizer used “msgid” items as originals, when “mgstr” are empty. When “mgstr” item contains a translation, Sisulizer used this item as original. Since build 330 Sisulizer always uses “msgid” items as originals. Previous scan method worked perfectly when localization process was fully made in Sisulizer, because Sisulizer saves translations to SLP files, not to source PO or POT file. However, it caused troubles when source files were previously translated in other tools e.g. popular POEdit. Since build 330, you can also add as source (to Sisulizer project) fully or partially translated PO/POT files. It helps switching to Sisulizer, or translating PO/POT files generated by other Gettext tools used by your developers. After adding such file as source you can also re-use existing translations from this source file, by using Import feature. Because Sisulizer has implemented advanced and flexible import features, so you can do it in three different ways:

  • Use “Project” menu -> “Import Translations From Localized files”. In this case output filename should be matched with source filename. Here is article about this import method and here is article about output file settings.
  • Use “Project” menu -> “Import…” and select “PO file pair” in Select File Format step of Import Wizard. Here is article about this import method.
  • Use “Project” menu -> “Import…” and select “PO file” in Select File Format step of Import Wizard. It uses standard Sisulizer import method. You can find details also in this article.

Management of contents saved to output PO files

Sisulizer can build as output files both compiled MO files (used as localization resource files in localized application) and translated PO files (the same as source, but with included translations made in Sisulizer). Before build 330 Sisulizer always saved original items to translations (mgstr) items in output files. However, when this file was opened in third party tools e.g. in POEdit, it shows file is 100% translated, because output PO file didn’t contain empty translation items. Since build 330 you can decide what Sisulizer should to do with not translated items during build output PO file.  Now you can select following options

  • “All” – Sisulizer works like before build 330, that is Sisulizer saves (in output PO file) original to translation item (mgstr) if translation doesn’t exist.
  • “Translated” – Sisulizer keeps empty mgstr items in output PO file,  if translations don’t exist.
  • “Different” – Sisulizer saves only differences, that is when translation is identical with original, appropriated translation item in output PO file is empty.

You can change this setting in “Options” tab of source properties dialog. You can open source properties dialog via context menu of source node in project Tree or via “Project” menu -> “Edit source” -> select your source.

This feature could useful when your developer/employer use third party Gettext tools and it allows him check translation progress, forward it to other translators who use third party localization tools, use in SVN solutions, etc.

Other improvements

In build  330 improved also support of plural forms and support items with identical original values and different comments.

All those changes significantly improved compatibility with third party tools e.g. POEdit and now Gettext support in Sisulizer is actually “tool independent”.

Best regards,
Janusz Grzybek

How To...

Sisulizer 3 – TM Editor

To Sisulizer 3 have been implemented features for editing content of translation memories. With previous Sisulizer versions you got extended translation memory management features, but these features were limited to “what” items, “how” these items should be saved to selected translation memory and used during auto-translating process. Now you can also edit any content of a selected translation memory directly in Sisulizer without using an external database tool. You can directly change a selected translation, add new strings or remove existing. So, implementing of these features supplement already existing management of translation memory and gives you comprehensive translation memory solutions. New editing functionality is available in “Search” and “Edit” tabs of “Translation Engines” dialog.

Edit Tab

Here you can preview, edit, remove selected or all items saved to the Translation Memory, but of course you can limit range of preview to selected language pair, document, etc. It could be useful for translation memories with lot of saved items. Below is screenshot from this tab, where you can find selection settings in upper part for limiting content displayed in preview box visible in bottom part of dialog. All editing features are available via buttons on preview toolbar.


  • Documents – here you can select content saved to translation memory from specified document, or keep default “All documents” setting for preview all documents saved to translation memory.
  • Language pair – here you can select content saved to translation memory for specified language pair, or keep default “All languages” setting for preview all language pairs saved to translation memory.
  • Page – here you can select page displayed in preview box.

Edit toolbar:

  • Remove – this remove selected string pair in preview box. Button is unavailable (grayed), if you don’t select an item pair in preview box.
  • Remove all – remove all items shown in preview box
  • Edit – this button open edit dialog. Optionally, you can open this dialog by double click desired row (string pair) in preview box, instead using of button on toolobar. Button is unavailable (grayed), if you don’t select an item pair in preview box.
  • Add – this button open edit dialog where you can add new pair and additional data related to this item pair.

As I mentioned above, for “Add” and “Edit”, Sisulizer opens special dialog, visible on below screenshot, where you can add/edit original and translated strings, set translation status or even change original or translation language.

Search tab

“Edit” tab is comfortable solution for review or edit couple strings or whole the Translation Memory, but for search specified string pair I recommend use “Search” tab. Generally, this tab looks similarly to “Edit” tab. Edit toolbar and behavior of edit features is identical with “Edit” tab, while preview box is almost identical with preview box from “Edit” tab, expect “Id” column replaced in “Search” tab by “Documents” column.  However, you can’t find here “Documents” and “Page” settings. Instead it, you have “Search” field with “Exact match” option. When you type unique translation in this field, preview should show one pair. If you type unique original in this field preview could show more items – one per translation language.

Views of both tabs and contents visible in preview box are independent of translation memory engine type.

Short summary

Because our R&D had implemented many improvements to translation memory in Sisulizer 2010, since first official release of this version, I decided add here also short review other tabs visible in “Translation Engines” dialog.

  • Info – it contains common info about selected translation memory.
  • Documents – here you can remove selected documents previously included to translation memory or import new document e.g. SLP,  TMX, etc. to translation memory.
  • Tools – here you can manage backups of translation memory, clear or export translation memory content.
  • Add settings – it contains settings related to adding items from Sisulizer projects, e.g. when Sisulizer should save content of SLP to translation memory, how filter saved items by translation status, saving unused translations from project.
  • Import settings – it contains settings related to items imported from external files, for example how supports export sub-language ID or what translation status should be added to imported items.
  • Translate settings – here you can set behavior of auto-translating for selected translation memory, e.g. how support sub-languages, what translation status should be set, how overwrite existing strings.


Software Localization

Vote for your favorite Delphi localization tool

Please consider to vote for Sisulizer at as your favorite localization tool.
Currently Sisulizer is doing well. GNU gettext/dxgettext is still leading.

If you do not already know: Sisulizer does support localization of PO/POT files, too. And I know that quite a few translators are using Sisulizer to translate, even when the developer just use GNU gettext. Why? Translators love the comfortable and intuitive user interface, and all the great filters, search/replace features, integrated translation memory, and the validation functionality. Especially the validation features help translators and developers to create great, and save localized versions of your software. Please read more in the following articles about localizing PO/POT files created by GNU gettext routines with Sisulizer:

Software Localization

Sisulizer is Gold Sponsor at Delphi Developer Days 2012

Delphi experts Marco Cantù and Cary Jensen present their annual Delphi Developer Days tour. This six-city tour visits four cities in Europe and the UK, and two cities in the US.

  • March 26-27 2012:
    , United Kingdom, Premier Inn Heathrow Touchbase Conference Center
  • March 29-30 2012:
    , The Netherlands, Park Plaza Victoria Amsterdam (near central train station)
  • April 16-17, 2012:
    Washington DC/Baltimore, USA, Holiday Inn Express Hotel & Suites, BWI Airport West
  • April 19-20, 2012:
    Chicago, USA, Holiday Inn Express Hotel & Suites, Arlington Heights (NW O’Hare Airport)
  • May 14-15 2012:
    , Germany, Holiday Inn Express Frankfurt-Messe
  • May 17-18 2012:
    , Italy, Hotel Royal Santina (by Termini central train station)
Delphi Developer Days 2012

Delphi Developer Days are two-day live Delphi events that provide you with the latest information on Delphi as well as practical techniques to help you improve your Delphi development skills. Each event includes both joint sessions, presented by Marco and Cary together, as well as simultaneous tracks, where Cary and Marco break out into separate rooms to present individual sessions. There is also an Embarcadero Technologies Keynote, and an additional guest speaker presentation in each city from Delphi experts including Bob Swart, Ray Konopka, Stephen Ball, Jim McKeeth, Daniele Teti, and Bruno Fierens. All sessions are in English.

A wide variety of topics are covered. Some topics, such as FireMonkey and LiveBindings, apply to the latest version of Delphi, but there are also many classic topics that apply across versions of Delphi, going back to Delphi 7 and earlier. Detailed descriptions and an agenda can be found at:

All Attendees Receive:

  • An extensive course book (several hundred pages in length) written by Cary and Marco that includes all their material covered in all of their sessions
  • Source code examples from all of their sessions
  •  A chance to win a full license of Sisulizer Standard (and other valuable prizes from other sponsors)
  • Lunch on both days

Space is limited to the first 35 people in each city. There are discounts for early registration, previous attendees, and groups of 3 or more developers from the same company; see online for details. Price and registration information is available at:

How To...

Sisulizer 3 – New HTML Editor

Sisulizer 3 comes with a completely redeveloped HTML Editor. New HTML Editor is more comprehensive and flexible than the editor implemented to Sisulizer 2010. It comes now with four different edit/preview methods for HTML content. You can switch easily the preview/edit method by clicking on corresponding tab which are added on the bottom of the preview window. So you can check quickly all four alternate preview methods for each file.

You can choose the following edit & preview options:

  • Editor – this is your old friend from previous versions of Sisulizer. Sisulizer use own parser for rendering HTML files here, and it allows our R&D on better control and support of issues related to localization of HTML, while this is impossible with third party components. Our HTML parser doesn’t support rendering of CSS, but for preview of visual styles you can use described below “Browser” preview option. Editor allows you on selecting localized text directly in preview window, and translated text is automatically displayed in preview during typing.
  • Browser – this preview method based on Internet Explorer components gives you real preview of HTML file, the same as in your Internet browser. It supports visual styles including CSS. With this method you can see localized items in visual preview immediately after adding or editing translation in sheet. It doesn’t require to build output files – simply, click “Refresh” button (visible on Visual Editor toolbar) after translating item and Sisulizer change content of preview.
  • Source code – this option gives you preview of HTML source code with colored syntax and selectable text items. Sisulizer allows you edit only items visible in sheet, but with “Source code” you can see also not editable tag, attribute and style items. You can’t edit those items, but I think “Source code” preview method is a real milestone, because preview of code gives you full control of localized HTML files.
  • Text – it shows HTML as plain text. It could be sometimes useful, for example if you want to check if “Source code” option correctly displays HTML content, etc.

In current build our old editor inherited from Sisulizer 2010 available via “Editor” tab is disabled by default. However, you can enable this tab at any time, if you need. For doing it you should go to “Tools” menu -> “Editors” -> “HTML Editor…” and check “Use” option.

Applying of this change requires restarting of Sisulizer.

Recently our developers also implemented settings for choosing custom a Web browser used with “Run localized  source” and “Run original source”. So now you can check how localized file behaves with different Internet browsers, while previous Sisulizer’s builds always opened localized files in default Web browser. You can also add default pre and post-name parameters used with selected browser. Those new settings are available via “Tools” menu -> “Platforms” -> “HTML…”.

Above settings doesn’t influence on HTML visual editor behavior.

Janusz Grzybek

How To...

Can I edit my source file in Sisulizer?

Our prospects often ask us, if they or their translators could edit and change code in source files for their Sisulizer projects. Sisulizer’s policy is never to change any original files, even if source file is plain text file. If you would translate text in typical text editor, you usually replace original text with new, translated text. However, Sisulizer works in completely different way and never change source file. When you create new project, Sisulizer scan source file for translatable text. Next, you translate those strings in Sisulizer and save it to SLP file. When you generate localized version of your source file, Sisulizer usually copy scanned content of your source file to new localized file and replace original strings with strings translated in Sisulizer. In every step (scan, translation and build) Sisulizer doesn’t change anything in your source files. Probably we never change this our policy in future, because:

  • As I mentioned above, Sisulizer needs to scan source file. This operation is repeated during each build process. So, all potential changes in your source file made could generate weird change loops between source and Sisulizer project. This would break any project logic and would make results unreliable.
  • If you edit/translate plain text file in typical text editor, you need to replace old text with new. If you don’t create backup copy of your source file, you will lose original text once and for all. In this case you can’t go back to original version of previously translated strings, so you also will lose context of whole text. It really makes it hard to localize next, yet not translated strings. But don’t worry, SIsulizer doesn’t change source files, so you are free from this issue.
  • Because Sisulizer doesn’t change source files, so it can’t be used by hackers to crack your software. Also your translators can’t change source files, even, if you send your sensitive files to them. Protection of sensitive data of our customers is very important issue for us, and blocking of editing source file/code is element of this protection policy.

If you would like to edit your source code, you need do it in your developing tool, because Sisulizer is localization tool, not globalization or developing software.

Janusz Grzybek

How To...

How to get quick info about localization envinroments on your PC?

Translator editions of Sisulizer don’t need any additional developing components on their machines. Developer editions in contrast do require installation of some additional components and frameworks if you want to build output files. Of course, it is not required for most platforms. However, for the following platforms you need to have installed appropriated developing environments:

  • .NET applications (required is at least MS SDK)
  • HTML Help (required is HTML Workshop)
  • Databases localizations (some databases require installation of appropriated engines)

You could check, if your system  meet the requirements of your localization process via “Tools” menu ->”Platform” -> your platform, e.g. .NET. However, if you want to check this in a quick way, simply go to “Help” menu -> “System information” . It opens a dialog with short and condensed information about installed components required to localize .NET applications, databases and info about your Windows and locales via following tabs:

  • Operating System
  • Locales
  • Compilers
  • Databases
  • .NET

On above example screenshot, you can see what types of databases engines are installed on my PC. This list doesn’t show in example Paradox, because I haven’t installed Borland Database Engine.


Software Localization

Thank you for visiting Sisulizer at Delphi Tage 2011

We want to thank all customers and prospects visiting our booth last weekend in Cologne at Delphi Tage 2011. To all that haven’t been there: you missed a real “hot” community event in the Früh Brauhaus. Everybody joining it knows what I’m speaking about. The sessions in Cologne’s MediaPark also had been hot, but for some other reason. David I announced Delphi XE2 the first time in Germany. He told that XE2 is the biggest step in Delphi’s history since version 1. Especially the 64bit version of Delphi made a lot of dreams come true. And with the first release of FireMonkey we saw the future of cross-platform development in action.

(David I announcing Delphi XE2)

At the Sisulizer booth you could see the brand new Sisulizer Version 3 with XE2 support (incl. Delphi 64bit, FireMonkey 32bit, 64bit, and OSX) in action. Also small dreams came true: We could show the long missing translation memory editor. Thanks to R&D who made some extra hours to make it possible.

Hope we will meet you all again next year.

How To...

Unique features of Sisulizer’s Search & Replace functionality

Search & Replace is an important and often used operation in localization process, so Sisulizer has even special menu in main menu bar dedicated to search operations.

Search menu for localizations

Generally, this feature is similar to Search/Replace features implemented to other third party localization and developing tools, text editors, word processors, etc. Sisulizer uses typical UI items and shortcuts for search features, for example:

  • You can use wildcards
  • You can use regular expressions
  • You can limit search results to whole words or strings
  • You can set up search direction
  • You can set up search range (from cursor or entire scope)
  • Search can be case sensitive
  • You can use standard shortcuts as e.g. F3

Many advanced text editors or developer tools have implemented identical or similar features. However, it could be misleading, because Sisulizer’s Search & Replace has many unique features adapted to localization process. Those differences could sometimes puzzle our customers become accustomed to other tools, and for this reason I’d like concentrate in this short article on differences and unique features of Sisulizer’s search & replace. Those unique features and behavior are shortly described in below points.

Working with sheet columns

Sisulizer’s main workspace based on a sheet which looks a bit similar to Excel sheet with vertical columns and horizontal rows. Sisulizer always searches items only in currently selected column regardless of Direction and Origin options selected in Search dialog. This range limitation prevents accidental and unintentional changes in currently not edited language columns. Off course, you can choose every column in sheet (also context column) for search. If you want to find selected text in several columns, simply select next desired column and use F3 shortcut and so on.

Sheet filters and text search feature

Sisulizer always searches text only in potentially visible contents of translation sheet. So if you use sheet filters e.g. text, row statuses or translation statuses filters, Sisulizer will search specified text only in filtered sheet content. For example, if you uncheck all translation statuses but “Auto translated” translation status and “Changed” row status, Sisulizer will use those filters also in search operation (look on below screenshot). So, with this flexible solution you can specify search range not only on item location, but also based on item status. Sometimes, it could stir up users, when they forgot to uncheck used filters, and for this reason they couldn’t find specified text. But don’t worry, Sisulizer displays “Special filters on!” warning at bottom of filter panel (look on below screenshot), when you use a sheet filter.

Filters used while translating

Additionally, you can separately use those filters only with search feature, without using it in sheet. Here is article about this pretty new functionality implemented to Search & Replace feature.

Project Tree and text search feature

Search range also depends on selected node in Project. If you select “All” (parent) node in Project Tree, Sisulizer will search selected text in whole project. When you select source node, Sisulizer will limit search range to selected source. If you select source sub-node e.g. form or stringtable, it limits search range to this sub-node, even if you use “Entire scope” setting. Combination of this feature and sheet filters gives you powerful possibility of precise specify search range. For example you can search selected string only in selected sub-node and additional narrow search results to items with selected translation and/or row statuses, etc.

Find results pane

If you click on “Find All” button in “Find text” dialog, Sisulizer will displays all matched results in “Find Results” pane visible in bottom part of Sisulizer’s main window. This is a very comfortable solution, because it gives you full preview of all matched items.

results of search in localizable content

If you want to go in sheet to selected item, simply double click this item on list in “Find Results” pane. It doesn’t clear find results list, so you can go back to this list in any moment and manage next matched items. Also when you change pane (by clicking on other pane tab) list is preserved, so when you change back to “Find Results”, you will see results of last search operation again. This list is cleared, when you close your project. Some advanced text editors or localization tools have implemented similar features, but this solution isn’t common and for this reason I described it here. If bottom panes aren’t visible, go to “View” menu and activate “Panes” menu item.

Search in Project Tree

Apart text search feature, Sisulizer has also implemented feature for search nodes in Project tree based on node name. It could be useful for big projects with lot of sources or sources with lot of nodes. This feature is available via “Search” menu -> “Find node” or via context menu of Project tree.

Find next/prev untranslated rows

If you don’t want to scroll whole project and use filters for search of not translated items, simply go to “Search” menu and click “Next Untranslated Rows”. It moves you in sheet to next not translated item in currently edited language column. Similarly, if you click on “Prev Untranslated Rows” item in this same menu, Sisulizer moves you to previous not translated item. This could really speed up translation process, especially if you use shortcuts instead of opening menu and clicking appropriated menu items. Below are those shortcuts:

  • Ctrl+G – Next Untranslated Rows
  • Ctrl+Alt+G – Prev Untranslated Rows


As I mentioned above, you can improve your search operation by using search feature in close collaboration with Sisulizer filters. However, if you aren’t familiar with advanced Sisulizer filters, I recommend you read following articles on our blog:

Janusz Grzybek