⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intltool-update.in

📁 PSlib是一个用来生成PostScript文件的类库。提供了一个生成PostScript文件的简单方法。
💻 IN
📖 第 1 页 / 共 3 页
字号:
	    {		$in_macro = 0 unless /\\$/;		next;	    }	    # Handle start of macro (or any preprocessor directive).	    if (/^\s*\#/)	    {		$in_macro = 1 if /^([^\\]|\\.)*\\$/;		next;	    }	    # Handle comments and quoted text.	    while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy	    {		my $match = $1;		if ($match eq "/*")		{		    if (!s-/\*.*?\*/--)		    {			s-/\*.*--;			$in_comment = 1;		    }		}		elsif ($match eq "//")		{		    s-//.*--;		}		else # ' or "		{		    if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-)		    {			warn "mismatched quotes at line $. in $file\n";			s-$match.*--;		    }		}	    }	    	    if (/\w\.GetString *\(QUOTEDTEXT/)	    {                if (defined isNotValidMissing (unpack("x3 A*", $file))) {                    ## Remove the first 3 chars and add newline                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";                }		last;	    }            ## N_ Q_ and _ are the three macros defined in gi8n.h	    if (/[NQ]?_ *\(QUOTEDTEXT/)	    {                if (defined isNotValidMissing (unpack("x3 A*", $file))) {                    ## Remove the first 3 chars and add newline                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";                }		last;	    }	}	close FILE;    }    foreach my $file (@buf_i18n_xml)     {	open FILE, "<$file";		while (<FILE>) 	{	    # FIXME: share the pattern matching code with intltool-extract	    if (/\s_[-A-Za-z0-9._:]+\s*=\s*\"([^"]+)\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)	    {                if (defined isNotValidMissing (unpack("x3 A*", $file))) {                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";                }		last;	    }	}	close FILE;    }    foreach my $file (@buf_i18n_ini)    {	open FILE, "<$file";	while (<FILE>) 	{	    if (/_(.*)=/)	    {                if (defined isNotValidMissing (unpack("x3 A*", $file))) {                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";                }		last;	    }	}	close FILE;    }    foreach my $file (@buf_i18n_xml_unmarked)    {        if (defined isNotValidMissing (unpack("x3 A*", $file))) {            push @buf_allfiles, unpack("x3 A*", $file) . "\n";        }    }    @buf_allfiles_sorted = sort (@buf_allfiles);    @buf_potfiles_sorted = sort (@buf_potfiles);    my %in2;    foreach (@buf_potfiles_sorted)     {        s#^$SRCDIR/../##;        s#^$SRCDIR/##;	$in2{$_} = 1;    }    foreach (@buf_potfiles_ignore_sorted)     {        s#^$SRCDIR/../##;        s#^$SRCDIR/##;	$in2{$_} = 1;    }    my @result;    foreach (@buf_allfiles_sorted)    {        my $dummy = $_;        my $srcdir = $SRCDIR;        $srcdir =~ s#^../##;        $dummy =~ s#^$srcdir/../##;        $dummy =~ s#^$srcdir/##;        $dummy =~ s#_build/##;	if (!exists($in2{$dummy}))	{	    push @result, $dummy	}    }    my @buf_potfiles_notexist;    foreach (@buf_potfiles_sorted)    {	chomp (my $dummy = $_);	if ("$dummy" ne "" and !(-f "$SRCDIR/../$dummy" or -f "../$dummy"))	{	    push @buf_potfiles_notexist, $_;	}    }    ## Save file with information about the files missing    ## if any, and give information about this procedure.    if (@result + @buf_potfiles_notexist > 0)    {	if (@result) 	{	    print "\n" if $VERBOSE;	    unlink "missing";	    open OUT, ">missing";	    print OUT @result;	    close OUT;	    warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n".	         "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n";	    print STDERR @result, "\n";	    warn "If some of these files are left out on purpose then please add them to\n".		 "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n".		 "of left out files has been written in the current directory.\n";	}	if (@buf_potfiles_notexist)	{	    unlink "notexist";	    open OUT, ">notexist";	    print OUT @buf_potfiles_notexist;	    close OUT;	    warn "\n" if ($VERBOSE or @result);	    warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";	    warn @buf_potfiles_notexist, "\n";	    warn "Please remove them from POTFILES.in. A file \e[1m'notexist'\e[0m\n".		 "containing this list of absent files has been written in the current directory.\n";	}    }    ## If there is nothing to complain about, notify the user    else {	print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE;    }}sub Console_WriteError_InvalidOption{    ## Handle invalid arguments    print STDERR "Try `${PROGRAM} --help' for more information.\n";    exit 1;}sub isProgramInPath{    my ($file) = @_;    # If either a file exists, or when run it returns 0 exit status    return 1 if ((-x $file) or (system("$file --version >$devnull") == 0));    return 0;}sub isGNUGettextTool{    my ($file) = @_;    # Check that we are using GNU gettext tools    if (isProgramInPath ($file))    {        my $version = `$file --version`;        return 1 if ($version =~ m/.*\(GNU .*\).*/);    }    return 0;}sub GenerateHeaders{    my $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} || "intltool-extract";    ## Generate the .h header files, so we can allow glade and    ## xml translation support    if (! isProgramInPath ("$EXTRACT"))    {	print STDERR "\n *** The intltool-extract script wasn't found!"	     ."\n *** Without it, intltool-update can not generate files.\n";	exit;    }    else    {	open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n";		while (<FILE>) 	{	   chomp;	   next if /^\[\s*encoding/;	   ## Find xml files in POTFILES.in and generate the	   ## files with help from the extract script	   my $gettext_type= &POFile_DetermineType ($1);	   if (/\.($xml_support|$ini_support)$/ || /^\[/)	   {	       s/^\[[^\[].*]\s*//;	       my $filename = "../$_";	       if ($VERBOSE)	       {		   system ($EXTRACT, "--update", "--srcdir=$SRCDIR",			   "--type=$gettext_type", $filename);	       } 	       else 	       {	 	   system ($EXTRACT, "--update", "--type=$gettext_type", 			   "--srcdir=$SRCDIR", "--quiet", $filename);	       }	   }       }       close FILE;   }}## Generate .pot file from POTFILES.in#sub GeneratePOTemplate{    my $XGETTEXT = $ENV{"XGETTEXT"} || "xgettext";    my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';    chomp $XGETTEXT;    if (! isGNUGettextTool ("$XGETTEXT"))    {	print STDERR " *** GNU xgettext is not found on this system!\n".		     " *** Without it, intltool-update can not extract strings.\n";	exit;    }    print "Building $MODULE.pot...\n" if $VERBOSE;    open INFILE, $POTFILES_in;    unlink "POTFILES.in.temp";    open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing");    my $gettext_support_nonascii = 0;    # checks for GNU gettext >= 0.12    my $dummy = `$XGETTEXT --version --from-code=UTF-8 >$devnull 2>$devnull`;    if ($? == 0)    {	$gettext_support_nonascii = 1;    }    else    {	# urge everybody to upgrade gettext	print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n".		     "         strings. That means you should install a version of gettext\n".		     "         that supports non-ASCII strings (such as GNU gettext >= 0.12),\n".		     "         or have to let non-ASCII strings untranslated. (If there is any)\n";    }    my $encoding = "ASCII";    my $forced_gettext_code;    my @temp_headers;    my $encoding_problem_is_reported = 0;    while (<INFILE>)     {	next if (/^#/ or /^\s*$/);	chomp;	my $gettext_code;	if (/^\[\s*encoding:\s*(.*)\s*\]/)	{	    $forced_gettext_code=$1;	}	elsif (/\.($xml_support|$ini_support)$/ || /^\[/)	{	    s/^\[.*]\s*//;            print OUTFILE "../$_.h\n";	    push @temp_headers, "../$_.h";	    $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code);	} 	else 	{            print OUTFILE "$SRCDIR/../$_\n";	    $gettext_code = &TextFile_DetermineEncoding ("$SRCDIR/../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);	}	next if (! $gettext_support_nonascii);	if (defined $forced_gettext_code)	{	    $encoding=$forced_gettext_code;	}	elsif (defined $gettext_code and "$encoding" ne "$gettext_code")	{	    if ($encoding eq "ASCII")	    {		$encoding=$gettext_code;	    }	    elsif ($gettext_code ne "ASCII")	    {		# Only report once because the message is quite long		if (! $encoding_problem_is_reported)		{		    print STDERR "WARNING: You should use the same file encoding for all your project files,\n".				 "         but $PROGRAM thinks that most of the source files are in\n".				 "         $encoding encoding, while \"$_\" is (likely) in\n".		       		 "         $gettext_code encoding. If you are sure that all translatable strings\n".				 "         are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n".				 "         line to POTFILES.in:\n\n".				 "                 [encoding: UTF-8]\n\n".				 "         and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n".				 "(such warning message will only be reported once.)\n";		    $encoding_problem_is_reported = 1;		}	    }	}    }    close OUTFILE;    close INFILE;    unlink "$MODULE.pot";    my @xgettext_argument=("$XGETTEXT",			   "--add-comments",			   "--directory\=.",                           "--default-domain\=$MODULE",                           "--flag\=g_strdup_printf:1:c-format",                           "--flag\=g_string_printf:2:c-format",                           "--flag\=g_string_append_printf:2:c-format",                           "--flag\=g_error_new:3:c-format",                           "--flag\=g_set_error:4:c-format",                           "--flag\=g_markup_printf_escaped:1:c-format",                           "--flag\=g_log:3:c-format",                           "--flag\=g_print:1:c-format",                           "--flag\=g_printerr:1:c-format",                           "--flag\=g_printf:1:c-format",                           "--flag\=g_fprintf:2:c-format",                           "--flag\=g_sprintf:2:c-format",                           "--flag\=g_snprintf:3:c-format",                           "--flag\=g_scanner_error:2:c-format",                           "--flag\=g_scanner_warn:2:c-format",			   "--output\=$MODULE\.pot",			   "--files-from\=\.\/POTFILES\.in\.temp");    my $XGETTEXT_KEYWORDS = &FindPOTKeywords;    push @xgettext_argument, $XGETTEXT_KEYWORDS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -