From Fedora Project Wiki


Fedora L10N Frequently Asked Questions

Here are some FAQs about the Localization Project.

More information about translations can be found at the Fedora Translation Quick Start Guide , which is more up to date and translated in many languages.


Damned Lies (DL) :: Our statistics software. Upstream is GNOME.

Fedora Stats page :: Our instance of DL. Currently hosted at

Transifex :: A Turbogears application for upstream translation submissions (Transifex devel page ). Canonical URL:

VCS :: Version Control System. CVS, Subversion, Mercurial (hg), git are all VCSs.

General Questions

How do I get the translation files? (#get-files)

You can either:

1. Use each module's stats page to download a PO file, using the green download icon next to each language.

Tx Download.png

2. Run an anonymous checkout for each module from its VCS. You can see the repository root for each module at /module or on each module's stats page. Example:

3. Run an eponymous checkout for those modules where you already have access to. Currently these are those hosted on cvs.fpo (docs, l10n, pkgs repos). The advantage of this method is that you can commit from the checked out copy. Example:

export CVSROOT=:ext:<username>
cvs co homepage
Stop (medium size).png
Don't forget to msgmerge if you didn't get the file from the Stats page (the stats page automatically msgmerge's the PO and POT files).

4. Grab all the msgmerged files for your language in the 'pofiles' directory way similar to the following, substituting <lang-code> with your language code (eg. 'el'):

export MYLANG=<lang-code>
wget -q -r -N -l 1 --accept *$MYLANG.po -nd -nH -P pofiles$MYLANG/fedora-9

In the future, we'll have a command-line interface to Transifex that you could use to easily do such stuff, like eg. running tx get-lang el.

How do I submit translations? (#submit)

Take a look at There are two different families of Version Control Systems (VCS):

1. -- All Fedora translators ( members of the 'cvsl10n' group ) have commit access to these modules; see L10N/Join to join 'cvsl10n'. If this is not the case, it's a bug. To commit, run an eponymous checkout and cvs commit. 1. [svn,hg,git] and others -- All members of the 'cvsl10n' group can use Transifex to contribute to these modules.

Modules accepting translations from Transifex are listed at

Website Questions

The website of the Fedora Localization Project is

Some quick facts:

Where are issues and requests for a website of the Translation Project reported? (#bugs)

The best place to report requests and issues about the statistics pages and other Localization-specific websites, is Bugzilla, L10n/Website component . Here's a quick query of existing website reports.

To report requests and issues about the Fedora's Transifex instance, use Bugzilla, L10n/Transifex component . Here's a quick query of existing Transifex reports.

Before opening a new bug report, please take a look at the above query to see if there's an existing report opened. It sometimes help to ask in #fedora-l10n if there's a known issue at that exact moment. If not, please open a bug report describing what's wrong with the service in clarity. Include the nature of the problem, the module/branch combination, the time (in UTC) it happened and your Fedora username. If you suspect it might be a problem with the particular file you are uploading or the target file, include that information as well.

If the issue is about Transifex as a software like feature requests and general problems not specific to the Fedora instance, please use the upstream ticketing system of Transifex .

How do I add a new team to the website? (#new-team)

See L10N/Maintainer on how to become a maintainer of a new language.

1. The website uses two files for team/people associations: and To create a team and/or become a maintainer for it, we'll need to have those files updated for the information to go live on our website.

To add your team to the website, you will need to create chunks of XML for these files that reflect the changes you want to do. Here are examples of XML chunks:


  <person id="alan">
<name>Alan Cox</name>


  <team id="el">
<_language id="el">Greek</_language>
<coordinator id="glezos"/>
<bugzilla-component>Greek [el]</bugzilla-component>

1. Create a bug report on l10n-requests . Either paste the XML chunks created in previous step or attach a patch for the files on the bug report (preferred). Make sure you added your information in both files. 1. Attach a hackergotchi image if you'd like (up to 100px max side). 1. Someone with a local copy of the website (see Maintainers on top of page) will test the changes, commit them and tag as LIVE. After this, and in a couple of hours, the website should be updated automatically.

Do not mark as LIVE unless someone has tested the changes locally first.
The files must be valid XML. Make sure your tags are closed properly and any '&' characters are replaced with '&amp;'.

How do I create a bugzilla component for my language? (bugzilla-team)

We have a separate bugzilla component for every language, in order for bug reports to reach the correct people (ie. the ones that can fix them). We maintain these entries in an owners.list file on our VCS. You can find it in the L10n CVS, at /cvs/l10n/owners/ . Each organized language group should have an entry there.

For more information, refer to L10N/Maintainer .

Make sure the entry you are adding references an existing bugzilla account. If needed, create one first.

What are all those warnings on the stats pages? (#stats-warnings)

These errors warnings are shown to help us identify which projects have issues with their i18n support. Usually they are harmless (at least to translators), but sometimes help bugs to come to the surface, so they mostly interest developers and administrators.

intltool errors (#intltool-errors)

The most common ones (eg. "Can't generate POT file"). This usually means that the module doesn't use intltool for extracting strings, so we can't be 100% sure that all the strings marked for translation in the application do show up in the POT file. If the error ends to "Using old one", then the POT provided by the translator is used.

L10N FAQ l10nerror1.png

There are some missing files from (#missing-files)

Some source files aren't used for string extraction. The developer will probably want to know about this (hint: open a bug report).

L10N FAQ l10nerror2.png

Entry for this language is not present in (ALL_)LINGUAS file (warning) (#missing-from-linguas)

Some projects use some special files (po/LINGUAS, po/Makefile), to identify which languages are being shipped with their product -- for example, those which have translations > 80% complete. The languages mentioned in those files/variables are shipped/packaged, the others are not.

When these files are located in the VCS, the statistics interface tries to find the particular language in that file, and if it doesn't find it, it produces a warning. If you see this warning, most likely you will need to add your language in the respective LINGUAS file, or the appropriate variable in the Makefile.

If the module ships by default all languages but the warning still shows up, it can be safely ignored.

Don't know where to look if this language is actually used (warning) (#where-to-look)

Tried searching in common locations (eg. po/LINGUAS, Makefile) to find if this language is actually used, but failed. For intltool-based modules, this means the language isn't shipped with the product (eg. flp-website ). For others, it can probably be ignored.

L10N FAQ l10nerror3.png

Some error (eg. Missing files from AND Can't generate POT file (error) (#error-no-pot)

Some modules don't provide a POT file and depend on intltool to dynamically produce one. This is great, however the maintainer needs to make sure the POT file can be generated and intltool doesn't choke (hint: intltool -r or -m). If intltool does choke, then there is no POT file for the translators (and the statistics interface) to work on and the error screen shown below is produced.

The developer should be notified immediately to fix this (eg. update their POTFILES.{in,skip} and reminded to keep them up2date). Here's a template bug report for missing files from POTFILES.{in,skip}.

L10N FAQ l10n-error-inexistent-potfilesin.png

Are the statisics live? How often are they updated? (#update-frequency)

The statistics are automatically updated with a cron script, currently run around 1, 9, 17 UTC. Any changes to the files will reflect on the website a few minutes after each script run (up to half an hour).

You can see when was the last time the PO files were updated, on the module's page at a message like the following: Download POT file POT file (217 messages) — updated on 2007-09-24 01:43:00 MST. (MST is UTC-7). Also, you can see for each module/PO file the updated time inside the directories at

My PO file is 100% but that doesn't show up on the page. What's up? (#100-percent)

There are a number of reasons this would happen, but here are the most common ones.

  • The statistics are not updated on-the-fly but on a scheduled base -- you might need to wait until the next run of the update script. See #live .
  • Most likely the PO file you submitted needed an msgmerge first, because it didn't contain the latest strings from the POT file. Let's say you checked out the PO file from the Version Control System (VCS), translated it 100% and committed it back. Before calculating the statistics, DL does an msgmerge on the PO file with the POT.

What to do if a module is missing from the statistics page? (#add-stats)

In general, we add modules on the statistics page that ship with Fedora or are related to Fedora, and can receive translations by translators.

If a module should be there that isn't, please do the following:

  1. Make sure your module uses the PO file format and all POs are inside one directory, eg. ./po/ (not in the ./locale/<lang> format)
  2. Enable anonymous clone/checkout on your repo/module.
  3. We need to add your name to, and your module to and (see L10N/Tools#cvs for CVS information). Create chunks of XML for these files that reflect the changes you want to do (note: replace & with &)
  4. Create a bug report on l10n-requests . Either paste the XML chunks created in previous step or attach a patch for the files on the bug report (preferred).
  5. Someone with a local copy of the website (see Maintainers on top of page) will test the changes and commit them.

How do I add a module to Transifex? (#add-transifex)

To enable translators send contributions to your project through Transifex, you need to have a special VCS account for Transifex. The Fedora Infrastructure-side details are described at Infrastructure/SOP/Translations.

Step 1: Enable access to your module

If the module is hosted on Fedora infrastructure:

  • If you are not the maintainer, open a bug report to that particular project with a request from the maintainers to add/sponsor the user and have that bug block the Transifex tracker bug, #436824. You can look at bug #438122 as a template if you'd like).
  • This user is used by Transifex to push translations to your repo. This user shouldn't be removed in the future, otherwise translation submissions will fail for our translators.
  • Go to step 2.

If the module is hosted elsewhere:

  1. Your repository must allow access over SSH for it to work with Transifex (currently). Someone (eg. DimitrisGlezos) will create a keypair for you and send you the public key.
  2. Create a VCS account (eg. transifex-fedora) using the public key and give it write access to your module.
  3. Restrict this access only to the directories/files you want the translators to have access to (eg. /po/*). If this is not possible, don't worry too much: you can restrict access to the translators from inside Transifex through a regex.
  4. Test (if you can) that the above access and restrictions are in place.
  5. Add a comment on the bug report once everything is ready.
  6. Go to step 2.

Step 2: Let us know

Create a bug report on l10n-requests and add the following information on it:

Module name
Project webpage
VCS root, module, branch
File filter (eg. <code>.*/po/.*</code>)
Changelog file (if applicable)
Web front-end to VCS
<Link to bug report/ticket of step 1> (if applicable)

Someone will test the write access, add it to Transifex, test with a file commit and report back.

Finally, send an email to fedora-trans-list and let the contributors know about the change. You're all done!

Elvis move Questions

What was (#i18nrc) (also known as rhlinux or elvis) was our legacy localization server, maintained by Red Hat. In terms of Fedora, this server is deprecated in favor of using Fedora Infrastructure for hosting Fedora projects and most of the active modules hosted on elvis were moved to a Fedora server.

Why is a module missing from the 'translate' module on elvis? (#missing)

The 'translate' module was hosted on (aka. 'elvis'), and it brought together many translatable resources. Fedora developers are moving their development space from this system over to Fedora systems, ie. servers maintained by the Fedora Infrastructure Group. All the modules that are no longer on elvis have been moved over to Version Controlled Systems in the form * The benefits from the move are increased development and administration efficiency, scalability of the translation platform, development of high-level totols, and encouraging more community work.

To get the translatable files see [#get-files] and to submit them [#submit] .

The old way was simpler! Why are we doing this? Argh! (#argh)

Keeping things on a single, central place, being served with a specific, static way is indeed more simple than having them distributed and dynamic (think: Windows, Linux). Also, traditional systems are more simple than modern ones (think: '30s airplanes, modern ones).

We have grown to a huge project, and new Fedora-related projects (usually requiring translations!) are being started all the time -- see for example the list of projects over at While elvis was simple enough for translators, it only supported CVS, and many developers find working woth other types of VCSs magnitudes more efficient than CVS. Also, administrators are able to distribute the workload more efficiently when the systems are maintained by the community of Fedora.

In short, it was inevitable that at some point we'd have to move to a more community model. We are doing our best to simplify the way things work, so please bear with us until then. Any feedback/suggestion is valuable, so please bring it on via bugzilla reports or on fedora-trans-list.

Other questions

Why isn't there a POT file in module X? (#no-pot)

Some developers use gettext to extract the strings in POT files when they build their package. Some others, though, use intltool to do it, which allows the POT file to be produced dynamically when needed. Hence, these modules sometimes don't have a POT file in their VCS, since it's not needed. To update your PO file (msgmerge), you can simply use:

cd po && intltool-update <language>

If you need a POT file for some reason, you can use the following command to create one:

cd po && intltool-update --pot

Please note that not having a POT requires that intltool-update should run without any problems (see also: [#missing-files-no-pot] ). If not, or if you'd like a POT file present in the VCS regardless of the use of intltool, you can open a bug report against that module and ask the developer to provide one.

A module doesn't have PO files nor statistics at all! Can you fix this? (#no-po-files)

Unfortunately no, that's an issue the developer can solve. Please open a bug report against that particular project: for Fedora/RH stuff that would be either RH Bugzilla or the project's trac system on

What's up with msgmerge? (#msgmerge)

Each PO file should have inside it all the strings that appear in the POT file; translated or not. If a string doesn't appear in the PO file, then the string in the original language will appear in the final resource. This leads to the following paradox: a PO file is 100% translated but the website shows less statistics, and even worse, the shipped application shows untranslated strings.

Ideally, all POs should be msgmerged each time the POT is updated (ie. by the developer). But since this isn't always the case, the clients (eg. the translators and the website) need to make sure they are working on msgmerged files. The website runs an msgmerge before calculating the statistics: it takes the existing PO file, merges in any new strings from the POT file and then shows the numbers. It also provides a link to the msgmerged PO file with the green download link on the left of each language.

To make sure your statistics are 100%, you can do either of the following:

  1. Use the status page to get the PO file, and submit that.
  2. Use the VCS directly to get the PO file, and msgmerge before translating. For modules with intltool support (they will have a file po/
cd po && intltool-update <language>

For others:

export L='el' && mv $L.po $L.previous.po && msgmerge $L.previous.po *pot > $L.po

When checking in/out, I get a "Permission denied" (publickey,keyboard-interactive) error (#ssh-key-denied)

Most of the cases, this is a problem with SSH keys. When a user creates a new account, we associate an SSH key with it. When a new account is created, the user is requested to upload the public part of her SSH key (located in ~/.ssh/ of your PC), and this key is used to identify the user. This way is more secure than using a simple password. If you can't authenticate to, then the SSH key of the user on the system you are using doesn't have the same SSH key as the one we have on our servers, associated with your username.

If you have changed your SSH key recently, please visit Edit your Fedora account and upload your new SSH key.

If you haven't changed your SSH key recently, make sure the system and user account you are using has your SSH keys (eg. copy them from your other PC).