diff options
Diffstat (limited to 'po/update.pl')
-rwxr-xr-x | po/update.pl | 367 |
1 files changed, 0 insertions, 367 deletions
diff --git a/po/update.pl b/po/update.pl deleted file mode 100755 index 2b6accb302..0000000000 --- a/po/update.pl +++ /dev/null @@ -1,367 +0,0 @@ -#!/usr/bin/perl -w - -# -# GNOME PO Update Utility -# -# Copyright (C) 2000 Free Software Foundation. -# -# This script is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# This script is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this library; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# Authors: Kenneth Christiansen <kenneth@gnu.org> -# - -# NOTICE: Please remember to change the variable $PACKAGE to reflect -# the package this script is used within. - -$PACKAGE="evolution"; - -use File::Basename; - -# Declare global variables -#------------------------- -my $VERSION = "1.5beta5"; -my $LANG = $ARGV[0]; - -# Always print as the first thing -#-------------------------------- -$| = 1; - -# Figure out what package that is in use -#--------------------------------------- -#open FILE, "../configure.in"; -# while (<FILE>) { -# next if /^dnl/; #ignore comments -# if ($_=~/AM_INIT_AUTOMAKE\((.*),(.*)\)/o){ -# $PACKAGE=$1; -# last; #stop when found -# } -# if ($_=~/PACKAGE\((.*)\)/o){ -# $PACKAGE=$1; -# last; #stop when found -# } -# } -#close FILE; - - -# Give error if script is run without an argument -#------------------------------------------------ -if (! $LANG){ - print "update.pl: missing file arguments\n"; - print "Try `update.pl --help' for more information.\n"; - exit; -} - -# Use the supplied arguments -#--------------------------- -if ($LANG=~/^-(.)*/){ - - if ("$LANG" eq "--version" || "$LANG" eq "-V"){ - &Version; - } - elsif ($LANG eq "--help" || "$LANG" eq "-H"){ - &Help; - } - elsif ($LANG eq "--dist" || "$LANG" eq "-D"){ - &Merging; - } - elsif ($LANG eq "--pot" || "$LANG" eq "-P"){ - - # Check for .headerlock file, so the Makefile - # will not generate the header files twise - #-------------------------------------------- - if (-e ".headerlock"){ - &GeneratePot; - }else{ - &GenHeaders; - &GeneratePot;} - exit; - } - elsif ($LANG eq "--headers" || "$LANG" eq "-S"){ - &GenHeaders; - exit; - } - elsif ($LANG eq "--maintain" || "$LANG" eq "-M"){ - &Maintain; - } - else { - &InvalidOption; - } - -} else { - - # Run standard procedure - #----------------------- - if(-s "$LANG.po"){ - &GenHeaders; - &GeneratePot; - &Merging; - &Status; - } - - # Report error if the language file supplied - # to the command line is non-existent - #------------------------------------------- - else { - &NotExisting; - } -} - -sub Version{ - - # Print version information - #-------------------------- - print "GNOME PO Updater $VERSION\n"; - print "Written by Kenneth Christiansen <kenneth\@gnome.org>, 2000.\n\n"; - print "Copyright (C) 2000 Free Software Foundation, Inc.\n"; - print "This is free software; see the source for copying conditions. There is NO\n"; - print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"; - exit; -} - -sub Help{ - - # Print usage information - #------------------------ - print "Usage: ./update.pl [OPTIONS] ...LANGCODE\n"; - print "Updates pot files and merge them with the translations.\n\n"; - print " -H, --help shows this help page\n"; - print " -P, --pot generate the pot file only\n"; - print " -S, --headers generate the XML headerfiles in POTFILES.in\n"; - print " -M, --maintain search for missing files in POTFILES.in\n"; - print " -V, --version shows the version\n"; - print "\nExamples of use:\n"; - print "update.sh --pot just creates a new pot file from the source\n"; - print "update.sh da created new pot file and updated the da.po file\n\n"; - print "Report bugs to <kenneth\@gnome.org>.\n"; - exit; -} - -sub Maintain{ - - # Search and fine, all translatable files - # --------------------------------------- - $i18nfiles="find ../ -print | egrep '.*\\.(c|y|cc|c++|h|gob)' "; - - open(BUF2, "POTFILES.in") || die "update.pl: there's no POTFILES.in!!!\n"; - - print "Searching for missing _(\" \") entries...\n"; - - open(BUF1, "$i18nfiles|"); - - @buf1_1 = <BUF1>; - @buf1_2 = <BUF2>; - - # Check if we should ignore some found files, when - # comparing with POTFILES.in - #------------------------------------------------- - if (-s ".potignore"){ - open FILE, ".potignore"; - while (<FILE>) { - if ($_=~/^[^#]/o){ - push @bup, $_; - } - } - print "Found .potignore: Ignoring files...\n"; - @buf1_2 = (@bup, @buf1_2); - } - - foreach my $file (@buf1_1){ - open FILE, "<$file"; - while (<FILE>) { - if ($_=~/_\(\"/o){ - $file = unpack("x3 A*",$file) . "\n"; - push @buf2_1, $file; - last; - } - } - } - - @buf3_1 = sort (@buf2_1); - @buf3_2 = sort (@buf1_2); - - my %in2; - foreach (@buf3_2) { - $in2{$_} = 1; - } - - foreach (@buf3_1){ - if (!exists($in2{$_})){ - push @result, $_ - } - } - - # Save file with information about the files missing - # if any, and give information about this proceedier - #--------------------------------------------------- - if(@result){ - open OUT, ">missing"; - print OUT @result; - print "\nHere is the result:\n\n", @result, "\n"; - print "The file \"missing\" has been placed in the current directory.\n"; - print "Files supposed to be ignored should be placed in \".potignore\"\n"; - } - - # If there is nothing to complain about, notice the user - #------------------------------------------------------- - else{ - print "\nWell, it's all perfect! Congratulation!\n"; - } -} - -sub InvalidOption{ - - # Handle invalid arguments - #------------------------- - print "update.pl: invalid option -- $LANG\n"; - print "Try `update.pl --help' for more information.\n"; -} - -sub GenHeaders{ - - # Generate the .h header files, so we can allow glade and - # xml translation support - #-------------------------------------------------------- - if(-s "ui-extract.pl"){ - - print "Found ui-extract.pl script\nRunning ui-extract...\n"; - - open FILE, "<POTFILES.in"; - while (<FILE>) { - - # Find .xml files in POTFILES.in and generate the - # files with help from the ui-extract.pl script - #-------------------------------------------------- - if ($_=~ /(.*)(\.xml)/o){ - $filename = "../$1.xml"; - $xmlfiles="perl \.\/ui-extract.pl --local $filename"; - system($xmlfiles); - } - - # Find .glade files in POTFILES.in and generate - # the files with help from the ui-extract.pl script - #-------------------------------------------------- - elsif ($_=~ /(.*)(\.glade)/o){ - $filename = "../$1.glade"; - $xmlfiles="perl \.\/ui-extract.pl --local $filename"; - system($xmlfiles); - } - } - close FILE; - - # Create .headerlock file, so the script will know - # that we already passed this section. This is required - # since the individual sections can be reaced at different - # times by the Makefile - #--------------------------------------------------------- - system("touch .headerlock"); - } -} - -sub GeneratePot{ - - # Generate the potfiles from the POTFILES.in file - #------------------------------------------------ - - print "Building the $PACKAGE.pot...\n"; - - system ("mv POTFILES.in POTFILES.in.old"); - - open INFILE, "<POTFILES.in.old"; - open OUTFILE, ">POTFILES.in"; - while (<INFILE>) { - if ($_ =~ /\.(glade|xml)$/) { - s/\.glade$/\.glade\.h/; - s/\.xml$/\.xml\.h/; - $_ = basename($_); - $_ = "po/tmp/$_\n"; - } - print OUTFILE $_; - } - close OUTFILE; - close INFILE; - - $GETTEXT ="xgettext --default-domain\=$PACKAGE --directory\=\.\." - ." --add-comments --keyword\=\_ --keyword\=N\_" - ." --files-from\=\.\/POTFILES\.in "; - $GTEST ="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot " - ."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)"; - - system($GETTEXT); - system($GTEST); - print "Wrote $PACKAGE.pot\n"; - system("mv POTFILES.in.old POTFILES.in"); - - # If .headerlock file is found, it means that the potfiles - # already has been generated. If so delete the generated - # .h header files. The reason for this approach with a - # file as a marker is due to that the Makefile runs the - # scripts in turns - #--------------------------------------------------------- - - if(-e ".headerlock"){ - unlink(".headerlock"); - - print "Removing generated header (.h) files..."; - system("rm ./tmp/ -rf"); - } - print "done\n"; -} - -sub Merging{ - - if ($ARGV[1]){ - $LANG = $ARGV[1]; - } else { - $LANG = $ARGV[0]; - } - - if ($ARGV[0] ne "--dist" && $ARGV[0] ne "-D") { - print "Merging $LANG.po with $PACKAGE.pot..."; - } - - $MERGE="cp $LANG.po $LANG.po.old && msgmerge $LANG.po.old $PACKAGE.pot -o $LANG.po"; - - system($MERGE); - - if ($ARGV[0] ne "--dist" && $ARGV[0] ne "-D") { - print "\n\n"; - } - - # Remove the "messages" trash file generated - # by gettext, aswell as the backup file - #------------------------------------------- - unlink "messages"; - unlink "$LANG.po.old"; -} - -sub NotExisting{ - - # Report error if supplied language - # file is non-existant - #---------------------------------- - print "update.pl: sorry, $LANG.po does not exist!\n"; - print "Try `update.pl --help' for more information.\n"; - exit; -} - -sub Status{ - - # Print status information about the po file - #------------------------------------------- - $STATUS="msgfmt --statistics $LANG.po"; - - system($STATUS); - print "\n"; -} |