Translating/HowTo: Difference between revisions

From OLPC
Jump to navigation Jump to search
m (highlight anchor usage)
m (Reverted edits by 78.173.168.167 (Talk); changed back to last version by Wad)
 
(67 intermediate revisions by 22 users not shown)
Line 1: Line 1:
{{ Translations }}
There are many issues that make translating a not-so-simple act. The nature of the wiki (highly mutable sources) complicates them. Hopefuly the explanation below is sufficiently clear for anybody to understand and be able to collaborate in the [[Translating]] effort without too much hassle.
{{l10n-nav}}
<!-- /* Text from version 80110: Sounds too negative */
Translation is often a difficult and tedious task that requires much effort. The volatile nature of wiki adds further complications. However these complications can be overcome by following a few simple rules and using standardised work practices. It is hoped that this will allow anybody to collaborate in the [[translating]] effort and at the same time have fun in the process.
-->
<!-- /* This is much more positive. */ -->
Taking part in translation projects can be fun and rewarding. However the volatile nature of wiki can make things difficult for the translator. These complications can be overcome by following a few simple rules and using standardised work practices. It is hoped that this will allow anybody to collaborate in the [[translating]] effort and at the same time have fun in the process.


'''The translate templates now attempt to give help text to guide you through the process. This help-text is the best guide for translating. Try starting out by putting the {{tl|translations}} template on your home page and recursively following the instructions, saving the relevant page, and reading the new instructions. The material below is preserved in case the brief help texts leave you confused, yet in some cases it is out-of-date.'''
== Step-by-step ==


== Step-by-step summary ==
We'll assume that you want to translate a page that is maintained by the OLPC team (so it will have a reference to the [[Template:OLPC|<nowiki>{{OLPC}}</nowiki>]] template), as they are usually the entry points or that consolidate information that is more helpful for the local communities.


From the point-of-view of the wiki, there are basically three tasks to hook up a translated page:
If the page to translate already has a language bar, you skip to [[#Modifying the language bar]].
# [[Setting up the source page: ensure it has a <nowiki>{{Translations}}</nowiki> template|modify the source page]] &mdash; if it has never been translated;
# [[#Modifying the language bar|adding a reference]] &mdash; point/link to the translation in a standard way; and
# [[#Setting up the translated page|conditioning the translated page]] &mdash; adding some helper structure.
Most of the time, [[translators]] will only deal with the last two steps (setting up and linking the translation).

You can see an overview of the [[#Anatomy of a wiki-page|relevant structure]] of a page, and a [[#Full finished example|full finished example]] towards the end of this page.

=== Setting up the source page: ensure it has a <nowiki>{{Translations}}</nowiki> template ===

We'll assume that you want to translate a page that is monitored by the OLPC team; meaning that it will have a reference to the [[Template:OLPC|<nowiki>{{OLPC}}</nowiki>]] template&mdash;that groups pages in the [[:Category:Pages monitored by OLPC]]&mdash;and they frequently are the entry points or that contain information that may be more obviously helpful for the local communities.

If the page to translate already has a language bar, you can skip down to [[#Modifying the language bar]].


<div style="font-size:80%; ">
<div style="font-size:80%; ">
Line 28: Line 46:
</div>
</div>


=== Adding the language bar ===
==== Adding the language bar ====


Although ever more rare, you may find yourself wanting to translate a page that nobody else has translated. In that case, you need to add a translations navigation bar in the original page.
Although it is rare, it may be necessary to translate a page that nobody else has translated yet. In that case, a translations navigation bar must be added in the original page.


<div style="font-size:80%; ">
<div style="font-size:80%; ">
Line 54: Line 72:
</div>
</div>


=== Setting up the /translations ===
==== Setting up the /translations ====


{{ Translated text |
You should follow the <nowiki>[[Original page/translations]]</nowiki> link in order to edit the page that groups the translations of a particular page, and should look something like this:

You should follow the <tt><nowiki>[[Original page/translations]]</nowiki></tt> link in order to edit the page that groups the translations of a particular page, and should look something like this:

| display = none }}

To edit the page that groups the translations of a particular page, follow the ''<nowiki>[[Original page/translations]]</nowiki>'' link. It should look something like the following:


<div style="font-size:80%; ">
<div style="font-size:80%; ">
Line 66: Line 90:
|- valign="top"
|- valign="top"
|
|
<nowiki>{{translationlist | xx | origlang=en}}</nowiki>
<nowiki>[[Original page|english]] | [[</nowiki>Original page/lang-[[#lang|xx]]|[[#language name|shortNativeName]]<nowiki>]]</nowiki>
|}
|}
</div>
</div>


The resulting page will have a red link, denoting a missing/broken link to you future translation. Don't worry, you'll fix that in the next step.
The resulting page will have a red colored link, denoting a missing/broken link to your future translation. Don't worry, you'll fix that in the next step.


===== Changing the page title =====
'''NOTE:''' Although you could give any name to the translated page (ie: instead of "<tt>[[The OLPC Wiki/lang-es]]</tt>" you could do "<tt>[[El Wiki de la OLPC]]</tt>"). As a matter of fact, there are quite some pages that follow that structure, but most of them are either left overs from when there wasn't a clear structure and way for adding translations. As mentioned in the [[translating]] pages, there are advantages to sticking with the <tt>/lang-[[#lang|xx]]</tt> structure, particularly because you can always create a <tt><nowiki>#REDIRECT</nowiki></tt> in the native language to your translated version.
The Translationlist template uses the form "<tt>[[The OLPC Wiki/lang-es]]</tt>" for translated pages. If you want to change it later so that the page title is in the target language (e.g. "<tt>[[El Wiki de la OLPC]]</tt>"), use the "move" function of the wiki; this automatically creates a redirect link so that the interlanguage links still work.

''The Translationlist template is actually broken, and doesn't work correctly with non-standard page names (ie. other than Original Page/lang-xx), even after following the above instructions to "move" the page. For now, you can revert to not using a template. In this case, the Topic/translations file will look like:''

<div style="font-size:80%; ">
{| cellspacing=0

|- valign="top" style="background:lightgray; "
! <nowiki>[[Original page/translations]]</nowiki>

|- valign="top"
|
<nowiki>[[Original page|english]] | [[</nowiki>Original page/lang-[[#lang|xx]]|[[#language name|shortNativeName]]<nowiki>]]</nowiki>
|}
</div>

As a matter of fact, there are many pages that do not follow this structure, but most of them are left over from when there wasn't a clear structure and way for adding translations. As mentioned in the [[translating]] pages, there are advantages to sticking with the <tt>/lang-[[#lang|xx]]</tt> structure.


=== Modifying the language bar ===
=== Modifying the language bar ===


Below is an example of a typical language bar. The page that may need translation would have a link shown as <tt>'''+/-'''</tt> to the far right of the bar. (Not shown on this example.) This is a link to the editing page for the language bar. To create a link, for example when adding a new language on the language bar, follow this <tt>'''+/-'''</tt> link to go to the editing page. Then add the appropriate code for the new language.
The language bar (depicted below) has in the right a <tt>+/-</tt> link that enables you to edit the links to the translated pages. Following it you can add your target page.
<div style="font-size:80%; margin-left:10%; margin-right:10%; ">
<div style="font-size:90%; margin-left:5%; margin-right:5%; ">
{{Translations | {{:Bitfrost/translations}}}}
{{Translations | {{:The OLPC Wiki/translations}}}}
</div>
</div>
Please insert the link to your page trying to keep the alphabetical order denoted by the <tt>/lang-[[#lang|xx]]</tt> sequence (if you're adding say <tt>/lang-de</tt> it should go before the link to 'english'). Also, note the spaces around the '|' that separate each language. See [[#Setting up the /translations|above on <tt>/translations</tt>]] for more info.
When inserting the link to your page, please keep things '''in alphabetical order denoted by the <tt>/lang-[[#lang|xx]]</tt> sequence''' (if you're adding say <tt>/lang-de</tt> it should go before the link to 'english'). Also, note the spaces around the '|' that separate each language. See [[#Setting up the /translations|above on <tt>/translations</tt>]] for more info.


=== Setting up the translated page ===
=== Setting up the translated page ===


There are several ways that you can decide to actually translate a page. But there are some things that you want to keep in mind. First of all, you must declare it as a [[Template:Translation|<nowiki>{{Translation}}</nowiki>]] (please note the use of the ''singular'' (plural is for the original page, that has many translations). Second, you want to keep navigation and linking within the translated pages easy. And finally, you may want to preserve the original text in the translation in order to simplify the review and maintenance.
Although the translator is given as much freedom to edit and to translate as possible when translating the wiki, there is one rule that must be adhered to at all times. The translated page must be declared as a [[Template:Translation|<nowiki>{{Translation}}</nowiki>]]. (Please note the use of "singular". Plural is for the original page and it will have many translations.)

There are couple of other bits of advice that may improve the quality of the translation process. First, please keep navigation and linking within the translated pages simple and easy to follow. Secondly, preserving the original text in the translation may simplify peer review and help with maintenance.


The quickest way to set up a page is by going back to the
The easiest way to set it up, is to go back to the original page, copy the '''wiki-text''' (in other words, either follow the ''edit'' (or ''view source'' if protected) and copy it fully and paste it to the new page.
original page, then copying the '''wiki-text'''. This can be done either by following the ''edit'' link or through ''view source'' if the page is protected. Then copy the whole page and paste it onto the new page.


==== Adding the [[Template:Translation|<nowiki>{{Translation}}</nowiki>]] template ====
==== Adding the [[Template:Translation|Translation template]] ====


<div style="font-size:80%; ">
<div style="font-size:80%; ">
Line 128: Line 172:
</div>
</div>
For a full explanation of the parameters, see the [[#Notes|Notes]] below, in short:
For a full explanation of the parameters, see the [[#Notes|Notes]] below, in short:
'''lang''' &mdash; is the [http://www.iana.org/assignments/language-subtag-registry IANA language code] (usually 2 letters, and no
'''lang''' &mdash; is the [http://www.iana.org/assignments/language-subtag-registry IANA language code] (usually 2 letters, without any further segmentation&mdash;ie: instead of ''<tt>lang-pt-BR</tt>'' (brazilian portuguese), just ''<tt>lang-pt</tt>'' (portuguese)&mdash;just to keep things simple and neutral.


==== Adding the [[Template:Ongoing Translation|<nowiki>{{Ongoing Translation}}</nowiki>]] template ====
==== Adding the [[Template:Ongoing Translation|Ongoing Translation template]] ====


<div style="font-size:80%; ">
<div style="font-size:80%; ">
Line 172: Line 216:
The main purpose of the [[Template:Ongoing Translation|<nowiki>{{Ongoing Translation}}</nowiki>]] template is to inform the readers that a particular page is still not finished, therefore they can expect the presence of untranslated text or that it hasn't been reviewed enough and thus may not be quite done yet. Parallel to that notice to the reader, it does a grouping of them in the [[:Category:Ongoing Translation|Ongoing Translation category]] thus allowing other translators to find them and collaborate, review, make comments, etc. on them.
The main purpose of the [[Template:Ongoing Translation|<nowiki>{{Ongoing Translation}}</nowiki>]] template is to inform the readers that a particular page is still not finished, therefore they can expect the presence of untranslated text or that it hasn't been reviewed enough and thus may not be quite done yet. Parallel to that notice to the reader, it does a grouping of them in the [[:Category:Ongoing Translation|Ongoing Translation category]] thus allowing other translators to find them and collaborate, review, make comments, etc. on them.


==== Preserving the anchors ====
==== Translating section headers ====


When translating section headers, the best practice is to preserve them as anchors. Then add the translated header under it.
Many times, when translating you may find links between pages (translated or not) that point to a particular section. When translating this, you may find yourself either ignoring if the target page was translated, under which name if it was so, and last but not least, what is the translated header. That is not to mention the fact that maybe the translated header may be corrected or otherwise changed in future editions.


For example if the section header is called "Some Section Header" and it is translated into German in the form of "Einige Paragraph Kopfzeile". Original text "Some Section Header" is preserved by wrapping it between curly braces like the following:
The solution is to avoid it altogether and let the original structure work for us (or almost).

<nowiki>{{anchor|Some Section Header}}</nowiki>

Then the translated text "Einige Paragraph Kopfzeile" is placed under it. Together it will look like the following when finished:

<nowiki> {{anchor|Some Section Header}} </nowiki><br>
<nowiki> == Einige Paragraph Kopfzeile == </nowiki><br>


<div style="font-size:80%; ">
<div style="font-size:80%; ">
Line 209: Line 260:
<nowiki>== Un titular ==</nowiki>
<nowiki>== Un titular ==</nowiki>
Algo de texto bla... <br>bla... <nowiki>[[</nowiki>#Another header'''|Otro titular'''<nowiki>]]</nowiki> <br>... blah
<nowiki>{{ Translated text |</nowiki>
Some text blah... <br>blah... <nowiki>[[#Another header]]</nowiki> <br>... blah
Some text blah... <br>blah... <nowiki>[[#Another header]]</nowiki> <br>... blah
&#124; display = [[#display|block]]<nowiki>}}</nowiki>
'''<nowiki>{{anchor|Another header}}</nowiki>'''
'''<nowiki>{{anchor|Another header}}</nowiki>'''
<nowiki>== Otro titular ==</nowiki>
Some other text blah... <br>blah... <nowiki>[[Another page]]</nowiki> <br>and <nowiki>[[Another page#section|section]]</nowiki> <br>... blah
|}
</div>

==== Translating links ====

When translating links, the original text is preserved by using what is called "piped links". By placing the symbol "|" between original text and the translated text, both become connected together through a pipe. For example if "some-link" is to be translated into German as "einige-link", it will end up looking like the following:

<nowiki>[[some-link|einige-link]]</nowiki>

As a result, following "einige-link" will connect to "some-link". The reader will only see the translated link "einige-link".

==== Linking to a page in particular language ====

When linking to a translated page in a particular language use the /lang-xx to point to that particular translation.

<nowiki>[[some-link/lang-de|einige-link]]</nowiki>

==== Translating texts ====
When translating text, it is useful to preserve original text by wrapping them inside [[Template:Translated_text|<nowiki>{{Translated text}}</nowiki>]] function. "display = ''value''" parameter
can be used to control whether the original text is visible to the
reader or not.

Original text invisible to reader (display = none).
<nowiki>
{{ Translated text |
original text
more original text
yet more original text
final original text
| display = none }}
</nowiki>


Original text visible to reader (display = block).
<nowiki>
{{ Translated text |
original text
more original text
yet more original text
final original text
| display = block }}
</nowiki>

Please see [[Template:Translated_text|here]] for more information.


<div style="font-size:80%; ">
{|

|- valign="top" style="background:lightgray; "
! <nowiki>[[Original page]]</nowiki> !! <nowiki>[[</nowiki>Original page/lang-[[#lang|xx]]<nowiki>]]</nowiki><span style="font-size:80%"><br>''(translated page name)''</span>

|- valign="top"
|
<nowiki>{{OLPC}}</nowiki>
<nowiki>{{Translations}}</nowiki>
<nowiki>== Some header ==</nowiki>
Some text blah... <br>blah... <nowiki>[[#Another header]]</nowiki> <br>... blah
<nowiki>== Another header ==</nowiki>
Some other text blah... <br>blah... <nowiki>[[Another page]]</nowiki> <br>and <nowiki>[[Another page#section|section]]</nowiki> <br>... blah
|
<nowiki>{{OLPC}}</nowiki>
<nowiki>{{</nowiki>Translation
&#124; lang = [[#lang|xx]]
&#124; source = [[#source|Original page]]
&#124; version = [[#version|yyyy]]<nowiki>}}</nowiki>
<nowiki>{{</nowiki>Ongoing Translation<nowiki>}}</nowiki>
<nowiki>{{anchor|Some header}}</nowiki>
<nowiki>== Un titular ==</nowiki>
Algo de texto bla... <br>bla... '''<nowiki>[[</nowiki>#Another header|Otro titular<nowiki>]]</nowiki>''' <br>... blah
'''<nowiki>{{ Translated text |</nowiki>'''
Some text blah... <br>blah... <nowiki>[[#Another header]]</nowiki> <br>... blah
'''&#124; display = [[#display|block]]<nowiki>}}</nowiki>'''
<nowiki>{{anchor|Another header}}</nowiki>
<nowiki>== Otro titular ==</nowiki>
<nowiki>== Otro titular ==</nowiki>
Algo más de texto bla... <br>bla... <nowiki>[[</nowiki>Another page'''/lang-[[#lang|xx]]|Otra página'''<nowiki>]]</nowiki> <br>y <nowiki>[[</nowiki>Another page'''/lang-[[#lang|xx]]#section|sección'''<nowiki>]]</nowiki> <br>... bla
Algo más de texto bla... <br>bla... <nowiki>[[</nowiki>Another page'''/lang-[[#lang|xx]]|Otra página'''<nowiki>]]</nowiki> <br>y <nowiki>[[</nowiki>Another page'''/lang-[[#lang|xx]]#section|sección'''<nowiki>]]</nowiki> <br>... bla
<nowiki>{{ Translated text |</nowiki>
'''<nowiki>{{ Translated text |</nowiki>'''
Some other text blah... <br>blah... <nowiki>[[Another page]]</nowiki> <br>and <nowiki>[[Another page#section|section]]</nowiki> <br>... blah
Some other text blah... <br>blah... <nowiki>[[Another page]]</nowiki> <br>and <nowiki>[[Another page#section|section]]</nowiki> <br>... blah
&#124; display = [[#display|block]]<nowiki>}}</nowiki>
'''&#124; display = [[#display|block]]<nowiki>}}</nowiki>'''
|}
|}
</div>
</div>


==== Handling translated links that point to a non-existent page ====
Note how the links don't really change except for the embedding of the <tt>/lang-[[#lang|xx]]</tt> part and the addition of the translated ''visual'' of the link (ie: <tt>|translated visual]]</tt>). The biggest advantage of this technique is that translating a reference is as easy as adding the target language in it and giving it a sensible name to display it.

At the beginning, any link you 'translate' will most likely point to a non-existing page; don't worry. There are two alternatives:
* let the wiki handle them through [[Special:Wantedpages]]
* make one last translating effort: dedicated redirects
The first alternative is the simplest but also the hardest on the reader (lands them on the 'create page option' which is hardly the best alternative). Another downside, is that it'll be hard to detect those 'wanted pages' for a specific language, as they will be in the same list as all other 'missing translated pages' in other languages ''plus'' all the ''naturally missing pages in the wiki'' (a long list due to historical reasons).

The second, recommended alternative, is to add the {{tl|subst:requesttranslation}} template to the target page. This self-substitutes with the replacement:


At the beginning, any link you 'translate' will actually point to a non-existing page, don't worry. Just follow the link and make it look like:
<div style="font-size:80%; ">
<div style="font-size:80%; ">
{|
{|


|- valign="top" style="background:lightgray; "
|- valign="top" style="background:lightgray; "
! <nowiki>[[</nowiki>Another page/lang-[[#lang|xx]]<nowiki>]]</nowiki>
! <nowiki>[[</nowiki>Another page/lang-[[#lang|xx]]<nowiki>|annuder paij]]</nowiki>


|- valign="top"
|- valign="top"
|
|
<nowiki>#REDIRECT [[Another page]]</nowiki>
<nowiki>#REDIRECT [[Another page]]</nowiki>
<nowiki>[[Category:Missing translation]]</nowiki>
<nowiki>[[</nowiki>Category:Translations wanted lang-[[#lang|xx]]<nowiki>]]</nowiki>
|- valign="top"
|
<nowiki>{{translation | lang = es | source = Another page | status = wanted }}</nowiki>
|}
</div>
Note: the last option is only available for those languages whose "inline translation instructions" are not red in [[Translating#multi-lingual_navigation_templates|this table]]. Use the links there to create instructions for your language, based on English or Spanish, in a template named "translation/no translation/lang-xx".

; WARNING : Make '''sure''' that the original page is '''not''' linking to a '''REDIRECT'''. If that is the case, you should change the target to the ''real page and create there the <tt>/lang-[[#lang|xx]]</tt> subpage''. For example, if the <tt><nowiki>[[Foo]]</nowiki></tt> actually is a redirect to <tt><nowiki>[[Bar]]</nowiki></tt>, then you should create the '''<tt><nowiki>[[</nowiki>Bar/lang-[[#lang|xx]]<nowiki>]]</nowiki></tt>''' instead of <tt><nowiki>[[</nowiki>Foo/lang-[[#lang|xx]]<nowiki>]]</nowiki></tt> and change the referencing link accordingly.

This will serve three purposes, first the page will at least take the reader to the right page (albeit not in the correct language). Secondly, the ''Category'' will allow a simple way to check 'what is missing'. Finally, and using the ''What links here'' from the '''toolbox''' you can find out how many references to the missing page exist, giving some sense of ''need'' for it and thus guiding the translating efforts.

'''Please do NOT add''' these ''fake translation redirects'' to the <tt>/translations</tt> page, as it doesn't make sense to advertise a translation that doesn't yet exist. Only when the REDIRECT is made into a real translation (ongoing or otherwise) add the link to the language navigation page.

== Full example of a wiki-page ==

=== Anatomy of a wiki-page ===

<div style="font-size:80%; ">
{|
|+ This 'sample' page includes all of the elements that require some level of consideration when translating

|- valign="top" style="background:lightgray; "
! <nowiki>[[Original page]]</nowiki> !! Notes on the structure

|- valign="top"
|
<nowiki>{{OLPC}}</nowiki>
'''<nowiki>== Some header ==</nowiki>'''
Some text blah... <br>blah... '''<nowiki>[[#Another header]]</nowiki>''' <br>... blah
<nowiki>== Another header ==</nowiki>
Some other text blah... <br>blah... '''<nowiki>[[Another page]]</nowiki>''' <br>and '''<nowiki>[[Another page#section|section]]</nowiki>''' <br>... blah
| <br>
; <tt><nowiki>== Some header ==</nowiki></tt> : section headers act as anchors, and their translation is sensitive as they ''anchor'' incomming links.
; <tt><nowiki>[[#Another header]]</nowiki></tt> : intra-page section linking may be simple to maintain as it's within the same page (you can search&replace local references) but will break external inbound links if changed.
; <tt><nowiki>[[Another page]]</nowiki></tt> : the most common problem with links to other pages is to know how the page title has been translated...
; <tt><nowiki>[[Another page#section|section]]</nowiki></tt> : links to specific sections in other pages pose the conflated problem of knowing ''both'' the target page name '''and''' the section name's translations.
|}
|}
</div>
</div>
This will serve three purposes, first the page will at least take the reader to the right page (albeit not in the correct language). Secondly, the ''Category'' will allow a simple way to check 'what is missing'. Finally, and using the ''What links here'' from the '''toolbox''' you can gauge how many references to the missing page exist, giving some sense of ''need'' for it and thus guiding the translating efforts.


== Full example finished ==
=== Full finished example ===
<div style="font-size:80%; ">
<div style="font-size:80%; ">
{|
{|
Line 339: Line 519:
; shortNativeName : should be in the native language; <tt>español</tt> instead of <tt>spanish</tt>.
; shortNativeName : should be in the native language; <tt>español</tt> instead of <tt>spanish</tt>.


=== [[Template:Translation|<nowiki>{{</nowiki>Translation<nowiki>}}</nowiki>]] template ===
=== [[Template:Translation|Translation template]] notes ===


For the full documentation, please see [[Template:Translation]].
For the full documentation, please see [[Template:Translation]].


{{anchor|lang}}
{{anchor|lang}}
; lang : This parameter identifies the target language of the translation. See [http://www.iana.org/assignments/language-subtag-registry IANA's lang codes].
; lang : This parameter identifies the target language of the translation. See [[ISO 639]] for a select list of codes being used in the wiki. (Another source is [http://www.iana.org/assignments/language-subtag-registry IANA's lang codes]).
: It serves several purposes, and is used in several contexts although it should be done in a homogeneous way.
: It serves several purposes, and is used in several contexts although it should be done in a homogeneous way.
: We are currently using ISO 639-1 codes (two-letter codes), although we should probably migrate to 639-3 (three letter codes).
: '''We are currently using [[ISO 639-1]] codes (two-letter codes)'''.


{{anchor|source}}
{{anchor|source}}
Line 352: Line 532:


{{anchor|version}}
{{anchor|version}}
<!--
; version : is a bit of a tricky until you understand it, but extremely helpful.
; version : is a bit of a tricky until you understand it, but extremely helpful.
: The number associated with the parameter comes from the '''original''' page, and has been made explicit in the blue language navigation bar at its right: <tt>'''[ID# ''yyyyy'']'''</tt>.
: The number associated with the parameter comes from the '''original''' page, and has been made explicit in the blue language navigation bar at its right: <tt>'''[ID# ''yyyyy'']'''</tt>.
Line 357: Line 538:
: So when you compare the differences between two pages, internally you are comparing two IDs between them.
: So when you compare the differences between two pages, internally you are comparing two IDs between them.
: For example [http://wiki.laptop.org/index.php?title=Template%3ATranslation&diff=35092&oldid=39128 this diff] is actually comparing two pages, NOT two versions of the same page&mdash;admitedly, they are very similar.
: For example [http://wiki.laptop.org/index.php?title=Template%3ATranslation&diff=35092&oldid=39128 this diff] is actually comparing two pages, NOT two versions of the same page&mdash;admitedly, they are very similar.
-->

; version : Each original page has a unique version number. These version numbers appear on the far right of the 'blue language navigation bar', and appear in the form: <nowiki>[</nowiki>ID# yyyyy<nowiki>]</nowiki>

: When a page edit is submitted, the version number for that particular page is incremented.

: A translated page on the other hand does not have a visible version number on its own. It must be manually assigned by the translator when an edit is submitted. The version number of a translated page is the same as the version number of the original page which it is based on.

: For example if the original page has a version number ID<nowiki>#</nowiki> 54321, and the translatation is based on this particular version, the translated page is given the version number ID<nowiki>#</nowiki> 54321.

: The version number for the translated page is entered at the top of the page as a parameter for the [[Template:Translation|<nowiki>{{</nowiki>Translation<nowiki>}}</nowiki>]] function.

: <nowiki>{{</nowiki> Translation
:: | lang = de
:: | source = Translating/HowTo
:: | '''version = 54321''' <nowiki>}}</nowiki>

: There is one use which results directly from the above manual assignment of a version number to the translated page. It allows the translator to easily lookup what new translations are needed by following the 'changes' link located to the far right of the 'blue language navigation bar'.

: Suppose translator 'A' is making a translation of page [[Bitfrost]] with version number ID# 65535 into español. As per this guide, translator 'A' assigns version number ID# 65535 to the Bitfrost/lang-es español translated page. Meanwhile editor 'B' arrives and edits the original [[Bitfrost]] page and its version number is incremented to ID# 6553'''6'''. Translator 'A' then can see what new translations are necessary by following the 'changes' link located on the blue nav bar. The 'changes' link compares the differences of two versions of the original page ID# 6553'''5''' and ID# 6553'''6'''. By observing the resulting output, translator 'A' could easily see what new text needs to be translated.


=== [[Template:Translated text|<nowiki>{{</nowiki>Translated text<nowiki>}}</nowiki>]] template ===
=== [[Template:Translated text|Translated text]] template notes ===


{{anchor|display}}
{{anchor|display}}

Latest revision as of 06:03, 20 August 2008

  english | español | 日本語 | 中文 | català | Indonesia HowTo [ID# 153554]  +/-  
Sugar framework
Python framework
Localizing an XO
Keyboards
Changing language
Translators
Getting started
Website translation
modify 

Taking part in translation projects can be fun and rewarding. However the volatile nature of wiki can make things difficult for the translator. These complications can be overcome by following a few simple rules and using standardised work practices. It is hoped that this will allow anybody to collaborate in the translating effort and at the same time have fun in the process.

The translate templates now attempt to give help text to guide you through the process. This help-text is the best guide for translating. Try starting out by putting the {{translations}} template on your home page and recursively following the instructions, saving the relevant page, and reading the new instructions. The material below is preserved in case the brief help texts leave you confused, yet in some cases it is out-of-date.

Step-by-step summary

From the point-of-view of the wiki, there are basically three tasks to hook up a translated page:

  1. [[Setting up the source page: ensure it has a {{Translations}} template|modify the source page]] — if it has never been translated;
  2. adding a reference — point/link to the translation in a standard way; and
  3. conditioning the translated page — adding some helper structure.

Most of the time, translators will only deal with the last two steps (setting up and linking the translation).

You can see an overview of the relevant structure of a page, and a full finished example towards the end of this page.

Setting up the source page: ensure it has a {{Translations}} template

We'll assume that you want to translate a page that is monitored by the OLPC team; meaning that it will have a reference to the {{OLPC}} template—that groups pages in the Category:Pages monitored by OLPC—and they frequently are the entry points or that contain information that may be more obviously helpful for the local communities.

If the page to translate already has a language bar, you can skip down to #Modifying the language bar.

[[Original page]] (translated page does not exist—yet)
{{OLPC}}

== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah

Adding the language bar

Although it is rare, it may be necessary to translate a page that nobody else has translated yet. In that case, a translations navigation bar must be added in the original page.

[[Original page]] (translated page does not exist—yet)
{{OLPC}}
{{Translations}}

== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah

Setting up the /translations

You should follow the [[Original page/translations]] link in order to edit the page that groups the translations of a particular page, and should look something like this:

To edit the page that groups the translations of a particular page, follow the [[Original page/translations]] link. It should look something like the following:

[[Original page/translations]]
{{translationlist | xx | origlang=en}}

The resulting page will have a red colored link, denoting a missing/broken link to your future translation. Don't worry, you'll fix that in the next step.

Changing the page title

The Translationlist template uses the form "The OLPC Wiki/lang-es" for translated pages. If you want to change it later so that the page title is in the target language (e.g. "El Wiki de la OLPC"), use the "move" function of the wiki; this automatically creates a redirect link so that the interlanguage links still work.

The Translationlist template is actually broken, and doesn't work correctly with non-standard page names (ie. other than Original Page/lang-xx), even after following the above instructions to "move" the page. For now, you can revert to not using a template. In this case, the Topic/translations file will look like:

[[Original page/translations]]
[[Original page|english]] | [[Original page/lang-xx|shortNativeName]]

As a matter of fact, there are many pages that do not follow this structure, but most of them are left over from when there wasn't a clear structure and way for adding translations. As mentioned in the translating pages, there are advantages to sticking with the /lang-xx structure.

Modifying the language bar

Below is an example of a typical language bar. The page that may need translation would have a link shown as +/- to the far right of the bar. (Not shown on this example.) This is a link to the editing page for the language bar. To create a link, for example when adding a new language on the language bar, follow this +/- link to go to the editing page. Then add the appropriate code for the new language.

When inserting the link to your page, please keep things in alphabetical order denoted by the /lang-xx sequence (if you're adding say /lang-de it should go before the link to 'english'). Also, note the spaces around the '|' that separate each language. See above on /translations for more info.

Setting up the translated page

Although the translator is given as much freedom to edit and to translate as possible when translating the wiki, there is one rule that must be adhered to at all times. The translated page must be declared as a {{Translation}}. (Please note the use of "singular". Plural is for the original page and it will have many translations.)

There are couple of other bits of advice that may improve the quality of the translation process. First, please keep navigation and linking within the translated pages simple and easy to follow. Secondly, preserving the original text in the translation may simplify peer review and help with maintenance.

The quickest way to set up a page is by going back to the original page, then copying the wiki-text. This can be done either by following the edit link or through view source if the page is protected. Then copy the whole page and paste it onto the new page.

Adding the Translation template

[[Original page]] [[Original page/lang-xx]]
(translated page name)
{{OLPC}}
{{Translations}}


== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah
{{OLPC}}
{{Translation
 | lang = xx
 | source = Original page
 | version = yyyy}}

== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah

For a full explanation of the parameters, see the Notes below, in short: lang — is the IANA language code (usually 2 letters, without any further segmentation—ie: instead of lang-pt-BR (brazilian portuguese), just lang-pt (portuguese)—just to keep things simple and neutral.

Adding the Ongoing Translation template

[[Original page]] [[Original page/lang-xx]]
(translated page name)
{{OLPC}}
{{Translations}}


== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah
{{OLPC}}
{{Translation
 | lang = xx
 | source = Original page
 | version = yyyy}}
{{Ongoing Translation}}

== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah

The main purpose of the {{Ongoing Translation}} template is to inform the readers that a particular page is still not finished, therefore they can expect the presence of untranslated text or that it hasn't been reviewed enough and thus may not be quite done yet. Parallel to that notice to the reader, it does a grouping of them in the Ongoing Translation category thus allowing other translators to find them and collaborate, review, make comments, etc. on them.

Translating section headers

When translating section headers, the best practice is to preserve them as anchors. Then add the translated header under it.

For example if the section header is called "Some Section Header" and it is translated into German in the form of "Einige Paragraph Kopfzeile". Original text "Some Section Header" is preserved by wrapping it between curly braces like the following:

   {{anchor|Some Section Header}}

Then the translated text "Einige Paragraph Kopfzeile" is placed under it. Together it will look like the following when finished:

    {{anchor|Some Section Header}} 
== Einige Paragraph Kopfzeile ==
[[Original page]] [[Original page/lang-xx]]
(translated page name)
{{OLPC}}
{{Translations}}


== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah
{{OLPC}}
{{Translation
 | lang = xx
 | source = Original page
 | version = yyyy}}
{{Ongoing Translation}}

{{anchor|Some header}}
== Un titular ==

Some text blah... 
blah... [[#Another header]]
... blah {{anchor|Another header}} == Otro titular == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah

Translating links

When translating links, the original text is preserved by using what is called "piped links". By placing the symbol "|" between original text and the translated text, both become connected together through a pipe. For example if "some-link" is to be translated into German as "einige-link", it will end up looking like the following:

   [[some-link|einige-link]]

As a result, following "einige-link" will connect to "some-link". The reader will only see the translated link "einige-link".

Linking to a page in particular language

When linking to a translated page in a particular language use the /lang-xx to point to that particular translation.

   [[some-link/lang-de|einige-link]]

Translating texts

When translating text, it is useful to preserve original text by wrapping them inside {{Translated text}} function. "display = value" parameter can be used to control whether the original text is visible to the reader or not.

Original text invisible to reader (display = none).

   
    {{ Translated text |   
           original text
           more original text
           yet more original text
           final original text
       | display = none }}
    


Original text visible to reader (display = block).

   
    {{ Translated text |
           original text
           more original text
           yet more original text
           final original text     
       | display = block }}
    

Please see here for more information.


[[Original page]] [[Original page/lang-xx]]
(translated page name)
{{OLPC}}
{{Translations}}


== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah
{{OLPC}}
{{Translation
 | lang = xx
 | source = Original page
 | version = yyyy}}
{{Ongoing Translation}}

{{anchor|Some header}}
== Un titular ==

Algo de texto bla... 
bla... [[#Another header|Otro titular]]
... blah {{ Translated text | Some text blah...
blah... [[#Another header]]
... blah | display = block}} {{anchor|Another header}} == Otro titular == Algo más de texto bla...
bla... [[Another page/lang-xx|Otra página]]
y [[Another page/lang-xx#section|sección]]
... bla {{ Translated text | Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah | display = block}}

Handling translated links that point to a non-existent page

At the beginning, any link you 'translate' will most likely point to a non-existing page; don't worry. There are two alternatives:

  • let the wiki handle them through Special:Wantedpages
  • make one last translating effort: dedicated redirects

The first alternative is the simplest but also the hardest on the reader (lands them on the 'create page option' which is hardly the best alternative). Another downside, is that it'll be hard to detect those 'wanted pages' for a specific language, as they will be in the same list as all other 'missing translated pages' in other languages plus all the naturally missing pages in the wiki (a long list due to historical reasons).

The second, recommended alternative, is to add the {{subst:requesttranslation}} template to the target page. This self-substitutes with the replacement:

[[Another page/lang-xx|annuder paij]]
#REDIRECT [[Another page]]
[[Category:Translations wanted lang-xx]]
{{translation | lang = es | source = Another page | status = wanted }}

Note: the last option is only available for those languages whose "inline translation instructions" are not red in this table. Use the links there to create instructions for your language, based on English or Spanish, in a template named "translation/no translation/lang-xx".

WARNING
Make sure that the original page is not linking to a REDIRECT. If that is the case, you should change the target to the real page and create there the /lang-xx subpage. For example, if the [[Foo]] actually is a redirect to [[Bar]], then you should create the [[Bar/lang-xx]] instead of [[Foo/lang-xx]] and change the referencing link accordingly.

This will serve three purposes, first the page will at least take the reader to the right page (albeit not in the correct language). Secondly, the Category will allow a simple way to check 'what is missing'. Finally, and using the What links here from the toolbox you can find out how many references to the missing page exist, giving some sense of need for it and thus guiding the translating efforts.

Please do NOT add these fake translation redirects to the /translations page, as it doesn't make sense to advertise a translation that doesn't yet exist. Only when the REDIRECT is made into a real translation (ongoing or otherwise) add the link to the language navigation page.

Full example of a wiki-page

Anatomy of a wiki-page

This 'sample' page includes all of the elements that require some level of consideration when translating
[[Original page]] Notes on the structure
{{OLPC}}

== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah

== Some header ==
section headers act as anchors, and their translation is sensitive as they anchor incomming links.
[[#Another header]]
intra-page section linking may be simple to maintain as it's within the same page (you can search&replace local references) but will break external inbound links if changed.
[[Another page]]
the most common problem with links to other pages is to know how the page title has been translated...
[[Another page#section|section]]
links to specific sections in other pages pose the conflated problem of knowing both the target page name and the section name's translations.

Full finished example

[[Original page]] [[Original page/lang-xx]]
(translated page name)
Translated text deleted...
(not really recommended)
{{OLPC}}
{{Translations}}


== Some header ==

Some text blah... 
blah... [[#Another header]]
... blah == Another header == Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah
{{OLPC}}
{{Translation
 | lang = xx
 | source = Original page
 | version = yyyy}}
{{Ongoing Translation}}

{{anchor|Some header}}
== Un titular ==

Algo de texto bla... 
bla... [[#Another header|Otro titular]]
... blah {{ Translated text | Some text blah...
blah... [[#Another header]]
... blah | display = block}} {{anchor|Another header}} == Otro titular == Algo más de texto bla...
bla... [[Another page/lang-xx|Otra página]]
y [[Another page/lang-xx#section|sección]]
... bla {{ Translated text | Some other text blah...
blah... [[Another page]]
and [[Another page#section|section]]
... blah | display = block}}
{{OLPC}}
{{Translation
 | lang = xx
 | source = Original page
 | version = yyyy}}

{{anchor|Some header}}
== Un titular ==

Algo de texto bla... 
bla... [[#Another header|Otro titular]]
... blah {{anchor|Another header}} == Otro titular == Algo más de texto bla...
bla... [[Another page/lang-xx|Otra página]]
y [[Another page/lang-xx#section|sección]]
... bla

Supporting pages:

[[Original page/translations]]
[[Original page|english]] | [[Original page/lang-xx|shortNativeName]]
[[Another page/lang-xx]] [[Another page]]
#REDIRECT [[Another page]]
[[Category:Missing translation]]
some untranslated page...
maybe the content is mutating rapidly,
or is peripheric to the main corpus, etc.

Notes

shortNativeName
should be in the native language; español instead of spanish.

Translation template notes

For the full documentation, please see Template:Translation.

lang
This parameter identifies the target language of the translation. See ISO 639 for a select list of codes being used in the wiki. (Another source is IANA's lang codes).
It serves several purposes, and is used in several contexts although it should be done in a homogeneous way.
We are currently using ISO 639-1 codes (two-letter codes).

source
is the name of the page (not the link—in other words, without the enclosing square brackets).

version
Each original page has a unique version number. These version numbers appear on the far right of the 'blue language navigation bar', and appear in the form: [ID# yyyyy]
When a page edit is submitted, the version number for that particular page is incremented.
A translated page on the other hand does not have a visible version number on its own. It must be manually assigned by the translator when an edit is submitted. The version number of a translated page is the same as the version number of the original page which it is based on.
For example if the original page has a version number ID# 54321, and the translatation is based on this particular version, the translated page is given the version number ID# 54321.
The version number for the translated page is entered at the top of the page as a parameter for the {{Translation}} function.
{{ Translation
| lang = de
| source = Translating/HowTo
| version = 54321 }}
There is one use which results directly from the above manual assignment of a version number to the translated page. It allows the translator to easily lookup what new translations are needed by following the 'changes' link located to the far right of the 'blue language navigation bar'.
Suppose translator 'A' is making a translation of page Bitfrost with version number ID# 65535 into español. As per this guide, translator 'A' assigns version number ID# 65535 to the Bitfrost/lang-es español translated page. Meanwhile editor 'B' arrives and edits the original Bitfrost page and its version number is incremented to ID# 65536. Translator 'A' then can see what new translations are necessary by following the 'changes' link located on the blue nav bar. The 'changes' link compares the differences of two versions of the original page ID# 65535 and ID# 65536. By observing the resulting output, translator 'A' could easily see what new text needs to be translated.

Translated text template notes

display
is used to show or hide the enclosed translated text.
While doing the translation, it comes in handy for comparing the original with the translation. When finished, you can replace the block with none and the source text is not displayed. Although it adds quite a bit of text and 'noise' to the source of the translated page, it comes in handy when trying to update or synchronize it with any changes in the original page—after all, this IS a wiki and pages are supposed to mutate!