Getting involved with calibre

The secret of calibre's success is its vibrant user community. Users have contributed code and become developers, translations to make calibre available in different languages, graphics to improve its look and feel and of course thousands of bug reports to help make it the robust piece of software it is today. An incomplete list of contributors to calibre is available here.

Joining the calibre community

To talk with fellow calibre users and keep abreast of the latest developments in calibre-world, you can use several tools"

Becoming a calibre developer

Get the source:

git clone git://

Or if you dont want to wait for the full version history to download, you can get only the source code:

curl -L | tar xvJ

Instructions for getting calibre to run using your source checkout, as well as some info about how the calibre code is organized is in the User Manual.

If you come up with a cool idea and a patch for implementing it, let us know about it and more than likely it will be in the next weekly calibre release. A great place to ask for tips on calibre hacking is the calibre Development forum where lots of calibre developers hang out.

Creating a calibre plugin

calibre has a comprehensive plugin interface, that allows the creation of plugins that can do just about anything. For many examples, see the calibre Plugins forum. A tutorial on getting started with plugin development, is available.

Contributing translations to calibre

calibre has support for translating its user interface. You can see the list of languages for which translations exist here. If the translations for your language are incomplete/missing, you can contribute the translations using a simple web-based interface. To do so first create an account in Transifex, then click on your language in this page. Click on the "Join Team" button. Once you have been approved, simply click on the language and use the "Translate Now" button to contribute your translations.

Alternatively you can download the PO file to do your translations offline by using the "Download for translation" link instead of the Translate Now button. You can edit the PO file using your favorite translation software and when you are done, upload the file by clicking the "Upload file" link (which is just below the Download for translation link).

Translations FAQ

  • What to do with the & symbols?
    The & symbols denote a keyboard shortcut. So for example the string "&Title" means that the corresponding GUI element can be accessed with the keyboard shortcut "Alt+t" (this only works on windows/linux). So in your translation leave the & symbol before the same letter if possible, or some other suitable letter.
  • What to do with the "%A_Word" characters?
    The % character and a word to the right of it (no space between the percentage sign and the word), denotes a word that will be replaced by the code. So when encountering this symbol and a word right next to it (example: %default), don't change it. Keep it as is in the translated sentence. Similarly for sequences like %s or %d, leave them as is. Finally, sequences like %(some_word)s should also be left unchanged.
  • What do do with date strings like dd MMM yyy?
    These must be left untranslated.
  • What to do with the special markup when translating the User Manual?
    The User Manual is written in ReSTructured Text. You will see many constructs like :guilabel:`Some text`. Here the :guilabel:`` part is markup, like HTML tags. You should only translate the text within the backticks. Particular care must be taken with links, which are of the form :ref:`some text`. Here nothing must be translated. The links can also have explicit link text, which should be translated, like this: :ref:`Explicit link text <link-location>`. Here only the "Explicit link text" should be translated.
  • How do I test my translations?
    First you need to download a .po file for your language from here. You can test your .po file by running calibre from the command line from the directory in which the .po file resides. This is only tested in Linux. On windows also it should work. On OSX, since you can't launch the GUI from the command line, try putting the .po file in your home directory. Note that the .po file must be named according to the language, so for German it would be de.po, for French fr.po and so on. Normally, when getting the file from Transifex, it is named correctly automatically. Currently, it is not possible to test the User Manual translations.


Instructions for making demo videos on linux. Turn off compositing and run the following command to record your desktop

recordmydesktop  -delay 2 --overwrite  -o out.ogv  -device hw:1,0 --fps 270
mencoder -vc theora out.ogv -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac faac -o out.avi
mencoder -vc theora out.ogv -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=8000 -oac faac -o out.avi
mencoder out.ogv -o out.flv -of lavf -ovc lavc -oac mp3lame -lavcopts vcodec=flv:vbitrate=250:autoaspect:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:precmp=2:cmp=2:subcmp=2:preme=2:turbo  -srate 22050 -af lavcresample=22050

hw:1,0 is the sound recording alsa device (obtained using arecord -l). The above creates output in OGV, AVI and FLV formats. You can add -vf scale=320:240 for standard flash video resolution to the flash conversion line. If you are converting a variable bit rate format like WMV, first convert it to fixed bit rate like this

mencoder file.wmv -o file.avi -ovc lavc -lavcopts vbitrate=500 -oac mp3lame -lameopts cbr:br=128 -vf harddup -ofps 25 
and only then convert the AVI to FLV.