Not logged in - Log In / Register

Launchpad Help > Translations > General Translation Guide


This guide contains specific information about translating software into your 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.

List of language-specific guidelines

Before reading your language specific guide, please take a moment and read this general translation guide first.

You are free to translate this guide and include it into your language specific guide. You can use this information as a starting point for developing the guidelines for your language.

To assure the translations quality for your language, it is recommended to ask new translators to follow the information from the guidelines for your language, or in case it is not ready yet, to point them to this guide.

List of language-specific guidelines

Basic rules for checking translations quality

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

Plural forms

While the English language has 2 plural forms, it might happen that your language has more or less than 2 plural forms.

Dealing with plural forms is one of the first question/problems for new translators. It is recommended that your guidelines include information and examples about the usage of plural forms in your language.


Romanian has 3 plural forms:

Original text:
msgstr[0] %d thing
msgstr[1] %d things
msgstr[2] %d things

msgstr[0] %d lucru
msgstr[1] %d lucruri
msgstr[2] %d de lucruri

Quick tip:

You will find more information in the Gettext documentation section on plural forms.

Menu accelerators / shortcuts

Different development languages and frameworks use different ways to signify which key within a string should be used as a keyboard shortcut. Very often, if you see an underscore (e.g. Save _As) or ampersand (e.g. Print previe&w) 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:

New &Tab

Translating DocBook (XML) files

You can translate XML files using Launchpad Translations, by converting the xml to a pot file, using xml2po, and then importing it in Rosetta.

When translating XML files please make sure you are aware of the following things:

XML tags are case sensitive

When using xml2po and then po2xml, xml tags and attributes are case sensitive: Example:

Original: See the <ulink url="">
Correct: Vea el <ulink url="">
Wrong: Vea el <UlinK Url="">

"menuchoice" tag should include only "guibutton | guiicon | guilabel | guimenu | guimenuitem | guisubmenu | interface" tags. Don't include other tags or text outside of these tags.


Original: <menuchoice><guimenu>Applications</guimenu><guisubmenu>Multimedia</guisubmenu><guimenuitem>Movie Player</guimenuitem></menuchoice>
Correct: <menuchoice><guimenu>Apliaciones</guimenu><guisubmenu>Multimedia</guisubmenu><guimenuitem>Reproductor de películas</guimenuitem>
Wrong: <menuchoice><guimenu>Apliaciones</guimenu><guisubmenu>Multimedia</guisubmenu>Reproductor de <guimenuitem>películas</guimenuitem>

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: I found $name ethernet device.
Wrong: S-a găsit $cevanume dispozitiv ethernet
Right: S-a găsit $name dispozitiv ethernet

Original: Delete %(name)s ?
Wrong: Ștergeți %(cevanume)le?
Wrong: Ștergeți %(cevanume)s?
Wrong: Ștergeți %(name)?
Right: Ștergeți %(name)s?

Formatting/XML tags

You may see HTML/XML tags, such as <strong>, used to format text in a string. Copy these tags exactly as you find them and apply them to the relevant part of the text, remembering to close the tags as appropriate. You may also see other tags, such as XML, and should treat them the same way.


Original: <strong>File name</strong>
Wrong: <puternic>Nume fișier</puternic>
Right: <strong>Nume fișier</strong>

Also you should not translate the xml tags attibutes and their values (if you translate their values, make sure you know what you are doing and check the developers comments). Examples:

Original: <link linkend="desktop-themes">
Right: <link linkend="desktop-themes">
Wrong: <link linkend="temi del desktop">

Program parameters

Command line parameters should not be translated.


Original: "The command line options are:\n"
          "       --quick         speeds up the processing\n"
          "       --slow          slows everything down."
Wrong:    "Opțiunile comenzii sunt:\n"
          "       --repede         grăbește procesarea\n"
          "       --încet          încetinește totul."
Right:    "Opțiunile comenzii sunt:\n"
          "       --quick         grăbește procesarea\n"
          "       --slow          încetinește totul."

TRUE/FALSE, GTK constants

Strings like "TRUE" , "FALSE" or gtk constants like "gtk-ok", "gtk-cancel" or "toolbar-icon" should not be translated.

In many cases the presence of such string in a translations files is a bug and the software developers should be informed about it and asked to remove those strings.

GCONF configuration keys


Original: The port which the server will listen to if the 'use_alternative_port' key is set to true.
         Valid values are in the range from 5000 to 50000.
Wrong:   Portul pe care să asculte serverul în cazul în care cheia „folosește_port_alternativ” este activată.
         Valorile valide sunt între 5000 și 50000.
Right:   Portul pe care să asculte serverul în cazul în care cheia „use_alternative_port” este activată.
         Valorile valide sunt între 5000 și 50000.

Context text

In some old GNOME translations you might encounter translations context encoded into the original string. For more information please see:


Original: "Orientation|Top"
Wrong: "Orientare|Sus"
Wrong: "Orientation|Sus"
Right: "Sus"

If you see such text please file a bug and inform the software developers about the existence of context.

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:

Quick tip:

You will find more information in the related Launchpad Translations FAQ entry on the meanings of "Changed in Launchpad" and "Newly translated in Launchpad".


During the lifecycle of translations, and while translators do their work, there are some different paths in which the colours can change. Here is a description of the most common scenarios:

Running a localization team

Suggestions for sections included in your guidelines

Below are some ideas, hints, for some information that could be included into the guildelines for your language:

Common/Best practice

Below you will find a set of common practices for running a team

Next steps

Details on joining and creating translations groups and teams

< Starting to translate

Translations groups and teams >

Translations/Guide (last edited 2018-10-26 11:00:37 by cjwatson)