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

Leave a Reply