Difference between revisions of "Writing a plugin"

From Gramps
Jump to: navigation, search
(Share it)
m (Template)
Line 54: Line 54:
==== Template ====
==== Template ====
* There is a possible [[Media:additional.pot.gz|template]] which lists references.  
* There is a possible [[Media:additional.pot.gz|template]] which lists references. (see [http://www.gramps-project.org/bugs/view.php?id=2771 this issue].)
Translators may add references to their main translation.
Translators may add references to their main translation.
[[Category:Developers/General]] [[Category:Plugins]] [[Category:Developers/Tutorials]]
[[Category:Developers/General]] [[Category:Plugins]] [[Category:Developers/Tutorials]]

Revision as of 11:47, 17 April 2009

Write it

To get started writing a plugin, please see the following tutorials:

For more general GRAMPS development information, see:

Share it

Have you written a plugin for GRAMPS you want to share with the world? Here's how you do it:

  • Add the correct license. GRAMPS is GPLv2, you use the GRAMPS plugin system, so make sure you have the correct license at the top of your file. See Howto: Contribute to GRAMPS
  • Create a filename.tar.gz or filename.zip file of your plugin code
  • Upload the code to this wiki
  • Add an entry of your plugin to Plugins.
  • Create a new wiki page, and refer to that page here, with a short description of what the plugin does

Internationalize it

There is a big possibility that you are not a native English speaker and want your report in your mother tongue. To enable others to use your report, and make it easy to include your report later in GRAMPS without large changes, do the following for text:

Translation function

  • Suppose you have a string Name, which you want for your own use in French, so Nom. Then write a translation function with the name _.
  • For every string, pass it through your translation function: _("Name")
  • Your translation function should then look like this:
mytranslation = {
   'Name' : "Nom"

from gettext import gettext
import locale
lang = locale.getlocale()[0]
if lang:
    lang = lang.split('_')[0]
def _(string):
    if lang == 'fr':
        return mytranslation.get(string, gettext(string))
        return gettext(string)

Change here 'fr' by the language code of your language

  • If the report becomes part of GRAMPS, it will suffice to delete this code and replace it by
from gettext import gettext as _
  • Note that you only need to include strings that are not yet a part of GRAMPS, as those will be translated automatically by the gettext routine


  • We support right to left languages like Arabic, so never constructs text parts by concatenation of pieces. Always use full sentences/paragraphs with variable substitution, so that a right to left language can translate it correctly.


Translators may add references to their main translation.