How to use comment features to communicate between developers and translators?

Sisulizer’s comment functionality is a powerful solution for exchanging information between developers and translators. Unfortunately, comment features are still underestimated by many users, while additional information (for example info about placeholders or context) about selected items can really speed up localization and allows to avoid many misunderstandings or even bugs. Generally, you can find in Sisulizer two types of comments:

Below you can find short descriptions about both comment types.

Row comments

This comment type is dedicated for developers / authors of Sisulizer projects. In these comments developer can spread information about selected string to translators, especially when string contains unreadable items for translators for example placeholders or when localization doesn’t allow a visualization of the item in WYSIWYG editor. With Sisulizer you can not only type your comments directly into Sisulizer project, but also use comments included directly to your source files, because Sisulizer can scan comments added to source files for some platforms. Sum up, you can use 3 different “sources” of comments with Sisulizer:

Translation comments

Not only developers can add comments to Sisulizer’s project. Translators also can add comments related to their translations. This is possible via “Comments” column in sheet. Content of this column always depends on currently edited translation column, that is, when you edit  Finnish language, in “Comments” column displayed are only comments added to Finnish translations, when you switch to other language column e.g to German, content of “Comments” column is automatically refreshed, so you can see comments for German translations.

Working with comments

All rows with added rows comments are indicated in sheet by small, gray triangles in right top corner of Original column, while translation comments are indicated by small, red triangles in right top corner of Translation column.

When you move mouse over triangle symbol, Sisulizer displays popup with content of comment.

When comments columns aren’t displayed in sheet (like on above screens) you can’t edit these items in sheet, but you can still edit, add or delete these comments via “Text Editor” pane. However, if you want to edit comments directly in sheet or sort sheet contents by comments you need to enable displaying of these columns. Open “Columns” dialog via “View” menu -> “Sheet columns” or via appriopriated icon on sheet toolbar and move comment items from left to right panel.

You can also filter sheet by comments. When you check “Row comments” and/or “Translation comments” options in “Other” tab of “Sheet Filter” dialog, Sisulizer will display in sheet only rows with comments. You can read about sheet filter features in this article on our blog.

Exchange, import and export

As mentioned above, first of all comments are used to exchange information between developers and translators. So, of course, you can manage comments in Import, Export and Exchange Wizard, for example you can add (or not) comments to all exported file types, that is TMX, XLIFF, Text or Excel files. When you import translation from received project you can decide if you:

Below is an example screenshot with comments import settings in Import Wizard.

From build 301 you can manage it separately for both comment types.

Janusz

I’m a developer, but my English is poor… How can I create a good English source file?

This is an important issue because:

To resolve this issue , you can create a project with English as original and translation language. Next find a native English translator and send him your project. His translation will be something between a proof-read and rewriting of your “dummy” English. When you receive his project with high quality English items you can:

I think you could experiment with both ideas and next select most appropriated solution for your application and workflow.

Janusz

Build 307 – improving of Gettext localization .po files

Choosing of programming language

Earlier builds of  Sisulizer 2010 expected you use  C/C++ as programming language using Gnu gettext routines. From build 307 Sisulizer honors that gettext .po files are popular among developers of a wide range of programming languages. Just specify your programming language via menu ”Project” -> “Edit source” -> your PO source file -> “Options” -> “Programming language” combo box. Source properties dialog is also available via “Properties” item in context menu of source node in Sisulizer’s Project Tree.

Below is a list of supported programming languages:

Gettext localization is also a popular solution for web solutions based on non-Windows operating systems, such as Linux. Above list contains also languages popular in developing of advanced web solution, for example PHP, Perl, Pthyton, SQL and this Sisulizer feature can significantly improve localization of applications not based on Windows  environment.

When you select appropriated programming language, you can validate translations for potential mistakes of programing language items included to PO strings. You can check for these potential bugs, if you select “Inconsistent format string” in “Validate Translation” dialog available via “Validation” menu.

Plural forms

With build 307 our developers significantly improved support of plural items included to Gettext source files. Now you can localize also plural items, but first you need to select number of plural forms supported in your source PO file by using menu “Project” -> “Edit source” -> your PO source file -> “Options” -> “Plural forms”. Source properties dialog is also available via “Properties” item in context menu of source node in Sisulizer’s Project Tree.

For each plural message Sisulizer adds as many rows as specified in this field. If you plan to support only Western and Asian languages 2 is enough. 3 covers most languages excluding Arabic, Slovenian and Welsh. 4 covers all but Arabic. If you want to correctly translate to all Arabic forms set this to 6.

Janusz

How can I map an unknown component?

Sisulizer supports all common components for many platforms, e.g. for .NET, VCL, C++, Android etc. We also support many third party components and we have a special third-party program for cooperation with programming components vendors (here you can read about this program and supported components). You can find lists of supported components in “Tools” menu -> “Platforms” -> selected platform “Components” tabs. All these components are correctly displayed in Sisulizer’s Visual Editor. More information about relations between general and project components settings you can find in this article on our blog.

Sisulizer has also implemented a smart feature for automated mapping based on keywords. You can find and edit keywords list via “Tools” menu -> “Platforms” -> “Keywords” tab. Below is example list for VCL platform.

You can disable this feature by unchecking “Map unknown components by keywords” in “Settings” tab of “General settings” dialog.

However, this feature can’t map all third party or custom components. In these cases unknown components are displayed in similar ways as on below screenshot. Usually Sisulizer can detect all string items and limitation is concerned to displaying of component in Visual Editor.

When Sisulizer can’t map component, you can do it manually. Simply, click on “Click to map” link visible in Visual Editor. It opens dialog where you can select appropriated component type. That’s all.

Of course, you can change mapping or edit settings of selected component at any moment. Use “Project” menu -> “Components” -> your source, or context menu of component in Visual Editor.

In opened dialog, you can:

Hint

You can review all properties of selected component via “Properties” menu item in context menu of component in Visual Editor.

Janusz

Unused items automatically disapear from project after scanning. How can I change this?

Automatically removing Unused items from project is a comfortable solution, but leaving Unused items in project has some advantages, too,  for example:

If you like to keep Unused items in project, you should go to “Tools” menu -> “General” -> “Settings” and uncheck “Remove unused items automatically”.

Instead of using automatically removing, you can manually remove these rows via “Project” menu -> “Remove Unused items”.

When you check “Add unused translations to translation memory” option in “Add settings” tab of selected Translation Memory (“Tools” menu -> “Translations Engines” -> selected Translation Memory), Sisulizer automatically saves translations for unused items to Translation Memory. This allows you to keep your translations for future use.

Janusz

What do these red, blue and yellow dots in the Flags column mean?

These dots in Flag column of Translation Sheet indicate new, changed and unused items in source file detected by Sisulizer during scan operation. Typically some or all of these items appear after updating your source file. If these dots appears for not changed sources, it can be a result of some bugs in source files or incorrect Sisulizer behavior. If this occurs we recommend reporting it to Sisulizer support via our forum.

You can use Row statuses filters in Filter panel for displaying rows with selected row statuses. This is a very useful feature, because that allows you to find in an easy and quick way all changed, new or unused status. You can learn more about sheet filers in this article on our blog.

You can clear selected row statuses for whole project via appropriated menu items in “Project” menu. However, I highly recommend first review  all changed items, because after clearing you couldn’t find these items. If project doesn’t contain rows with selected items, related menu items are unavailable (grayed). “Clear New status” and “Clear Changed status” change statuses of rows to “In Use” status, while “Remove Unused items” remove all rows with this status (also translations), but you can automatically save these translations to Translation Memory. This feature is described in this article on our blog.

You can also manually change row status (except Unused status) only for selected row(s) via context menu of translation sheet.

Information about count of rows with selected statuses are also displayed in “Statistics” pane, if you have checked “Row statuses” option for this pane.

Janusz

What does symbols with “c” and “p” chars in Flags column mean?

These flags indicate rows with characters max length value (flag with “c” character) and with specified pixels max length value (flag with “p” character) greater than zero. These values are displayed after “p” or “c” characters. For example on above screenshot we have one row with max characters value equal 12, and second row with max pixels value equal 20.

You can specify max characters or max pixels values for selected row via “Row” menu:

or via translation sheet context menu:

Janusz

What does “%s” symbol in Flag column mean?

This symbol in Flag column of Translation Sheet indicates a message string. Message function is used to display messages to the user. These messages may be informational, warnings, confirms or whatever. For example, the user may be shown an error message, and be allowed to abort, retry or cancel the erroneous process. If your application is written in Delphi responsible function for displaying messages is is “MessageDLg”. I suppose all developers know what is this, while I’m programming lamer, so I don’t quote here detailed definitions of this.
Sisulizer tries automatically to detect message items and indicates these detected items in Flag column of Translation Sheet.

Additionally, if you use “Text Editor” pane, you can find information about it in “Row info” box.

Of course, you can change it, if Sisulizer incorrectly marked a string as message or does not detect a message. You can do it via “Row” menu -> “Message string” sub-menu or via Translation sheet context menu (on attached screenshot).

Information about message strings are also displayed in “Statistics” pane, if you have checked “Summary” option for this pane.

Janusz

I’ve several translators for one language. How I can manage it?

Sisulizer is a flexible tool and allows managing similar situation in a couple of ways. I describe below some short workflow examples:

Exchange Wizard

You can use Exchange Wizard for selection specified resources sent to selected translators. In step “Exchange Wizard – Languages and Items” of Exchange Wizard select desired language (in our example Portuguese) and exclude undesired items in right panel by double clicking these items. The translator in our example will get only “String” resource from Delphi binary source. Then you can create  next package for this same language and select other items e.g. CHM source and send this exchange package to another translator, etc.

Unfortunately, this solution can cause inconsistent translations e.g. different translations for identical originals. So you need after import translated packages select most appropriated translations for duplicates and generally review and verify content of whole project and it can take lot of time and work.

Comments using

You can also use “Row comment” column for assigning selected strings to specified translators. In this case you needn’t to split exchange package to separate parts. Just send to all translator this same file. With this solution each translator knows what strings he/she should translate. For doing it you need to click “Sheet columns” button on Translation sheet toolbar and move “Row comment” from “Hidden columns” to “Visible column”. Next type e.g. name/surname of translator to comment cell, copy this comment, select all appropriated rows and paste (multi-paste) comment to “Row comments” cells of all selected rows. Next repeat it for other translators. It still doesn’t solve issue of inconsistent translations and require some additional job, but I think this solution is more comfortable and flexible than solution with sending to translators exchange packages with selected sources or source’s parts. For example you always can control who translated selected string, because you see translator name sheet together with translated string. You can sort sheet contents by translations, context, but also by comments (names of translators). Additional, you can use any order (not only alphabetical order) to indicate translators their items for translate.
Because exchange package doesn’t remember sheet column layout, you should mention your translators how enable “Row comments” column in sheet view.

Language variants

Any time ago I coordinated some team of freelancers. They have been different habits, they used different terminology, and it really hindered our job. So in this case, I used solution with adding custom column for each translator. You can do it via adding custom language variants via “Tools” menu -> “General” -> “Languages” tab -> select translation language in left column and click on “Add variant”. Here type preferred names for your new language variant.

Next, add these created language variants to your project via “Project” menu -> “Language”.

After adding these languages to project and adding to visible columns, your sheet can look like on below screenshot:

Next you can send to selected translator package only with selected variant or with all variants. It depend only of your needs and preferences. After receiving translated project you import it to appropriated variant column in your project. Then, you can verify imported translations, select best translations of duplicates and copy verified translations to you main language column.
This solution has following pluses:

But also has minuses:

Shared Translation Memory

If you and your translators use Sisulizer Enterprise edition, you can also create shared Translation Memory based on MS SQL Server or MySQL databases, but of course, you need t0 install these database(s) on your PC or other PC in your network. This solution allows working all Sisulizer users with one centralized, remote Translation Memory. Because Sisulizer allows on saving to Translation Memory several translations in this same language for selected string, you can select most appropriated translation during translation with Translation Memory. However, this is difficult because you need to know context and you should speak in selected translation language. You can find more information how add new Translation Memory and how manage it in this article in our blog.

Janusz

Something for translators…

Many articles published on our blog and especially in our “How To” section seem to be dedicated only for developers, but this is not true, because also users without programming knowledge can find here articles useful for them. Of course, articles related to scan, build features or source properties management are only available in developer’s editions of Sisulizer, that is, Standard, Professional and of course Enterprise edition and that usually aren’t useful for translators, but you can find on our blog technical articles with descriptions of features available in all editions of Sisulizer also in editions for translators, that is, Sisulizer Free and Translator. We also remember these users and many Sisulizer’s features really speed up translations and make translators’ job more easy. “Unfortunately”, number  articles on our blog continuously grows with each passing week, and users could have troubles finding interesting articles for them. For this reason I decided to create a short articles index with features useful also for translators. As I mentioned above we still add new articles I recommend to bookmark, and come back to this article from time to time, because I’ll update this index respectively to updated blog contents.

General advices about Sisulizer using, our support, contacting us

These artcicles can be useful for all Sisulizer’s users, both for developers and translators. Many translators send questions about Sisulizer to their developers, but we reccomend directly contact with us if you encountered error or you don’t know how use Sisulizer’s features.

Common Sisulizer features related to UI, layout, etc.

My articles are based on Enterprise edition (e.g. screenshots), so some items can’t matched with your edition, but generally these articles are concerned to all Sisulizer editions.

Translations import and export, translation engines, translate duplicate feature etc.

Translator edition is dedicated for translators, both freelancers and LSP, so this edition has implemented (identical with enterprise edition) all features  related to import/export and auto-translation functionality.

Other translation aided features e.g. filtering, validation, spell checking, reports etc.

Build features

You can’t create new project with Sisulizer Translator Edition, but you can with this edition build output files. Below articles are also dedicated to developers, but also translators can find in these articles useful information, especially if their developers include to translation packages also source files.

Hint

You can learn about differences between Sisulizer editions on this Sisulizer site.

Janusz