Difference between revisions of "Translation"

From MythTV Official Wiki
Jump to: navigation, search
(closed tickets should not be reopened)
(shorthand strings...)
Line 192: Line 192:
 
You must put the translation on the line after the source string (the string enclosed in double quotes (""), indented with spaces or tabs.  If your translation spans multiple lines, just make sure that you indent with the same characters as the first line.  If you need an example please look at English.lang for examples.
 
You must put the translation on the line after the source string (the string enclosed in double quotes (""), indented with spaces or tabs.  If your translation spans multiple lines, just make sure that you indent with the same characters as the first line.  If you need an example please look at English.lang for examples.
  
Some of the translation strings are shorthand, and are even "translated" in English.lang into more verbose sentences (e.g. info:jumppoints).
+
Some of the translation strings are shorthand, and are even "translated" in English.lang into more verbose sentences (e.g. info:jumppoints). For these you must check what the "translation" in English.lang is and translation that instead of trying to translate the label name.
  
 
Please note that if you leave some strings untranslated they will merely display the source (English) string.
 
Please note that if you leave some strings untranslated they will merely display the source (English) string.

Revision as of 11:58, 29 September 2010

Translation maintainers/contributors

Some languages are unofficially maintained by teams or individuals, who are interested in keeping their language of choice up to date. While you are completely free to upload patches directly to MythTV without consulting the maintainer(s), you are encouraged to contact the maintainer(s) first, to join efforts on the translation as well as avoiding conflicting translation patches :)


If you feel like you're already maintaining a language or if you want to maintain a language, please add your contact information in the table below. If you want to help out maintaining a language, but don't want to do it alone, also feel free to leave your contact information in the table below, so other people would be able to contact you to create a team.


Current maintainers:

Language Contact person(s) and/or website Team/individual could use some help? Current status
Bulgarian (bg) <Please fill in> <Please fill in> Trunk status
Catalan (ca) None Inactive, maintainers/contributors needed Trunk status
Czech (cs) Website
Petr Srsen: "srsen75 TA seznam 0 cz"
Zdeněk Toman: "zdenyx TA gmail 0 com"
<Please fill in> Trunk status
Danish (da) Website
Kenni Lund: "kenni TA mythtv 0 dk"
Nikolaj Koch: "koch TA mythtv 0 dk"
We're fine, but feedback is always highly appreciated. Trunk status
Dutch (nl) Website
Jos Hoekstra: joshoekstra TA gmx 0 net
Any help or coordinated effort is most welcome. Trunk status
English (en_gb) Nick Morrott: "knowledgejunkie TA gmail 0 com"
Stuart Morgan: "stuart@tase.co.uk"
British English != American English Trunk status
English (en_us) Nicolas Riendeau: "knight TA teksavvy 0 com"
Brian Engstrom "engstrom 0 brian TA gmail 0 com."
Please let us know if you find any problem Trunk status
Estonian (et) Marko Punnar: <mythtv [@] aretaja [dot] org> Help is always welcome. Trunk status
Finnish (fi) Ilkka Tengvall: "ikke TA iki 0 fi" If you want to help with the Finnish translation, please contact me. It's easier to get it done when you're not alone :) Trunk status
French (fr) Website
Nicolas Riendeau: "knight TA teksavvy 0 com"
Gilles: "choteau.gilles TA orange 0 fr"
Please let us know if you find any problem Trunk status
German (de) Florian Bittner <mythtv o_O daschatten o_O de> Stefan Frank used to do it, but he doesn't have time anymore. Maintainers/contributors needed Trunk status
Greek (el) Yianni Vidalis: "yiannividalis TA hotmail 0 com" <Please fill in> Trunk status
Hebrew (he) Ido Roseman: "ido [_] roseman [at} yahoo [dot] com" <Please fill in> Trunk status
Hungarian (hu) Bánó Gábor: "banogabor TA prognosys 0 homeip 0 net" <Please fill in> Trunk status
Icelandic (is) None Inactive, maintainers/contributors needed Trunk status
Italian (it) <Please fill in> <Please fill in> Trunk status
Japanese (ja) None Inactive, maintainers/contributors needed Trunk status
Norwegian Bokmål (nb) Rune Evjen: "rune.evjen TA gmail 0 com" Any help or coordinated effort is most welcome. Trunk status
Polish (pl) <Please fill in> <Please fill in> Trunk status
Portuguese (pt) jpmoitinho (using google's mail service...) Help is always welcome. Trunk status
Portuguese, Brazilian (pt_br) Klaubert Herr: klaubert [_at_ ] gmail [d0t ] com <Please fill in> Trunk status
Romanian (ro) Marian Boricean: marian [@] dantux [d0t] com Help is always welcome. Trunk status
Russian (ru) Website
Alex Vasilyev: "sandybigboy[at]gmail.com"
Alexander Khvostuyk: "axboct[at]gmail.com"
Comments and suggestions, as well as assistance is welcomed. Trunk status
Slovene (sl) None Inactive, maintainers/contributors needed Trunk status
Spanish (es) David Lara: "dvlara TA gmail 0 com" Any help or coordinated effort is most welcome. Trunk status
Swedish (sv) Jonatan: "mythtv TA comhem 0 se"
Roger Mårtensson: "roger.martensson TA gmail 0 com"
<Please fill in> Trunk status
Turkish (tr) None Inactive, maintainers/contributors needed Trunk status



Translate MythTV

Throughout this page, German (de) translation files will be used as examples.

Checkout the latest SVN version

Checkout the latest SVN version by running:

svn co http://svn.mythtv.org/svn/trunk

Update translation files

To translate the core part of MythTV, go to the mythtv/i18n directory. To translate the plugins, go to one of the mythplugins/{plugin-name}/i18n directories. Note that all of the remaining steps on this page, will use the mythtv/i18n directory to illustrate, how to translate the core part of MythTV. Similar steps should be performed on each of the plugin directories, in order to translate the plugins.

Now, to update the translation files with the latest strings, run the following command:

lupdate -locations absolute translate.pro

This will ensure that all translatable strings in the source code are included in the .ts file, which we will work on later.

As a side note, lupdate also takes an argument called -no-obsolete, which removes all obsolete strings. This might be tempting to do, but ONLY do it when you're COMPLETELY done with the translation (as in 100%). Let's say that a bunch of source strings are fixed in the MythTV source code; Spelling errors, punctuation, whitespace cleanup, etc. Overall the string is the same, only a character or two have been changed. This change will cause the old previously translated string to become obsolete, and the modified string to become a new string. If you still have the obsolete strings, Qt linguist will suggest the old string when you're translating the new string, allowing you to just press Crtl+[1-5] to fill in the old translation. If you've deleted obsolete strings, you'll have to translate the whole sentence once again. Lots of time can typically be saved by keeping obsolete strings until you're done with all translations.

What to do if the translation file does not already exist

If the translation file for the language you want to translate to does not already exist you must add it to the relevant translate.pro and i18n.pro files before issuing the lupdate command listed above. If there is still space at the end of a line please add it there otherwise please copy one of the previous lines (as long as it is not the first), remove the existing entries and add your new entry. Please note that in the translate.pro file you must add the .ts file name while in the i18n.pro file you must add the .qm file name. If you need help please ask for help on the translators mailing list.

Do the translation

Translate .ts file, e.g. mythfrontend_de.ts (for German)

You can use any editor for this, but it is most convenient to use the tool Qt Linguist included in Qt (on Debian, this is found in the qt4-dev-tools package). Using Qt Linguist has the advantage of making finding what's left to translate, changing translation status, making translation comments and a whole lot more a lot easier than using a text or XML editor.

If that's more convenient to you it is possible to use the Windows version of Qt Linguist to edit the translation files without problems (the proper line termination character will be kept).

linguist mythfrontend_de.ts

Compile and test translation

Compile .ts files into .qm files by running:

lrelease -removeidentical translate.pro

The generated .qm file of your language can now be copied into a MythTV installation for testing:

cp mythfrontend_de.qm /usr/share/mythtv/i18n/

(destination path depends on your MythTV installation)

After restarting the frontend, you can test your translations. If all is OK you can proceed.

Create patch

If creating new files, then you first need to add them to the local SVN repository:

cd ../..
svn add mythtv/i18n/mythfrontend_de.ts

You can now create a patch for your translation:

svn diff mythtv/i18n/mythfrontend_de.ts > german_mythtv_translation.diff

If you translate several files (eg. MythTV and some plugins), please merge all of the translations into one patch, instead of creating several patches.

To do this, just put all files on the same line when creating the patch, for example:

cd ../..
svn diff mythtv/i18n/mythfrontend_de.ts mythplugins/*/i18n/*_de.ts > german_translation.diff

Please note that you must not submit the .qm files. These will be generated, as necessary, by the MythTV development team.

Submit the patch

Submit the diff to trac, via the URL http://svn.mythtv.org/trac/newticket and use the following options (if they have not been set by clicking on the link) when submitting:

-
Summary: [PATCH i18n] $LANGUAGE translation
Type: patch
Version: Trunk Head
Component: Translations
-
Leave the rest of the fields (milestone, priority, severity) untouched as the default values are fine.
The milestone should only be set by a MythTV developer and also remember to replace $LANGUAGE with your language :)

If you added new translation files which did not exist previously please indicate it in the ticket otherwise it might end up not being committed if the committer doesn't notice this.

Once the ticket is closed please don't reopen it to submit further translations, open a new ticket instead.

Translate MythWeb

Translation is MythWeb is done differently from MythFrontend or the rest of the plugins.

Create or Update translation files

To translate MythWeb, go to of the mythplugins/mythweb/modules/_shared/lang/ directory.

If the translation does not already exist there are two ways you can create it.

Let's say we want to create a new language called Abcd.

Copy an existing translation

You can just copy any existing file (probably English.lang since it will have the least amount of information to delete) and fill it in with the appropriate translations.

cp English.lang Abcd.lang

Create a new file using build_translations.pl

touch Abcd.lang
./build_translations.pl

This will create a translation file with all the necessary source strings.

To create the category file (".cat") it is suggested you copy English.cat like so

cp English.cat Abcd.cat

Update the translation file

To update the translation file with the latest strings, run the following command:

./build_translations.pl

Do the translation

Translate .lang file, e.g. Abcd.lang

You can use any text editor for this.

You must put the translation on the line after the source string (the string enclosed in double quotes (""), indented with spaces or tabs. If your translation spans multiple lines, just make sure that you indent with the same characters as the first line. If you need an example please look at English.lang for examples.

Some of the translation strings are shorthand, and are even "translated" in English.lang into more verbose sentences (e.g. info:jumppoints). For these you must check what the "translation" in English.lang is and translation that instead of trying to translate the label name.

Please note that if you leave some strings untranslated they will merely display the source (English) string.

Variables in strings

Some translation strings will contain variables like $1, $2, etc. In the code, certain values will be substituted in for those variables. The variables allow translators to rearrange sentences as they see fit, without having to worry about grammatical differences between languages. Thus, you might see a string like 'You have $1 recordings' translated as 'You have 5 recordings'. Strings with multiple variables can have them rearranged if they would make better sense for your language if they were in a different order.

Translate categories

The .cat file you created earlier contains all the categories MythWeb understand and patterns to recognize them.

The category name enclosed in double quotes ("") must not be modified as MythWeb uses it internally.

The first line after the category name is the name of that category in your language.

The next line after that is the pattern the category name stored in the database must match in order to be considered of that category. These are regular expression and most of them should be relatively easy to understand but if you need any help you can seek help on the translator's mailing list.

Add and test translation

Don't forget to add your language to the $Languages array in mythplugins/mythweb/classes/Translate.php. That way, it will attempt to auto-detect the browser's preferred language, and show up in the mythweb settings language choice menu.

If you need any help to do this please let us know by posting on the translator's mailing list.

Create patch

If creating new files, then you first need to add them to the local SVN repository:

svn add mythplugins/mythweb/modules/_shared/lang/Abcd.lang

You can now create a patch for your translation:

svn diff mythplugins/mythweb/modules/_shared/lang/Abcd.lang > Abcd_mythweb_translation.diff

Please note that you can also combine this with the rest of the translation files by simply adding the name of the file, with its path, to the list of the files which should be included in the patch.

Submit the patch

The procedure for submitting the patch is the same as described earlier. Please note that you can (and preferably should) submit it in the same ticket as the rest of the translation files.

As mentioned earlier if you added a new translation file which did not exist previously please indicate it in the ticket otherwise it might end up not being committed if the committer doesn't notice this.

Checking translation progress

Please use the MythTV Translation Status page to check on the progress of translations. The status pages are regularly updated against trunk and give details of the translation status of MythFrontend and all plugins for all currently supported languages.

Please note that this doesn't provide any statistics on your MythWeb translation.

Translators mailing list

The official MythTV translators mailing list can be found at Translators Mailing List

Locale Configurations

Locale Configurations are a new feature in MythTV 0.24. Translators may be interested in contributing to them although they are not directly tied to translations in any way.