How to create just one output file; a multi-lingual version of XML source?
Typically for XML localization is to create a single output file for each language added to Sisulizer’s project. But Sisulizer allows also to build one multilingual file for the XML platform. You can set this option in “File” tab of XML source properties. More information about localization output files and paths on our blog.
However, this solution has some limitations related to the structure of source file in comparison to standard method of XML localization (localized output file for each language). Localized strings should belong directly to tag, not to tag attribute. For example, Sisulizer can create standard (monolingual) output files, but it can’t create valid multilingual file for following contraction:
While for below example:
...Sisulizer can create valid multilingual file, and output file can look like this:
Optionally, you can later edit Sisulizer XML output files in any text/XML editor and adjust it to your need, but of course, you should take care of XML language syntax.
Hint
Read more about localization of XML platform in our blog.
Janusz
Validation features for software localization
Sisulizer has implemented a wide range of validation features. Sisulizer’s validation can detect minor flaws in translation and will also automatically correct them for you.
Why is it important to validate your localization? Some not fixed issues e.g. incorrect placeholders can even cause exceptions in localized application and user couldn’t use localized version until these bugs are fixed. Sisulizer’s validation features help to identify and solve these issues.
Because validation is such an important and extended issue, you find it as own main menu entry in Sisulizer’s menu bar:
You can even validate resource of your source files via “Validation” menu -> “Validate Original”. With “Validate Original” you can detect bugs in your translation source, but you can’t fix it. However, you can send a Sisulizer report with list of bugs to your developer or boss and win his appreciation.
In this article I describe validation features for translations only. If you click on “Validate Translations”in “Validation” menu, Sisulizer opens “Validate Translations” dialog.
Validation dialog
Here in “Types” tab you can select appropriated validation types and execute validation operation. You can also save set of your validations for future use. This feature was implemented to build 300 and it is described in the validation improvements article on our blog. You can select here the following types of validations:
- Duplicate translation
- Empty translation
- Incorrect spelling
- Invalid character width
- Invalid script
- Missing translation
- Translation is all spaces
- Duplicate form hotkey
- Duplicate menu hotkey
- Duplicate menu short cut
- HTML comments
- HTML tags
- Inconsistent format string
- Inconsistent hotkey
- Invalid amount of new lines
- Invalid amount of tabs
- Invalid amount of vertical bars
- Invalid amount of white spaces
- Invalid hotkey character
- Invalid hotkey position
- Missing colon
- Missing exclamation
- Missing question
- Missing symbol
- Missing symbol
- Missing vertical bar
- Possibly extra format string
- Required string
- Clipped Text
- Control out of client
- Moved control
- Overlapping controls
- Resized control
- Totally moved control
- Totally resized control
- Unknown component
All above items are for “Validate Translation” feature, but of course, grouping is also available for “Validate Original” feature:
- Translation
- Formatting
- Control
On the right side of validation dialog are buttons for selecting all items from a selected category. When you click on specified category button, Sisulizer automatically checks all items belonging to this category.
In “Automatic Fixes” tab you can select items for automatic correction. When you select for example “Missing period” option, Sisulizer automatically fixes all items with missed periods without your intervention during validation operation.
Validation Results pane
You can find this pane in bottom part of Sisulizer’s main window. Here you can see results of validation operation, fix bugs, exclude selected items from next validation or save results to report. On below screenshot you can see example results of validation operation with two issue:
- Missing periods: User interface designers mark menu entries with three periods, if they open a dialog box. The translation does not have the three periods. Original string (with periods) and his translations (without period) in translation sheet are indicated by red arrow on screenshot.
- Inconsistent hotkey: The original is a menu entry and has a hotkey assigned. In this case, if the user opens the menu end presses <Ctrl+T> on his keyboard, this menu entry will be activated. The translation is missing such a hotkey.
When you select row in Validation results pane, Sisulizer automatically shows string with this issue in translation sheet and you can see context of selected issue and optionally fix it directly in sheet. Additional Sisuliser always displays in “Description” column descriptions of issues and hints for fixing it (for example available hotkey for duplicate hotkey issue). For fixing selected issue, click on “Fix” item in row in Validation results pane or click on appropriated button of pane toolbar. Below is screnshot with fixed first item from our example:
… and result in translation sheet:
When you want to exclude selected item from next validation (for example your original contains period, but you don’t want to use this period in your translation), select this item in validation pane and next click on “Excluded translations” button on pane toolbar. Of course, you can later include this item again for validation.
Hint
I recommend after fixing of selected issues validate again your project via “Validate again” in “Validation” menu or via button with this same name on toolbar of Validation result pane just in case. It always use settings from previous performed and allows you check if all issues were fixed.
Janusz
I get a version incompatibility message. What should I do?
Sisulizer checks by default if the to be opened project file is created with a newer version of Sisulizer. When Sisulizer detects such a case, it displays the following warning message:
This issue may happen because:
- You reverted your Sisulizer version to an older build.
A possible reason for that would be that in the newer build some troubles related to your project occur, and Sisulizer’s tech support or R&D recommended to use an older build until the issue related to your project is solved. - Translator and developer use different builds of Sisulizer.
When you do not keep your Sisulizer builds up-to-date, but your translator uses the freshest download, he may have used a newer build than the developer. This will cause a compatibility message on developer’s computer.
When you click on “Yes” button in above dialog, Sisulizer opens download page in your default Internet browser, where you can download and next install latest available Sisulizer build. We highly recommend using this solution, except when Sisulizer support team or R&D recommended to use an older build for your project. We don’t recommend to do it on your own initiative, because it can cause loosing of your hard work. However when you want to do your own tests you should first perform backup of your Sisulizer project. You should also consider the version history document available via “Help” menu in Sisulizer or via this link. It mainly contains the most important changes, while small improvements or fixes may not be mentioned in this document.
When your project works correctly with an older build, you don’t need to see compatibility dialog every time when you open your project. Simply go to “Tools” menu -> “General” -> “Settings” and uncheck “Check project file version” option.
However, when you upgrade your Sisulizer, I recommend enabling this option again.
Janusz
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:
- Row comments
- Translation 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:
- Comments included to source file in native format of source platform, for example INI, PO, and JAVA. Usually you can disable or enable scanning of source comments in “Options” tab in source properties dialog. You can set up full definition for text source files, and of course, you can also define comments items for text parser (“Format” tab in in source properties dialog).
- Comment items in source files defined by special Sisulizer tags. Sisulizer supports this for many platforms e.g. source code (Visual Basic, C /C++, Perl, Phyton, Pascal, etc.), web related (PHP, HTML, ASP etc.), Java etc.. For using this feature you need to specify information tags in your Sisulizer project. You can find these settings in “Tags” or “Scripts” tabs (it depends on source platform type) of source properties. By default Sisulizer use “slz” item, but of course you can change this. Next include comments with specified tags (e.g. //slz this is comment) to your source code. These comments are transparent for your developer tools, but not for Sisulizer – it adds items with these tags to project as row comments. You can also use this feature with your Delphi source files. However, it requires specifying the path of your Delphi project file (DPR) in “Project” tab of source properties dialog for your Delphi source file.
- Comments directly added to your Sisulizer project. This is the most common method for adding comments. You can add comments directly in translation sheet or via text editor. More information about adding and managing comments via translation sheet you can find below in “Working with comments” part of this article.
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:
- Do not import comments
- Import comments only for items without existing comments
- Overwrite existing comments
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:
- English is most popular language on the world, and customer usually use this language as UI language (not Polish or Hindi), whenever an application hasn’t implemented their native language first.
- For this same reason, typically finding a translator from English to Polish is easier than from Hindi to Polish. So, when your English version is imperfect what is the case even if you see yourself as fluent in a foreign language it will cause in some very odd or even dangerous results in targeted translations.
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:
- Import this project to your main project, build output files and next create new project based on these output files. However, in this case your Sisulizer out put files (sources for new project sent to other translators) should be an accurate copy of your source files. So you need always use “Localized files” option, not e.g. “Resource DLLs” (e.g. for Delphi) in “Files” tab of source properties.
- You can import English project to your main project and use English translations as alternative original. Alternative original feature is described in this article on our blog. This solution doesn’t require re-build of your source files and creation of new Sisulizer project.
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:
- Visual Basic / VBScript
- C++ / C
- C#
- Delphi / Pascal
- Java
- JavaScript
- PHP
- Python
- RGS
- SQL
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:
- Change mapping of component in “Component” tab.
- Include or exclude selected property from scanning in “Properties” tab. This feature allows you to exclude undesired items from Sisulizer project or include new items for localization. This feature is described in separate article on our blog.
- Adjust settings of component in “Options” tab.
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:
- you can review all unused items in your project before removing them from project
- you can re-use these rows in Sisulizer project, if you revert appropriated items in your source files
- you can manage unused translations, e.g. use these translations for new rows or export it to external file
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.
- Yellow dots indicate new items in source – these items didn’t exist in project file before scan
- Red dots indicate changed items in source – these items existed in project file before scan, but have changed some properties, for example, changed original string value
- Blue dots indicate not existing anymore items in source . For this row status Sisulizer has additional settings described in separate article on our blog.
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
































