\chapter Translators

\img linguist.png
\caption Linguist Main Window

\section1 The One Minute Guide to Using Qt Linguist

\index Linguist
\index Qt Linguist
\index Contexts!for Translation

\e {Qt Linguist} is a tool for adding translations to Qt
applications. It introduces the concept of a translation "context"
which means a group of phrases that appear together on the screen
e.g. in the same menu or dialog.

To start, run \e {Qt Linguist}, either from the taskbar menu, or by
double clicking the desktop icon, or type \c {linguist} (followed by
\Key Enter) at the command line. Once \e {Qt Linguist} has started
choose \Menu File|Open from the menu bar and select a \c .ts
translation source file to work on.

\e {Qt Linguist}'s main window is divided into four main areas. The
left hand side contains the Context list, the top right is the Source
text area, the middle right is the translation area and the bottom
right is the phrases and guesses area. We'll describe them in detail
later.

Click on one of the contexts in the context list (left hand side) and
then click on one of the phrases that appears in the Source text area
(top right). The phrase will be copied into the translation area
(middle right). Click under the word 'Translation' and type in the
translation. Click \Key Ctrl+Enter (Done \& Next) to confirm that you
have completed the translation and to move on to the next phrase that
requires translation.

The cycle of entering a translation then pressing \Key Ctrl+Enter can
be repeated until all the translations are done or until you finish
the session. Linguist will attempt to fill the "phrases and guesses"
area with possible translations from any open phrase books and any
previous translations. Each has a keyboard shortcut, e.g.
\Key Ctrl+1, \Key Ctrl+2, etc., which you can use to copy the
guess into the Translation area. (Mouse users can double click a
phrase or guess to move it into the Translation area.) At the end of
the session choose \Menu File|Save from the menu bar and then
\Menu File|Exit to quit.

\section1 Qt Linguist's Main Window

\section2 Context List

\index Contexts!for Translation

This appears at the left hand side of the main window by default. The
first column, 'Done', identifies whether or not the translations for the
context have been done. A tick indicates that all the translations have
been done and are valid. A question mark indicates that one or more
translations have not been done or have failed validation. The second
column, 'Context' is the name of the context in which the translation
phrases appear. The third column, 'Items' shows two numbers, the first
is the number of translations that have been done, and the second is the
number of phrases that are in the context; if the numbers are equal then
all the translations have been done. Note that a greyed out tick
indicates an obsolete translation, i.e. a phrase that was translated in
a previous version of the application but which does not occur in the
new version.

The contexts are ordered alphabetically. The phrases within each context
are in the order in which they appear in the source program and this may
not be the order in which they are shown on screen.

The Context List is a dockable window so it can be dragged to another
position in the main window, or dragged out of the main window to be a
window in its own right. If you move the Context List, \e {Qt
Linguist} will remember its position and restore it whenever you
start the program.

\section2 Source Text Area

This appears at the top right of the main window by default. The first
column, 'Done', signifies the status of the translation. A tick
indicates that the phrase has been translated and passed validation. A
question mark indicates that the translation has not been done. An
exclamation mark indicates that the translation has failed validation.
The second column 'Source text' shows the text that must be translated.
The third column shows the translation.

\e{Qt Linguist} provides three kinds of validation: accelerator,
punctuation and phrase. If the source text contains an accelerator
i.e. an ampersand, '\&' and the translated text does not contain an
ampersand the translation will fail the accelerator validation.
Similarly, if the source text ends with a particular punctuation
mark, e.g. '?', '!' or '.' and the translation ends with a different
punctuation mark the translation will fail the punctuation
validation. If the source text has a translation in one of the open
phrase books that differs from the translation used the translation
will fail phrase validation. (See \l Validation.)

The Source Text Area is a dockable window.

\section2 Translation Area

This area appears at the middle right of the main window by default. It
is comprised of three vertical sections. The first section is labelled
'Source text' below which the source text appears. The second section
contains contextual information on a light blue background that the
programmer has added to assist the translator. If no contextual
information has been given this section does not appear. The third
section is labelled 'Translation' and this is where you enter the
translation of the source text.

\section2 Phrases and Guesses Area

\index Phrases!in Qt Linguist
\index Guesses!in Qt Linguist

This area appears at the bottom right of the main window by default.
When you move to a new phrase if the phrase is in one of the phrase
books that has been loaded the phrase will appear in this area with its
translation. If the phrase is the same or similar to another phrase that
has already been translated the phrase and translation will be shown in
this area. To copy a translation from the phrases and guesses area press
\Key F6 to move to the phrases and guesses area, use the up and down arrow
keys to move to the phrase you want to use and press Enter to copy it.
If you decide that you don't want to copy a phrase after all, press Esc.
In both cases the focus will return to the Translation area.
Alternatively, double click the translation you want to use and it will
be copied into the translation area.

The Phrases and Guesses Area is a dockable window.

\section1 Common Tasks

\section2 Leaving a Translation for Later

If you wish to leave a translation press \Key Ctrl+L (Next Unfinished) to
move to the next unfinished translation. An unfinished translation is
one that either has not been translated at all or one which fails
validation. To move to the next phrase press \Key Shift+Ctrl+L. You can also
navigate using the Translation menu. If you want to go to a different
context entirely, click the context you want to work on in the Context
list, then click the source text in the Source Text area.

\section2 Phrases That Require Multiple Translations Depending on Context

\index Contexts!for Translation
\index Comments!for Translators

The same phrase may occur in two or more contexts without conflict. Once
a phrase has been translated in one context, \e {Qt Linguist} notes
that the translation has been made and when the translator reaches a
later occurrence of the same phrase \e {Qt Linguist} will provide
the previous translation as a possible translation candidate in the
phrases and guesses area. If the
previous translation is acceptable just click the \e {Done \& Next}
button (press \Key Alt+Enter) to move on to the next unfinished phrase.

If a phrase occurs more than once in a particular context it will only
be shown once in \e {Qt Linguist}'s context list and
the translation will be applied to every occurrence within the context.
If the same phrase needs to be translated differently within the same
context the programmer must provide a distinguishing comment for each of
the phrases concerned. If such comments are used the duplicate phrases
will appear in the context list. The programmers comments will appear in
the translation area on a light blue background.

\section2 Changing Keyboard Accelerators

\index Accelerators
\index Keyboard Accelerators

A keyboard accelerator is a key combination that when pressed will
cause an application to perform an action. Keyboard accelerators
normally come in two forms: Alt key and Ctrl key accelerators.

\index Alt Key

Alt key accelerators are used for menus and buttons.  The underlining
signifies that pressing the Alt key with the underlined letter is the
same as clicking the menu item with the mouse.  For example, most
applications have a \e File menu with the "F" in the word "file"
underlined. In these applications the file menu can be invoked either by
clicking the word "File" on the menu bar or by pressing Alt+F. The
accelerator key which is underlined is signified by preceeding it with
an ampersand, e.g. \e \&File. If a source phrase appears with an
ampersand in it then the translation should also contain an ampersand,
preferably in front of the same letter. The meaning of Alt key
accelerators can be determined from the phrase in which the ampersand is
embedded. The translator may need to change the letter used with the Alt
key, e.g. if the translated phrase does not contain the original
accelerator letter. Conflicts with other keys, i.e. having two Alt key
accelerators using the same letter in the same context, must be avoided.
Note that some Alt key accelerators, usually those on the menu bar, may
apply in other contexts.

\index Ctrl Key

Ctrl key accelerators can exist independently of any visual control.
They are often used to invoke actions in menus that would otherwise
take several keystrokes or mouse clicks. They may also be used to
perform actions that do not appear in any menu or on any button. For
example, most applications that have a \e File menu have a submenu
item called \e New. In many applications this will appear as "\NEW
Ctrl+N". This menu option could be invoked by clicking \e File then
clicking \e New with the mouse. Or you could press Alt+F then press N
since these letters are underlined. But the same thing can be
achieved simply by pressing \Key Ctrl+Enter. Accelerators that use
the Ctrl key are shown literally in the source text, e.g. \Key
Ctrl+Enter. Ctrl key accelerators have no phrase so the translator
\index Comments!for Translators
must rely on the programmer to add a "comment" which appears in the
top right hand pane. This comment should explain what action the Ctrl
key accelerator performs. Ideally Ctrl key accelerators are
translated simply by copying them by clicking the \e {Begin from
Source} button. However in some cases the letter will not make sense
in the target language and must be changed. Whatever letter (or
digit) is chosen, the translation should always be in the form
"Ctrl+" followed by the letter or digit in upper case. As with Alt
key accelerators, if the translator changes the key it must not
conflict with any other Ctrl key accelerator.

Later versions of \e {Qt Linguist} are expected to help the
translator avoid accelerator conflicts.

\section2 Dealing with Phrases that Contain Variables

Some phrases contain variables. Variables are placeholders for items of
text that are filled in at runtime. They are signified in the source
text with a percent sign followed by a digit, e.g. \e {After processing
file %1, file %2 is next in line}. In this example, \c %1 will be
replaced at runtime with the name of the first file to be processed and
\c %2 with the name of the next file to be processed. In the translated
version the variables must still appear. For example a German
translation might reverse the phrases, e.g. \e {Datei %2 wird
bearbeitet, wenn. Datei %1 fertig ist}. Note that both variables
are still used but their order has changed. The order in which variables
appear does not matter; \c %1 will always be replaced by the same text
at runtime no matter where it appears in the source text or translation
and similarly \c %2, etc.

\section2 Reusing Translations

If the translated text is similar to the source text, click the
\e {Begin from Source} button (press \Key Alt+T) which will copy the
source text into the translation area.

\e {Qt Linguist} automatically lists phrases from the open phrase
books and similar or identical phrases that have already been translated
in the Phrases and guesses area.

\section1 Creating and Using Phrase Books

\index Phrases!in Qt Linguist
\index Phrase Books

\img phrasebookdialog.png
\caption Phrase Book Dialog

A \e {Qt Linguist} phrase book is a set of source phrases, target
(translated) phrases, and optional definitions. Phrase Books are created
independently of any application, although typically one phrase book
will be created per application or family of applications.

If the translator reaches an untranslated phrase that is the same as a
source phrase in the phrase book, \e {Qt Linguist} will show the
phrase book entry in the \e {Relevant phrases} panel at the bottom
right of the main window. Phrases which have translations that conflict
with those given in the phrase book are marked with a question mark in
the source text pane. Phrase Books are used to provide a common set of
translations to help ensure consistency. They can also be used to avoid
duplication of effort since the translations for a family of
applications can be produced once in the phrase book and the phrase book
used for the majority of translations in each application.

Before a phrase book can be edited it must be created or if it already
exists, opened. Create a new phrase book by selecting
\Menu {Phrase|New Phrase Book} from the menu bar. You must enter a
filename and may change the location of the file if you wish. A newly
created phrase book is automatically opened. Open an existing phrase
book by choosing \Menu {Phrase|Open Phrase Book} from the menu bar.

To add a new phrase click the \Button {New Phrase} button (or press
Alt+N) and type in a new source phrase. Press Tab and type in the
translation. Optionally press Tab and enter a definition -- this is
useful to distinguish different translations of the same source phrase.
This process may be repeated as often as necessary.

You can delete a phrase by selecting it in the phrases list and clicking
Remove Phrase.

Click the \e Save button (press Alt+S) and then click the \e Close
button (press Esc) once you've finished adding (and removing) phrases.

When a phrase or set of phrases appears in the phrase book double
clicking the required target phrase will copy it to the translation
pane at the text cursor position. If you want to \e replace the text
in the translation pane with the target phrase, click the translation
pane, choose \Menu {Edit|Select All} (press \Key Alt+A) and then
double click the target phrase.

\section1 Validation

\index Validation of Translations
\index Accelerators!Validation
\index Punctuation!Validation
\index Phrases!Validation

\e {Qt Linguist} provides three kinds of validation on translated
phrases.

\list 1
\i \e {Accelerator validation} detects translated phrases
that do not have an ampersand when the source phrase does and vice
versa.
\i \e {Punctuation validation} detects differences in the
terminating punctuation between source and translated phrases when this
may be significant, e.g. warns if the source phrase ends with an
ellipsis, exclamation mark or question mark, and the translated phrase
doesn't and vice versa.
\i \e {Phrases validation} detects source phrases that are
also in the phrase book but whose translation differs from that given in
the phrase book.
\endlist

Validation may be switched on or off from the menu bar's Validation item
or using the toolbar buttons. Phrases that fail validation are marked
with a question mark in the source text pane. If you switch validation
off and then switch it on later, \e{Qt Linguist} will recheck all
phrases and mark any that fail validation.

If any phrase in a context is invalid then the context itself will be
marked with a question mark; if all the phrases in a context are done
and are valid the context will be marked with a tick.

Note that only phrases which are marked as done (with a tick) will
appear in the application. Invalid phrases and phrases which are
translated but not marked as done are kept in the translation source
file but are not used by the application.

\section1 Qt Linguist Reference

\section2 File Types

\e {Qt Linguist} makes use of three kinds of file:

\index .ts Files
\index Translation Source Files
\index .qm Files
\index Qt Message Files
\index .qph Files
\index Qt Phrase Book Files

\list
\i \c .ts \e {translation source files} \BR are human-readable XML
files containing source phrases and their translations. These files are
usually created and updated by \l lupdate and are specific to an
application.
\i \c .qm \e {Qt message files} \BR are binary files that contain
translations used by an application at runtime. These files are
generated by \l lrelease, but can also be generated by \e {Qt
Linguist}.
\i \c .qph \e {Qt phrase book files} \BR are human-readable XML
files containing standard phrases and their translations. These files
are created and updated by \e {Qt Linguist} and may be used by any
number of projects and applications.
\endlist

\section2 The Menu Bar

\img menubar.png
\caption Menu Bar

\list
\i \e {File}
    \list
    \i \e {Open... Ctrl+O} \BR pops up an open file dialog from which a
    translation source \c .ts file can be chosen.
    \i \e {Save Ctrl+S} \BR saves the current translation source \c .ts file.
    \i \e {Save As...} \BR pops up a save as file dialog so that the
    current translation source \c .ts file may be saved with a different
    name and/or put in a different location.
    \i \e {Release...} \BR pops up a save as file dialog. The
    filename entered will be a Qt message \c .qm file of the translation
    based on the current translation source file. The release manager's
    command line tool \l lrelease performs the same function on
    \e all of an application's translation source files.
    \i \e {Print... Ctrl+P} \BR pops up a print dialog. If you click
    OK the translation source and the translations will be printed.
    \i \e {Recently opened files} \BR shows the \c .ts files that
    have been opened recently, click one to open it.
    \i \e {Exit Ctrl+Q} \BR closes \e {Qt Linguist}.
    \endlist

\i \e {Edit}
    \list
    \i \e {Undo Ctrl+Z} \BR undoes the last editing action in the
    translation pane.
    \i \e {Redo Ctrl+Y} \BR redoes the last editing action in the
    translation pane.
    \i \e {Cut Ctrl+X} \BR deletes any highlighted text in the
    translation pane and saves a copy to the clipboard.
    \i \e {Copy Ctrl+C} \BR copies the highlighted text in the
    translation pane to the clipboard.
    \i \e {Paste Ctrl+V} \BR pastes the clipboard text into the
    translation pane.
\omit
    \i \e {Delete} \BR deletes the highlighted text in the
    translation pane.
\endomit
    \i \e {Select All Ctrl+A} \BR selects all the text in the
    translation pane ready for copying or deleting.
    \i \e {Find... Ctrl+F} \BR pops up the
    \link {The Find Dialog} Find dialog \endlink. When the dialog pops up
    enter the text to be found and click the \e {Find Next} button.
    Source phrases, translations and comments may be searched.
    \i \e {Find Next F3} \BR finds the next occurrence of the text that
    was last entered in the Find dialog.
    \endlist

\i \e {Translation}
    \list
    \i \e {Prev Unfinished Ctrl+K} \BR moves to the nearest previous
    unfinished source phrase (unfinished means untranslated or
    translated but failed validation).
    \i \e {Next Unfinished Ctrl+L} \BR moves to the next unfinished source
    phrase.
    \i \e {Prev Shift+Ctrl+K} \BR moves to the previous source phrase.
    \i \e {Next Shift+Ctrl+L} \BR moves to the next source phrase.
    \i \e {Done \& NextCtrl+Enter} \BR mark this phrase as 'done'
    (translated) and move to the next unfinished source phrase.
    \i \e {Begin from Source Ctrl+B} \BR copies the source text into
    the translation.
    \endlist

\i \e {Validation} (See the \l Validation section)
    \list
    \i \e {Accelerators} \BR toggles validation on or off for Alt
    accelerators.
    \i \e {Ending Punctuation} \BR switches validation on or off
    for phrase ending punctuation, e.g. ellipsis, exclamation mark,
    question mark, etc.
    \i \e {Phrase Matches} \BR sets validation on or off for
    matching against translations that are in the current phrase book.
    \endlist

\i \e {Phrase} (See the section \l {Creating ... Phrase
Books} for details.)
    \list
    \i \e {New Phrase Book... Ctrl+N} \BR pops up a save as file dialog.
    You must enter a filename to be used for the phrase book and save
    the file. Once saved you should open the phrase book to begin using
    it.
    \i \e {Open Phrase Book... Ctrl+H} \BR pops up an open file dialog.
    Find and choose a phrase book to open.
    \i \e {Close Phrase Book} \BR closes the current phrase book.
    This will stop any further phrase validation taking place.
    The same effect can be achieved by switching off phrase validation
    using the Validation menu or the phrase toolbar button.
    \i \e {Edit Phrase Book...} \BR pops up the
    \link {The Phrase Dialog} phrase book dialog \endlink where you can
    add, edit or delete phrases.
    \i \e {Print Phrase Book...} \BR pops up a print dialog. If
    you click OK the phrase book will be printed.
    \endlist

\i \e {View}
    \list
    \i \e {Revert Sorting} \BR puts the phrases in the source text
    pane into their original order.
    \i \e {Display Guesses} \BR turns the display of phrases and
    guesses on or off.
    \i \e {Statistics} \BR toggles the visibility of the Statistics dialog.
    \i \e {Views} \BR toggles the visibility of the Context, Source text and
     Phrase views.
    \i \e {Toolbars} \BR toggles the visibility of the different toolbars.
\omit
    \i \e {Large Icons} \BR switches between large or standard
    size icons on the toolbar.
    \i \e {Text Labels} \BR toggles the use of text labels on the
    toolbar icons.
\endomit
    \endlist

\endlist

\section2 The Toolbar

\img toolbar.png
\caption Toolbar

\list
\i \img fileopen.png
\BR
Pops up the open file dialog to open a new translation source \c .ts
file.

\i \img filesave.png
\BR
Saves the current translation source \c .ts file.

\i \img fileprint.png
\BR
Prints the current translation source \c .ts file.

\i \img phrasebookopen.png
\BR
Pops up the file open dialog to open a new phrase book \c .qph file.

\i \img editundo.png
\BR
Undoes the last editing action in the translation pane.

\i \img editredo.png
\BR
Redoes the last editing action in the translation pane.

\i \img editcut.png
\BR
Deletes any highlighted text in the translation pane and save a copy to
the clipboard.

\i \img editcopy.png
\BR
Copies the highlighted text in the translation pane to the clipboard.

\i \img editpaste.png
\BR
Pastes the clipboard text into the translation pane.

\i \img editfind.png
\BR
Pops up the \link {The Find Dialog} Find dialog \endlink.

\i \img prev.png
\BR
Moves to the previous source phrase.

\i \img next.png
\BR
Moves to the next source phrase.

\i \img prevunfinished.png
\BR
Moves to the previous unfinished source phrase.

\i \img nextunfinished.png
\BR
Moves to the next unfinished source phrase.

\i \img doneandnext.png
\BR
Marks the phrase as 'done' (translated) and move to the next
unfinished source phrase.

\i \img validateaccelerators.png
\BR
Toggles accelerator validation on and off.

\i \img validatepunctuation.png
\BR
Toggles phrase ending punctuation validation on and off.

\i \img validatephrases.png
\BR
Toggles phrase book validation on or off.
\endlist

\section2 The Find Dialog

\img finddialog.png
\caption The Find Dialog

Choose \Menu Edit|Find from the menu bar or press \Key Ctrl+F to pop
up the Find dialog. Press \Key F3 to repeat the last search. By
default the source phrases, translations and comments will all be
searched and the search will be case-insensitive. These settings can
be changed by checking or unchecking the checkboxes to reflect your
preferences.

\section2 The Phrase Dialog

This dialog is explained in the \l {Creating and Using Phrase Books}
section.
