~ubuntu-branches/ubuntu/feisty/monodevelop/feisty

« back to all changes in this revision

Viewing changes to intltool-update.in

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2006-08-18 00:51:23 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20060818005123-5iit07y0j7wjg55f
Tags: 0.11+svn20060818-0ubuntu1
* New SVN snapshot
  + Works with Gtk# 2.9.0
* debian/control:
  + Updated Build-Depends
* debian/patches/use_nunit2.2.dpatch,
  debian/patches/use_real_libs.dpatch:
  + Updated
* debian/patches/versioncontrol_buildfix.dpatch:
  + Fix build failure in the version control addin

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 
31
31
## Release information
32
32
my $PROGRAM = "intltool-update";
33
 
my $VERSION = "0.33";
 
33
my $VERSION = "0.35.0";
34
34
my $PACKAGE = "intltool";
35
35
 
36
36
## Loaded modules
80
80
"directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec
81
81
"soundlist(?:\\.in)+|". # GNOME specific
82
82
"keys(?:\\.in)+|".      # GNOME Mime database specific
83
 
"theme(?:\\.in)+";      # http://www.freedesktop.org/Standards/icon-theme-spec
 
83
"theme(?:\\.in)+|".     # http://www.freedesktop.org/Standards/icon-theme-spec
 
84
"service(?:\\.in)+";    # DBus specific
84
85
 
85
86
my $buildin_gettext_support = 
86
87
"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
95
96
$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
96
97
$POTFILES_in = "<$SRCDIR/POTFILES.in";
97
98
 
 
99
my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
 
100
 
98
101
## Handle options
99
102
GetOptions 
100
103
(
122
125
&Console_Write_IntltoolHelp if $arg_count > 1;
123
126
 
124
127
# --version and --help don't require a module name
125
 
my $MODULE = $GETTEXT_PACKAGE || &FindPackageName;
 
128
my $MODULE = $GETTEXT_PACKAGE || &FindPackageName || "unknown";
126
129
 
127
130
if ($POT_ARG)
128
131
{
442
445
        while (<FILE>) 
443
446
        {
444
447
            # FIXME: share the pattern matching code with intltool-extract
445
 
            if (/\s_(.*)=\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
 
448
            if (/\s_[-A-Za-z0-9._:]+\s*=\s*\"([^"]+)\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
446
449
            {
447
450
                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
448
451
                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
608
611
#
609
612
sub GeneratePOTemplate
610
613
{
611
 
    my $XGETTEXT = $ENV{"XGETTEXT"} || "/usr/bin/xgettext";
 
614
    my $XGETTEXT = $ENV{"XGETTEXT"} || "@INTLTOOL_XGETTEXT@";
612
615
    my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
613
616
    chomp $XGETTEXT;
614
617
 
628
631
    my $gettext_support_nonascii = 0;
629
632
 
630
633
    # checks for GNU gettext >= 0.12
631
 
    my $dummy = `$XGETTEXT --version --from-code=UTF-8 >/dev/null 2>/dev/null`;
 
634
    my $dummy = `$XGETTEXT --version --from-code=UTF-8 >$devnull 2>$devnull`;
632
635
    if ($? == 0)
633
636
    {
634
637
        $gettext_support_nonascii = 1;
719
722
                           "--files-from\=\.\/POTFILES\.in\.temp");
720
723
    my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
721
724
    push @xgettext_argument, $XGETTEXT_KEYWORDS;
 
725
    my $MSGID_BUGS_ADDRESS = &FindMakevarsBugAddress;
 
726
    push @xgettext_argument, "--msgid-bugs-address\=$MSGID_BUGS_ADDRESS" if $MSGID_BUGS_ADDRESS;
722
727
    push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
723
728
    push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
724
729
    my $xgettext_command = join ' ', @xgettext_argument;
779
784
{
780
785
    -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
781
786
 
782
 
    my $MSGMERGE = $ENV{"MSGMERGE"} || "/usr/bin/msgmerge";
 
787
    my $MSGMERGE = $ENV{"MSGMERGE"} || "@INTLTOOL_MSGMERGE@";
783
788
    my ($lang, $outfile) = @_;
784
789
 
785
790
    print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE;
822
827
sub Console_Write_TranslationStatus
823
828
{
824
829
    my ($lang, $output_file) = @_;
825
 
    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt";
 
830
    my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
826
831
 
827
832
    $output_file = "$SRCDIR/$lang.po" if ($output_file eq "");
828
833
 
829
 
    system ("$MSGFMT", "-o", "/dev/null", "--statistics", $output_file);
 
834
    system ("$MSGFMT", "-o", "$devnull", "--verbose", $output_file);
830
835
}
831
836
 
832
837
sub Console_Write_CoverageReport
833
838
{
834
 
    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt";
 
839
    my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
835
840
 
836
841
    &GatherPOFiles;
837
842
 
846
851
    foreach my $lang (@languages)
847
852
    {
848
853
        print "$lang: ";
849
 
        system ("$MSGFMT", "-o", "/dev/null", "--statistics", "$SRCDIR/$lang.po");
 
854
        system ("$MSGFMT", "-o", "$devnull", "--verbose", "$SRCDIR/$lang.po");
850
855
    }
851
856
}
852
857
 
871
876
    {
872
877
        my $rest = $3;
873
878
        my $untouched = $1;
874
 
        my $sub = $varhash{$2};
875
 
        
 
879
        my $sub = "";
 
880
        # Ignore recursive definitions of variables
 
881
        $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
 
882
 
876
883
        return SubstituteVariable ("$untouched$sub$rest");
877
884
    }
878
885
    
989
996
        ($name, $version) = ($1, $2);
990
997
        $name    =~ s/[\[\]\s]//g;
991
998
        $version =~ s/[\[\]\s]//g;
992
 
        $varhash{"AC_PACKAGE_NAME"} = $name;
993
 
        $varhash{"PACKAGE"} = $name;
994
 
        $varhash{"AC_PACKAGE_VERSION"} = $version;
995
 
        $varhash{"VERSION"} = $version;
 
999
        $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
 
1000
        $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
 
1001
        $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
 
1002
        $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
996
1003
    }
997
1004
    
998
1005
    if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) 
1000
1007
        ($name, $version) = ($1, $2);
1001
1008
        $name    =~ s/[\[\]\s]//g;
1002
1009
        $version =~ s/[\[\]\s]//g;
1003
 
        $varhash{"AC_PACKAGE_NAME"} = $name;
1004
 
        $varhash{"PACKAGE"} = $name;
1005
 
        $varhash{"AC_PACKAGE_VERSION"} = $version;
1006
 
        $varhash{"VERSION"} = $version;
 
1010
        $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
 
1011
        $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
 
1012
        $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
 
1013
        $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
1007
1014
    }
1008
1015
 
1009
1016
    # \s makes this not work, why?
1010
1017
    $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m;
1011
1018
    
1012
 
    # prepend '$' to auto* internal variables, usually they are
1013
 
    # used in configure.in/ac without the '$'
1014
 
    $name =~ s/AC_/\$AC_/g;
1015
 
    $name =~ s/\$\$/\$/g;
 
1019
    # m4 macros AC_PACKAGE_NAME, AC_PACKAGE_VERSION etc. have same value
 
1020
    # as corresponding $PACKAGE_NAME, $PACKAGE_VERSION etc. shell variables.
 
1021
    $name =~ s/\bAC_PACKAGE_/\$PACKAGE_/g;
1016
1022
 
1017
1023
    $name = $domain if $domain;
1018
1024
 
1061
1067
    
1062
1068
    return $domain;
1063
1069
}
 
1070
 
 
1071
sub FindMakevarsBugAddress
 
1072
{
 
1073
 
 
1074
    my $address = "";
 
1075
    my $makevars_source; { 
 
1076
        local (*IN);
 
1077
        open (IN, "<Makevars") || return undef;
 
1078
        seek (IN, 0, 0);
 
1079
        local $/; # slurp mode
 
1080
        $makevars_source = <IN>;
 
1081
        close IN;
 
1082
    }
 
1083
 
 
1084
    $address = $1 if $makevars_source =~ /^MSGID_BUGS_ADDRESS[ ]*=\[?([^\n\]\$]+)/m;
 
1085
    $address =~ s/^\s+//;
 
1086
    $address =~ s/\s+$//;
 
1087
    
 
1088
    return $address;
 
1089
}