Translation Guidelines of the Tajik Translation Team

Translation Guidelines of the Tajik Translation Team

This guide contains specific information about translating software into Tajik language. It contains details about what strings should be translated and what not, what are plural forms and other things you should be aware while translating software using Launchpad Translations (Rosetta) or any other tool.

Project Page

The Home project page for Tajik Ubuntu Localization team at located at:

About the Team

Tajik Ubuntu Localization Team is a team of professional translators and proofreaders who contribute their professional skills to translate Ubuntu into Tajik language.

How to join the Team

You should be a professional translator or proofreader to join this team and have a strong experience in translation and localization of software into Tajik language. Please, send more information about yourself to the owner and mailing list of this Team and explain why you want to translate Ubuntu into Tajik language.

Contact us

What’s New?

The Translation Guidelines of the Tajik Translation Team is now created (April, 4, 2013)


Victor Ibragimov (

Translation Guidelines of the Tajik Translation Team


This guide contains specific information about translating software into Tajik language. It contains details about what strings should be translated and what not, what are plural forms and other things you should be aware while translating software using Launchpad Translations (Rosetta) or any other tool.

This guide does not include hint and tips about using Launchpad Translations (Rosetta) as a translation tool. For such information please read Translations/StartingToTranslate.

Basic information about Tajik language

Language name: Tajik

Local name: Тоҷикӣ

Language code: tg (ISO 639-1); tgk (ISO 639-3)

Tajik alphabet: Аа, Бб, Вв, Гг, Ғғ, Дд, Ее, Ёё, Жж, Зз, Ии, Ӣӣ,Йй, Кк, Ққ, Лл, Мм, Нн, Оо, Пп, Рр, Сс, Тт, Уу, Ӯӯ, Фф, Хх, Ҳҳ, Чч, Ҷҷ, Шш, Ъъ, Ээ, Юю, Яя

Numeric digits: 0,1,2,3,4,5,6,7,8,9

Date format: Сешанбе, 21 июл 2009 с.

Time format: 24 hour – 21:07:09

Currency: Сомонӣ (Somoni) TJS

Day names: Душанбе (Monday), Сешанбе (Tuesday), Чоршанбе (Wednesday), Панҷшанбе (Thursday), Ҷӯмъа (Friday), Шанбе (Saturday), Якшанбе (Sunday)

Month names: Январ (January), Феврал (February), Март (March), Апрел (April), Май (May), Июн (June), Июл (July), Август (August), Сентябр (September), Октябр (October), Ноябр (November), Декабр (December)

General Style & Audience of Ubuntu in Tajik language

The Ubuntu users can be home and professional users, including kindergarten, school and university students. So translation style should be informal. The terminology needs to be catchy, fresh and not too technical. Long sentences in translations should be avoided, in order to get the point across in within few words.

Basic rules for checking translations quality

Below are listed some common sense rules for translators to follow during the translation work in order to improve the translation quality:

  • Pay attention to all section from the guidelines and always keep in touch with other translators
  • When you have translated a string, read it again and see if there are any error or the translations sound right in your language.
  • If the translated string does not make sense for you (or your mother/father/sister/bother or friend), definitely it is wrong and you should redo/rephrase it.
  • If it feasible, always ask another team member to review your translations.
  • Translations consistency is an important aspect of translation quality. You can check the translation of a word / phrase in multiple free software project using the Open Tran website
  • Always use Terminology dictionary

Plural forms

Tajik language has 2 plural forms. However, when dealing with numbers Tajik words are always written in single form.

Example 1 (with numbers):

Original text: msgstr[0] %d file (1 file) msgstr[1] %d files (5 files)

Translation: msgstr[0] %d файл (1 файл) msgstr[1] %d файл (5 файл)

Example 2 (without numbers):

Original text:

  • msgstr[0] File
  • msgstr[1] Files


  • msgstr[0] Файл
  • msgstr[1] Файлҳо


In descriptions of services and features, try to use verbs in the imperative mood to engage the user in a direct way. Button's names should be translated in infinitive. See examples below.

  • English: You can paste contacts from the clipboard.
  • Tajik: Шумо метавонед тамосҳоро аз ҳофизаи муваққатӣ гузоред.
  • English: Paste contacts from the clipboard.
  • Tajik: Гузоштани тамосҳо аз ҳофизаи муваққатӣ.
  • English: Paste
  • Tajik: Гузоштан

Menu accelerators / shortcuts

If you see an underscore (e.g. Save _As) or ampersand (e.g. Print p&review) at the beginning or within a word, it may well be a keyboard shortcut.

Ensuring you have a unique shortcut for each function is important and you should, at the very least, view the software in action and draw up a list of the shortcuts you plan to use before you start translating. You should place the underscore, ampersand or whichever other control character directly in front of the letter you want to use as the shortcut. If you have a program interface with the same fast access character in different options/tabs/checkboxes/etc., you will have to press the shortcut several times in the keyboard to walk through all of them.

For other information about the accelerators in different languages, refer to

Examples of menu accelerators:

  • _File (_Файл)
  • New &Tab (&Варақаи нав)

  • ~Downloads (~Боргириҳо)

What should not be translated

This section contains general information about strings that should not be translated and how to identify them.

Also to help you with identifying string that should not be translated, software developers usually add comments describing the intend of the text and tips about translating it. Always check the comments attached to each string.

Data placeholders and variable names

In many development languages, a developer can insert data into a string by using a placeholder such as %s or %d. You may also see more complex variations, such as %(variablename)s, $name or ${name}. Copy these variables and placeholders exactly as you see them (including the ending s), placing them in the exact order in whichever part of the string makes most sense in the target language.

If you're in doubt, ask another translator for advice.


Original: $name device detected.

  • Wrong: $номи дастгоҳ пайдо шудааст.
  • Right: Дастгоҳи $name пайдо шудааст.

Original: Delete %(name)s file ?

  • Wrong: Нест кардани файли %(name)s ?
  • Wrong: Нест кардани файли %(ном)s ?
  • Wrong: Нест кардани файли %(ном) ?
  • Right: Файли %(name)s -ро нест мекунед?


Any letters or words with % sign before or after them, e.g. %u, %s, %(name)s) should be copied to the translation with respect to their place in the source and left untranslated.

For example:

  • English: "Do you want to copy the file "%u" to the following folder: %s?"
  • Tajik: "Шумо мехоҳед, ки файли "%u"-ро ба ҷузвдони зерин нусхабардорӣ намоед: %s?"

NOTE: When adding suffixes to variables, the translator should separate them with a hyphen.

Translation statistics

Throughout Launchpad Translations, statistics are shown for translations. These are intended to give an overview of the status, so that translators can easily see which translations are done and which ones might need some work.

Here is an example of how statistics are shown for a translation template in a particular language in Ubuntu:

Color meanings in the Status column

Depending on their status translation statistics can show different colors to indicate each particular status of the strings. Here is what the colours in the Launchpad Translation statistics mean:

Translated strings:

  • Green: the translation imported from the upstream project and the one in Launchpad are identical.
  • Blue: changed in Launchpad. The translation was imported from an upstream project, but translator chose to change it in Launchpad. The changed string will override the upstream one and be used in the distributed translations. Translators should keep these modifications to a minimum, and manually send them back to upstream if necessary.
  • Purple: newly translated in Launchpad. The string is only translated in Launchpad. Translations imported from upstream did not have a translation for the string.

Untranslated strings:

  • Red: untranslated. These strings have neither been translated in the upstream project nor in Launchpad

Translation Tools

Due to Ubuntu infrastructure and a design decision to use a unified approach based on the standard gettext format, Translators can generally only import and export PO and MO files, so for example neither documentation files (man pages, docbook, etc.) nor Qt translation files (.ts, .rm) are translatable in Launchpad.

To translate PO files, a translation tool like POEdit will work very well. Graphical User Interface of POEdit is also available in Tajik language and can be downloded from this website:

Installation is easy. Click on the installation file and follow the instructions.


Below you can find more information about POEdit and experience this tool with full configuration.

poEdit and Gettext Basics

  • gettext

This introduction is meant for novice users who knows nothing about GNU gettext. For more details, see GNU gettext documentation section of the manual (note that it refers to Emacs text editor in many places so parts of it do not apply to poEdit). The following summary explains terminology:

  • Catalogs

Translations are stored in catalogs (files with .po extension). A catalog contains header (you can fill header information in settings dialog) and translations. Translations consists of two strings: original text (usually in English) and matching translation.

  • .mo files

.mo file is compiled version of text-based .po catalog. poEdit creates it by default (you can disable this in preferences dialog).

  • References

Reference is a place in source code where original string appears. Sometimes it is neccessary to consult the meaning of original text with the source file.

  • Fuzzy translation

Fuzzy translation is incomplete, inaccurate translation. There are two ways how a translation may become fuzzy: either you mark it as such (for example because you are unsure about its correctness) or the gettext utility msgmerge marks it when updating the catalog.

  • poEdit

poEdit serves as a front-end to gettext. It allows you to edit catalog files in comfortable way. In addition to .po file, poEdit saves .po.poedit file with additional information needed for updating. This file is not created if you did not edit language, keywords or paths in catalog settings dialog).

User Interface Overview

As you have undoubtely already discovered, poEdit's main window consists of three parts: there's a list of string-traslation pairs in the list in upper part of the window and two text entries under it. The first of them hold original string and is not editable, while the other is where you type your translations in. The list is separated from text fields with a splitter sash that you can move up and down to adjust percentage of screen covered by list and input fields.

There are two UI navigation modes built in poEdit and they differ in keyboard navigation handling. First of them (the default) leaves focus in the list, while the other redirects it to text input field. In the first mode, the list behaves like an ordinary list control and you have to press Tab to change focus to the text field before you can type in translations and press it once again to bring focus back to the list and move to another translation. This is done automatically in the second mode -- its drawback is that you can no longer use arrows for list navigation and has to use an alternative method described bellow. The 2nd mode is enabled by checking Always change focus to text input field in Preferences.

When the focus is in text field, you can use Ctrl-Up/Down arrows and Ctrl-PgUp/PgDown keys to move up and down the list list of messages. This works in both modes; it is the only keyboard navigation that works in the second mode (because the list never gets focus, you naturally can't use arrows without Ctrl modifier in this mode). This feature is particularly useful in the first mode where it eliminates the need to repeatedly press Tab.

You will see that some items have different color than others in the list. This is meant to simplify navigation in the catalog -- untranslated strings are marked with blue color and are always at the beginning of the list. Yellow color is used to mark fuzzy translations (see poEdit and Gettext Basics if you don't know what it means). You will notice that not translated' and fuzzy' marking is changed when edit translation, so you needn't worry about it in most cases.

Sometimes, there's a small icon to the left of entry in the list. There are currently three kinds of icons: a small green dot that indicates you modified the entry in this editing session, a pencil icon which means there's a comment attached to the entry (see menu description) and finally a gray picture of computer that is only shown if you updated the catalog and had configured poEdit to automatically roughly translated new entries (see settings and Translation Memory section).

You can right-click on focused item to display list of references (i.e. places in source code where given string appears) and open the file that contains given string. This is useful if you are not sure in what context is the string used. Same functionality is available via Edit/Show references menu command. The same popup menu will display suggested automatic translations if this feature is enabled (see Translation Memory section).

See Menu and Toolbar for description of toolbar icons.

This section briefly describes all menu entries. If the menu entry has equivalent toolbar command, its icon is shown near item's name. File Menu File/Catalogs manager Opens catalogs manager.

File/New catalog... Creates new catalog. Note that you will have to immediately save the file so that poEdit knows catalog's position in directory tree relative to source code.

File/Open (shortcut: Ctrl-O)

Opens existing .po catalog.

File/Save (shortcut: Ctrl-S)

Saves the catalog.

File/Save as... Saves the catalog under different name. Note that if you save it into different directory and you use poEdit's catalog update feature, it may stop working because relative path to source files will change.

File/Preferences Edits catalog-independent settings. See Preferences dialog for details.

Edit Menu Edit/Copy original string to translation field (shortcut: Alt-I) Inserts original string into "translation" text control. This is useful when translation is identical or very similar to original string.

Edit/Show references (shortcut: right-click on menu in the list) Displays list of all references to the selected string and lets you view the relevant part of souce file.

Edit/Find... Lets you search the catalog for specific words.

Edit/Translation is fuzzy (shortcut: Alt-U)

Marks/unmarks the selected translation as fuzzy.

Edit/Edit comment

You can edit (or remove) comments related to the selected translation. This is useful e.g. when you cooperate with other translators and the translation you choosed requires further explanation. Presence of a comment is indicated by a pencil icon to the left of translation line in the list.

Catalog Menu Catalog/Update catalog

Update the catalog, i.e. synchronize it with source code. See Updating Catalog for details.

Catalog/Settings... Edits catalog-specific settings. See Catalog settings dialog for details.

View Menu View/Fullscreen view

Switches poEdit into fullscreen mode to fully utilize screen real estate.

View/Display quotes

Enables/disables displaying of quotes in text controls. Quotation marks are useful when you need to see if the text ends or begins with spaces, but on the other hand it may be confusing when the text itself contains quotes.

Preferences and Catalog Settings

  • Preferences Dialog

(Available through File/Preferences in the menu.) You can set various options that affect poEdit globally and are not related to opened catalog in Preferences. There are three tabs in the dialog box, one for each setting group.

  • Editor
  • Identity

Set your name and e-mail address. This is used to fill int `Last Translator' record in catalog's header.

  • Behavior

Affects various aspects of poEdit's behavior. Automatically compile .mo file on save will cause poEdit to run the msgfmt utility to convert .po files to .mo ones (which is what you have to done before you can use catalogs in your application). Show summary after catalog update enables small window with information about added and removed translations after doing update. Open catalogs manager on poEdit startup does exactly what it says - if enabled, poEdit won't start up with its main window opened but will launch the manager instead. Always change focus to text input field affects keyboard navigation and is discussed in the beginning of UI Overview section.

  • CR/LF conversion

Lets you choose prefered text file formatting (catalogs will be saved with this formatting). Among supported formats are Windows/DOC, Mac and Unix line endings. If you check Don't change format of existing catalogs, this option will only affect newly created files. It is recommended to use Unix format, since PO files came from Unix environment.

  • Translation Memory

You can setup translation memory's behavior on this tab. Please refer to TM section for details.

  • Parsers (Warning: for experienced users only!)

Most importantly, you can edit source code parsers in this dialog. Parsers are used when updating catalogs in poEdit (see Updating Catalog) and they take care of extracting strings from source code. By default only C and C++ programming languages are supported (through gettext xgettext utility). The dialog for editing parsers explains in detail how to fill in required information -- if in doubt, refer to C/C++ parser which may serve as a complex example of parser definition.

  • Catalog Settings

(Available through Catalog/Settings in the menu.) This dialog lets you edit catalog specific settings. "Project info" page contains information from catalog's header and the only really important information here is the charset.

"Paths" and "Keywords" pages are meaningful only if you are going to use the catalog update feature. "Paths" page lets you specify in what directories should parsers look for source file. Note that the paths in list box are relative to the base path, so if you set basepath to ../../poEdit and add these two paths into the list box:

src include

it will recursively search for source files in following directories: ../../poEdit/src ../../poEdit/include

The base path is relative to the directory where .po catalog file resists. "Keywords" let you specify additional keywords understood by the parser. See GNU gettext documentation section of the manual for the meaning of keywords. By default, xgettext parser understands _, gettext and gettext_noop keywords. You may leave this page empty.

Note that specifying language or editing anything at "Paths" or "Keywords" panels will cause poEdit to save .po.poedit file.

Updating Catalog

In addition to editing catalogs, poEdit provides convenient way of updating catalogs. Updating is process of scanning source files for translatable strings and merging the changes back into the catalog, removing entries that are no longer used, adding entries that appeared in sources since the last revision of the catalog and updating references. External parsers (gettext's xgettext) are used for it, see Preferences dialog. Please note that most sofware projects (such as wxWindows) provide its own way of updating catalogs (typically with makefiles), so it may be undesirable to do in poEdit.

This feature depends on settings in Catalog Settings dialog and is disabled unless you filled-in "Paths" panel.

When updating, poEdit will recursively search all specified paths, looking for known file types and scanning them for translatable strings. This process may take a while. When done, poEdit will display summary of new and obsolete strings (unless disabled in Preferences).

If enabled, poEdit will attempt roughly translate new entries according to its database of known translations. See Translation Memory section for details.

Translation Memory

Translation Memory is a concept widely accepted by translators. It is based upon observation that translators spend lot of time translating very similar texts, i.e. doing repetitive taks which is something computers are usually better in. This is especially true when translating programs' UI (which is probably by far the most common application for poEdit). Translation memory remembers all past translations for you and can retrieve them later, when you're translating something similar. This is important property of TM database: it is organized in such way that it is relatively fast to extract translations from sentenses that differ in one or more words from it.

* Setting up TM The very first thing you have to do in order to be able to use TM is to setup the database, This can be done in File/Preferences dialog, on the Translation Memory tab. Here, you can set where to store the database (most users won't need to change the default value), languages you translate to (in the control called My Languages). Press "Add" to add new language. Languages are identified with their ISO 639 two-letter codes.

Next, click on "Generate database" button and fill-in search paths. These are directories where poEdit will look for existing catalogs and will build personalized TM from them. poEdit can extract translations from files of three formats: PO files (as used by poEdit), their compiled version, MO files, and RPM packages (this feature is Unix only). It will search not only the directories you entered but all subdirectories as well. The most common way of filling the database is pointing poEdit to /usr/share/locale and /usr/local/share/locale directories. (Windows users: just copy these files from some friendly Unix box.) Alternatively, you may put your Linux installation CD into drive and scan RPMs in /mnt/cdrom (of course, this only applies to RPM-based distros).

If you decide to add your own directories to the search, it's important to understand how the lookup works. poEdit builds one database per language (choosen by you) and so it has to recognize catalog's language somehow. There's unfortunately no way of telling the language of PO or MO file, because gettext searches catalogs based on their name. This is what poEdit does, too. Make sure all catalogs you want to scan match one of these wildcards (this is just an example, substitute "cs" with any ISO 639 code, "CZ" with any country code, "po" with "po" or "mo", "foo" can be replaced with anything):

cs.po */cs.po */cs/LC_MESSAGES/foo.po */cs/foo.po */cs_CZ.po */cs_CZ/LC_MESSAGES/foo.po */cs_CZ/foo.po

Be prepared that scanning takes a while. Configuration section contains various parameters that affect TM's capabilities. Max. number of missing words and Max. difference in sentence length are self-explanatory. They are parameters for database retrieval function and the higher these values are, the more matches DB queries return and the less exacts these results are. Automatically translate when updating catalog tells poEdit to attempt to translate all new strings gathered during catalog update. Such automatically translated strings are marked with a gray computer icon.

  • Using TM

If you enabled the option mentioned above, TM will be used when updating catalogs. This is not always optimal - for example, you might decide not to use update feature of poEdit at all or the suggested translation was wrong and you want to try other possibilities (as if no exact match is found, TM usually returns several rough translations from that you can choose). To get access to all rough for currently selected string in translations list (poEdit's main window), simply right-click the item. Popup menu will contain list of translations obtained from TM. Don't panic if there's no translation, it means that the database does not contain anything related. Whenever you save catalog, all modified entries are stored into your TM database, together with their translations. Next time you use it, TM will know them. This approach provides seamless TM actualization and adaptation for the specific domain you work in.

Catalogs manager

Catalogs manager lets you easily manage catalogs you work on (surprise...). It provides quick and convenient access to your PO files from one centralized place.

Catalogs are grouped by projects. A project consists of its name and set of directories where its catalogs are stored. List of existing projects is on the right side of manager window, files contained in active project are on the left side. Files list contains summary of translated, fuzzy and untranslated strings together with last modification date and a semaphore icon indicating status of the catalog (green = ok, red = (almost) untranslated, yellow = partially translated).

There are four icons in the toolbar - first of them is used to create new project, second for modifying existing project and the 3rd one to delete project.

Finally, the "wheel" icon in the toolbar is used to start mass update of all catalogs in the project. Mass update is same as single catalog update, except for two things: first, it updates all catalogs and second, it doesn't use automatic translation memory.

Translation Guidelines of the Tajik Translation Team (last edited 2013-04-06 05:39:00 by victor-ibragimov)