Translating the JabRef Interface


JabRef comes with a set of translations into different languages, currently: Chinese (simplified), Danish, Dutch, English, French, German, Indonesian, Italian, Japanese, Norwegian, Persian, Portuguese (Brazil), Russian, Spanish, Swedish, Turkish and Vietnamese.

If the JabRef Interface already exists in your language, you can help improve it. Otherwise, you can start translating JabRef into your own language.

Improving an existing translation

Directly in your web browser

Github offers to edit the files directly without requiring to download them or to use git. Go to

For each language, there are two files (xx denotes the country code for the language):

  • translation of menu items
  • translation of the other items

To edit a file, click on the filename, and then click on the pencil icon (to the top right-hand). When you are done, add a message at the bottom and click on “Propose file change”. Then, click on “Create pull request”. You are done. Easy!

Example for menus in Italian:

  1. Click on
  2. Click on the pencil
  3. Edit directly in the browser
  4. Click on “propose file change” (as shown at
  5. Then, click on “create pull request”

Using Popeye

See the step-by-step guide below. Instead of downloading the English files ( and, use directly the ones for your language.

Localization files status (2017-09-13 11:17 - Branch master 23a0610)

Note: To get the current status from your local repository, run python ./scripts/ markdown

Property file Keys Keys translated Keys not translated % translated 1626 1626 0 100 1626 1625 1 99 1626 898 728 55 1626 1626 0 100 1626 879 747 54 1626 1626 0 100 1626 1609 17 98 1626 1435 191 88 1626 1613 13 99 1626 1625 1 99 1626 80 1546 4 1626 1 1625 0 1626 1112 514 68 1626 884 742 54 1626 582 1044 35 1626 1131 495 69 1626 1322 304 81 1626 1236 390 76
Property file Keys Keys translated Keys not translated % translated 110 110 0 100 110 75 35 68 110 89 21 80 110 110 0 100 110 110 0 100 110 103 7 93 110 110 0 100 110 110 0 100 110 99 11 90 110 89 21 80 110 89 21 80 110 102 8 92 110 110 0 100 110 110 0 100 110 89 21 80 110 89 21 80 110 98 12 89 110 110 0 100

Translating JabRef into a new language

We are constantly looking for translators and translations into other languages. For example a Polish translation would be valuable, and, of course, translations into any other languages would be very much appreciated.

Contributing a new language to JabRef is easy since JabRef is prepared for multi-language support. It only requires the creation of a new set of 2 translation files (the so-called property files). These are text files containing one text entry per line that can easily be generated using the java program Popeye from a graphical user interface.

The property files

In the JabRef source code tree, the property files reside in the /src/main/resources/l10n directory. For each language there are twofiles (xx denotes the country code for the language):

  • translation of menu items, marked up for mnemonic keys
  • translation of the other items

The format of the property files

Each entry is first given in English, then in the other language, with the two parts separated by an ‘=’ character. For instance, a line can look like this in a German translation file:


Note that each space character is replaced by an underscore, both in the English and the translated version.

Some entries contain “variables” that are inserted at runtime by JabRef - this can for instance be a file name or a file type name:


A variable is denoted by %0, %1, %2 etc. In such entries, simply repeat the same notation in the translated version.

As we can see, there are several “special” characters: the percent sign and the equals sign, along with the colon character. If these characters are to be part of the actual text in an entry, they must be escaped in the English version, as with the colon in the following example:


The character encoding should be UTF-8. Please try to avoid Unicode escaping such as \u2302.

Step-by-step guide

This guide presents a quick way to begin with translation without the need to install git. It presents a guide for Polish (hence the country code pl), other languages are similar.

Download the necessary files

  1. Install Java (you’ve already done this if you are able to run JabRef)
  2. Create a new folder “JabRef translations”
  3. Store the langproper-0.55.jar file in it (this is the Popeye software)
  4. Store in it
  5. Store in it
  6. Run langproper-0.55.jar (double click should be enough). This starts Popeye.

Create a Popeye project

In Popeye, create a project for, where no translation exists:

  1. Go to File → New Project
  2. Click next
  3. On the line reference file, click on “
  4. Select “All files” as File type
  5. Select “” and click on Open
  6. Select Add
  7. Use “” as filename (since this example is for Polish)
  8. Just below language iso code, click on the “>
  9. Select pl and click on select
  10. Click on apply
  11. Click on finish
  12. Go to File → Save project
  13. Choose “JabRef.ppf” as file name and click on Save

Proceed similarly using the file for the translation of the menu (project Menu.ppf).


From now on, after starting langproper-0.55.jar, you can open the projects Menu.ppf and JabRef.ppf. The lines requiring a translation are underlined in red. Then you can translate and save the files each time you want.

Contribute your translation

By contacting the developers Please contact a developer that he should include your translation at [email protected]


Alternatively, you can create a pull request. Follow the instructions given at:

Using the version control system

If you are interested on a autonomic submission of your updated translations without the need to contact a developer for each update, you will need to get write access to the git repository. Contact the developer you hit before or contact the project manager - preferably through the Discourse forum. Then you can send over your initial versions of the translation files, and your language can be added to the current development version of JabRef. You will be made a member of the project group, and given the necessary access to our source control tree. This requires you to have a user account at GitHub. This means that you will need to learn the basics of using the git system.

Using git, you will be able to keep your local files updated, and to translate new text entries as they are added to your language’s files.

Testing the translation

For a translation to be available within JabRef, a corresponding line must be added in the Java class GUIGlobals (found in the directory /src/main/java/net/sf/jabref/logic/l10n/ in the JabRef source code tree). The line is inserted in the static {} section where the map LANGUAGES is populated. The code must of course be recompiled after this modification.

To test your translation you must be able to compile the source tree after making your additions. This requires you to install the Java Development Kit. Execute gradlew run in the root directory and JabRef should start.