Accepting request 41097 from Base:System

Copy from Base:System/translation-update-upstream based on submit request 41097 from user sbrabec

OBS-URL: https://build.opensuse.org/request/show/41097
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/translation-update-upstream?expand=0&rev=8
This commit is contained in:
OBS User autobuild 2010-06-04 12:49:58 +00:00 committed by Git OBS Bridge
commit 3e35455057
15 changed files with 526 additions and 211 deletions

View File

@ -12,12 +12,16 @@ set -o errexit
source ${0%create-tlst-step2-create-gnome_gtp.sh}upstream-collect.conf source ${0%create-tlst-step2-create-gnome_gtp.sh}upstream-collect.conf
osc ${OSC_APIURL:+--apiurl=$OSC_APIURL} list $OSC_REPOSITORY >create-tlst-temp-osc-projects.lst rm -f create-tlst-temp-osc-projects.lst
for REPOSITORY in ${OSC_REPOSITORIES[@]} ; do
osc ${OSC_APIURL:+--apiurl=$OSC_APIURL} list $REPOSITORY >create-tlst-temp-osc-projects.lst
done
# branches tried for all apps: # branches tried for all apps:
KNOWN_BRANCHES="gnome-2-28" KNOWN_BRANCHES="gnome-2-30"
# branches tried apps with the same name base: # branches tried apps with the same name base:
APP_BRANCHES="|gimp-2-6|gtk-2-18|gtk-2-90|glib-2-22" # Do not forget hardcoded strings in the code below!
APP_BRANCHES="|gimp-2-6|gtk-2-20|gtk-2-90|glib-2-24"
# FIXME: support for libgda:release-3-0-branch gnome-background:gnome-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 echo "# This file was generated $(LANG=C LC_ALL=C date) by create-tlst-step2-create-gnome_gtp.sh." >upstream-gnome_gtp.tlst
@ -43,11 +47,16 @@ curl http://l10n.gnome.org/POT/ | sed -n 's:^.*href="\([^"]*\)/".*$:\1:p' | sed
for LBRANCH in $KNOWN_BRANCHES master ; do for LBRANCH in $KNOWN_BRANCHES master ; do
echo gconf gconf2 GConf2 $LBRANCH echo gconf gconf2 GConf2 $LBRANCH
done done
echo glib glib2 glib20 glib-2-24
echo glib glib2 glib20 master echo glib glib2 glib20 master
echo gtk+ gtk2 gtk20 gtk-2-18 echo gtk+ gtk2 gtk20 gtk-2-20
echo gtk+ gtk2 gtk20 gtk-2-22
echo gtk+ gtk2 gtk20 master echo gtk+ gtk2 gtk20 master
echo gtk+ gtk2 gtk20-properties gtk-2-18 echo gtk+ gtk2 gtk20-properties gtk-2-20
echo gtk+ gtk2 gtk20-properties gtk-2-22
echo gtk+ gtk2 gtk20-properties master echo gtk+ gtk2 gtk20-properties master
echo libgweather libgweather libgweather-locations gnome-2-30
echo libgweather libgweather libgweather-locations master
echo gnome-phone-manager phonemgr gnome-phone-manager master echo gnome-phone-manager phonemgr gnome-phone-manager master
echo network-manager-applet NetworkManager-gnome nm-applet master echo network-manager-applet NetworkManager-gnome nm-applet master
# For other versions than sles10: # For other versions than sles10:
@ -101,6 +110,9 @@ curl http://l10n.gnome.org/POT/ | sed -n 's:^.*href="\([^"]*\)/".*$:\1:p' | sed
gst-plugins-ugly-0.10 ) gst-plugins-ugly-0.10 )
PROJECT=gst-plugins-ugly PROJECT=gst-plugins-ugly
;; ;;
libgweather-locations )
PO_DIR=po-locations
;;
* ) * )
PO_DIR=po PO_DIR=po
;; ;;

View File

@ -2,5 +2,4 @@
gstreamer-0_10 gstreamer-0.10 cgit git://anongit.freedesktop.org/gstreamer/gstreamer gstreamer/po gstreamer-0_10 gstreamer-0.10 cgit git://anongit.freedesktop.org/gstreamer/gstreamer gstreamer/po
gstreamer-0_10-plugins-base gst-plugins-base-0.10 cgit git://anongit.freedesktop.org/gstreamer/gst-plugins-base gst-plugins-base/po gstreamer-0_10-plugins-base gst-plugins-base-0.10 cgit git://anongit.freedesktop.org/gstreamer/gst-plugins-base gst-plugins-base/po
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-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 shared-mime-info shared-mime-info cgit git://anongit.freedesktop.org/xdg/shared-mime-info po
gstreamer-0_10-plugins-ugly gst-plugins-ugly-0.10 cgit git://anongit.freedesktop.org/gstreamer/gst-plugins-ugly gst-plugins-ugly/po

10
lcn-sle.hook Normal file
View File

@ -0,0 +1,10 @@
#!/bin/bash
if test -z "$PACKAGE" ; then
echo "This is a hook file for upstream-collect.sh. It cannot be called separately."
exit 255
fi
# Hack for compiz that has a non-standard po location
if test $DOMAIN = compiz ; then
RPMPODIR=$(echo $RPMPKGDIR/BUILD/compiz/compiz-*/${DIR#*/})
fi

120
lcn-sle.tlst Normal file
View File

@ -0,0 +1,120 @@
# package domain method repository dir branch option
#DROPPED: CheckHardware CheckHardware lcn - CheckHardware/po SLE11
ConsoleKit ConsoleKit lcn - ConsoleKit/po SLE11
pam Linux-PAM lcn - Linux-PAM/po SLE11
NetworkManager NetworkManager lcn - NetworkManager/po SLE11
NetworkManager-novellvpn NetworkManager-novellvpn lcn - NetworkManager-novellvpn/po SLE11
NetworkManager-openvpn NetworkManager-openvpn lcn - NetworkManager-openvpn/po SLE11
NetworkManager-vpnc NetworkManager-vpnc lcn - NetworkManager-vpnc/po SLE11
PolicyKit-gnome PolicyKit-gnome lcn - PolicyKit-gnome/po SLE11
#NA: RELEASE-NOTES RELEASE-NOTES lcn - RELEASE-NOTES/po SLE11
#NA: SUSEgreeter SUSEgreeter lcn - SUSEgreeter/po SLE11
apparmor-parser apparmor-parser lcn - apparmor-parser/po SLE11
apparmor-utils apparmor-utils lcn - apparmor-utils/po SLE11
apparmorapplet-gnome apparmorapplet lcn - apparmorapplet/po SLE11
#MOVED: banshee banshee lcn - banshee/po SLE11
banshee-1 banshee-1 lcn - banshee-1/po SLE11
beagle beagle lcn - beagle/po SLE11
#NOTFOUND: bootloader bootloader lcn - bootloader/po SLE11
#NOTFOUND: community-repositories community-repositories lcn - community-repositories/po SLE11
compiz compiz lcn - compiz/po SLE11
#DROPPED: compiz xgl-settings lcn - xgl-settings/po SLE11
# STRANGE, moved:
gnome-control-center control-center2 lcn - control-center2/po SLE11
cracklib cracklib lcn - cracklib/po SLE11
cryptconfig cryptconfig lcn - cryptconfig/po SLE11
#YAST: dialogsolver dialogsolver lcn - dialogsolver/po SLE11
eiciel eiciel lcn - eiciel/po SLE11
evolution-webcal evolution-webcal lcn - evolution-webcal/po SLE11
f-spot f-spot lcn - f-spot/po SLE11
#NA: gnome-cups-manager gnome-cups-manager lcn - gnome-cups-manager/po SLE11
gnome-docker gnome-docker lcn - gnome-docker/po SLE11
gnome-main-menu gnome-main-menu lcn - gnome-main-menu/po SLE11
gnome-packagekit gnome-packagekit lcn - gnome-packagekit/po SLE11
gnome-panel gnome-panel lcn - gnome-panel/po SLE11
#TODO phase 2: gnome-patch-translation gnome-patch-translation lcn - gnome-patch-translation/po SLE11
gnome-power-manager gnome-power-manager lcn - gnome-power-manager/po SLE11
gnome-screensaver gnome-screensaver lcn - gnome-screensaver/po SLE11
gnome-session gnome-session lcn - gnome-session/po SLE11
gnome-terminal gnome-terminal lcn - gnome-terminal/po SLE11
gnome-utils gnome-utils-2.0 lcn - gnome-utils-2.0/po SLE11
#NA: html-help-boot html-help-boot lcn - html-help-boot/po SLE11
#NA: html-help-install html-help-install lcn - html-help-install/po SLE11
#MOVED?: NetworkManager-kde4 kcm_knetworkmanager lcn - kcm_knetworkmanager/po SLE11
#TODO: kde4-SLE kde4-SLE lcn - kde4-SLE/po SLE11
#TODO: kde4-openSUSE kde4-openSUSE lcn - kde4-openSUSE/po SLE11
#TODO: kde4-plasmoids kde4-plasmoids lcn - kde4-plasmoids/po SLE11
#TODO: kfiledialog kfiledialog lcn - kfiledialog/po SLE11
#TODO: kinternet kinternet lcn - kinternet/po SLE11
#TODO: kio_slp kio_slp lcn - kio_slp/po SLE11
#TODO: kio_sysinfo kio_sysinfo lcn - kio_sysinfo/po SLE11
#TODO: knetworkmanager knetworkmanager lcn - knetworkmanager/po SLE11
#TODO: kpowersave kpowersave lcn - kpowersave/po SLE11
krb5-ticket-watcher krb5-ticket-watcher lcn - krb5-ticket-watcher/po SLE11
#NA: krpmview krpmview lcn - krpmview/po SLE11
#NA: kryptomedia kryptomedia lcn - kryptomedia/po SLE11
#TODO: kupdateapplet kupdateapplet lcn - kupdateapplet/po SLE11
#TODO: kwin_SUSE2 kwin_SUSE2 lcn - kwin_SUSE2/po SLE11
libgnomedb libgnomedb-3 lcn - libgnomedb-3/po SLE11
libgnomesu libgnomesu-1.0 lcn - libgnomesu/po SLE11
libslab libslab lcn - libslab/po SLE11
#NA: libssui libssui lcn - libssui/po SLE11
limal limal lcn - limal/po SLE11
limal-apparmor-control limal-apparmor-control lcn - limal-apparmor-control/po SLE11
limal-ca-mgm limal-ca-mgm lcn - limal-ca-mgm/po SLE11
limal-nfs-server limal-nfs-server lcn - limal-nfs-server/po SLE11
limal-runlevel limal-runlevel lcn - limal-runlevel/po SLE11
linphone linphone lcn - linphone/po SLE11
linuxrc linuxrc lcn - linuxrc/po SLE11
login login lcn - login/po SLE11
nautilus-open-terminal nautilus-open-terminal lcn - nautilus-open-terminal/po SLE11
nautilus-sendto nautilus-sendto lcn - nautilus-sendto/po SLE11
nautilus-share nautilus-share lcn - nautilus-share/po SLE11
#TODO: ooo-build ooo-build lcn - ooo-build/po SLE11
#NA: opensuseupdater-gnome opensuseupdater-gnome lcn - opensuseupdater-gnome/po SLE11
pam-config pam-config lcn - pam-config/po SLE11
pam_krb5 pam_krb5 lcn - pam_krb5/po SLE11
#NA: pam_pwcheck pam_pwcheck lcn - pam_pwcheck/po SLE11
#NA: pam_unix2 pam_unix2 lcn - pam_unix2/po SLE11
#NA: pam_winbind pam_winbind lcn - pam_winbind/po SLE11
#TODO: patterns patterns lcn - patterns/po SLE11
#TODO: patterns-openSUSE patterns-openSUSE lcn - patterns-openSUSE/po SLE11
#TODO: patterns-sled patterns-sled lcn - patterns-sled/po SLE11
#TODO: patterns-sles patterns-sles lcn - patterns-sles/po SLE11
pidgin pidgin lcn - pidgin/po SLE11
pidgin-sipe pidgin-sipe lcn - pidgin-sipe/po SLE11
#TODO: plasma_applet_networkmanager plasma_applet_networkmanager lcn - plasma_applet_networkmanager/po SLE11
pm-profiler pm-profiler lcn - pm-profiler/po SLE11
#TODO: policykit-kde policykit-kde lcn - policykit-kde/po SLE11
#NA: power-management power-management lcn - power-management/po SLE11
#NA: profile_chooser profile_chooser lcn - profile_chooser/po SLE11
#TODO: release-notes-sled release-notes-sled lcn - release-notes-sled/po SLE11
#DROPPED: resapplet resapplet lcn - resapplet/po SLE11
#NA: rug rug lcn - rug/po SLE11
sabayon sabayon lcn - sabayon/po SLE11
#YAST: sax sax lcn - sax/po SLE11
#NA: scpm_cli scpm_cli lcn - scpm_cli/po SLE11
#NA: scpm_groups scpm_groups lcn - scpm_groups/po SLE11
#NA: scpm_lib scpm_lib lcn - scpm_lib/po SLE11
shared-mime-info shared-mime-info lcn - shared-mime-info/po SLE11
simple-ccsm-kde simple-ccsm-kde lcn - simple-ccsm-kde/po SLE11
#NA: slideshow slideshow lcn - slideshow/po SLE11
#NA: slideshow-sled slideshow-sled lcn - slideshow-sled/po SLE11
#NA: suseplugger suseplugger lcn - suseplugger/po SLE11
#NA: susetranslations susetranslations lcn - susetranslations/po SLE11
tomboy tomboy lcn - tomboy/po SLE11
tsclient tsclient lcn - tsclient/po SLE11
#TODO: update-desktop-files update-desktop-files lcn - update-desktop-files/po SLE11
#TODO: update-desktop-files-apps update-desktop-files-apps lcn - update-desktop-files-apps/po SLE11
#TODO: update-desktop-files-directories update-desktop-files-directories lcn - update-desktop-files-directories/po SLE11
#TODO: update-desktop-files-kde update-desktop-files-kde lcn - update-desktop-files-kde/po SLE11
#TODO: update-desktop-files-kde-services update-desktop-files-kde-services lcn - update-desktop-files-kde-services/po SLE11
#TODO: update-desktop-files-screensavers update-desktop-files-screensavers lcn - update-desktop-files-screensavers/po SLE11
#TODO: update-desktop-files-yast update-desktop-files-yast lcn - update-desktop-files-yast/po SLE11
vmx-manager vmx-manager lcn - vmx-manager/po SLE11
#NA: xen-vm-install xen-vm-install lcn - xen-vm-install/po SLE11
#NA: ximian-artwork ximian-artwork lcn - ximian-artwork/po SLE11
#NA: zen-updater zen-updater lcn - zen-updater/po SLE11
#NA: zmd zmd lcn - zmd/po SLE11
#NA: zypp zypp lcn - zypp/po SLE11
zypper zypper lcn - zypper/po SLE11

3
misc.tlst Normal file
View File

@ -0,0 +1,3 @@
# package domain method repository dir branch
pam Linux-PAM cvs pam.cvs.sourceforge.net:/cvsroot/pam Linux-PAM/po
pidgin pidgin tbz http://downloads.sourceforge.net/pidgin/pidgin-2.7.1.tar.bz2 pidgin-2.7.1/po

51
opensuse.tlst Normal file
View File

@ -0,0 +1,51 @@
# Created by: svn co https://svn.berlios.de/svnroot/repos/opensuse-i18n/trunk/lcn/ ; find lcn -name *.po | while read ; do PO=${REPLY%.??.po} PO=${PO%.??_??.po} ; PO=${PO##*/} ; echo $PO ; done | sort -u | while read ; do grep "[[:space:]]$REPLY[[:space:]]" lcn.tlst ; done | sed 's/[[:space:]]*SLE11.*//' >opensuse.tlst
# package domain method repository dir branch option
apparmorapplet-gnome apparmorapplet lcn - apparmorapplet/po
apparmor-parser apparmor-parser lcn - apparmor-parser/po
apparmor-utils apparmor-utils lcn - apparmor-utils/po
#NOTFOUND: bootloader bootloader lcn - bootloader/po
#NOTFOUND: community-repositories community-repositories lcn - community-repositories/po
cracklib cracklib lcn - cracklib/po
#YAST: dialogsolver dialogsolver lcn - dialogsolver/po
gnome-main-menu gnome-main-menu lcn - gnome-main-menu/po
gnome-packagekit gnome-packagekit lcn - gnome-packagekit/po
#TODO phase 2: gnome-patch-translation gnome-patch-translation lcn - gnome-patch-translation/po
#NA: html-help-boot html-help-boot lcn - html-help-boot/po
#NA: html-help-install html-help-install lcn - html-help-install/po
#TODO: kde4-openSUSE kde4-openSUSE lcn - kde4-openSUSE/po
#TODO: kfiledialog kfiledialog lcn - kfiledialog/po
#TODO: kinternet kinternet lcn - kinternet/po
#TODO: kio_sysinfo kio_sysinfo lcn - kio_sysinfo/po
krb5-ticket-watcher krb5-ticket-watcher lcn - krb5-ticket-watcher/po
#NA: krpmview krpmview lcn - krpmview/po
#TODO: kupdateapplet kupdateapplet lcn - kupdateapplet/po
libgnomesu libgnomesu-1.0 lcn - libgnomesu-1.0/po
limal limal lcn - limal/po
limal-apparmor-control limal-apparmor-control lcn - limal-apparmor-control/po
limal-ca-mgm limal-ca-mgm lcn - limal-ca-mgm/po
limal-nfs-server limal-nfs-server lcn - limal-nfs-server/po
limal-runlevel limal-runlevel lcn - limal-runlevel/po
linuxrc linuxrc lcn - linuxrc/po
login login lcn - login/po
#TODO: ooo-build ooo-build lcn - ooo-build/po
#NA: opensuseupdater-gnome opensuseupdater-gnome lcn - opensuseupdater-gnome/po
pam-config pam-config lcn - pam-config/po
pam_krb5 pam_krb5 lcn - pam_krb5/po
#NA: pam_pwcheck pam_pwcheck lcn - pam_pwcheck/po
#NA: pam_unix2 pam_unix2 lcn - pam_unix2/po
#TODO: patterns patterns lcn - patterns/po
#YAST: sax sax lcn - sax/po
simple-ccsm-kde simple-ccsm-kde lcn - simple-ccsm-kde/po
#NA: slideshow slideshow lcn - slideshow/po
#NA: SUSEgreeter SUSEgreeter lcn - SUSEgreeter/po
#NA: susetranslations susetranslations lcn - susetranslations/po
#TODO: update-desktop-files update-desktop-files lcn - update-desktop-files/po
#TODO: update-desktop-files-apps update-desktop-files-apps lcn - update-desktop-files-apps/po
#TODO: update-desktop-files-directories update-desktop-files-directories lcn - update-desktop-files-directories/po
#TODO: update-desktop-files-kde update-desktop-files-kde lcn - update-desktop-files-kde/po
#TODO: update-desktop-files-kde-services update-desktop-files-kde-services lcn - update-desktop-files-kde-services/po
#TODO: update-desktop-files-screensavers update-desktop-files-screensavers lcn - update-desktop-files-screensavers/po
#TODO: update-desktop-files-yast update-desktop-files-yast lcn - update-desktop-files-yast/po
#NA: xen-vm-install xen-vm-install lcn - xen-vm-install/po
#NA: zypp zypp lcn - zypp/po
zypper zypper lcn - zypper/po

View File

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

View File

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

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:16b7e841ceb73bd671ba310ecfaa91655945abb6ee245ad8af63ba08410a7af7
size 5804401

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Fri Jun 4 12:47:12 CEST 2010 - sbrabec@suse.cz
- Added the latest upstream and LCN strings.
- Ported fixes from SLE11-SP1:
* Added support for custom pot generator.
* Implemented suppport for LCN as a translation source.
* Implemented mandatory sources with absolute precedence.
* Symlinks to the new name: translation-update-tool.
* Updated translation sources.
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Feb 2 18:35:28 CET 2010 - sbrabec@suse.cz Tue Feb 2 18:35:28 CET 2010 - sbrabec@suse.cz

View File

@ -5,7 +5,7 @@ shopt -s nullglob
if test "$1" = "--help" ; then if test "$1" = "--help" ; then
echo "Upstream translation update tool works in top directory of unpacked source code." echo "Upstream translation update tool works in top directory of unpacked source code."
echo "Usage: $0 [translation_directory] [translation_domain]" echo "Usage: $0 [translation_directory] [translation_domain] [command to create pot file]"
fi fi
# Update all known mechanisms to add language: # Update all known mechanisms to add language:
@ -39,13 +39,18 @@ DOMAIN=$2
cd $DIR cd $DIR
if test -z "$DOMAIN" ; then if test -z "$3" ; then
intltool-update --pot if test -z "$DOMAIN" ; then
intltool-update --pot
else
intltool-update --gettext-package=$DOMAIN --pot
fi
else else
intltool-update --gettext-package=$DOMAIN --pot eval $3
fi fi
POT_NOT_UNIQUE=false POT_NOT_UNIQUE=false
MISSING=true
for POT in *.pot ; do for POT in *.pot ; do
if $POT_NOT_UNIQUE ; then if $POT_NOT_UNIQUE ; then
echo "ERROR: Directory $DIR contains more than one .pot file." echo "ERROR: Directory $DIR contains more than one .pot file."
@ -62,8 +67,8 @@ for POT in *.pot ; do
cp -a *.po $STRING_COLLECT_DIR/$DOMAIN cp -a *.po $STRING_COLLECT_DIR/$DOMAIN
else else
if test -d @DATADIR@/translation-update-upstream ; then if test -d @DATADIR@/translation-update-upstream ; then
if test -d @DATADIR@/translation-update-upstream/$DOMAIN ; then if test -d @DATADIR@/translation-update-upstream/po/$DOMAIN ; then
for PO_PATH in @DATADIR@/translation-update-upstream/$DOMAIN/*.po ; do for PO_PATH in @DATADIR@/translation-update-upstream/po/$DOMAIN/*.po ; do
PO=${PO_PATH##*/} PO=${PO_PATH##*/}
LNG=${PO%.po} LNG=${PO%.po}
if test -f $PO ; then if test -f $PO ; then
@ -87,7 +92,34 @@ for POT in *.pot ; do
linguas_update linguas_update
fi fi
done done
else MISSING=false
fi
if test -d @DATADIR@/translation-update-upstream/po-mandatory/$DOMAIN ; then
for PO_PATH in @DATADIR@/translation-update-upstream/po-mandatory/$DOMAIN/*.po ; do
PO=${PO_PATH##*/}
LNG=${PO%.po}
if test -f $PO ; then
echo "Updating $PO using translation-update-upstream mandatory source."
# PO_PATH is first: Update any string, even if it was already translated.
# Swap $PO_PATH and $PO to disable this behavior.
msgcat --use-first $PO_PATH $PO -o $PO.new
# Return .po file notes that are not present in the update file.
msgmerge --no-fuzzy-matching --compendium=$PO_PATH -o $PO.new2 $PO.new $POT
# And finally, synthesize header that not change every time.
if ! @LIBEXECDIR@/translation-update-upstream/msgheadermerge $PO $PO.new2 $PO.header --mergemode --continue ; then
echo "WARNING: Mandatory update of $PO for $DOMAIN is older than data in package or upstream snapshot. Using anyway!"
fi
msgcat --use-first $PO.header $PO.new2 -o $PO
rm $PO.new $PO.new2 $PO.header
else
echo "Adding $PO from translation-update-upstream mandatory source."
cp -a $PO_PATH $PO
linguas_update
fi
done
MISSING=false
fi
if $MISSING ; then
echo "WARNING: Missing $DOMAIN in translation-update-upstream configuration! No updates available." echo "WARNING: Missing $DOMAIN in translation-update-upstream configuration! No updates available."
fi fi
else else

View File

@ -1,5 +1,5 @@
# #
# spec file for package translation-update-upstream (Version 20100202) # spec file for package translation-update-upstream (Version 20100603)
# #
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
@ -21,9 +21,10 @@
Name: translation-update-upstream Name: translation-update-upstream
License: GPLv2+ License: GPLv2+
Group: System/Localization Group: System/Localization
Version: 20100202 Version: 20100603
Release: 1 Release: 1
Summary: Tool for Translation Update from Upstream Summary: Tool for Translation Update from Upstream
Provides: translation-update-tool
Source: %{name}-%{version}.tar.bz2 Source: %{name}-%{version}.tar.bz2
Source1: %{name}.in Source1: %{name}.in
Source2: %{name}-AUTHORS Source2: %{name}-AUTHORS
@ -35,6 +36,7 @@ Source7: msgheadermerge-compose
Source8: msgheadermerge-parse Source8: msgheadermerge-parse
Source9: msgheadermerge-empty.pot Source9: msgheadermerge-empty.pot
Source10: %{name}-embedded-README Source10: %{name}-embedded-README
Source11: translation-update-mandatory-%{version}.tar.bz2
Patch: %{name}-embedded.patch Patch: %{name}-embedded.patch
# Files below are package maintainer tools, not used for package build: # Files below are package maintainer tools, not used for package build:
Source50: upstream-collect.sh Source50: upstream-collect.sh
@ -46,7 +48,11 @@ Source55: create-tlst.conf
# Configuration files for package maintainer tools: # Configuration files for package maintainer tools:
Source60: upstream-gnome_gtp.tlst Source60: upstream-gnome_gtp.tlst
Source61: upstream-gnome_gtp.hook Source61: upstream-gnome_gtp.hook
Source62: upstream-gnome-generic.tlst Source62: freedesktop_org.tlst
Source63: lcn-sle.tlst
Source64: lcn-sle.hook
Source65: misc.tlst
Source66: opensuse.tlst
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: coreutils gettext-tools grep intltool sed Requires: coreutils gettext-tools grep intltool sed
BuildArch: noarch BuildArch: noarch
@ -69,7 +75,7 @@ Authors:
Stanislav Brabec <sbrabec@suse.cz> Stanislav Brabec <sbrabec@suse.cz>
%prep %prep
%setup -q -a0 -c %{name}-%{version} %setup -q -a0 -a11 -c %{name}-%{version}
cp -a %{S:1} translation-update-upstream.in cp -a %{S:1} translation-update-upstream.in
cp -a %{S:2} AUTHORS cp -a %{S:2} AUTHORS
cp -a %{S:3} COPYING cp -a %{S:3} COPYING
@ -85,12 +91,17 @@ chmod +x translation-update-upstream-embedded.sh
%build %build
%install %install
mkdir -p $RPM_BUILD_ROOT%{_datadir} $RPM_BUILD_ROOT%{_prefix}/lib/translation-update-upstream mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name} $RPM_BUILD_ROOT%{_prefix}/lib/translation-update-upstream
cp -a po $RPM_BUILD_ROOT%{_datadir}/%{name} cp -a po po-mandatory $RPM_BUILD_ROOT%{_datadir}/%{name}
install -d $RPM_BUILD_ROOT%{_bindir} install -d $RPM_BUILD_ROOT%{_bindir}
install translation-update-upstream $RPM_BUILD_ROOT%{_bindir}/ install translation-update-upstream $RPM_BUILD_ROOT%{_bindir}/
install -m0755 msgheadermerge msgheadermerge-compose msgheadermerge-parse $RPM_BUILD_ROOT%{_prefix}/lib/translation-update-upstream/ install -m0755 msgheadermerge msgheadermerge-compose msgheadermerge-parse $RPM_BUILD_ROOT%{_prefix}/lib/translation-update-upstream/
install -m0644 msgheadermerge-empty.pot $RPM_BUILD_ROOT%{_prefix}/lib/translation-update-upstream/ install -m0644 msgheadermerge-empty.pot $RPM_BUILD_ROOT%{_prefix}/lib/translation-update-upstream/
ln -s translation-update-upstream $RPM_BUILD_ROOT%{_bindir}/translation-update-tool
#
# gnome-i18n says nds_FME is wrong, remove until upstream clearified that
#
rm -fv $RPM_BUILD_ROOT%{_datadir}/%{name}/po/*/nds?NFE.po
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT

View File

@ -1,8 +1,8 @@
# upstream-collect.conf: Configuration for updating of translation-update-upstream package. # upstream-collect.conf: Configuration for updating of translation-update-upstream package.
# #
# osc repository with packages # osc repositories with packages (space separated list in parentheses, first takes precedence)
OSC_REPOSITORY=openSUSE:Factory OSC_REPOSITORIES=( openSUSE:Factory )
# osc server, empty for using of the osc default # osc server, empty for using of the osc default
OSC_APIURL= OSC_APIURL=

View File

@ -60,11 +60,7 @@ mkdir -p ~/.upstream-collect.tmp
cat >~/.upstream-collect.tmp/translation-update-upstream <<EOF cat >~/.upstream-collect.tmp/translation-update-upstream <<EOF
#!/bin/sh #!/bin/sh
echo "Dummy translation-update-upstream for upstream-collect.sh. Skipping merge of old translations." echo "Dummy translation-update-upstream for upstream-collect.sh. Skipping merge of old translations."
if test -z "\$1" ; then echo \${3:-intltool-update --gettext-package=\${2:-\$T_U_U_DOMAIN} --pot} >\${1:-po}/.translation-update-upstream-implemented
touch po/.translation-update-upstream-implemented
else
touch "\$1"/.translation-update-upstream-implemented
fi
EOF EOF
chmod +x ~/.upstream-collect.tmp/translation-update-upstream chmod +x ~/.upstream-collect.tmp/translation-update-upstream
@ -116,7 +112,7 @@ SERIAL=0
for TLST in *.tlst ; do for TLST in *.tlst ; do
exec <$WORK_DIR/$TLST exec <$WORK_DIR/$TLST
while read PACKAGE DOMAIN METHOD REPO DIR BRANCH ; do while read PACKAGE DOMAIN METHOD REPO DIR BRANCH MANDATORY ; do
# Continue for empty lines and comments # Continue for empty lines and comments
if test "${PACKAGE###}" != "$PACKAGE" ; then if test "${PACKAGE###}" != "$PACKAGE" ; then
@ -125,9 +121,14 @@ for TLST in *.tlst ; do
if test -z "$PACKAGE" ; then if test -z "$PACKAGE" ; then
continue continue
fi fi
if test "$MANDATORY" = "mandatory" ; then
MANDATORY=true
else
MANDATORY=false
fi
echo echo
echo "$(tput setf 3)Processing: package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:-(default)}$(tput init)" echo "$(tput setf 3)Processing: package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:-(default)} mandatory=$MANDATORY$(tput init)"
# NOTE: Force a limitation: tlst rules for one package must be placed on contiguous line sequence # NOTE: Force a limitation: tlst rules for one package must be placed on contiguous line sequence
if ! $DEBUG ; then if ! $DEBUG ; then
@ -195,7 +196,7 @@ for TLST in *.tlst ; do
fi fi
RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$PACKAGE) RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$PACKAGE)
cd $RPMPKGDIR cd $RPMPKGDIR
rpmprep $PACKAGE.spec T_U_U_DOMAIN=$DOMAIN rpmprep $PACKAGE.spec
else else
# During processing, builddir may contain incomplete po files: # During processing, builddir may contain incomplete po files:
rm $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok rm $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok
@ -208,18 +209,28 @@ for TLST in *.tlst ; do
fi fi
cd $RPMPODIR cd $RPMPODIR
if ! test -f .translation-update-upstream-implemented ; then if test -f .translation-update-upstream-implemented ; then
echo "$RPMPODIR: Missing or incorrect translation-update-upstream in the spec file." if bash ./.translation-update-upstream-implemented ; then
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
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/ cp -a $DOMAIN.pot $WORK_DIR/pot/
else 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" # translation-update-upstream is implemented but fails:
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)}: pot file 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)}: pot file update error, no way to update"
mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__}
continue
fi
fi
else
echo "$RPMPODIR: Missing or incorrect translation-update-upstream in the spec file."
# translation-update-upstream is implemented, try the default:
if intltool-update --gettext-package=$DOMAIN --pot ; then
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"
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)}: packaging error, package does not call translation-update-upstream properly and intltool-update fails, no way to update"
mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__} mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__}
continue continue
fi fi
@ -290,6 +301,7 @@ for TLST in *.tlst ; do
gimp20-tips ) GTP_NAME_BASE=gimp-tips ;; gimp20-tips ) GTP_NAME_BASE=gimp-tips ;;
gnumeric-functions ) GTP_NAME_BASE=gnumeric-functions ;; gnumeric-functions ) GTP_NAME_BASE=gnumeric-functions ;;
gtk20-properties ) GTP_NAME_BASE=gtk+-properties ;; gtk20-properties ) GTP_NAME_BASE=gtk+-properties ;;
libgweather-locations ) GTP_NAME_BASE=locations ;;
esac esac
curl http://$REPO/${REPODIR%%/*}.${BRANCH:-master}/ | sed -n 's:^.*href="\([^"]*\.po\)".*$:\1:p' | curl http://$REPO/${REPODIR%%/*}.${BRANCH:-master}/ | sed -n 's:^.*href="\([^"]*\.po\)".*$:\1:p' |
while read ; do while read ; do
@ -311,6 +323,30 @@ for TLST in *.tlst ; do
tar -zxf ${REPO##*/} tar -zxf ${REPO##*/}
cd $REPODIR cd $REPODIR
;; ;;
lcn )
if ! test -d $WORK_DIR/LCN-${BRANCH:-trunk} ; then
mkdir $WORK_DIR/LCN-${BRANCH:-trunk}
cd $WORK_DIR/LCN-${BRANCH:-trunk}
if test "${BRANCH:-trunk}" = "trunk" ; then
BRANCH_PATH="${BRANCH:-trunk}"
else
BRANCH_PATH="branches/$BRANCH"
fi
svn co https://svn.berlios.de/svnroot/repos/opensuse-i18n/$BRANCH_PATH/lcn
for PO in lcn/*/po/*.po ; do
LCN_LANG=${PO%/*}
LCN_LANG=${LCN_LANG#lcn/}
LCN_LANG=${LCN_LANG%%/*}
LCN_DOMAIN=${PO##*/}
LCN_DOMAIN=${LCN_DOMAIN%.$LCN_LANG.po}
mkdir -p data/$LCN_DOMAIN
ln $PO data/$LCN_DOMAIN/$LCN_LANG.po
done
cd -
fi
cp -a $WORK_DIR/LCN-${BRANCH:-trunk}/data/${REPODIR%/po} .
cd ${REPODIR%/po}
;;
* ) * )
echo "$PACKAGE: Unknown update method $METHOD" echo "$PACKAGE: Unknown update method $METHOD"
exit 1 exit 1
@ -337,101 +373,118 @@ for TLST in *.tlst ; do
# foo-updates.po: fixes + additions in a single file, clean form with an useful header (this file will be copied to UPDATE/) # 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 for PO in *.po ; do
# step 0: Merge new po file into old project. Removes unused (too new) translations. if $MANDATORY ; then
if ! msgmerge --no-fuzzy-matching $PO $RPMPODIR/$DOMAIN.pot -o ${PO%.po}-backport.po ; then # Mandatory sources: copy the whole source to the mandatory po directory. Strings must not be skipped.
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgmerge error" mkdir -p $WORK_DIR/UPDATE/po-mandatory/$DOMAIN
continue if test -f $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO ; then
fi msgcat --use-first $PO $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO -o $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO~
if test -f $RPMPODIR/$PO ; then mv $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO~ $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO
# 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 upstream po and previous upstream updates to RPM po (if any).
OLD_UPDATE=false
if test -f $WORK_DIR/UPDATE/po/$DOMAIN/$PO ; then
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 else
cp -a ${PO%.po}-backport.po ${PO%.po}-upstream.po msgcat $PO -o $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO
fi
# step 3: Join both translations, without --use-first string changes will disappear as fuzzy.
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}-downstream.po ${PO%.po}-all.po -o ${PO%.po}-additions.po
# step 6: Join both to collect all known fixes.
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}-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 fi
else else
# If backport was empty, no file was generated. # step 0: Merge new po file into old project. Removes unused (too new) translations.
if test -f ${PO%.po}-backport.po ; then if ! msgmerge --no-fuzzy-matching $PO $RPMPODIR/$DOMAIN.pot -o ${PO%.po}-backport.po ; then
# step 1: Merge new po and previous updates (if any). echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgmerge error"
sed -i '/#~/d' ${PO%.po}-backport.po continue
if test -f ${PO%.po}-updates.po ; then fi
msgcat --force-po --use-first ${PO%.po}-backport.po $RPMPODIR/${PO%.po}-updates.po -o ${PO%.po}-updates.po~ if test -f $RPMPODIR/$PO ; then
mv ${PO%.po}-updates.po~ ${PO%.po}-updates.po # step 1: Clean the RPM po file to be safe.
else if ! msgmerge --no-fuzzy-matching $RPMPODIR/$PO $RPMPODIR/$DOMAIN.pot -o $RPMPODIR/${PO%.po}-downstream.po ; then
# To get surely a valid po file, use msgcat instead of cp. echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN repository=$REPO directory=$RPMPODIR branch=${BRANCH:(default)} po=$PO: package msgmerge error"
msgcat ${PO%.po}-backport.po -o ${PO%.po}-updates.po # Failed initial msgmerge is fatal. There is no way to update. Build may fail.
continue
fi
# Do the magic:
# 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
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 repository=$REPO directory=$RPMPODIR branch=${BRANCH:(default)} 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}-upstream.po
fi
# step 3: Join both translations, without --use-first string changes will disappear as fuzzy.
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}-downstream.po ${PO%.po}-all.po -o ${PO%.po}-additions.po
# step 6: Join both to collect all known fixes.
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}-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
# 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 $RPMPODIR/${PO%.po}-updates.po ; then
if ! msgcat --force-po --use-first ${PO%.po}-backport.po $RPMPODIR/${PO%.po}-updates.po -o $RPMPODIR/${PO%.po}-updates.po~ ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgcat error"
continue
fi
mv $RPMPODIR/${PO%.po}-updates.po~ $RPMPODIR/${PO%.po}-updates.po
else
# To get surely a valid po file, use msgcat instead of cp.
if ! msgcat ${PO%.po}-backport.po -o $RPMPODIR/${PO%.po}-updates.po ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgcat error"
continue
fi
fi
# step 2: Prepare texts for review.
mkdir -p $WORK_DIR/po-review/${PO%.po}/new-files
cp -a $RPMPODIR/${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
# 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
fi fi
done done
@ -461,7 +514,12 @@ if ! $DEBUG ; then
fi fi
cd $WORK_DIR/UPDATE cd $WORK_DIR/UPDATE
tar -j -c -f $WORK_DIR/translation-update-upstream-$SNAPSHOT.tar.bz2 po if test -d po ; then
tar -j -c -f $WORK_DIR/translation-update-upstream-$SNAPSHOT.tar.bz2 po
fi
if test -d po-mandatory ; then
tar -j -c -f $WORK_DIR/translation-update-mandatory-$SNAPSHOT.tar.bz2 po-mandatory
fi
cd $WORK_DIR cd $WORK_DIR
if ! $DEBUG ; then if ! $DEBUG ; then

View File

@ -1,77 +1,80 @@
# Manually added new items on Fri Jan 8 17:31:43 CET 2010. # This file was generated Tue Jun 1 18:22:42 CEST 2010 by create-tlst-step2-create-gnome_gtp.sh.
# 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 # package domain method repository dir branch
NetworkManager NetworkManager gtp l10n.gnome.org/POT NetworkManager/po NetworkManager NetworkManager gtp l10n.gnome.org/POT NetworkManager/po
NetworkManager-gnome nm-applet gtp l10n.gnome.org/POT network-manager-applet/po NetworkManager-gnome nm-applet gtp l10n.gnome.org/POT network-manager-applet/po
PackageKit PackageKit gtp l10n.gnome.org/POT packagekit/po PackageKit PackageKit gtp l10n.gnome.org/POT packagekit/po
PolicyKit-gnome PolicyKit-gnome gtp l10n.gnome.org/POT PolicyKit-gnome/po PolicyKit-gnome PolicyKit-gnome gtp l10n.gnome.org/POT PolicyKit-gnome/po
accerciser accerciser gtp l10n.gnome.org/POT accerciser/po gnome-2-30
accerciser accerciser gtp l10n.gnome.org/POT accerciser/po accerciser accerciser gtp l10n.gnome.org/POT accerciser/po
alacarte alacarte gtp l10n.gnome.org/POT alacarte/po gnome-2-28
alacarte alacarte gtp l10n.gnome.org/POT alacarte/po alacarte alacarte gtp l10n.gnome.org/POT alacarte/po
anjuta anjuta gtp l10n.gnome.org/POT anjuta/po gnome-2-28 anjuta anjuta gtp l10n.gnome.org/POT anjuta/po gnome-2-30
anjuta anjuta gtp l10n.gnome.org/POT anjuta/po anjuta anjuta gtp l10n.gnome.org/POT anjuta/po
at-spi at-spi gtp l10n.gnome.org/POT at-spi/po gnome-2-28 anjuta-extras anjuta-extras gtp l10n.gnome.org/POT anjuta-extras/po
at-spi at-spi gtp l10n.gnome.org/POT at-spi/po gnome-2-30
at-spi at-spi gtp l10n.gnome.org/POT at-spi/po at-spi at-spi gtp l10n.gnome.org/POT at-spi/po
atk atk10 gtp l10n.gnome.org/POT atk/po gnome-2-28 atk atk10 gtp l10n.gnome.org/POT atk/po gnome-2-30
atk atk10 gtp l10n.gnome.org/POT atk/po atk atk10 gtp l10n.gnome.org/POT atk/po
avahi avahi gtp l10n.gnome.org/POT avahi/po avahi avahi gtp l10n.gnome.org/POT avahi/po
balsa balsa gtp l10n.gnome.org/POT balsa/po balsa balsa gtp l10n.gnome.org/POT balsa/po
banshee-1 banshee-1 gtp l10n.gnome.org/POT banshee/po banshee-1 banshee-1 gtp l10n.gnome.org/POT banshee/po
beagle beagle gtp l10n.gnome.org/POT beagle/po beagle beagle gtp l10n.gnome.org/POT beagle/po
brasero brasero gtp l10n.gnome.org/POT brasero/po gnome-2-28 brasero brasero gtp l10n.gnome.org/POT brasero/po gnome-2-30
brasero brasero gtp l10n.gnome.org/POT brasero/po brasero brasero gtp l10n.gnome.org/POT brasero/po
bug-buddy bug-buddy gtp l10n.gnome.org/POT bug-buddy/po gnome-2-28
bug-buddy bug-buddy gtp l10n.gnome.org/POT bug-buddy/po bug-buddy bug-buddy gtp l10n.gnome.org/POT bug-buddy/po
cheese cheese gtp l10n.gnome.org/POT cheese/po gnome-2-28 byzanz byzanz gtp l10n.gnome.org/POT byzanz/po
cheese cheese gtp l10n.gnome.org/POT cheese/po cheese cheese gtp l10n.gnome.org/POT cheese/po
conduit conduit gtp l10n.gnome.org/POT conduit/po conduit conduit gtp l10n.gnome.org/POT conduit/po
# broken: conglomerate conglomerate gtp l10n.gnome.org/POT conglomerate/po
#conglomerate conglomerate gtp l10n.gnome.org/POT conglomerate/po
contact-lookup-applet contact-lookup-applet gtp l10n.gnome.org/POT contact-lookup-applet/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 gnome-2-30
dasher dasher gtp l10n.gnome.org/POT dasher/po dasher dasher gtp l10n.gnome.org/POT dasher/po
deskbar-applet deskbar-applet gtp l10n.gnome.org/POT deskbar-applet/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
devhelp devhelp gtp l10n.gnome.org/POT devhelp/po devhelp devhelp gtp l10n.gnome.org/POT devhelp/po
devilspie devilspie gtp l10n.gnome.org/POT devilspie/po devilspie devilspie gtp l10n.gnome.org/POT devilspie/po
dia dia gtp l10n.gnome.org/POT dia/po dia dia gtp l10n.gnome.org/POT dia/po
ekiga ekiga gtp l10n.gnome.org/POT ekiga/po ekiga ekiga gtp l10n.gnome.org/POT ekiga/po
empathy empathy gtp l10n.gnome.org/POT empathy/po gnome-2-28 empathy empathy gtp l10n.gnome.org/POT empathy/po gnome-2-30
empathy empathy gtp l10n.gnome.org/POT empathy/po empathy empathy gtp l10n.gnome.org/POT empathy/po
eog eog gtp l10n.gnome.org/POT eog/po gnome-2-28 eog eog gtp l10n.gnome.org/POT eog/po gnome-2-30
eog eog gtp l10n.gnome.org/POT eog/po eog eog gtp l10n.gnome.org/POT eog/po
epiphany epiphany gtp l10n.gnome.org/POT epiphany/po gnome-2-28 eog-plugins eog-plugins gtp l10n.gnome.org/POT eog-plugins/po
epiphany epiphany gtp l10n.gnome.org/POT epiphany/po gnome-2-30
epiphany epiphany gtp l10n.gnome.org/POT epiphany/po epiphany epiphany gtp l10n.gnome.org/POT epiphany/po
epiphany-extensions epiphany-extensions-2.28 gtp l10n.gnome.org/POT epiphany-extensions/po gnome-2-28 epiphany-extensions epiphany-extensions-2.29 gtp l10n.gnome.org/POT epiphany-extensions/po
epiphany-extensions epiphany-extensions-2.28 gtp l10n.gnome.org/POT epiphany-extensions/po # Two lines added manually:
evince evince gtp l10n.gnome.org/POT evince/po gnome-2-28 epiphany-extensions epiphany-extensions-2.30 gtp l10n.gnome.org/POT epiphany-extensions/po gnome-2-30
epiphany-extensions epiphany-extensions-2.30 gtp l10n.gnome.org/POT epiphany-extensions/po
evince evince gtp l10n.gnome.org/POT evince/po gnome-2-30
evince evince gtp l10n.gnome.org/POT evince/po evince evince gtp l10n.gnome.org/POT evince/po
evolution evolution-2.28 gtp l10n.gnome.org/POT evolution/po gnome-2-28 evolution evolution-2.30 gtp l10n.gnome.org/POT evolution/po gnome-2-30
evolution evolution-2.28 gtp l10n.gnome.org/POT evolution/po evolution evolution-2.30 gtp l10n.gnome.org/POT evolution/po
evolution-data-server evolution-data-server-2.28 gtp l10n.gnome.org/POT evolution-data-server/po gnome-2-28 evolution-data-server evolution-data-server-2.30 gtp l10n.gnome.org/POT evolution-data-server/po gnome-2-30
evolution-data-server evolution-data-server-2.28 gtp l10n.gnome.org/POT evolution-data-server/po evolution-data-server evolution-data-server-2.30 gtp l10n.gnome.org/POT evolution-data-server/po
evolution-exchange evolution-exchange-2.28 gtp l10n.gnome.org/POT evolution-exchange/po gnome-2-28 evolution-exchange evolution-exchange-2.30 gtp l10n.gnome.org/POT evolution-exchange/po gnome-2-30
evolution-exchange evolution-exchange-2.28 gtp l10n.gnome.org/POT evolution-exchange/po evolution-exchange evolution-exchange-2.30 gtp l10n.gnome.org/POT evolution-exchange/po
evolution-webcal evolution-webcal gtp l10n.gnome.org/POT evolution-webcal/po gnome-2-30
evolution-webcal evolution-webcal gtp l10n.gnome.org/POT evolution-webcal/po evolution-webcal evolution-webcal gtp l10n.gnome.org/POT evolution-webcal/po
f-spot f-spot gtp l10n.gnome.org/POT f-spot/po f-spot f-spot gtp l10n.gnome.org/POT f-spot/po
file-roller file-roller gtp l10n.gnome.org/POT file-roller/po gnome-2-28 file-roller file-roller gtp l10n.gnome.org/POT file-roller/po gnome-2-30
file-roller file-roller gtp l10n.gnome.org/POT file-roller/po file-roller file-roller gtp l10n.gnome.org/POT file-roller/po
gDesklets gdesklets gtp l10n.gnome.org/POT gdesklets/po gDesklets gdesklets gtp l10n.gnome.org/POT gdesklets/po
gbrainy gbrainy gtp l10n.gnome.org/POT gbrainy/po gbrainy gbrainy gtp l10n.gnome.org/POT gbrainy/po
gcalctool gcalctool gtp l10n.gnome.org/POT gcalctool/po gnome-2-28 gcalctool gcalctool gtp l10n.gnome.org/POT gcalctool/po gnome-2-30
gcalctool gcalctool gtp l10n.gnome.org/POT gcalctool/po gcalctool gcalctool gtp l10n.gnome.org/POT gcalctool/po
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 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 gnome-2-30
gconf2 GConf2 gtp l10n.gnome.org/POT gconf/po 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 gnome-2-30
gdl gdl-1 gtp l10n.gnome.org/POT gdl/po gdl gdl-1 gtp l10n.gnome.org/POT gdl/po
gdm gdm gtp l10n.gnome.org/POT gdm/po gnome-2-28 gdm gdm gtp l10n.gnome.org/POT gdm/po gnome-2-30
gdm gdm gtp l10n.gnome.org/POT gdm/po gdm gdm gtp l10n.gnome.org/POT gdm/po
gedit gedit gtp l10n.gnome.org/POT gedit/po gnome-2-28 gedit gedit gtp l10n.gnome.org/POT gedit/po gnome-2-30
gedit gedit gtp l10n.gnome.org/POT gedit/po gedit gedit gtp l10n.gnome.org/POT gedit/po
gftp gftp gtp l10n.gnome.org/POT gftp/po gedit-plugins gedit-plugins gtp l10n.gnome.org/POT gedit-plugins/po gnome-2-30
gedit-plugins gedit-plugins gtp l10n.gnome.org/POT gedit-plugins/po
genius genius gtp l10n.gnome.org/POT genius/po
ghex ghex-2.0 gtp l10n.gnome.org/POT ghex/po ghex ghex-2.0 gtp l10n.gnome.org/POT ghex/po
giggle giggle gtp l10n.gnome.org/POT giggle/po
gimp gimp20 gtp l10n.gnome.org/POT gimp/po gimp-2-6 gimp gimp20 gtp l10n.gnome.org/POT gimp/po gimp-2-6
gimp gimp20 gtp l10n.gnome.org/POT gimp/po gimp gimp20 gtp l10n.gnome.org/POT gimp/po
gimp gimp20-libgimp gtp l10n.gnome.org/POT gimp/po-libgimp gimp-2-6 gimp gimp20-libgimp gtp l10n.gnome.org/POT gimp/po-libgimp gimp-2-6
@ -85,63 +88,62 @@ gimp gimp20-std-plug-ins gtp l10n.gnome.org/POT
gimp gimp20-tips gtp l10n.gnome.org/POT gimp/po-tips gimp-2-6 gimp gimp20-tips gtp l10n.gnome.org/POT gimp/po-tips gimp-2-6
gimp gimp20-tips gtp l10n.gnome.org/POT gimp/po-tips gimp gimp20-tips gtp l10n.gnome.org/POT gimp/po-tips
gimp-gap gimp20-gap gtp l10n.gnome.org/POT gimp-gap/po gimp-gap gimp20-gap gtp l10n.gnome.org/POT gimp-gap/po
gitg gitg gtp l10n.gnome.org/POT gitg/po
glabels glabels gtp l10n.gnome.org/POT glabels/po glabels glabels gtp l10n.gnome.org/POT glabels/po
glade3 glade3 gtp l10n.gnome.org/POT glade3/po gnome-2-28
glade3 glade3 gtp l10n.gnome.org/POT glade3/po glade3 glade3 gtp l10n.gnome.org/POT glade3/po
glib2 glib20 gtp l10n.gnome.org/POT glib/po glib-2-24
glib2 glib20 gtp l10n.gnome.org/POT glib/po glib2 glib20 gtp l10n.gnome.org/POT glib/po
gnome-applets gnome-applets-2.0 gtp l10n.gnome.org/POT gnome-applets/po gnome-2-28 gnome-applets gnome-applets-2.0 gtp l10n.gnome.org/POT gnome-applets/po gnome-2-30
gnome-applets gnome-applets-2.0 gtp l10n.gnome.org/POT gnome-applets/po gnome-applets gnome-applets-2.0 gtp l10n.gnome.org/POT gnome-applets/po
gnome-backgrounds gnome-backgrounds gtp l10n.gnome.org/POT gnome-backgrounds/po gnome-backgrounds gnome-backgrounds gtp l10n.gnome.org/POT gnome-backgrounds/po
gnome-blog gnome-blog gtp l10n.gnome.org/POT gnome-blog/po gnome-blog gnome-blog gtp l10n.gnome.org/POT gnome-blog/po
gnome-bluetooth gnome-bluetooth2 gtp l10n.gnome.org/POT gnome-bluetooth/po gnome-2-28 gnome-bluetooth gnome-bluetooth2 gtp l10n.gnome.org/POT gnome-bluetooth/po gnome-2-30
gnome-bluetooth gnome-bluetooth2 gtp l10n.gnome.org/POT gnome-bluetooth/po gnome-bluetooth gnome-bluetooth2 gtp l10n.gnome.org/POT gnome-bluetooth/po
gnome-color-manager gnome-color-manager gtp l10n.gnome.org/POT gnome-color-manager/po
gnome-commander gnome-commander gtp l10n.gnome.org/POT gnome-commander/po 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-2-30
gnome-control-center gnome-control-center-2.0 gtp l10n.gnome.org/POT gnome-control-center/po 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-2-30
gnome-desktop gnome-desktop-2.0 gtp l10n.gnome.org/POT gnome-desktop/po 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-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-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 gnome-2-30
gnome-mag gnome-mag gtp l10n.gnome.org/POT gnome-mag/po gnome-mag gnome-mag gtp l10n.gnome.org/POT gnome-mag/po
gnome-main-menu gnome-main-menu gtp l10n.gnome.org/POT gnome-main-menu/po gnome-main-menu gnome-main-menu gtp l10n.gnome.org/POT gnome-main-menu/po
gnome-media gnome-media-2.0 gtp l10n.gnome.org/POT gnome-media/po gnome-2-30
gnome-media gnome-media-2.0 gtp l10n.gnome.org/POT gnome-media/po gnome-media gnome-media-2.0 gtp l10n.gnome.org/POT gnome-media/po
gnome-menus gnome-menus gtp l10n.gnome.org/POT gnome-menus/po gnome-menus gnome-menus gtp l10n.gnome.org/POT gnome-menus/po
gnome-mount gnome-mount gtp l10n.gnome.org/POT gnome-mount/po
gnome-netstatus gnome-netstatus gtp l10n.gnome.org/POT gnome-netstatus/po gnome-netstatus gnome-netstatus gtp l10n.gnome.org/POT gnome-netstatus/po
gnome-nettool gnome-nettool gtp l10n.gnome.org/POT gnome-nettool/po gnome-nettool gnome-nettool gtp l10n.gnome.org/POT gnome-nettool/po
gnome-packagekit gnome-packagekit gtp l10n.gnome.org/POT gnome-packagekit/po gnome-2-30
gnome-packagekit gnome-packagekit gtp l10n.gnome.org/POT gnome-packagekit/po gnome-packagekit gnome-packagekit gtp l10n.gnome.org/POT gnome-packagekit/po
gnome-panel gnome-panel-2.0 gtp l10n.gnome.org/POT gnome-panel/po gnome-panel gnome-panel-2.0 gtp l10n.gnome.org/POT gnome-panel/po
gnome-pilot gnome-pilot gtp l10n.gnome.org/POT gnome-pilot/po gnome-pilot gnome-pilot gtp l10n.gnome.org/POT gnome-pilot/po
gnome-pilot-conduits gnome-pilot-conduits gtp l10n.gnome.org/POT gnome-pilot-conduits/po 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-2-30
gnome-power-manager gnome-power-manager gtp l10n.gnome.org/POT gnome-power-manager/po 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-2-30
gnome-screensaver gnome-screensaver gtp l10n.gnome.org/POT gnome-screensaver/po 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-2-30
gnome-session gnome-session-2.0 gtp l10n.gnome.org/POT gnome-session/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-2-30
gnome-settings-daemon gnome-settings-daemon gtp l10n.gnome.org/POT gnome-settings-daemon/po 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-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 gnome-system-monitor gnome-system-monitor gtp l10n.gnome.org/POT gnome-system-monitor/po
gnome-terminal gnome-terminal gtp l10n.gnome.org/POT gnome-terminal/po gnome-2-28 gnome-terminal gnome-terminal gtp l10n.gnome.org/POT gnome-terminal/po gnome-2-30
gnome-terminal gnome-terminal gtp l10n.gnome.org/POT gnome-terminal/po gnome-terminal gnome-terminal gtp l10n.gnome.org/POT gnome-terminal/po
gnome-themes gnome-themes gtp l10n.gnome.org/POT gnome-themes/po gnome-2-28 gnome-themes gnome-themes gtp l10n.gnome.org/POT gnome-themes/po gnome-2-30
gnome-themes gnome-themes gtp l10n.gnome.org/POT gnome-themes/po gnome-themes gnome-themes gtp l10n.gnome.org/POT gnome-themes/po
gnome-themes-extras gnome-themes-extras gtp l10n.gnome.org/POT gnome-themes-extras/po gnome-themes-extras gnome-themes-extras gtp l10n.gnome.org/POT gnome-themes-extras/po
gnome-user-share gnome-user-share gtp l10n.gnome.org/POT gnome-user-share/po gnome-2-28
gnome-user-share gnome-user-share gtp l10n.gnome.org/POT gnome-user-share/po gnome-user-share gnome-user-share gtp l10n.gnome.org/POT gnome-user-share/po
gnome-utils gnome-utils-2.0 gtp l10n.gnome.org/POT gnome-utils/po gnome-2-28 gnome-utils gnome-utils-2.0 gtp l10n.gnome.org/POT gnome-utils/po gnome-2-30
gnome-utils gnome-utils-2.0 gtp l10n.gnome.org/POT gnome-utils/po gnome-utils gnome-utils-2.0 gtp l10n.gnome.org/POT gnome-utils/po
gnome-web-photo gnome-web-photo gtp l10n.gnome.org/POT gnome-web-photo/po gnome-web-photo gnome-web-photo gtp l10n.gnome.org/POT gnome-web-photo/po
gnomeicu gnomeicu gtp l10n.gnome.org/POT gnomeicu/po gnomeicu gnomeicu gtp l10n.gnome.org/POT gnomeicu/po
gnumeric gnumeric gtp l10n.gnome.org/POT gnumeric/po gnumeric gnumeric gtp l10n.gnome.org/POT gnumeric/po
gnumeric gnumeric-functions gtp l10n.gnome.org/POT gnumeric/po-functions gnumeric gnumeric-functions gtp l10n.gnome.org/POT gnumeric/po-functions
goffice goffice-0.7.13 gtp l10n.gnome.org/POT goffice/po goffice goffice-0.8.2 gtp l10n.gnome.org/POT goffice/po
gok gok gtp l10n.gnome.org/POT gok/po gnome-2-28 gok gok gtp l10n.gnome.org/POT gok/po gnome-2-30
gok gok gtp l10n.gnome.org/POT gok/po gok gok gtp l10n.gnome.org/POT gok/po
goobox goobox gtp l10n.gnome.org/POT goobox/po goobox goobox gtp l10n.gnome.org/POT goobox/po
gstreamer-0_10 gstreamer-0.10 gtp l10n.gnome.org/POT gstreamer/po gstreamer-0_10 gstreamer-0.10 gtp l10n.gnome.org/POT gstreamer/po
@ -149,58 +151,62 @@ gstreamer-0_10-plugins-bad gst-plugins-bad-0.10 gtp l10n.gnome.org/POT
gstreamer-0_10-plugins-base gst-plugins-base-0.10 gtp l10n.gnome.org/POT gst-plugins-base/po gstreamer-0_10-plugins-base gst-plugins-base-0.10 gtp l10n.gnome.org/POT gst-plugins-base/po
gstreamer-0_10-plugins-good gst-plugins-good-0.10 gtp l10n.gnome.org/POT gst-plugins-good/po gstreamer-0_10-plugins-good gst-plugins-good-0.10 gtp l10n.gnome.org/POT gst-plugins-good/po
gstreamer-0_10-plugins-ugly gst-plugins-ugly-0.10 gtp l10n.gnome.org/POT gst-plugins-ugly/po gstreamer-0_10-plugins-ugly gst-plugins-ugly-0.10 gtp l10n.gnome.org/POT gst-plugins-ugly/po
# broken: gtetrinet gtetrinet gtp l10n.gnome.org/POT gtetrinet/po
#gtetrinet gtetrinet gtp l10n.gnome.org/POT gtetrinet/po
gthumb gthumb gtp l10n.gnome.org/POT gthumb/po gthumb gthumb gtp l10n.gnome.org/POT gthumb/po
gtk2 gtk20 gtp l10n.gnome.org/POT gtk+/po gtk-2-18 gtk-vnc gtk-vnc gtp l10n.gnome.org/POT gtk-vnc/po
gtk2 gtk20 gtp l10n.gnome.org/POT gtk+/po gtk-2-20
gtk2 gtk20 gtp l10n.gnome.org/POT gtk+/po gtk2 gtk20 gtp l10n.gnome.org/POT gtk+/po
gtk2 gtk20-properties gtp l10n.gnome.org/POT gtk+/po-properties gtk-2-18 gtk2 gtk20-properties gtp l10n.gnome.org/POT gtk+/po-properties gtk-2-20
gtk2 gtk20-properties gtp l10n.gnome.org/POT gtk+/po-properties gtk2 gtk20-properties gtp l10n.gnome.org/POT gtk+/po-properties
gtksourceview gtksourceview-2.0 gtp l10n.gnome.org/POT gtksourceview/po gnome-2-28 gtksourceview gtksourceview-2.0 gtp l10n.gnome.org/POT gtksourceview/po gnome-2-30
gtksourceview gtksourceview-2.0 gtp l10n.gnome.org/POT gtksourceview/po gtksourceview gtksourceview-2.0 gtp l10n.gnome.org/POT gtksourceview/po
gucharmap gucharmap gtp l10n.gnome.org/POT gucharmap/po gnome-2-28 gtranslator gtranslator gtp l10n.gnome.org/POT gtranslator/po
gucharmap gucharmap gtp l10n.gnome.org/POT gucharmap/po gnome-2-30
gucharmap gucharmap gtp l10n.gnome.org/POT gucharmap/po gucharmap gucharmap gtp l10n.gnome.org/POT gucharmap/po
gvfs gvfs gtp l10n.gnome.org/POT gvfs/po gnome-2-28
gvfs gvfs gtp l10n.gnome.org/POT gvfs/po gvfs gvfs gtp l10n.gnome.org/POT gvfs/po
gwget gwget gtp l10n.gnome.org/POT gwget/po gwget gwget gtp l10n.gnome.org/POT gwget/po
hamster-applet hamster-applet gtp l10n.gnome.org/POT hamster-applet/po gnome-2-28 hamster-applet hamster-applet gtp l10n.gnome.org/POT hamster-applet/po gnome-2-30
hamster-applet hamster-applet gtp l10n.gnome.org/POT hamster-applet/po hamster-applet hamster-applet gtp l10n.gnome.org/POT hamster-applet/po
istanbul istanbul gtp l10n.gnome.org/POT istanbul/po istanbul istanbul gtp l10n.gnome.org/POT istanbul/po
jhbuild jhbuild gtp l10n.gnome.org/POT jhbuild/po
last-exit last-exit gtp l10n.gnome.org/POT last-exit/po last-exit last-exit gtp l10n.gnome.org/POT last-exit/po
libbonobo libbonobo-2.0 gtp l10n.gnome.org/POT libbonobo/po libbonobo libbonobo-2.0 gtp l10n.gnome.org/POT libbonobo/po
libbonoboui libbonoboui-2.0 gtp l10n.gnome.org/POT libbonoboui/po libbonoboui libbonoboui-2.0 gtp l10n.gnome.org/POT libbonoboui/po
libgda libgda-4.0 gtp l10n.gnome.org/POT libgda/po libepc libepc gtp l10n.gnome.org/POT libepc/po
libgdata gdata gtp l10n.gnome.org/POT libgdata/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 libgnome libgnome-2.0 gtp l10n.gnome.org/POT libgnome/po
libgnome-keyring libgnome-keyring gtp l10n.gnome.org/POT libgnome-keyring/po
libgnomecanvas libgnomecanvas-2.0 gtp l10n.gnome.org/POT libgnomecanvas/po libgnomecanvas libgnomecanvas-2.0 gtp l10n.gnome.org/POT libgnomecanvas/po
libgnomecups libgnomecups gtp l10n.gnome.org/POT libgnomecups/po libgnomecups libgnomecups gtp l10n.gnome.org/POT libgnomecups/po
libgnomedb libgnomedb-4.0 gtp l10n.gnome.org/POT libgnomedb/po libgnomedb libgnomedb-4.0 gtp l10n.gnome.org/POT libgnomedb/po
libgnomekbd libgnomekbd gtp l10n.gnome.org/POT libgnomekbd/po gnome-2-30
libgnomekbd libgnomekbd gtp l10n.gnome.org/POT libgnomekbd/po libgnomekbd libgnomekbd gtp l10n.gnome.org/POT libgnomekbd/po
libgnomeprint libgnomeprint-2.2 gtp l10n.gnome.org/POT libgnomeprint/po libgnomeprint libgnomeprint-2.2 gtp l10n.gnome.org/POT libgnomeprint/po
libgnomeprintui libgnomeprintui-2.2 gtp l10n.gnome.org/POT libgnomeprintui/po libgnomeprintui libgnomeprintui-2.2 gtp l10n.gnome.org/POT libgnomeprintui/po
libgnomeui libgnomeui-2.0 gtp l10n.gnome.org/POT libgnomeui/po libgnomeui libgnomeui-2.0 gtp l10n.gnome.org/POT libgnomeui/po
libgsf libgsf gtp l10n.gnome.org/POT libgsf/po libgsf libgsf gtp l10n.gnome.org/POT libgsf/po
libgtop libgtop-2.0 gtp l10n.gnome.org/POT libgtop/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 libgweather libgweather gtp l10n.gnome.org/POT libgweather/po
libgweather libgweather-locations gtp l10n.gnome.org/POT libgweather/po-locations gnome-2-30
libgweather libgweather-locations gtp l10n.gnome.org/POT libgweather/po-locations
libslab libslab gtp l10n.gnome.org/POT libslab/po libslab libslab gtp l10n.gnome.org/POT libslab/po
libwnck libwnck gtp l10n.gnome.org/POT libwnck/po libwnck libwnck gtp l10n.gnome.org/POT libwnck/po
meld meld gtp l10n.gnome.org/POT meld/po
memprof memprof gtp l10n.gnome.org/POT memprof/po memprof memprof gtp l10n.gnome.org/POT memprof/po
mergeant mergeant gtp l10n.gnome.org/POT mergeant/po mergeant mergeant gtp l10n.gnome.org/POT mergeant/po
metacity metacity gtp l10n.gnome.org/POT metacity/po gnome-2-28
metacity metacity gtp l10n.gnome.org/POT metacity/po metacity metacity gtp l10n.gnome.org/POT metacity/po
mousetweaks mousetweaks gtp l10n.gnome.org/POT mousetweaks/po gnome-2-28 mousetweaks mousetweaks gtp l10n.gnome.org/POT mousetweaks/po gnome-2-30
mousetweaks mousetweaks gtp l10n.gnome.org/POT mousetweaks/po mousetweaks mousetweaks gtp l10n.gnome.org/POT mousetweaks/po
mutter mutter gtp l10n.gnome.org/POT mutter/po mutter mutter gtp l10n.gnome.org/POT mutter/po
nautilus nautilus gtp l10n.gnome.org/POT nautilus/po gnome-2-28 nautilus nautilus gtp l10n.gnome.org/POT nautilus/po gnome-2-30
nautilus nautilus gtp l10n.gnome.org/POT nautilus/po nautilus nautilus gtp l10n.gnome.org/POT nautilus/po
nautilus-cd-burner nautilus-cd-burner gtp l10n.gnome.org/POT nautilus-cd-burner/po
nautilus-open-terminal nautilus-open-terminal gtp l10n.gnome.org/POT nautilus-open-terminal/po nautilus-open-terminal nautilus-open-terminal gtp l10n.gnome.org/POT nautilus-open-terminal/po
nautilus-sendto nautilus-sendto gtp l10n.gnome.org/POT nautilus-sendto/po nautilus-sendto nautilus-sendto gtp l10n.gnome.org/POT nautilus-sendto/po
nautilus-share nautilus-share gtp l10n.gnome.org/POT nautilus-share/po nautilus-share nautilus-share gtp l10n.gnome.org/POT nautilus-share/po
nemiver nemiver gtp l10n.gnome.org/POT nemiver/po nemiver nemiver gtp l10n.gnome.org/POT nemiver/po
orca orca gtp l10n.gnome.org/POT orca/po gnome-2-28 network-manager-netbook network-manager-netbook gtp l10n.gnome.org/POT network-manager-netbook/po
notification-daemon notification-daemon gtp l10n.gnome.org/POT notification-daemon/po
orca orca gtp l10n.gnome.org/POT orca/po gnome-2-30
orca orca gtp l10n.gnome.org/POT orca/po orca orca gtp l10n.gnome.org/POT orca/po
pan pan gtp l10n.gnome.org/POT pan/po pan pan gtp l10n.gnome.org/POT pan/po
pdfmod pdfmod gtp l10n.gnome.org/POT pdfmod/po pdfmod pdfmod gtp l10n.gnome.org/POT pdfmod/po
@ -208,29 +214,28 @@ pessulus pessulus gtp l10n.gnome.org/POT
planner planner gtp l10n.gnome.org/POT planner/po planner planner gtp l10n.gnome.org/POT planner/po
pybliographer pybliographer gtp l10n.gnome.org/POT pybliographer/po pybliographer pybliographer gtp l10n.gnome.org/POT pybliographer/po
rhythmbox rhythmbox gtp l10n.gnome.org/POT rhythmbox/po 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 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 seahorse gtp l10n.gnome.org/POT seahorse/po
seahorse-plugins seahorse-plugins gtp l10n.gnome.org/POT seahorse-plugins/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 shared-mime-info shared-mime-info gtp l10n.gnome.org/POT shared-mime-info/po
sound-juicer sound-juicer gtp l10n.gnome.org/POT sound-juicer/po sound-juicer sound-juicer gtp l10n.gnome.org/POT sound-juicer/po
swfdec-gnome swfdec-gnome gtp l10n.gnome.org/POT swfdec-gnome/po swfdec-gnome swfdec-gnome gtp l10n.gnome.org/POT swfdec-gnome/po
tasque tasque gtp l10n.gnome.org/POT tasque/po tasque tasque gtp l10n.gnome.org/POT tasque/po
tomboy tomboy gtp l10n.gnome.org/POT tomboy/po gnome-2-28 tomboy tomboy gtp l10n.gnome.org/POT tomboy/po gnome-2-30
tomboy tomboy gtp l10n.gnome.org/POT tomboy/po tomboy tomboy gtp l10n.gnome.org/POT tomboy/po
totem totem gtp l10n.gnome.org/POT totem/po gnome-2-28 totem totem gtp l10n.gnome.org/POT totem/po gnome-2-30
totem totem gtp l10n.gnome.org/POT totem/po totem totem gtp l10n.gnome.org/POT totem/po
totem-pl-parser totem-pl-parser gtp l10n.gnome.org/POT totem-pl-parser/po totem-pl-parser totem-pl-parser gtp l10n.gnome.org/POT totem-pl-parser/po
vinagre vinagre gtp l10n.gnome.org/POT vinagre/po gnome-2-28 tracker tracker gtp l10n.gnome.org/POT tracker/po
vinagre vinagre gtp l10n.gnome.org/POT vinagre/po vinagre vinagre gtp l10n.gnome.org/POT vinagre/po
vino vino gtp l10n.gnome.org/POT vino/po vino vino gtp l10n.gnome.org/POT vino/po
vte vte gtp l10n.gnome.org/POT vte/po gnome-2-30
vte vte gtp l10n.gnome.org/POT vte/po vte vte gtp l10n.gnome.org/POT vte/po
xchat-gnome xchat-gnome gtp l10n.gnome.org/POT xchat-gnome/po xchat-gnome xchat-gnome gtp l10n.gnome.org/POT xchat-gnome/po
xdg-user-dirs xdg-user-dirs gtp l10n.gnome.org/POT xdg-user-dirs/po 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 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 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 gnome-2-30
yelp yelp gtp l10n.gnome.org/POT yelp/po 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 gnome-2-30
zenity zenity gtp l10n.gnome.org/POT zenity/po zenity zenity gtp l10n.gnome.org/POT zenity/po