Accepting request 32330 from Base:System

Copy from Base:System/translation-update-upstream based on submit request 32330 from user coolo

OBS-URL: https://build.opensuse.org/request/show/32330
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/translation-update-upstream?expand=0&rev=6
This commit is contained in:
OBS User autobuild 2010-02-11 18:17:01 +00:00 committed by Git OBS Bridge
parent 54824caabc
commit a725969b2a
10 changed files with 156 additions and 40 deletions

View File

@ -12,12 +12,12 @@ set -o errexit
source ${0%create-tlst-step2-create-gnome_gtp.sh}upstream-collect.conf
osc ${OSC_APIURL:+--apisrv=$OSC_APIURL} list $OSC_REPOSITORY >create-tlst-temp-osc-projects.lst
osc ${OSC_APIURL:+--apiurl=$OSC_APIURL} list $OSC_REPOSITORY >create-tlst-temp-osc-projects.lst
# branches tried for all apps:
KNOWN_BRANCHES="gnome-2-28"
# branches tried apps with the same name base:
APP_BRANCHES="|gimp-2-6|gtk-2-18|glib-2-22"
APP_BRANCHES="|gimp-2-6|gtk-2-18|gtk-2-90|glib-2-22"
# FIXME: support for libgda:release-3-0-branch gnome-background:gnome-2-22
echo "# This file was generated $(LANG=C LC_ALL=C date) by create-tlst-step2-create-gnome_gtp.sh." >upstream-gnome_gtp.tlst

View File

@ -7,6 +7,8 @@
rm -rf {${1%.po},${2%.po}}-msgheadermerge-temp.{merge-dir,order}
trap "rm -rf {${1%.po},${2%.po}}-msgheadermerge-temp.{merge-dir,order} ${2%.po}-msgheadermerge-tempheader.po" 0
RC=0
# Broken pipe is an expected behavior. Redirect stderr to /dev/null.
msgexec -i $1 $0-parse ${1%.po}-msgheadermerge-temp 2>/dev/null
msgexec -i $2 $0-parse ${2%.po}-msgheadermerge-temp 2>/dev/null
@ -15,7 +17,11 @@ msgexec -i $2 $0-parse ${2%.po}-msgheadermerge-temp 2>/dev/null
if test "$4" = --mergemode ; then
rm ${2%.po}-msgheadermerge-temp.merge-dir/POT-Creation-Date
if test ${2%.po}-msgheadermerge-temp.merge-dir/PO-Revision-Date -ot ${1%.po}-msgheadermerge-temp.merge-dir/PO-Revision-Date ; then
exit 1
if test "$5" = --continue ; then
RC=1
else
exit 1
fi
fi
else
if test "$4" = --newdate ; then
@ -40,3 +46,5 @@ cat ${1%.po}-msgheadermerge-temp.order >>${2%.po}-msgheadermerge-temp.order
msgmerge --quiet --force-po $2 $0-empty.pot -o ${2%.po}-msgheadermerge-tempheader.po
sed -i '/^#~/,$d' ${2%.po}-msgheadermerge-tempheader.po
msgfilter --force-po -i ${2%.po}-msgheadermerge-tempheader.po -o $3 $0-compose ${1%.po}-msgheadermerge-temp.merge-dir ${2%.po}-msgheadermerge-temp.order
exit $RC

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c7f3f4573afeedbd6655c61e3672b9e58782d981cf3c628fdfa8ea7246c0910
size 1588898

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:30e0f6b742862230c8f9c9dec70037a220f8827c6d404a4379c6d920bd94ef0e
size 1864

View File

@ -50,7 +50,7 @@ If you want to update translations (short process: update translations only)
Run following command in unpacked sources directory:
./upstream-collect.sh
bash ./upstream-collect.sh
It creates a tarball with translations updated by upstream using all
existing *.tlst filůes (configuration of packages) and
@ -80,8 +80,8 @@ refer to it in create-config.conf
Then you can run following command in unpacked sources directory:
# collect possible po domains from rpm packages
./create-tlst-step1-list-all-po-projects.sh
bash ./create-tlst-step1-list-all-po-projects.sh
# scan upstream branches
./create-tlst-step2-create-gnome_gtp.sh
bash ./create-tlst-step2-create-gnome_gtp.sh
Then continue as above.

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Tue Feb 2 18:35:28 CET 2010 - sbrabec@suse.cz
- Use dummy tarball before version freeze.
- Migration of servers from Novell Forge to Berlios.
- Supports newer version of cgit.
- Support for multiple osc sources.
- Support for extracting new and changed strings for review.
- Never overwrite strings by po file with older time stamp.
-------------------------------------------------------------------
Tue Oct 27 16:21:20 CET 2009 - sbrabec@suse.cz

View File

@ -1,7 +1,7 @@
#
# spec file for package translation-update-upstream (Version 20091026)
# spec file for package translation-update-upstream (Version 20100202)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -19,9 +19,9 @@
Name: translation-update-upstream
License: GPL v2 or later
License: GPLv2+
Group: System/Localization
Version: 20091026
Version: 20100202
Release: 1
Summary: Tool for Translation Update from Upstream
Source: %{name}-%{version}.tar.bz2

View File

@ -51,7 +51,7 @@ esac
rm -rf UPSTREAM
mkdir UPSTREAM
if ! test -d STAMPS ; then
mkdir PACKAGES UPDATE STAMPS
mkdir OSC PACKAGES UPDATE STAMPS pot
rm -f upstream-collect.log
fi
@ -68,6 +68,9 @@ fi
EOF
chmod +x ~/.upstream-collect.tmp/translation-update-upstream
# executable flag does not survive some build systems
chmod +x msgheadermerge msgheadermerge-compose msgheadermerge-parse upstream-collect.sh create-tlst-step*.sh
# Strings in installed instance of gnome-patch-translation may interfere
# with upstream-collect.sh. Use of dummies allows to import upstream
# strings, that are part of openSUSE patches.
@ -165,19 +168,32 @@ for TLST in *.tlst ; do
fi
fi
cd $WORK_DIR/PACKAGES
cd $WORK_DIR/OSC
RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$OSC_REPOSITORY/$PACKAGE)
RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$PACKAGE)
if ! test -f $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok ; then
if ! test -d "$RPMPKGDIR" ; then
osc ${OSC_APIURL:+--apisrv=$OSC_APIURL} checkout --expand-link $OSC_REPOSITORY $PACKAGE
for OSC_REPOSITORY in "${OSC_REPOSITORIES[@]}" ; do
echo "Trying to check-out PACKAGES $PACKAGE from $OSC_REPOSITORY..."
if osc ${OSC_APIURL:+--apiurl=$OSC_APIURL} checkout --expand-link $OSC_REPOSITORY $PACKAGE >gnome-patch-translation-collect-tmp.log 2>&1 ; then
mv $OSC_REPOSITORY/$PACKAGE $WORK_DIR/PACKAGES/
break
fi
if ! grep -q "HTTP Error 404" gnome-patch-translation-collect-tmp.log ; then
cat gnome-patch-translation-collect-tmp.log
rm gnome-patch-translation-collect-tmp.log
echo "ERROR: Checkout failed!"
exit 1
fi
done
rm gnome-patch-translation-collect-tmp.log
else
rm -rf "$RPMPKGDIR" $WORK_DIR/STAMPS/$PACKAGE
echo "$(tput setf 4)Removed possibly incorrect temporary files from previous runs. Please re-run $0 now.$(tput init)"
exit 1
fi
RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$OSC_REPOSITORY/$PACKAGE)
RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$PACKAGE)
cd $RPMPKGDIR
rpmprep $PACKAGE.spec
else
@ -196,9 +212,12 @@ for TLST in *.tlst ; do
echo "$RPMPODIR: Missing or incorrect translation-update-upstream in the spec file."
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: packaging error, package does not call translation-update-upstream properly"
fi
if ! intltool-update --gettext-package=$DOMAIN --pot ; then
if intltool-update --gettext-package=$DOMAIN --pot ; then
cp -a $DOMAIN.pot $WORK_DIR/pot/
else
if test -f $DOMAIN.pot ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: intltool-update error, continuing with original $DOMAIN.pot"
cp -a $DOMAIN.pot $WORK_DIR/pot/
else
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: intltool-update error, no way to update"
mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__}
@ -248,7 +267,7 @@ for TLST in *.tlst ; do
CGIT_BRANCH=${BRANCH:+?id=$BRANCH}
CGIT_SERVER=${CGIT_URI#http://}
CGIT_SERVER=${CGIT_SERVER%%/*}
curl $CGIT_URI/tree/${REPODIR#*/}$CGIT_BRANCH | sed -n 's:^.*class='\''ls-blob'\'' href='\''\([^'\'']*\)'\''.*$:\1:p' |
curl $CGIT_URI/tree/${REPODIR#*/}$CGIT_BRANCH | sed -n 's:^.*class='\''ls-blob[^'\'']*'\'' href='\''\([^'\'']*\)'\''.*$:\1:p' |
while read ; do
wget -N http://$CGIT_SERVER${REPLY/\/tree\///plain/}
done
@ -298,6 +317,25 @@ for TLST in *.tlst ; do
;;
esac
#
# Files created in this section:
#
# upstream dir:
# foo-backport.po: raw upstream translation backported to the downstream
# foo-uheader.po: header with the upstream date from the branch modified as last
# foo-upstream.po: backport + updates from all upstreams processed before (date from the branch modified as last)
# foo-allfz.po: downstream + joined updates. Strings that were modified create fuzzy multi-match.
# foo-all.po: downstream + joined updates. Strings that were modified use the last processed instance.
# foo-fixes.po: Strings that are different while comparing downstream and joined updates.
# foo-additions.po: Strings that are newly introduced in joined updates while comparing with downstream.
# foo-header.po: header with the lastest date, either upstream date from the branch modified as last or the downstream date
# foo-fixes-clean.po: fixes with a nice header.
#
# downstream dir:
# foo-downstream.po: cleaned and complete downstream po file
# foo-updatesraw.po: fixes + additions in a single file, raw form
# foo-updates.po: fixes + additions in a single file, clean form with an useful header (this file will be copied to UPDATE/)
#
for PO in *.po ; do
# step 0: Merge new po file into old project. Removes unused (too new) translations.
if ! msgmerge --no-fuzzy-matching $PO $RPMPODIR/$DOMAIN.pot -o ${PO%.po}-backport.po ; then
@ -305,45 +343,95 @@ for TLST in *.tlst ; do
continue
fi
if test -f $RPMPODIR/$PO ; then
# step 1: Clean the po file to be safe.
if ! msgmerge --no-fuzzy-matching $RPMPODIR/$PO $RPMPODIR/$DOMAIN.pot -o $RPMPODIR/${PO%.po}-clean.po ; then
# step 1: Clean the RPM po file to be safe.
if ! msgmerge --no-fuzzy-matching $RPMPODIR/$PO $RPMPODIR/$DOMAIN.pot -o $RPMPODIR/${PO%.po}-downstream.po ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN directory=$RPMPODIR po=$PO: package msgmerge error"
# Failed initial msgmerge is fatal. There is no way to update. Build may fail.
continue
fi
# Do the magic:
# step 2: Merge new po and previous updates (if any).
# step 2: Merge new upstream po and previous upstream updates to RPM po (if any).
OLD_UPDATE=false
if test -f $WORK_DIR/UPDATE/po/$DOMAIN/$PO ; then
$WORK_DIR/msgheadermerge $WORK_DIR/UPDATE/po/$DOMAIN/$PO $PO ${PO%.po}-uheader.po
msgcat --force-po --use-first ${PO%.po}-uheader.po ${PO%.po}-backport.po $WORK_DIR/UPDATE/po/$DOMAIN/$PO -o ${PO%.po}-join.po
if $WORK_DIR/msgheadermerge $WORK_DIR/UPDATE/po/$DOMAIN/$PO $PO ${PO%.po}-uheader.po --mergemode --continue ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN directory=$RPMPODIR po=$PO: old po file, skipping fixes"
OLD_UPDATE=true
fi
msgcat --force-po --use-first ${PO%.po}-uheader.po ${PO%.po}-backport.po $WORK_DIR/UPDATE/po/$DOMAIN/$PO -o ${PO%.po}-upstream.po
else
cp -a ${PO%.po}-backport.po ${PO%.po}-join.po
cp -a ${PO%.po}-backport.po ${PO%.po}-upstream.po
fi
# step 3: Join both translations, without --use-first string changes will disappear as fuzzy.
msgcat --force-po ${PO%.po}-join.po $RPMPODIR/${PO%.po}-clean.po -o ${PO%.po}-allfz.po
msgcat --use-first --force-po ${PO%.po}-join.po $RPMPODIR/${PO%.po}-clean.po -o ${PO%.po}-all.po
msgcat --force-po ${PO%.po}-upstream.po $RPMPODIR/${PO%.po}-downstream.po -o ${PO%.po}-allfz.po
msgcat --use-first --force-po ${PO%.po}-upstream.po $RPMPODIR/${PO%.po}-downstream.po -o ${PO%.po}-all.po
# step 4: Find string fixes (existed before, now different).
msgcat --force-po --unique ${PO%.po}-all.po ${PO%.po}-allfz.po -o ${PO%.po}-fixes.po
# step 5: Find newly translated strings (translation removal is not supported).
msgcat --force-po --unique $RPMPODIR/${PO%.po}-clean.po ${PO%.po}-all.po -o ${PO%.po}-additions.po
msgcat --force-po --unique $RPMPODIR/${PO%.po}-downstream.po ${PO%.po}-all.po -o ${PO%.po}-additions.po
# step 6: Join both to collect all known fixes.
msgcat ${PO%.po}-fixes.po ${PO%.po}-additions.po -o $RPMPODIR/${PO%.po}-updatesraw.po
if $OLD_UPDATE ; then
# If the update has an old time stamp, don't include fixes. Use just additions.
msgcat ${PO%.po}-additions.po -o $RPMPODIR/${PO%.po}-updatesraw.po
else
msgcat ${PO%.po}-fixes.po ${PO%.po}-additions.po -o $RPMPODIR/${PO%.po}-updatesraw.po
fi
# Are there any updated? If no, game over.
if test -f $RPMPODIR/${PO%.po}-updatesraw.po ; then
# step 7: Compose the best po file header.
$WORK_DIR/msgheadermerge $RPMPODIR/$PO ${PO%.po}-join.po ${PO%.po}-header.po --newdate
# step 8: And yet another ugly game to get rid commented out dust.
$WORK_DIR/msgheadermerge $RPMPODIR/$PO ${PO%.po}-upstream.po ${PO%.po}-header.po --newdate
# step 8: And yet another ugly game to get rid commented out garbage.
sed '/#~/d' <$RPMPODIR/${PO%.po}-updatesraw.po >$RPMPODIR/${PO%.po}-updates.po~
# step 9: Merge correct header to the updates file.
msgcat --no-location --use-first ${PO%.po}-header.po $RPMPODIR/${PO%.po}-updates.po~ -o $RPMPODIR/${PO%.po}-updates.po
fi
# step 10: Prepare texts for review. We created them in previous steps, but files need cleanup.
if test -f ${PO%.po}-header.po ; then
if test -f ${PO%.po}-additions.po ; then
sed -i '/#~/d' ${PO%.po}-additions.po
mkdir -p $WORK_DIR/po-review/${PO%.po}/additions
msgcat --use-first ${PO%.po}-header.po ${PO%.po}-additions.po -o $WORK_DIR/po-review/${PO%.po}/additions/$DOMAIN.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/additions
fi
if test -f ${PO%.po}-fixes.po ; then
sed -i '/#~/d' ${PO%.po}-fixes.po
msgcat --use-first ${PO%.po}-header.po ${PO%.po}-fixes.po -o ${PO%.po}-fixes-clean.po
fi
if test -f ${PO%.po}-fixes-clean.po ; then
msgmerge ${PO%.po}-allfz.po ${PO%.po}-fixes-clean.po -o ${PO%.po}-fixes-review.po~
sed -i '/#~/d' ${PO%.po}-fixes-review.po~
msgcat ${PO%.po}-fixes-review.po~ -o ${PO%.po}-fixes-review.po
if $OLD_UPDATE ; then
mkdir -p $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR
cp -a ${PO%.po}-fixes-clean.po $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR/$DOMAIN.po
cp -a ${PO%.po}-fixes-review.po $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR/$DOMAIN-review.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR
if test -d $WORK_DIR/po-review/${PO%.po}/excluded-changes ; then
echo -e "Excluded changes contains changes introduced by upstream po files with\ntime stamp older than our package." >$WORK_DIR/po-review/${PO%.po}/excluded-changes/README
fi
else
mkdir -p $WORK_DIR/po-review/${PO%.po}/changes
cp -a ${PO%.po}-fixes-clean.po $WORK_DIR/po-review/${PO%.po}/changes/$DOMAIN.po
cp -a ${PO%.po}-fixes-review.po $WORK_DIR/po-review/${PO%.po}/changes/$DOMAIN-review.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/changes
fi
fi
fi
else
# step 1: Merge new po and previous updates (if any).
if test -f ${PO%.po}-updates.po ; then
msgcat --force-po --use-first ${PO%.po}-backport.po $RPMPODIR/${PO%.po}-updates.po -o ${PO%.po}-updates.po~
mv ${PO%.po}-updates.po~ ${PO%.po}-updates.po
else
cp -a ${PO%.po}-backport.po ${PO%.po}-updates.po
# If backport was empty, no file was generated.
if test -f ${PO%.po}-backport.po ; then
# step 1: Merge new po and previous updates (if any).
sed -i '/#~/d' ${PO%.po}-backport.po
if test -f ${PO%.po}-updates.po ; then
msgcat --force-po --use-first ${PO%.po}-backport.po $RPMPODIR/${PO%.po}-updates.po -o ${PO%.po}-updates.po~
mv ${PO%.po}-updates.po~ ${PO%.po}-updates.po
else
# To get surely a valid po file, use msgcat instead of cp.
msgcat ${PO%.po}-backport.po -o ${PO%.po}-updates.po
fi
# step 2: Prepare texts for review.
mkdir -p $WORK_DIR/po-review/${PO%.po}/new-files
cp -a ${PO%.po}-updates.po $WORK_DIR/po-review/${PO%.po}/new-files/$DOMAIN.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/new-files
fi
fi
done
@ -377,7 +465,7 @@ tar -j -c -f $WORK_DIR/translation-update-upstream-$SNAPSHOT.tar.bz2 po
cd $WORK_DIR
if ! $DEBUG ; then
rm -rf UPSTREAM PACKAGES UPDATE UPDATE_OLD STAMPS BIN
rm -rf UPSTREAM OSC PACKAGES UPDATE UPDATE_OLD STAMPS BIN
fi
rm -rf ~/.upstream-collect.tmp

View File

@ -4,4 +4,3 @@ gstreamer-0_10-plugins-base gst-plugins-base-0.10 cgit git://anongit.freedes
gstreamer-0_10-plugins-good gst-plugins-good-0.10 cgit git://anongit.freedesktop.org/gstreamer/gst-plugins-good gst-plugins-good/po
gstreamer-0_10-plugins-bad gst-plugins-bad-0.10 cgit git://anongit.freedesktop.org/gstreamer/gst-plugins-bad gst-plugins-bad/po
gstreamer-0_10-plugins-ugly gst-plugins-ugly-0.10 cgit git://anongit.freedesktop.org/gstreamer/gst-plugins-ugly gst-plugins-ugly/po
pidgin pidgin tbz http://downloads.sourceforge.net/pidgin/pidgin-2.6.3.tar.bz2 pidgin-2.6.3/po

View File

@ -1,3 +1,4 @@
# Manually added new items on Fri Jan 8 17:31:43 CET 2010.
# This file was generated Tue Oct 27 15:31:01 CET 2009 by create-tlst-step2-create-gnome_gtp.sh.
# package domain method repository dir branch
NetworkManager NetworkManager gtp l10n.gnome.org/POT NetworkManager/po
@ -27,6 +28,7 @@ conduit conduit gtp l10n.gnome.org/POT
# broken:
#conglomerate conglomerate gtp l10n.gnome.org/POT conglomerate/po
contact-lookup-applet contact-lookup-applet gtp l10n.gnome.org/POT contact-lookup-applet/po
dasher dasher gtp l10n.gnome.org/POT dasher/po gnome-2-28
dasher dasher gtp l10n.gnome.org/POT dasher/po
deskbar-applet deskbar-applet gtp l10n.gnome.org/POT deskbar-applet/po
devhelp devhelp gtp l10n.gnome.org/POT devhelp/po gnome-2-28
@ -61,6 +63,7 @@ gcalctool gcalctool gtp l10n.gnome.org/POT
gconf-editor gconf-editor gtp l10n.gnome.org/POT gconf-editor/po gnome-2-28
gconf-editor gconf-editor gtp l10n.gnome.org/POT gconf-editor/po
gconf2 GConf2 gtp l10n.gnome.org/POT gconf/po gnome-2-28
gconf2 GConf2 gtp l10n.gnome.org/POT gconf/po
gdl gdl-1 gtp l10n.gnome.org/POT gdl/po gnome-2-28
gdl gdl-1 gtp l10n.gnome.org/POT gdl/po
gdm gdm gtp l10n.gnome.org/POT gdm/po gnome-2-28
@ -95,11 +98,13 @@ gnome-bluetooth gnome-bluetooth2 gtp l10n.gnome.org/POT
gnome-commander gnome-commander gtp l10n.gnome.org/POT gnome-commander/po
gnome-control-center gnome-control-center-2.0 gtp l10n.gnome.org/POT gnome-control-center/po gnome-2-28
gnome-control-center gnome-control-center-2.0 gtp l10n.gnome.org/POT gnome-control-center/po
gnome-desktop gnome-desktop-2.0 gtp l10n.gnome.org/POT gnome-desktop/po gnome-2-28
gnome-desktop gnome-desktop-2.0 gtp l10n.gnome.org/POT gnome-desktop/po
gnome-doc-utils gnome-doc-utils gtp l10n.gnome.org/POT gnome-doc-utils/po gnome-2-28
gnome-doc-utils gnome-doc-utils gtp l10n.gnome.org/POT gnome-doc-utils/po
gnome-games gnome-games gtp l10n.gnome.org/POT gnome-games/po gnome-2-28
gnome-games gnome-games gtp l10n.gnome.org/POT gnome-games/po
gnome-keyring gnome-keyring gtp l10n.gnome.org/POT gnome-keyring/po gnome-2-28
gnome-keyring gnome-keyring gtp l10n.gnome.org/POT gnome-keyring/po
gnome-mag gnome-mag gtp l10n.gnome.org/POT gnome-mag/po gnome-2-28
gnome-mag gnome-mag gtp l10n.gnome.org/POT gnome-mag/po
@ -115,8 +120,10 @@ gnome-pilot gnome-pilot gtp l10n.gnome.org/POT
gnome-pilot-conduits gnome-pilot-conduits gtp l10n.gnome.org/POT gnome-pilot-conduits/po
gnome-power-manager gnome-power-manager gtp l10n.gnome.org/POT gnome-power-manager/po gnome-2-28
gnome-power-manager gnome-power-manager gtp l10n.gnome.org/POT gnome-power-manager/po
gnome-screensaver gnome-screensaver gtp l10n.gnome.org/POT gnome-screensaver/po gnome-2-28
gnome-screensaver gnome-screensaver gtp l10n.gnome.org/POT gnome-screensaver/po
gnome-session gnome-session-2.0 gtp l10n.gnome.org/POT gnome-session/po
gnome-settings-daemon gnome-settings-daemon gtp l10n.gnome.org/POT gnome-settings-daemon/po gnome-2-28
gnome-settings-daemon gnome-settings-daemon gtp l10n.gnome.org/POT gnome-settings-daemon/po
gnome-shell gnome-shell gtp l10n.gnome.org/POT gnome-shell/po
gnome-system-monitor gnome-system-monitor gtp l10n.gnome.org/POT gnome-system-monitor/po
@ -164,6 +171,7 @@ libbonobo libbonobo-2.0 gtp l10n.gnome.org/POT
libbonoboui libbonoboui-2.0 gtp l10n.gnome.org/POT libbonoboui/po
libgda libgda-4.0 gtp l10n.gnome.org/POT libgda/po
libgdata gdata gtp l10n.gnome.org/POT libgdata/po
libgnome libgnome-2.0 gtp l10n.gnome.org/POT libgnome/po gnome-2-28
libgnome libgnome-2.0 gtp l10n.gnome.org/POT libgnome/po
libgnomecanvas libgnomecanvas-2.0 gtp l10n.gnome.org/POT libgnomecanvas/po
libgnomecups libgnomecups gtp l10n.gnome.org/POT libgnomecups/po
@ -174,6 +182,7 @@ libgnomeprintui libgnomeprintui-2.2 gtp l10n.gnome.org/POT
libgnomeui libgnomeui-2.0 gtp l10n.gnome.org/POT libgnomeui/po
libgsf libgsf gtp l10n.gnome.org/POT libgsf/po
libgtop libgtop-2.0 gtp l10n.gnome.org/POT libgtop/po
libgweather libgweather gtp l10n.gnome.org/POT libgweather/po gnome-2-28
libgweather libgweather gtp l10n.gnome.org/POT libgweather/po
libslab libslab gtp l10n.gnome.org/POT libslab/po
libwnck libwnck gtp l10n.gnome.org/POT libwnck/po
@ -201,6 +210,7 @@ pybliographer pybliographer gtp l10n.gnome.org/POT
rhythmbox rhythmbox gtp l10n.gnome.org/POT rhythmbox/po
sabayon sabayon gtp l10n.gnome.org/POT sabayon/po gnome-2-28
sabayon sabayon gtp l10n.gnome.org/POT sabayon/po
seahorse seahorse gtp l10n.gnome.org/POT seahorse/po gnome-2-28
seahorse seahorse gtp l10n.gnome.org/POT seahorse/po
seahorse-plugins seahorse-plugins gtp l10n.gnome.org/POT seahorse-plugins/po
shared-mime-info shared-mime-info gtp l10n.gnome.org/POT shared-mime-info/po
@ -220,6 +230,7 @@ xchat-gnome xchat-gnome gtp l10n.gnome.org/POT
xdg-user-dirs xdg-user-dirs gtp l10n.gnome.org/POT xdg-user-dirs/po
xdg-user-dirs-gtk xdg-user-dirs-gtk gtp l10n.gnome.org/POT xdg-user-dirs-gtk/po
xkeyboard-config xkeyboard-config gtp l10n.gnome.org/POT xkeyboard-config/po
yelp yelp gtp l10n.gnome.org/POT yelp/po gnome-2-28
yelp yelp gtp l10n.gnome.org/POT yelp/po
zenity zenity gtp l10n.gnome.org/POT zenity/po gnome-2-28
zenity zenity gtp l10n.gnome.org/POT zenity/po