Translation possible/Learn more
From WikiMANNia Commons
How to translate an SVG file
Template:See This page explains how to translate inside labels or captions in an SVG file. You are probably here because someone tagged an image with Template:Tlx. Please note that this template and its related pages is a one-man idea. If you have questions or comments about it, please use the template discussion page.
Using numbers instead of labels
On images with few labels, an alternative is to have only one file with numeric labels in it and a table below, with different translations, and there is thus a single image can be used for all languages. Image:Robal.png is a good example.
For instance, Image:ISS configuration sep-2006 en.svg has English labels, and a version with numeric labels Image:ISS configuration sep-2006 numbers.svg was created by replacing the labels in the English version. But it's still not fully internationalized, because title and date are still written in the image in English.
What is SVG?
SVG is an image file format that consists of plain XML text. Therefore the text labels stored in it can be easily translated. For more information about SVG or XML, please use the links. There are Wikipedia articles in many languages.
How do I edit SVGs?
There are different ways to translate text in SVG:
- Use a graphics editor such as Inkscape. For compatibility, save the file as "Plain SVG", not "Inkscape SVG", as the latter format may introduce errors, even though it complies with the SVG specification.
- Edit the SVG file as a text file.
For editing image in any offline editor, first download the file you want to edit, open the file in the editor, translate the labels, and then save it. When finished, upload the file to Commons under a new name.
Note that instead of using a graphics editor, you can use any text editor capable of using UTF-8. Find text to translate by searching for
<text> tags. In some cases this might be a path for more advanced users as text coordinates adjustments might be needed and some more advanced "garbage" might decrease readability of the SVG.
How to place new language version in Commons
When creating SVG files for multiple language versions, it would be good, by Commons:File naming, to save them with language-specific name. To avoid a naming conflict with other languages, you can put the language suffix (such as -en for English) just before .svg file extension. For example, Keep your environment clean-en.svg is the English version of "Keep your environment clean.svg".
For linking different versions of file one to another, use "other versions" templates like all in Category:Other versions templates. Copy one of them and use in your image.
It would look like this:
This SVG file contains embedded text that can be translated into your language, using an SVG supportive editor (like XML or text). For more information see: About translating SVG files.
Also the template Template:T will be useful to display link to original version of your localized image.
Multiple translations within one SVG file
You can place multiple translations into one SVG file using the SVG
When you have a
<switch> element, its children (sub-elements) represent possible choices. The children of the
switch should have a
systemLanguage attribute that specifies the language. SVG sequentially looks at each child; if there is a
systemLanguage attribute and it does not match, SVG moves on to the next child. If the
systemLanguage attribute matches or is not present, then SVG renders that child and does not look further. Omitting the
systemLanguage attribute from the last child will implement a default rendering.
<syntaxhighlight lang="xml" translate="no"> <switch transform="translate(100,200)">
<text systemLanguage="en">Population pyramid of Russia (2010)</text> <text systemLanguage="de">Alterspyramide von Russland (2010)</text> <text systemLanguage="ru">Половозрастная диаграмма России (2010)</text> <text>Population pyramid of Russia (2010)</text>
Even if the default rendering is English, it is good practice to place an explicit
systemLanguage="en" with the same text. The language matching rules can give unexpected behavior when the file is opened in a browser configured for multiple languages. If the languages do not follow the same sequence in each
switch, then a browser may display a mix of languages. In addition, the language matching rules will change in SVG 2.0.
You can also have a
systemLanguage attribute on an element that is not a child of a
switch element. In this case the element will only be rendered if the language matches. Otherwise the element in question will not be displayed.
Currently, only a few graphical SVG editors support language switches in SVG, so you will probably have to edit the SVG file with a text editor. Loading an SVG file with
switch translations into a graphical editor and then saving it may remove all the translations.
The different text translations will have different lengths, so the text anchor point should be chosen carefully. The
text-anchor attribute can be set to "start" (left justified in most languages), "middle" (centered), or "end" (right justified). The
text elements default to
y="0", so the
switch element can set the text anchor point with
When rendering a multi-lingual SVG image on a MediaWiki page, the language to use can be specified using syntax like
The attribute "lang" is optional; if it is missing, MediaWiki will render the SVG in the language "en".
Note: If a file has an English text and a default text specified, the default display on the file page is not the default text but the English text!
- German tutorial
- The 'switch' element
- The 'systemLanguage' attribute
- Example files using
- SVG Processing: Efficient Language Translation by Bryan Schnabel, 2009 (Multiple file (XLIFF) rather than switch element approach.)
Support this template
You don't have to translate this part; it should be enough if this information is here in English. Users who do not yet have a version in their language will find it here, I guess.
You can support this template by translating this help page into your language and saving it as a sub-page. The template consists of three parts. For example, for the German template they are:
- The template localization page Template:Translate/de
- The help page linked from the localized template Commons:Translation possible/Mehr erfahren
- The language links list templates Template:Translate/lang and Template:Commons:Translation possible/lang for both of them
The template page should contain the template itself and the quick info text translated from the English template.
The help page (this page) in your language should be saved under the subject that you would use in your language, like "Learn more" (which I selected for English).
The language link template is the same for every version of this template. It contains all the links to existing language versions. Please add your language there and there, if you have created a new translation.
Thank you for your support!