|
|
(17 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| ==Introduction== | | ==Introduction== |
− | This document is based on and extents [[Localization_for_developers]]. The document is work in
| |
− | progress showing the result of a detailed technical analysis of the current process (version 3.4.1) .
| |
− | As such this document should be seen as a replacement of [[Localization_for_developers]].
| |
| | | |
− | The l10n process only concerns itself about localizing defined supported languages. Adding a new
| |
− | language is a i18 process. This document is further restricted to the ongoing translation process and
| |
− | closely related build process. In case of external happenings, like e.g. Germany changing rules of
| |
− | spelling, it should be covered with i18 procedures.
| |
| | | |
− | The document will hopefully spark a discussion so it can be updated with other views from the [mailto:ooo-L10n@incubator.apache.org ooo-L10n@incubator.apache.org].
| + | math problem |
| + | <math>E = m.c^2</math> |
| | | |
− | It is important to understand the current process before we start discussing detailed changes, so this
| |
− | is the main purpose of this page. Once all the open issues at the end of document have been
| |
− | discussed as solutions agreed upon, a new document will be made describing the process as it
| |
− | should be in the near future.
| |
| | | |
− | Thanks to all those persons who contributed to [[Localization_for_developers]] that has been a great
| + | test |
− | starting point for this document.
| + | <dl> |
| + | {| style="margin-left: 2cm;border-spacing:0;border:0.002cm solid #000000;padding:0.2cm;" |
| + | | |
| + | <code>cd main<br> |
| + | localize -e -l en-US -f en-US.sdf</code> |
| + | |} |
| + | <dl> |
| + | This is a perl script that will call |
| + | <dl> |
| + | {| style="margin-left: 2cm;border-spacing:0;border:0.002cm solid #000000;padding:0.2cm;" |
| + | | |
| + | <code>solver/350/<platform>/bin/localize_sl<.exe></code> |
| + | |} |
| + | <dl> |
| | | |
− | [[File:L10proc.pdf]]
| |
| | | |
| + | test table |
| + | total number of files. |
| | | |
− | ==Overview==
| |
− | Localization, often abbreviated as l10n, defines the process to make a software package available in
| |
− | local languages, different to the language of the developer.
| |
| | | |
− | Localization is from the perspective of the involved person a multi-step process that involves a
| + | {| style="border-spacing:0;" |
− | variety of tools and procedures. Most importantly the 4 main categories of involved persons have
| + | | colspan="4" style="border:0.002cm solid #000000;padding:0.097cm;"| <center>'''Extensions scanned for text'''</center> |
− | quite different and to some extent conflicting views and requirement, therefore the process should
| + | |
− | be a real “best of all worlds” approach.
| + | |
| | | |
− | The current process is more or less purely developer oriented, contains a lot of different tools and
| + | |- |
− | depends a lot on the responsibility of the involved people. It seems to be a process that has grown
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>'''Files'''</center> |
− | out of necessity more than a planned road.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>'''Extension'''</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>'''Tool'''</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>'''Desription'''</center> |
| | | |
− | Most of the tools used as well as the central data format (SDF) are specific to AOO and not used
| + | |- |
− | anywhere else even though both source (c++, resource, UI files) and target (po files) are standard
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>814</center> |
− | file formats.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.hrc</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>transex3</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>header for resource files</center> |
| | | |
− | Only a part of the workflow are integrated in the build system. Much of it requires manual steps to
| + | |- |
− | be taken. Some of the tools involved are not part of the OpenOffice SVN and, due to a hard disk
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>98</center> |
− | crash of the old [http://translate.sourceforge.net/wiki/pootle/index pootle server], are lost.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.properties</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>jpropex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>java property files</center> |
| | | |
− | Translations are done with the help of a [http://translate.sourceforge.net/wiki/pootle/index pootle server]. The localization work flow can very short be
| + | |- |
− | seen as:
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>1040</center> |
− | * extraction messages from source files.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.src</center> |
− | * uploading message to the [http://translate.sourceforge.net/wiki/pootle/index pootle server].
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>transex3</center> |
− | * translating messages on the [http://translate.sourceforge.net/wiki/pootle/index pootle server].
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>source for resource files</center> |
− | * downloading messages from the [http://translate.sourceforge.net/wiki/pootle/index pootle server].
| + | |
− | * merging messages into source files.
| + | |
| | | |
− | If you are looking for information about how to contribute translations then [[Localization]] gives an overview.
| + | |- |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>15</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.tree</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>xhtex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>help files</center> |
| | | |
− | The document has 5 parts:
| + | |- |
− | * a relative non-technical overview of the process,
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>0</center> |
− | * a detailed technical overview of the process,
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.ulf</center> |
− | * a detailed technical data flow/storage view,
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>ulfex</center> |
− | * a detailed technical view of the tools used with parameters etc,
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>?</center> |
− | * an open issues list,
| + | |
− | ==Actors and Systems== | + | |
− | The l10n process can and should be viewed with respect to 4 different categories of people who
| + | |
− | access the process through 2 different systems. The translator consider [http://translate.sourceforge.net/wiki/pootle/index pootle server] to be repository
| + | |
− | whereas the others consider [http://www.apache.org/dev/version-control.html SVN] the main repository.
| + | |
| | | |
− | [[File:Localization_AOO_1.jpg|center]]
| + | |- |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>53</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xcd</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>cfgex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>xml files only in postprocess</center> |
| | | |
− | '''Note:''' this view only relates to the l10n procedure, the picture for the whole project is a lot more
| + | |- |
− | complex.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>314</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xcs</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>cfgex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>xml file for java</center> |
| | | |
− | The red lighting indicates that the [http://translate.sourceforge.net/wiki/pootle/index pootle server] only works indirectly on the [http://www.apache.org/dev/version-control.html SVN] server.
| + | |- |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>1365</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xcu</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>cfex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>xml files for UI</center> |
| | | |
− | The red lightning indicates that data is being copied:
| + | |- |
− | * to/from [http://translate.sourceforge.net/wiki/pootle/index pootle server], which requires manual intervention during the build process
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>0</center> |
− | * to tester which is quite normal, since a tester normally get an install-set.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xgf</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>xmlex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>?</center> |
| | | |
| + | |- |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>4543</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xhp</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>helpex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>AOO help files</center> |
| | | |
− | ===Developers=== | + | |- |
− | Developers construct the actual program, using dedicated development tools.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>0</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xrb</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>xmlex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>?</center> |
| | | |
− | Developers will as part of the development process embed messages (errors, warnings …) in the
| + | |- |
− | source code and/or build UI. The embedded texts are defined to be in English but the source code
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>1</center> |
− | are in different programming languages, making extraction a challenge.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xrm</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>xrmex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>xml readme file</center> |
| | | |
− | Developers are fluent in their language (C++, java, python etc.) but for sure not in all the native
| + | |- |
− | languages supported by AOO therefore localization is needed.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>0</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xtx</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>xtxex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>?</center> |
| | | |
− | Developers uses solely
| + | |- |
− | [http://www.apache.org/dev/version-control.html SVN] as their repository.
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>0</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>.xxl</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>xmlex</center> |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>?</center> |
| | | |
| + | |- |
| + | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| <center>'''8243'''</center> |
| + | | colspan="3" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| <center>Files to be scanned, total number of files is 438189</center> |
| | | |
− | ===Translators===
| + | |} |
− | Translators add texts in the local native language, relating (translating) to the original message. In a
| + | The tools |
− | release there is a 1-n relation between the original message and the supported languages, where n is
| + | |
− | the number of supported languages.
| + | |
| | | |
− | Translators does in principle not need to have programming knowledge because in essence they are
| + | The tools are all separate executables meaning that for each file to be scanned a separate process with the corresponding tool is |
− | presented with a list of texts extracted from the source and delivers the translated text back.
| + | |
| | | |
− | Translators work solely with the [http://translate.sourceforge.net/wiki/pootle/index pootle server] which today has no direct connection to [http://www.apache.org/dev/version-control.html SVN] but
| |
− | work in parallel with [http://www.apache.org/dev/version-control.html SVN] and are updated manually with regular intervals.
| |
| | | |
| | | |
− | ===Integrators===
| + | [[File:L10proc.pdf]] |
− | Integrators initiate and control the build process.
| + | |
− | | + | |
− | Integrators does in principle not need to have programming or translation knowledge, because they
| + | |
− | are basically doing administrative tasks.
| + | |
− | | + | |
− | | + | |
− | ===Testers===
| + | |
− | Testers check the total system and do a quality assurance of the behavior.
| + | |
− | | + | |
− | Testers need a deep knowledge of the behavior of the system, but deep technical knowledge is not
| + | |
− | needed.
| + | |
− | | + | |
− | Today testing seems to be very limited and not formalized in respect of the l10n process.
| + | |
− | | + | |
− | | + | |
− | ===System: [http://www.apache.org/dev/version-control.html SVN]===
| + | |
− | The sub version server is the actual repository and ideally all systems should work directly on this
| + | |
− | server.
| + | |
− | | + | |
− | All source files, documents etc. are stored in
| + | |
− | [http://www.apache.org/dev/version-control.html SVN].
| + | |
− | | + | |
− | | + | |
− | ===System: [http://translate.sourceforge.net/wiki/pootle/index pootle server]===
| + | |
− | The [http://translate.sourceforge.net/wiki/pootle/index pootle server] provides an environment for translators to work in.
| + | |
− | | + | |
− | Today the [http://translate.sourceforge.net/wiki/pootle/index pootle server] contains all the translations and are updated from SVN and are as a
| + | |
− | consequence not synchronized and without version control (during the translation process).
| + | |
− | | + | |
− | Furthermore many translators work offline without any control.
| + | |
− | | + | |
− | ==L10n workflow high altitude view==
| + | |
− | The workflow seen from the outside is quite simple, but still some of the shortcommings should be
| + | |
− | very obvious.
| + | |
− | | + | |
− | The workflow is designed as a waterfall, but one of the good norwegian ones where water is
| + | |
− | pumped back up at night time. Idealy for each release each section is done only once (waterfall), but
| + | |
− | in real life two things happen (norwegian night pumping):
| + | |
− | * Some sections happens in parallel (e.g. Translators start working with early code)
| + | |
− | * Some sections are repeated due to problems found in later sections
| + | |
− | | + | |
− | This is quite normal and normally not a real problem provided the process is automated and has a
| + | |
− | number of quality gates.
| + | |
− | | + | |
− | However the current process there is only a single automated quality gate which are pure technical
| + | |
− | (solving: “Can the product be built without errors?”) the rest is left to us humans.
| + | |
− | | + | |
− | The workflow only concentrates on the l10n process which is only a subset of the total lifecycle
| + | |
− | process.
| + | |
− | [[File:Localization_AOO_2.jpg|center]] | + | |
− | | + | |
− | The model shows at least one problem, the parallelism of “Translation online” and “Translation
| + | |
− | offline”. To put it a bit on edge, this works because there are no alternatives and because there are
| + | |
− | few volunteers.
| + | |
− | | + | |
− | | + | |
− | ===Content creation===
| + | |
− | Developers construct/develop new functionality or correct bugs/issues using different tools and
| + | |
− | programming languages. During the programming they may insert texts in the source files, this is
| + | |
− | done very differently depending on programming language and type of application (UI or
| + | |
− | error/information messages).
| + | |
− | | + | |
− | All text are written in English according to the programming guidelines, however there are no
| + | |
− | review process to secure the quality of the text or consistency with the rest of the product.
| + | |
− | | + | |
− | '''Note:''' A developer can insert the text directly in the source file or in a resource file, for the program
| + | |
− | both ways work, however only a limited number of file extension types are today scanned for texts,
| + | |
− | so in worst case some texts are never translated.
| + | |
− | | + | |
− | | + | |
− | ===Upload [http://translate.sourceforge.net/wiki/pootle/index pootle server]===
| + | |
− | The source files are stored in
| + | |
− | [http://www.apache.org/dev/version-control.html SVN]. In general the content of
| + | |
− | [http://www.apache.org/dev/version-control.html SVN] is floating since it contains the
| + | |
− | absolute last updates, with the consequence that a total build very often will fail. To circumvent this
| + | |
− | problem a snapshot is made from time to time, guaranteeing a successful build but the package
| + | |
− | might not function correctly.
| + | |
− | | + | |
− | The snapshots can be used for a manually started extraction to the [http://translate.sourceforge.net/wiki/pootle/index pootle server].
| + | |
− | | + | |
− | The extraction program loop over all files in
| + | |
− | [http://www.apache.org/dev/version-control.html SVN]
| + | |
− | * building one big sdf file.
| + | |
− | * the sdf file are then split into multiple template files.
| + | |
− | * the template files are merged with the existing po files in the [http://translate.sourceforge.net/wiki/pootle/index pootle server].
| + | |
− | * [http://translate.sourceforge.net/wiki/pootle/index pootle server] database contain one set of po files for each language.
| + | |
− | | + | |
− | The purpose is to decouple the development process from the translation process. The purpose is
| + | |
− | achieved, but the route is highly manual and error prone.
| + | |
− | | + | |
− | If life was ideal, translation would only take place when development is completed, but typically
| + | |
− | translation takes place at several stages of the development process for several reasons:
| + | |
− | * A release consist of changes to multiple function group (e.g. draw, write and calc), and these developments are finished at different point in times. Whenever a development of a group is finished this group can be translated and thus the decoupling will be repeated.
| + | |
− | * Translation often takes place while testing is ongoing, any bug fixing must lead to a new decoupling, and since there are no version control of the translated parts it can only be controlled manually if there are changes.
| + | |
− | * There are currently no short-cuts to fast translate a bug fix that involves a known text change
| + | |
− | | + | |
− | '''Note:''' This part of the process is highly manual and very error prone, since it involves coordinating
| + | |
− | the effort of a high number of people
| + | |
− | | + | |
− | | + | |
− | ===Translation===
| + | |
− | Translation takes place on an offline copy consisting of multiple po files. These po files are
| + | |
− | generated each time, so any additional information the translators would like to keep (e.g.
| + | |
− | comments) are lost.
| + | |
− | | + | |
− | At the moment there are 276 different files to translate for each language. In order to split the work
| + | |
− | UI and Help are separated, there are
| + | |
− | * 20 help files (but they are big!)
| + | |
− | * 256 UI/message files (typically an average of 20lines)
| + | |
− | | + | |
− | Having that many files to translate makes it more likely to get content inconsistency (same term is
| + | |
− | translated differently).
| + | |
− | | + | |
− | Since the files are solely generated from the sources, there are no glossary file available, making it
| + | |
− | very difficult for new volunteers to help. Furthermore there are no control of how accelerators are
| + | |
− | used.
| + | |
− | | + | |
− | The online and offline translation process are handled quite differently.
| + | |
− | | + | |
− | '''Note:''' Today there are no version control and as such no computer controlled review and as a
| + | |
− | consequence the content quality varies.
| + | |
− | | + | |
− | | + | |
− | ====Translation online (“committer”)====
| + | |
− | The po files are stored in [http://translate.sourceforge.net/wiki/pootle/index pootle server] database and thereby available to translators with through
| + | |
− | the HTML interface.
| + | |
− | | + | |
− | Due to the lack of version control, team work must be controlled carefully.
| + | |
− | | + | |
− | Once a translation is complete, the translator(s) must manually inform the integrator that the set is
| + | |
− | ready for merge.
| + | |
− | | + | |
− | | + | |
− | ====Translation offline (non “committer”)====
| + | |
− | The integrator will manually extract the po files from the [http://translate.sourceforge.net/wiki/pootle/index pootle server] and send the files to the
| + | |
− | translators without “committer” status. The copy is not under version control or otherwise
| + | |
− | controlled.
| + | |
− | | + | |
− | Once the translation is complete the the translator must send the files back to the integrator.
| + | |
− | | + | |
− | There are no computer control with which translations are outstanding, which are in manual review
| + | |
− | and which are completed, this is currently controlled by the integrator.
| + | |
− | | + | |
− | '''Note:''' Neither bugzilla nor the mailing list allows these big attachments, so it must be sent to a private mail address or posted on a private web page.
| + | |
− | | + | |
− | | + | |
− | ===Merge [http://www.apache.org/dev/version-control.html SVN]===
| + | |
− | The integrator must manually decide that all offline translations are back and all online translators
| + | |
− | have finished (translation review is left to the single translator team).
| + | |
− | | + | |
− | At a point in time decided by the integrator to start the merge, which consist of several manual
| + | |
− | steps:
| + | |
− | * synchronize po files with content of the [http://translate.sourceforge.net/wiki/pootle/index pootle server] database
| + | |
− | * add the offline translated files
| + | |
− | * convert po files to sdf file (one pr language)
| + | |
− | * store sdf file in [http://www.apache.org/dev/version-control.html SVN].
| + | |
− | | + | |
− | This part of the process does not allow for glossary files, because the converters would have no
| + | |
− | source parts to relate the glossary to.
| + | |
− | | + | |
− | | + | |
− | ===Update [http://translate.sourceforge.net/wiki/pootle/index pootle server]===
| + | |
− | Now it is time to synchronize the pootle server, to make sure then content is identical with SVN.
| + | |
− | Based on the new sdf file (one pr language) the following actions are taken:
| + | |
− | * Convert sdf til template file
| + | |
− | * update templates in [http://translate.sourceforge.net/wiki/pootle/index pootle server]
| + | |
− | | + | |
− | | + | |
− | ===Language build===
| + | |
− | Finally a test release can be built, and the testers can control the final result.
| + | |
− | It should be noted that there currently no formal testing of the native language versions.
| + | |
− | | + | |
− | | + | |
− | ==Simplified data flow==
| + | |
− | The current data flow is pretty complex, and it seems more like a “invented as needed” structure.
| + | |
− | | + | |
− | The first part shows the text flow from developer to translator:
| + | |
− | | + | |
− | [[File:Localization_AOO_3.jpg|center]]
| + | |
− | | + | |
− | The second part shows the text flow from translator to tester:
| + | |
− | | + | |
− | As seen from the diagrams there are many manual steps, and many different temporary files only
| + | |
− | needed to come from a to b.
| + | |
− | | + | |
− | [[File:Localization_AOO_4.jpg|center]]
| + | |
− | | + | |
− | | + | |
− | ==L10n workflow technical view==
| + | |
− | This chapter is identical to L10n workflow high altitude view but seen from a technical view
| + | |
− | showing actual commands, names of files and directories as well details of the tool behavior.
| + | |
− | | + | |
− | ===Content Creation===
| + | |
− | Developers write text that needs to be localized. In principle the texts can be kept in files with any
| + | |
− | extension since most compilers are quite large in that respect. However the programming guidelines
| + | |
− | should secure that only defined extensions are used.
| + | |
− | | + | |
− | It is worth to note that the most common files (.cxx, .hxx, .cpp, .hpp, .py) are NOT scanned.
| + | |
− | Note: If a developer for some good reason decides to use a file with a non-standard suffix, it will
| + | |
− | NOT be searched for messages.
| + | |
− | | + | |
− | | + | |
− | ===Upload [http://translate.sourceforge.net/wiki/pootle/index pootle server]===
| + | |
− | The upload process is the very complicated and totally manual.
| + | |
− | The outcome of the process in general it makes a snapshot copy of the texts in SVN and makes it
| + | |
− | available on the pootle server and as zip files to contributor translators.
| + | |
− | After the texts is extracted and until they are merged back they are NOT in any source control, nor
| + | |
− | is parallel development controlled.
| + | |
− | Extraction from sources (generate new sdf file)
| + | |
− | Before starting this process, all sources needs to be checked out (read-only). In order to ensure that
| + | |
− | the source is complete it is good practice to do a “build –all” first.
| + | |
− | The process is started with:
| + | |
− | This is a perl script that will call
| + | |
− | which is the actual executable. Sources for this executable is found in l10tools/source.
| + | |
− | localize_sl loop across the entire tree looking for files with a known extension. As seen in the table
| + | |
− | below the number of relevant files are small compared to the total number of files.
| + | |
− | | + | |
− | | + | |
− | | + | |
− | | + | |
− | | + | |
− | [[File:Localization_AOO_5.jpg|center]]
| + | |
− | [http://www.apache.org/dev/version-control.html SVN]
| + | |
− | [http://translate.sourceforge.net/wiki/pootle/index pootle server]
| + | |