As you probably know, in .po files, each strings also contain its actual location in the source : #: src/pacman/add.c:104 src/pacman/sync.c:533 #, c-format msgid "error: %s\n" msgstr "error: %s\n" I guess this information can be helpful to see the context, but personally I never used it. And if I needed it, I would simple use grep -r "error: %s\n" (which will be probably be less friendly, especially when po editors can use the line information themselves). The downsides of this however, is that for example, when we add one new string at the top of src/pacman/sync.c, then the reference of every other strings from src/pacman/sync.c will also be changed. So when we need to rebuild the .pot / .po files to get the new string, we also get a huger number of line changes. So we get both a commit huge in size, which is not cool, but it's also harder to see what really changed. Have a look at size of the following commit where the pacman .po / .pot files had to be updated because of 7 messages changes: http://projects.archlinux.org/git/?p=pacman.git;a=commitdiff;h=e8d665fbf7792... We can easily remove all these line numbers with the --no-location gettext option, but the question is : Is it acceptable?