Blame Manuals/Sources/Repository/trunk/Translations.texi

ad1d7b
@subsection Goals
ad1d7b
ad1d7b
The @file{trunk/Translations} directory exists to:
ad1d7b
ad1d7b
@itemize
ad1d7b
@item Organize translation files.
ad1d7b
@item Organize translation templates used to produce translation files.
ad1d7b
@end itemize
ad1d7b
ad1d7b
@subsection Description
ad1d7b
ad1d7b
When you create artwork for CentOS distribution you find that some
ad1d7b
artworks need to be created for different major releases of CentOS
ad1d7b
distribution and inside each major release that needs to be created for
ad1d7b
different locales. To get an approximate idea of how many files we are
ad1d7b
talking about, consider the followig approximate statistic:
ad1d7b
ad1d7b
@itemize
ad1d7b
@item Inside CentOS distribution, there are around 30 images to
ad1d7b
rebrand.@footnote{This number is an approximate value and may change.
ad1d7b
It is mainly based on CentOS 5 rebranding experience.}
ad1d7b
ad1d7b
@item There are near to four major releases of CentOS distribution to
ad1d7b
rebrand in parallel development.@footnote{This value was taken from
ad1d7b
CentOS release schema.} 
ad1d7b
ad1d7b
@item Each CentOS distribution in parallel development supports more
ad1d7b
than two hundreds locales.@footnote{This value was taken from the
ad1d7b
output of @command{locale -a} command.}
ad1d7b
@end itemize
ad1d7b
ad1d7b
In order to aliviate maintainance of artwork production for such
ad1d7b
environment, we divided artwork production in three production lines:
ad1d7b
ad1d7b
@enumerate
ad1d7b
@item @xref{trunk Identity Themes Models}, to define artworks
ad1d7b
characteristics (e.g., dimensions, position on the screen, etc.).
ad1d7b
@item @xref{trunk Identity Themes Motifs}, to define artworks visual
ad1d7b
styles (e.g., the look and feel).
ad1d7b
@item Translations, to define which major releases and locales
ad1d7b
artworks are produced for. 
ad1d7b
@end enumerate
ad1d7b
ad1d7b
Inside CentOS Artwork Repository, the artworks' translation production
ad1d7b
line is stored under @file{trunk/Translations} directory.
ad1d7b
ad1d7b
Inside @file{trunk/Translations} directory, we use ``translation
ad1d7b
entries'' to organize artworks' ``translation files'' and artworks'
ad1d7b
``translation templates''.
ad1d7b
ad1d7b
@subsubsection Translation Entries
ad1d7b
@cindex Translation paths
ad1d7b
@cindex Translation entries
ad1d7b
ad1d7b
Translation entries exists for each artwork you want to produce.
ad1d7b
Translation entries can be empty directories, or directories
ad1d7b
containing translation files and translation templates.  
ad1d7b
ad1d7b
When translation entries are empty directories, the identity entry is
ad1d7b
used as reference to create file names and directories layout for
ad1d7b
rendered files.  In this case, the @command{centos-art} script takes
ad1d7b
one design template and outputs one non-translated file for each
ad1d7b
design template available.  This configuration is mainly used to
ad1d7b
produce non-translatable artworks like themes' backgrounds.
ad1d7b
ad1d7b
When translation entries contain translation files, the translation
ad1d7b
entry implements the CentOS release schema and is used as reference to
ad1d7b
create file names and directories layout for translated artworks. In
ad1d7b
this case, the @command{centos-art} script applies one translation
ad1d7b
file to one design template to create one translated instance which is
ad1d7b
used to output one translated file. When the translated file is
ad1d7b
rendered, the @command{centos-art} script remove the previous instance
ad1d7b
and takes the next file in the list of translation files to repate the
ad1d7b
whole process once again, and so on for all files in the list. This
ad1d7b
configuration is mainly used to produce translatable artworks like
ad1d7b
Anaconda progress slide images.
ad1d7b
ad1d7b
To find out correspondence between translation entries and identity
ad1d7b
entries, you need to look the path of both translation entries and
ad1d7b
identity entries. For example, if you are using the @emph{Modern}
ad1d7b
artisitic motif, the identity entry for Anaconda progress artwork is:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Identity/Themes/Motifs/Modern/Distro/Anaconda/Progress
ad1d7b
@end verbatim
ad1d7b
ad1d7b
and its translation entry is:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/Anaconda/Progress
ad1d7b
@end verbatim
ad1d7b
ad1d7b
Note how the @file{Translations/} directory prefixes @file{Identity/}
ad1d7b
directory, also how static values (e.g., Identity, Themes, Distro,
ad1d7b
etc.) in the identity entry path remain in translation entry path, and
ad1d7b
how variable values like theme names (e.g., @emph{Modern}) are stript
ad1d7b
out from translation entry path. The same convenction can be applied
ad1d7b
to other identity entries in order to determine their translation
ad1d7b
entries, or to other translation entries to determine their identity
ad1d7b
entries.
ad1d7b
ad1d7b
@quotation
ad1d7b
@strong{Note} Translation entries related to identity entries under
ad1d7b
@file{trunk/Identity/Themes/Motifs} do not use @file{Motifs/} in the
ad1d7b
path.  We've done this because @file{trunk/Identity/Themes/Models}
ad1d7b
structure, the other structure under @file{trunk/Identity/Themes},
ad1d7b
doesn't require translation paths so far. So in the sake of saving
ad1d7b
characters space when building translation entries for
ad1d7b
@file{trunk/Identity/Themes/Motifs} structure, we organize Motifs
ad1d7b
translation entries under @file{trunk/Translations/Identity/Themes/}
ad1d7b
directly. 
ad1d7b
ad1d7b
If for some reason @file{trunk/Identity/Themes/Models} structure
ad1d7b
requires translation entries, we need to re-oraganize the current
ad1d7b
directory structure accordingly.
ad1d7b
@end quotation
ad1d7b
ad1d7b
Translation entries, as described above, can be re-used by similar
ad1d7b
identity entries. For example the following identity entries:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Identity/Themes/Motifs/Modern/Distro/Anaconda/Progress/
ad1d7b
trunk/Identity/Themes/Motifs/TreeFlower/Distro/Anaconda/Progress/
ad1d7b
trunk/Identity/Themes/Motifs/Mettle/Distro/Anaconda/Progress/
ad1d7b
@end verbatim
ad1d7b
ad1d7b
are all valid identity entries able to re-use translation files inside
ad1d7b
Anaconda progress translation entry (the one shown in our example
ad1d7b
above). This way, you can create several identity entries and maintain
ad1d7b
just one translation entry for all of them.  Once you change the
ad1d7b
translation files inside the common translation entry, changes inside
ad1d7b
identity entries will take effect inside the next you render them.
ad1d7b
ad1d7b
Trying to make things plain and simple: inside CentOS Artwork
ad1d7b
Repository, graphic designers can concentrate their efforts in
ad1d7b
artworks look and feel (the identity entries), and translators in
ad1d7b
artworks translations (the translation entries).
ad1d7b
ad1d7b
@subsubsection Translation Markers
ad1d7b
@anchor{trunk:Translations:TranslationMarkers}
ad1d7b
@cindex Translation markers
ad1d7b
ad1d7b
Translation markers are used in ``Theme Model Designs'' and
ad1d7b
``Translation Files'' as replacement patterns to commit content
ad1d7b
translation.  When you are rendering content using
ad1d7b
@command{centos-art} script inisde @file{trunk/Identity} structure,
ad1d7b
artistic motifs and translation files are applied to model designs to
ad1d7b
produce translated content as result. In order to have the appropriate
ad1d7b
translation in content rendered, markers defintion in translation
ad1d7b
files should match markers in model designs exactly. 
ad1d7b
ad1d7b
@ifnotinfo
ad1d7b
@float Figure,fig:trunk/Translations/1
ad1d7b
@image{trunk/Identity/Models/Img/Scripts/renderImage,,,Translation Markers}
ad1d7b
@caption{The image rendering flow.}
ad1d7b
@end float
ad1d7b
@end ifnotinfo
ad1d7b
ad1d7b
Translation markers can be whatever text you want, but as convenction
ad1d7b
we use the following to represent releases of CentOS distribution:
ad1d7b
ad1d7b
@table @samp
ad1d7b
@item =MINOR_RELEASE=
ad1d7b
Replace with minor release of CentOS distribution. In the schema M.N, the minor
ad1d7b
release is represented by the N letter.
ad1d7b
@item =MAJOR_RELEASE=
ad1d7b
Replace with major release of CentOS distribution. In the schema M.N,
ad1d7b
the major release is represented by the M letter.
ad1d7b
@item =RELEASE=
ad1d7b
Replace the full release of CentOS distribution. It is
ad1d7b
@samp{=MAJOR_RELEASE=.=MINOR_RELEASE=} basically. 
ad1d7b
@end table
ad1d7b
ad1d7b
Specific translation markers convenctions are described inside
ad1d7b
specific translation entries. Read translation entries documentation
ad1d7b
to know more about supported translation markers.
ad1d7b
ad1d7b
Translation markers standardization creates a common point of
ad1d7b
reference for translators and graphic designers. To have translation
ad1d7b
markers well defined makes possible that translators and graphic
ad1d7b
designers can work together but independently one another.
ad1d7b
ad1d7b
@subsubsection Translation Files
ad1d7b
@cindex Translation files
ad1d7b
ad1d7b
Translation files are text files with @command{sed} commands inside,
ad1d7b
replacement commands mainly. As convenction, translation file names
ad1d7b
end in @samp{.sed}. Translation files are used by @command{centos-art}
ad1d7b
script to produce translated artworks for specific major releases of
ad1d7b
CentOS Distribution. There are common translation files, specific
ad1d7b
translation, and template translation files.
ad1d7b
ad1d7b
For example, the Firstboot artwork of CentOS distribution uses the
ad1d7b
images @file{splash-small.png} and @file{firstboot-left.png} as based
ad1d7b
to control its visual style. The @file{splash-small.png} image
ad1d7b
contains, in its graphic design, the release number information of
ad1d7b
CentOS distribution. So the @file{splash-small.png} is
ad1d7b
release-specific. In the other hand, the @file{firstboot-left.png}
ad1d7b
doesn't contain release number information. So the
ad1d7b
@file{firstboot-left.png} is not release-specific.
ad1d7b
ad1d7b
If we want to produce Firstboot artwork for different major releases
ad1d7b
of CentOS distribution, using a monolithic visual identity, all
ad1d7b
Firstboot images should have the same visual style and, at the same
ad1d7b
time, the release-specific information in the release-specific images. 
ad1d7b
ad1d7b
@quotation
ad1d7b
@strong{Note} The monolithic visual identity is implemented using
ad1d7b
theme models (@pxref{trunk Identity Themes Models}) and artistic
ad1d7b
motifs (@pxref{trunk Identity Themes Motifs}).
ad1d7b
@end quotation
ad1d7b
ad1d7b
Assuming that both theme models and theme motifs are ready for using,
ad1d7b
the initial translation entry to produce Firstboot artworks would look
ad1d7b
like the following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/BootUp/Firstboot/
ad1d7b
|-- Tpl
ad1d7b
|   `-- splash-small.sed
ad1d7b
`-- firstboot-left.sed
ad1d7b
@end verbatim
ad1d7b
ad1d7b
With the translation entry above, @command{centos-art} command is able
ad1d7b
to produce the image @file{firstboot-left.png} only. To produce
ad1d7b
@file{splash-small.png} images for major releases (e.g., 3, 4, 5, and
ad1d7b
6) of CentOS distribution we need to produce the release-specific
ad1d7b
translation files using the @command{centos-art} script as following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
centos-art render --entry=/home/centos/artwork/trunk/Translations/Identity/Themes/BootUp/Firstboot --filter='3,4,5,6'
ad1d7b
@end verbatim
ad1d7b
ad1d7b
The above command produces the following translation entiry:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/BootUp/Firstboot/
ad1d7b
|-- 3
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 4
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 5
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 6
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- Tpl
ad1d7b
|   `-- splash-small.sed
ad1d7b
`-- firstboot-left.sed
ad1d7b
@end verbatim
ad1d7b
ad1d7b
At this point @command{centos-art} is able to produce the Firstboot
ad1d7b
artwork images for major releases of CentOS distribution. To add new
ad1d7b
release-specific translation files, run the translation rendering
ad1d7b
command with the release number you want to produce translation files
ad1d7b
for in the @samp{--filter='release-number'} argument.
ad1d7b
ad1d7b
@subsubsection Template Translation Files
ad1d7b
@cindex Template translation files
ad1d7b
ad1d7b
Template translation files are translation files stored inside
ad1d7b
translation template directory. Template translation files are used by
ad1d7b
@command{centos-art} script to produce specific translation files
ad1d7b
only. Template translation files may be empty or contain @command{sed}
ad1d7b
replacement commands. If template translation files are empty files,
ad1d7b
the final specifc translation file built from it contains
ad1d7b
release-specific replacement commands only. For example, see the
ad1d7b
following translation entry:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/BootUp/Firstboot/
ad1d7b
|-- 3
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 4
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 5
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 6
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- Tpl
ad1d7b
|   `-- splash-small.sed    <-- template translation file.
ad1d7b
`-- firstboot-left.sed
ad1d7b
@end verbatim
ad1d7b
ad1d7b
In the above exmaple, the @file{splash-small.sed} file is a template
ad1d7b
translation file and looks like:
ad1d7b
ad1d7b
@verbatim
ad1d7b
# -------------------------------------
ad1d7b
# $Id: splash-small.sed 94 2010-09-18 10:59:42Z al $
ad1d7b
# -------------------------------------
ad1d7b
@end verbatim
ad1d7b
ad1d7b
In the above template translation file there are three comments lines,
ad1d7b
but when you render it, the @command{centos-art} adds the
ad1d7b
release-specific replacement commands. In our Firstboot example, after
ad1d7b
rendering Firstboot translation entry, the @file{splash-small.sed}
ad1d7b
translation file specific to CentOS 5, looks like the following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
# Warning: Do not modify this file directly. This file is created
ad1d7b
# automatically using 'centos-art' command line interface.  Any change
ad1d7b
# you do in this file will be lost the next time you update
ad1d7b
# translation files using 'centos-art' command line interface. If you
ad1d7b
# want to improve the content of this translation file, improve its
ad1d7b
# template file instead and run the 'centos-art' command line
ad1d7b
# interface later to propagate your changes.
ad1d7b
# -------------------------------------
ad1d7b
# $Id: splash-small.sed 94 2010-09-18 10:59:42Z al $
ad1d7b
# -------------------------------------
ad1d7b
ad1d7b
# Release number information.
ad1d7b
s!=RELEASE=!=MAJOR_RELEASE=.=MINOR_RELEASE=!g
ad1d7b
s!=MINOR_RELEASE=!0!g
ad1d7b
s!=MAJOR_RELEASE=!5!g
ad1d7b
@end verbatim
ad1d7b
ad1d7b
If template translation files are not empty, replacement commands
ad1d7b
inside template translation files are preserved inside
ad1d7b
release-specific translation files.  For example, consider the English
ad1d7b
template translation file of Anaconda progress welcome slide.  The
ad1d7b
translation template directory structure looks like the following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/Anaconda/Progress/
ad1d7b
`-- Tpl
ad1d7b
    `-- en
ad1d7b
        `-- 01-welcome.sed
ad1d7b
@end verbatim
ad1d7b
ad1d7b
and if we render translation files for CentOS 4 and CentOS 5 major
ad1d7b
releases, the translation entry would look like the following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/Anaconda/Progress/
ad1d7b
|-- 4
ad1d7b
|   `-- en
ad1d7b
|       `-- 01-welcome.sed
ad1d7b
|-- 5
ad1d7b
|   `-- en
ad1d7b
|       `-- 01-welcome.sed
ad1d7b
`-- Tpl
ad1d7b
    `-- en
ad1d7b
        `-- 01-welcome.sed
ad1d7b
@end verbatim
ad1d7b
ad1d7b
@quotation
ad1d7b
@strong{Note} Release-specific translation directories preserve
ad1d7b
template translation directory structure and file names.
ad1d7b
@end quotation
ad1d7b
ad1d7b
In the example above, the template translation file looks like the
ad1d7b
following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
# ------------------------------------------------------------
ad1d7b
# $Id: 01-welcome.sed 94 2010-09-18 10:59:42Z al $
ad1d7b
# ------------------------------------------------------------
ad1d7b
s/=TITLE=/Welcome to CentOS =MAJOR_RELEASE= !/
ad1d7b
s/=TEXT1=/Thank you for installing CentOS =MAJOR_RELEASE=./
ad1d7b
s/=TEXT2=/CentOS is an enterprise-class Linux Distribution derived from sources freely provided to the public by a prominent North American Enterprise Linux vendor./
ad1d7b
s/=TEXT3=/CentOS conforms fully with the upstream vendors redistribution policy and aims to be 100% binary compatible. CentOS mainly changes packages to remove upstream vendor branding and artwork./
ad1d7b
s/=TEXT4=//
ad1d7b
s/=TEXT5=//
ad1d7b
s/=TEXT6=//
ad1d7b
s!=URL=!http://www.centos.org/!
ad1d7b
@end verbatim
ad1d7b
ad1d7b
and, after render the translation entry, specific translation files
ad1d7b
look like the following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
# Warning: Do not modify this file directly. This file is created
ad1d7b
# automatically using 'centos-art' command line interface.  Any change
ad1d7b
# you do in this file will be lost the next time you update
ad1d7b
# translation files using 'centos-art' command line interface. If you
ad1d7b
# want to improve the content of this translation file, improve its
ad1d7b
# template file instead and run the 'centos-art' command line
ad1d7b
# interface later to propagate your changes.
ad1d7b
# ------------------------------------------------------------
ad1d7b
# $Id: 01-welcome.sed 94 2010-09-18 10:59:42Z al $
ad1d7b
# ------------------------------------------------------------
ad1d7b
ad1d7b
s/=TITLE=/Welcome to CentOS =MAJOR_RELEASE= !/
ad1d7b
s/=TEXT1=/Thank you for installing CentOS =MAJOR_RELEASE=./
ad1d7b
s/=TEXT2=/CentOS is an enterprise-class Linux Distribution derived from sources freely provided to the public by a prominen t North American Enterprise Linux vendor./
ad1d7b
s/=TEXT3=/CentOS conforms fully with the upstream vendors redistribution policy and aims to be 100% binary compatible. Cent OS mainly changes packages to remove upstream vendor branding and artwork./
ad1d7b
s/=TEXT4=//
ad1d7b
s/=TEXT5=//
ad1d7b
s/=TEXT6=//
ad1d7b
s!=URL=!http://www.centos.org/!
ad1d7b
ad1d7b
# Release number information.
ad1d7b
s!=RELEASE=!=MAJOR_RELEASE=.=MINOR_RELEASE=!g
ad1d7b
s!=MINOR_RELEASE=!0!g
ad1d7b
s!=MAJOR_RELEASE=!5!g
ad1d7b
@end verbatim
ad1d7b
ad1d7b
In the example above, relevant lines begin with the @samp{s} word
ad1d7b
followed by a separation character (e.g., @samp{/}, @samp{!}, etc.).
ad1d7b
These lines have the following format:
ad1d7b
ad1d7b
@verbatim
ad1d7b
s/REGEXP/REPLACEMENT/FLAGS
ad1d7b
@end verbatim
ad1d7b
ad1d7b
The @samp{/} characters may be uniformly replaced by any other single
ad1d7b
character within any given @command{s} command.  The @samp{/}
ad1d7b
character (or whatever other character is used in its stead) can
ad1d7b
appear in the REGEXP or REPLACEMENT only if it is preceded by a
ad1d7b
@samp{\} character.
ad1d7b
ad1d7b
The @command{s} command is probably the most important in
ad1d7b
@command{sed} and has a lot of different options.  Its basic concept
ad1d7b
is simple: the @command{s} command attempts to match the pattern space
ad1d7b
against the supplied REGEXP; if the match is successful, then that
ad1d7b
portion of the pattern space which was matched is replaced with
ad1d7b
REPLACEMENT.
ad1d7b
ad1d7b
In the context of our translation files, the REGEXP is where you
ad1d7b
define translation markers and REPLACEMENT where you define the
ad1d7b
translation text you want to have after artworks rendering.  Sometimes
ad1d7b
we use the FLAG component with the @samp{g} command to apply the
ad1d7b
replacements globally.
ad1d7b
ad1d7b
@quotation
ad1d7b
@strong{Tip} More information about how to use @command{sed}
ad1d7b
replacement commands and flags is available in @command{sed}
ad1d7b
documentation manual. To read @command{sed} documentation manual type
ad1d7b
the following command: 
ad1d7b
@verbatim
ad1d7b
info sed
ad1d7b
@end verbatim
ad1d7b
@end quotation
ad1d7b
ad1d7b
Inside translation files, you can use translation markers not only
ad1d7b
inside the REGEXP but in the REPLACEMENT too. In order for this
ad1d7b
configuration to work, the REPLACEMENT of translation markers needs to
ad1d7b
be define @emph{after} its definition. For example, see in the
ad1d7b
release-specific translation file above, how the
ad1d7b
@samp{s!=MAJOR_RELASE=!5!g} replacement command is defined
ad1d7b
@emph{after} @samp{=MAJOR_RELASE=} translation marker definition in
ad1d7b
the REPLACEMENT of @samp{=TITLE=} translation marker replacement
ad1d7b
command.
ad1d7b
ad1d7b
@subsubsection Common Translation Files
ad1d7b
@cindex Common translation files
ad1d7b
ad1d7b
Common translation files contain common translations or no
ad1d7b
translation at all for their related artworks.  They are in the root
ad1d7b
directory of the translation entry. Common translation files create
ad1d7b
common artworks for all major releases of CentOS Distribution. 
ad1d7b
ad1d7b
Translation entries, with common translation files inside, look like
ad1d7b
the following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/BootUp/Firstboot/
ad1d7b
|-- 3
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 4
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 5
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- 6
ad1d7b
|   `-- splash-small.sed
ad1d7b
|-- Tpl
ad1d7b
|   `-- splash-small.sed
ad1d7b
`-- firstboot-left.sed      <-- common translation file.
ad1d7b
@end verbatim
ad1d7b
ad1d7b
@subsubsection Specific Translation Files
ad1d7b
@cindex Specific translation files
ad1d7b
ad1d7b
Specific translation files contain specific translations for their
ad1d7b
related artworks. Specific translation files are not in the root
ad1d7b
directory of the translation entry, but inside directories which
ad1d7b
describe the type of translation they are doing. Specific translation
ad1d7b
files are produced automatically using the @command{centos-art}
ad1d7b
script.
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Themes/Distro/BootUp/Firstboot/
ad1d7b
|-- 3
ad1d7b
|   `-- splash-small.sed    <-- CentOS 3 specific translation file.
ad1d7b
|-- 4
ad1d7b
|   `-- splash-small.sed    <-- CentOS 4 specific translation file.
ad1d7b
|-- 5
ad1d7b
|   `-- splash-small.sed    <-- CentOS 5 specific translation file.
ad1d7b
|-- 6
ad1d7b
|   `-- splash-small.sed    <-- CentOS 6 specific translation file.
ad1d7b
|-- Tpl
ad1d7b
|   `-- splash-small.sed
ad1d7b
`-- firstboot-left.sed
ad1d7b
@end verbatim
ad1d7b
ad1d7b
@subsubsection Translation Rendering
ad1d7b
@cindex Translation rendering
ad1d7b
ad1d7b
When rendering translations, the @command{centos-art} script checks
ad1d7b
the translation entry to verify that it has a translation template
ad1d7b
directory inside. The translation template directory (@file{Tpl/})
ad1d7b
contains common translation files used to build release-specific
ad1d7b
translation files. If the translation template directory doesn't exist
ad1d7b
inside the translation entry the translation rendering fails. In this
ad1d7b
case the @command{centos-art} script outputs a message and quits
ad1d7b
script execution.
ad1d7b
ad1d7b
@subsubsection Translation (Pre-)Rendering Configuration Scripts
ad1d7b
@cindex Translation configuration scripts
ad1d7b
@cindex Translation pre-rendering configuration scripts
ad1d7b
ad1d7b
When the @command{centos-art} script finds a translation template
ad1d7b
directory inside translation entry, it looks for translations
ad1d7b
pre-rendering configuration scripts for that translation entry.
ad1d7b
Translation pre-rendering configuration scripts let you extend
ad1d7b
translation default functionality (described below). 
ad1d7b
ad1d7b
Translation pre-rendering configuration scripts are stored under
ad1d7b
@file{trunk/Scripts} directory, specifically under the appropriate
ad1d7b
language implementation. If you are using @command{centos-art} Bash
ad1d7b
implementation, the translation pre-rendering scripts are store in the
ad1d7b
@file{trunk/Scripts/Bash/Config} location; if you are using
ad1d7b
@command{centos-art} Python implementation, then translation
ad1d7b
pre-rendering scripts are stored in the
ad1d7b
@file{trunk/Scripts/Python/Config} location, and so on for other
ad1d7b
implementations.
ad1d7b
ad1d7b
Bash translation pre-rendering configuration scripts look like the
ad1d7b
following:
ad1d7b
ad1d7b
@verbatim
ad1d7b
#!/bin/bash
ad1d7b
#
ad1d7b
# render_loadConfig.sh -- brief description here.
ad1d7b
#
ad1d7b
# Copyright (C) YEAR YOURNAME
ad1d7b
# 
ad1d7b
# This program is free software; you can redistribute it and/or modify
ad1d7b
# it under the terms of the GNU General Public License as published by
ad1d7b
# the Free Software Foundation; either version 2 of the License, or
ad1d7b
# (at your option) any later version.
ad1d7b
# 
ad1d7b
# This program is distributed in the hope that it will be useful, but
ad1d7b
# WITHOUT ANY WARRANTY; without even the implied warranty of
ad1d7b
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
ad1d7b
# General Public License for more details.
ad1d7b
#
ad1d7b
# You should have received a copy of the GNU General Public License
ad1d7b
# along with this program; if not, write to the Free Software
ad1d7b
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
ad1d7b
# USA.
ad1d7b
# 
ad1d7b
# ----------------------------------------------------------------------
ad1d7b
# $Id: render_loadConfig.sh 94 2010-09-18 10:59:42Z al $
ad1d7b
# ----------------------------------------------------------------------
ad1d7b
ad1d7b
function render_loadConfig {
ad1d7b
...
ad1d7b
}
ad1d7b
@end verbatim
ad1d7b
ad1d7b
Translation pre-rendering scripts are function scripts loaded and
ad1d7b
executed when rendering a translation entry. Translation pre-rendering
ad1d7b
scripts are loaded using the translation entry being rendered as
ad1d7b
reference. For example, suppose you are using the
ad1d7b
@command{centos-art} Bash implementation, and you are rendering
ad1d7b
translations for CentOS brands, in this situation the translation
ad1d7b
entry would be:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Translations/Identity/Brands
ad1d7b
@end verbatim
ad1d7b
ad1d7b
and the entry inside the translation pre-rendering configuration
ad1d7b
structure would be:
ad1d7b
ad1d7b
@verbatim
ad1d7b
trunk/Scripts/Bash/Config/Identity/Brands
ad1d7b
@end verbatim
ad1d7b
ad1d7b
Once the @command{centos-art} script detects that translation
ad1d7b
pre-rendering configuration directory exists, the @command{centos-art}
ad1d7b
script looks for the translation pre-rendering configuration file.  If
ad1d7b
the translation pre-rendering configuration file exists, it is loaded
ad1d7b
and executed.  Once the translation pre-rendering configuration file
ad1d7b
has been executed the translation rendering process is over, and so
ad1d7b
the script execution.
ad1d7b
ad1d7b
@quotation
ad1d7b
@strong{Note} Translation pre-rendering configuration files have the
ad1d7b
following form:
ad1d7b
@verbatim
ad1d7b
render.conf.extension
ad1d7b
@end verbatim
ad1d7b
where @samp{extension} refers the programming language implementation
ad1d7b
you are using. For example, @samp{sh} for Bash, @samp{py} for Python,
ad1d7b
@samp{pl} for Perl, and so on for other implementations.
ad1d7b
@end quotation
ad1d7b
ad1d7b
As we are using Bash implementation to describe the translation
ad1d7b
pre-rendering configuration example, the translation pre-rendering
ad1d7b
configuration file that @command{centos-art} looks for, inside the
ad1d7b
above translation pre-rendering configuration directory, is
ad1d7b
@file{render.conf.sh}.
ad1d7b
ad1d7b
@subsubsection Translation Rendering Default Functionality
ad1d7b
@cindex Translation rendering default functionality
ad1d7b
ad1d7b
In the other hand, if the translation pre-rendering configuration file
ad1d7b
doesn't exist, or it isn't written as function script, the
ad1d7b
@command{centos-art} script ignore translation pre-rendering
ad1d7b
configuration functionality and passes to render translation using
ad1d7b
default functionality instead.
ad1d7b
ad1d7b
The translation rendering default functionality takes template
ad1d7b
translation directory structure, duplicates it for each release number
ad1d7b
specified in the @samp{--filter='release-number'} argument and
ad1d7b
produces release-specific directories. As part of template translation
ad1d7b
duplication process take place, the @command{centos-art} script adds
ad1d7b
release-specific replacement commands for each specific translation
ad1d7b
file inside release-specific directories. As result, specific
ad1d7b
translation files, inside release-specific directories, contain
ad1d7b
template translation replacement commands @emph{plus},
ad1d7b
release-specific replacement commands.
ad1d7b
ad1d7b
@quotation
ad1d7b
@strong{Note} Release-specific replacement commands are standardized
ad1d7b
inside @command{centos-art} script using predifined release
ad1d7b
translation markers. Release translation markers are described in the
ad1d7b
translation marker section
ad1d7b
(@pxref{trunk:Translations:TranslationMarkers, Translation Markers}).
ad1d7b
@end quotation
ad1d7b
ad1d7b
@c --- figure required to illustrate this section.
ad1d7b
ad1d7b
@subsection Usage
ad1d7b
@cindex How to render translation files
ad1d7b
ad1d7b
@table @samp
ad1d7b
@item centos-art render --entry='path/to/dir' 
ad1d7b
ad1d7b
When @samp{path/to/dir} refers one directory under
ad1d7b
@samp{trunk/Translations}, this command orverwrites available
ad1d7b
translation files using translation templates.
ad1d7b
ad1d7b
@item centos-art render --entry='path/to/dir' --filter='pattern' 
ad1d7b
ad1d7b
When @samp{path/to/dir} refers one directory under
ad1d7b
@file{trunk/Translations}, this command renders release-specific
ad1d7b
translation files as you specify in the @samp{--filter='pattern'}
ad1d7b
argument. In this case, @samp{pattern} not a regular expression but an
ad1d7b
number (e.g., @samp{5}) or a list of numbers separated by commas
ad1d7b
(e.g., @samp{3,4,5,6}) that specify the major release of CentOS
ad1d7b
distribution you want to render translations for.  
ad1d7b
@end table
ad1d7b
ad1d7b
@subsection See also
ad1d7b
ad1d7b
@menu
ad1d7b
* trunk Translations Identity Brands::
ad1d7b
* trunk Translations Identity Fonts::
ad1d7b
* trunk Translations Identity Models::
ad1d7b
* trunk Translations Identity Release::
ad1d7b
* trunk Translations Identity Themes::
ad1d7b
* trunk Identity::
ad1d7b
@end menu