\title Guide to the Qt Translation Tools
\granularity chapter

\chapter Introduction

Qt provides excellent support for translating applications into local
languages. This Guide explains how to use Qt's translation tools for
each of the roles involved in translating an application. The Guide
begins with a brief overview of the issues that must be considered,
followed by chapters devoted to each role and the supporting tools
provided.

\link Release... Chapter 2: Release Manager \endlink is aimed at the
person with overall responsibility for the release of the
application. They will typically coordinate the work of the software
engineers and the translator. The chapter describes the use of two
tools. The \l lupdate tool is used to synchronize source code and
translations. The \l lrelease tool is used to create runtime
translation files for use by the released application.

\link Translators Chapter 3: Translators \endlink is for translators.
It describes the use of the \e {Qt Linguist} tool. No computer
knowledge beyond the ability to start a program and use a text editor
or word processor is required.

\link Programmers Chapter 4: Programmers \endlink is for Qt
programmers. It explains how to create Qt applications that are able
to use translated text. It also provides guidance on how to help the
translator identify the context in which phrases appear. This
chapter's three short tutorials cover everything the programmer needs
to do.

\section1 Overview of the Translation Process

Most of the text that must be translated in an application program
consists of either single words or short phrases. These typically
appear as window titles, menu items, pop-up help text (balloon help),
and labels to buttons, check boxes and radio buttons.

The phrases are entered into the source code by the programmer in
their native language using a simple but special syntax to identify
that the phrases require translation. The Qt tools provide context
information for each of the phrases to help the translator, and the
programmer is able to add additional context information to phrases
when necessary. The release manager generates a set of translation
files that are produced from the source files and passes these to the
translator. The translator opens the translation files using \e {Qt
Linguist}, enters their translations and saves the results back into
the translation files, which they pass back to the release manager.
The release manager then generates fast compact versions of these
translation files ready for use by the application. The tools are
designed to be used in repeated cycles as applications change and
evolve, preserving existing translations and making it easy to
identify which new translations are required. \e {Qt Linguist} also
provides a phrase book facility to help ensure consistent
translations across multiple applications and projects.

Translators and programmers must address a number of issues because
of the subtleties and complexities of human language:

\list
\i A single phrase may need to be translated into several different
forms depending on context, e.g. \e open in English might become \e
\OEFFNEN, "open file", or \e aufbauen, "open internet connection", in
German.
\i Keyboard accelerators may need to be changed but without
introducing conflicts, e.g. "\&Quit" in English becomes "Avslutt" in
Norwegian which doesn't contain a "Q". We cannot use a letter that is
already in use -- unless we change several accelerators.
\i Phrases that contain variables, for example, "The 25 files selected will
take 63 seconds to process", where the two numbers are inserted
programmatically at runtime may need to be reworded because in a
different language the word order and therefore the placement of the
variables may have to change.
\endlist

The Qt translation tools provide clear and simple solutions to these
issues.

\RULE

Please send comments and suggestions regarding this tutorial to the
\link mailto:doc@trolltech.com?subject=Translation_Tutorial Qt doc
team \endlink. Bugs in the tools should be sent to \link
mailto:qt-bugs@trolltech.com?subject=Translation_Tutorial
qt-bugs\endlink.

\input linguist-manager.leaf
\input linguist-translator.leaf
\input linguist-programmer.leaf
