Locale-Msgfmt-0.15/0000755000175000017500000000000011465454673014000 5ustar azawawiazawawiLocale-Msgfmt-0.15/Makefile.PL0000644000175000017500000000035311464227316015742 0ustar azawawiazawawiuse inc::Module::Install::DSL 0.92; all_from lib/Locale/Msgfmt.pm requires File::Spec 0.80 test_requires Test::More 0.47 test_requires Locale::Maketext::Gettext 1.28 if $ENV{AUTOMATED_TESTING} no_index directory privateLocale-Msgfmt-0.15/script/0000755000175000017500000000000011465454673015304 5ustar azawawiazawawiLocale-Msgfmt-0.15/script/msgfmt.pl0000644000175000017500000000203711464227315017126 0ustar azawawiazawawi#!/usr/bin/perl use strict; use warnings; use Getopt::Long; use Locale::Msgfmt 0.15; our $VERSION = '0.15'; my ( $opt_o, $opt_f, $opt_q, $opt_force ); GetOptions( "output-file|o=s" => \$opt_o, "use-fuzzy|f" => \$opt_f, "quiet|q" => \$opt_q, "force" => \$opt_force, ); msgfmt( { in => $_[0], out => $opt_o, fuzzy => $opt_f, verbose => !$opt_q, force => $opt_force, } ); =head1 NAME msgfmt.pl - Compile .po files to .mo files =head1 SYNOPSIS This script does the same thing as msgfmt from GNU gettext-tools, except this is pure Perl. Because it's pure Perl, it's more portable and more easily installed (via CPAN). It has two other advantages. First, it supports directories, so you can have it process a full directory of .po files. Second, it can guess the output file (if you don't specify the -o option). If the input is a file, it will s/po$/mo/ to figure out the output file. If the input is a directory, it will write the .mo files to the same directory. =head1 SEE ALSO L =cut Locale-Msgfmt-0.15/README0000644000175000017500000000157311464227316014655 0ustar azawawiazawawiLocale-Msgfmt Locale::Msgfmt is a pure Perl reimplementation of msgfmt from GNU gettext-tools. INSTALLATION To install this module, run the following commands: perl Build.PL ./Build ./Build test ./Build install SUPPORT AND DOCUMENTATION After installing, you can find documentation for this module with the perldoc command. perldoc Locale::Msgfmt You can also look for information at: RT, CPAN's request tracker http://rt.cpan.org/NoAuth/Bugs.html?Dist=Locale-Msgfmt AnnoCPAN, Annotated CPAN documentation http://annocpan.org/dist/Locale-Msgfmt CPAN Ratings http://cpanratings.perl.org/d/Locale-Msgfmt Search CPAN http://search.cpan.org/dist/Locale-Msgfmt COPYRIGHT AND LICENCE Copyright (C) 2009 Ryan Niebur This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Locale-Msgfmt-0.15/lib/0000755000175000017500000000000011465454673014546 5ustar azawawiazawawiLocale-Msgfmt-0.15/lib/Module/0000755000175000017500000000000011465454673015773 5ustar azawawiazawawiLocale-Msgfmt-0.15/lib/Module/Install/0000755000175000017500000000000011465454673017401 5ustar azawawiazawawiLocale-Msgfmt-0.15/lib/Module/Install/Msgfmt.pm0000644000175000017500000000174311464227315021167 0ustar azawawiazawawipackage Module::Install::Msgfmt; use 5.008005; use strict; use warnings; use File::Spec (); use Module::Install::Base (); our $VERSION = '0.15'; our @ISA = 'Module::Install::Base'; sub install_share_with_mofiles { my $self = shift; my @orig = (@_); my $class = ref($self); my $prefix = $self->_top->{prefix}; my $name = $self->_top->{name}; my $dir = @_ ? pop : 'share'; my $type = @_ ? shift : 'dist'; my $module = @_ ? shift : ''; $self->build_requires( 'Locale::Msgfmt' => '0.15' ); $self->install_share(@orig); my $distname = ""; if ( $type eq 'dist' ) { $distname = $self->name; } else { $distname = Module::Install::_CLASS($module); $distname =~ s/::/-/g; } my $path = File::Spec->catfile( 'auto', 'share', $type, $distname ); $self->postamble(<<"END_MAKEFILE"); config :: \t\$(NOECHO) \$(PERL) "-MLocale::Msgfmt" -e "Locale::Msgfmt::do_msgfmt_for_module_install(q(\$(INST_LIB)), q($path))" END_MAKEFILE } 1; Locale-Msgfmt-0.15/lib/Locale/0000755000175000017500000000000011465454673015745 5ustar azawawiazawawiLocale-Msgfmt-0.15/lib/Locale/Msgfmt.pm0000644000175000017500000001064411464227315017533 0ustar azawawiazawawipackage Locale::Msgfmt; use 5.008005; use strict; use warnings; use Exporter (); use File::Spec (); use Locale::Msgfmt::mo (); use Locale::Msgfmt::po (); use Locale::Msgfmt::Utils (); our $VERSION = '0.15'; our @ISA = 'Exporter'; our @EXPORT = qw/msgfmt/; sub do_msgfmt_for_module_install { my $lib = shift; my $sharepath = shift; my $fullpath = File::Spec->catfile( $lib, $sharepath, 'locale' ); unless ( -d $fullpath ) { die "$fullpath isn't a directory"; } msgfmt( { in => $fullpath, verbose => 1, remove => 1 } ); } sub msgfmt { my $hash = shift; unless ( defined($hash) ) { die "error: must give input"; } unless ( ref($hash) eq "HASH" ) { $hash = { in => $hash }; } unless ( defined $hash->{in} and length $hash->{in} ) { die "error: must give an input file"; } unless ( -e $hash->{in} ) { die "error: input does not exist"; } unless ( defined $hash->{verbose} ) { $hash->{verbose} = 1; } if ( -d $hash->{in} ) { return _msgfmt_dir($hash); } else { return _msgfmt($hash); } } sub _msgfmt { my $hash = shift; unless ( defined $hash->{in} ) { die "error: must give an input file"; } unless ( -f $hash->{in} ) { die "error: input file does not exist"; } unless ( defined $hash->{out} ) { unless ( $hash->{in} =~ /\.po$/ ) { die "error: must give an output file"; } $hash->{out} = $hash->{in}; $hash->{out} =~ s/po$/mo/; } unless ( $hash->{force} ) { my $min = Locale::Msgfmt::Utils::mtime( $hash->{in} ); my $mout = Locale::Msgfmt::Utils::mtime( $hash->{out} ); if ( -f $hash->{out} and $mout > $min ) { return; } } my $mo = Locale::Msgfmt::mo->new; $mo->initialize; my $po = Locale::Msgfmt::po->new( { fuzzy => $hash->{fuzzy} } ); $po->parse( $hash->{in}, $mo ); $mo->prepare; unlink( $hash->{out} ) if -f $hash->{out}; $mo->out( $hash->{out} ); print $hash->{in} . " -> " . $hash->{out} . "\n" if $hash->{verbose}; unlink( $hash->{in} ) if $hash->{remove}; } sub _msgfmt_dir { my $hash = shift; unless ( -d $hash->{in} ) { die("error: input directory does not exist"); } unless ( defined $hash->{out} ) { $hash->{out} = $hash->{in}; } unless ( -d $hash->{out} ) { File::Path::mkpath( $hash->{out} ); } print "$hash->{in} -> $hash->{out}\n" if $hash->{verbose}; local *DIRECTORY; opendir( DIRECTORY, $hash->{in} ) or die "Could not open ($hash->{in}) $!"; my @list = readdir DIRECTORY; closedir DIRECTORY; my @removelist = (); if ( $hash->{remove} ) { @removelist = grep /\.pot$/, @list; } @list = grep /\.po$/, @list; my %files; foreach ( @list ) { my $in = File::Spec->catfile( $hash->{in}, $_ ); my $out = File::Spec->catfile( $hash->{out}, substr( $_, 0, -3 ) . ".mo" ); $files{$in} = $out; } foreach ( keys %files ) { _msgfmt( { %$hash, in => $_, out => $files{$_} } ); } foreach ( @removelist ) { my $f = File::Spec->catfile( $hash->{in}, $_ ); print "-$f\n" if $hash->{verbose}; unlink($f); } } 1; =pod =head1 NAME Locale::Msgfmt - Compile .po files to .mo files =head1 SYNOPSIS This module does the same thing as msgfmt from GNU gettext-tools, except this is pure Perl. The interface is best explained through examples: use Locale::Msgfmt; # Compile po/fr.po into po/fr.mo msgfmt({in => "po/fr.po", out => "po/fr.mo"}); # Compile po/fr.po into po/fr.mo and include fuzzy translations msgfmt({in => "po/fr.po", out => "po/fr.mo", fuzzy => 1}); # Compile all the .po files in the po directory, and write the .mo # files to the po directory msgfmt("po/"); # Compile all the .po files in the po directory, and write the .mo # files to the po directory, and include fuzzy translations msgfmt({in => "po/", fuzzy => 1}); # Compile all the .po files in the po directory, and write the .mo # files to the output directory, creating the output directory if # it doesn't already exist msgfmt({in => "po/", out => "output/"}); # Compile all the .po files in the po directory, and write the .mo # files to the output directory, and include fuzzy translations msgfmt({in => "po/", out => "output/", fuzzy => 1}); # Compile po/fr.po into po/fr.mo msgfmt("po/fr.po"); # Compile po/fr.po into po/fr.mo and include fuzzy translations msgfmt({in => "po/fr.po", fuzzy => 1}); =head1 COPYRIGHT & LICENSE Copyright 2009 Ryan Niebur, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut Locale-Msgfmt-0.15/lib/Locale/Msgfmt/0000755000175000017500000000000011465454673017202 5ustar azawawiazawawiLocale-Msgfmt-0.15/lib/Locale/Msgfmt/po.pm0000644000175000017500000000455011464227315020150 0ustar azawawiazawawipackage Locale::Msgfmt::po; use 5.008005; use strict; use warnings; use Locale::Msgfmt::Utils (); our $VERSION = '0.15'; sub new { my $class = shift; return bless shift || {}, $class; } sub cleanup_string { my $str = shift; $str =~ s/\\n/\n/g; $str =~ s/\\r/\r/g; $str =~ s/\\t/\t/g; $str =~ s/\\"/"/g; $str =~ s/\\\\/\\/g; return $str; } sub add_string { my $self = shift; my $hash = shift; my %h = %{$hash}; return if !( defined( $h{msgid} ) && defined( $h{msgstr} ) ); return if ( $h{fuzzy} && !$self->{fuzzy} && length( $h{msgid} ) > 0 ); my $msgstr = join Locale::Msgfmt::Utils::null(), @{ $h{msgstr} }; return if ( $msgstr eq "" ); my $context; my $plural; if ( $h{msgctxt} ) { $context = cleanup_string( $h{msgctxt} ) . Locale::Msgfmt::Utils::eot(); } else { $context = ""; } if ( $h{msgid_plural} ) { $plural = Locale::Msgfmt::Utils::null() . cleanup_string( $h{msgid_plural} ); } else { $plural = ""; } $self->{mo}->add_string( $context . cleanup_string( $h{msgid} ) . $plural, cleanup_string($msgstr) ); } sub read_po { my $self = shift; my $pofile = shift; my $mo = $self->{mo}; open my $F, '<', $pofile or die "Could not open ($pofile) $!"; my %h = (); my $type; while (<$F>) { s/\r\n/\n/; if (/^(msgid(?:|_plural)|msgctxt) +"(.*)" *$/) { $type = $1; if ( defined( $h{$type} ) ) { $self->add_string( \%h ); %h = (); } $h{$type} = $2; } elsif (/^msgstr(?:\[(\d*)\])? +"(.*)" *$/) { $type = "msgstr"; if ( !$h{$type} ) { @{ $h{$type} } = (); } push @{ $h{$type} }, $2; } elsif (/^"(.*)" *$/) { if ( $type eq "msgstr" ) { @{ $h{$type} }[ scalar( @{ $h{$type} } ) - 1 ] .= $1; } else { $h{$type} .= $1; } } elsif (/^ *$/) { $self->add_string( \%h ); %h = (); $type = undef; } elsif (/^#/) { if (/^#, fuzzy/) { $h{fuzzy} = 1; } elsif (/^#:/) { if ( defined( $h{msgid} ) ) { $self->add_string( \%h ); %h = (); $type = undef; } } } else { die( "unknown line: " . $_ ); } } $self->add_string( \%h ); close $F; } sub parse { my $self = shift; my ( $pofile, $mo ) = @_; $self->{mo} = $mo; $self->read_po($pofile); } 1; __END__ =pod =head1 NAME Locale::Msgfmt::po - class used internally by Locale::Msgfmt =head1 SYNOPSIS This module shouldn't be used by other software. =head1 SEE ALSO L =cut Locale-Msgfmt-0.15/lib/Locale/Msgfmt/Utils.pm0000644000175000017500000000171511464227315020632 0ustar azawawiazawawipackage Locale::Msgfmt::Utils; use 5.008005; use strict; use warnings; our $VERSION = '0.15'; sub character { return map { pack "N*", $_ } @_; } sub _from_character { return map { ord($_) } @_; } sub from_character { return character( _from_character(@_) ); } sub _from_hex { return map { hex($_) } @_; } sub from_hex { return character( _from_hex(@_) ); } sub _from_string { return split //, join '', @_; } sub from_string { return join_string( from_character( _from_string(@_) ) ); } sub join_string { return join '', @_; } sub number_to_s { return sprintf "%d", shift; } sub null_terminate { return pack "Z*", shift; } sub null { return null_terminate(""); } sub eot { return chr(4); } sub mtime { return @{ [ stat(shift) ] }[9]; } 1; __END__ =pod =head1 NAME Locale::Msgfmt::Utils - Functions used internally by Locale::Msgfmt =head1 SYNOPSIS This module shouldn't be used by other software. =head1 SEE ALSO L =cut Locale-Msgfmt-0.15/lib/Locale/Msgfmt/mo.pm0000644000175000017500000000377311464227315020153 0ustar azawawiazawawipackage Locale::Msgfmt::mo; use 5.008005; use strict; use warnings; use Locale::Msgfmt::Utils (); our $VERSION = '0.15'; sub new { return bless {}, shift; } sub initialize { my $self = shift; $self->{magic} = "0x950412de"; $self->{format} = 0; $self->{strings} = {}; } sub add_string { $_[0]->{strings}->{$_[1]} = $_[2]; } sub prepare { my $self = shift; $self->{count} = scalar keys %{ $self->{strings} }; $self->{free_mem} = 28 + $self->{count} * 16; $self->{sorted} = [ sort keys %{ $self->{strings} } ]; $self->{translations} = [ map { $self->{strings}->{$_} } @{ $self->{sorted} } ]; } sub out { my $self = shift; my $file = shift; open my $OUT, ">", $file or die "Could not open ($file) $!"; binmode $OUT; print $OUT Locale::Msgfmt::Utils::from_hex( $self->{magic} ); print $OUT Locale::Msgfmt::Utils::character( $self->{format} ); print $OUT Locale::Msgfmt::Utils::character( $self->{count} ); print $OUT Locale::Msgfmt::Utils::character(28); print $OUT Locale::Msgfmt::Utils::character( 28 + $self->{count} * 8 ); print $OUT Locale::Msgfmt::Utils::character(0); print $OUT Locale::Msgfmt::Utils::character(0); foreach ( @{ $self->{sorted} } ) { my $length = length($_); print $OUT Locale::Msgfmt::Utils::character($length); print $OUT Locale::Msgfmt::Utils::character( $self->{free_mem} ); $self->{free_mem} += $length + 1; } foreach ( @{ $self->{translations} } ) { my $length = length($_); print $OUT Locale::Msgfmt::Utils::character($length); print $OUT Locale::Msgfmt::Utils::character( $self->{free_mem} ); $self->{free_mem} += $length + 1; } foreach ( @{ $self->{sorted} } ) { print $OUT Locale::Msgfmt::Utils::null_terminate($_); } foreach ( @{ $self->{translations} } ) { print $OUT Locale::Msgfmt::Utils::null_terminate($_); } close $OUT; } 1; __END__ =pod =head1 NAME Locale::Msgfmt::mo - class used internally by Locale::Msgfmt =head1 SYNOPSIS This module shouldn't be used by other software. =head1 SEE ALSO L =cut Locale-Msgfmt-0.15/MANIFEST0000644000175000017500000000137511465454670015134 0ustar azawawiazawawiChanges inc/Module/Install.pm inc/Module/Install/Base.pm inc/Module/Install/Can.pm inc/Module/Install/DSL.pm inc/Module/Install/Fetch.pm inc/Module/Install/Makefile.pm inc/Module/Install/Metadata.pm inc/Module/Install/Win32.pm inc/Module/Install/WriteAll.pm lib/Locale/Msgfmt.pm lib/Locale/Msgfmt/mo.pm lib/Locale/Msgfmt/po.pm lib/Locale/Msgfmt/Utils.pm lib/Module/Install/Msgfmt.pm Makefile.PL MANIFEST This list of files META.yml private/compare private/compare-all private/dump-mo private/dump-po README script/msgfmt.pl t/00-load.t t/interface.t t/msgfmt.t t/samples/basic.mo t/samples/basic.po t/samples/build t/samples/context.mo t/samples/context.po t/samples/fuzz.mo t/samples/ja.mo t/samples/ja.po t/samples/ngettext.mo t/samples/ngettext.po t/version.t Locale-Msgfmt-0.15/META.yml0000644000175000017500000000112011465454662015241 0ustar azawawiazawawi--- abstract: 'Compile .po files to .mo files' author: - 'Ryan Niebur, all rights reserved.' build_requires: ExtUtils::MakeMaker: 6.42 Test::More: 0.47 configure_requires: ExtUtils::MakeMaker: 6.42 distribution_type: module generated_by: 'Module::Install version 1.00' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 module_name: Locale::Msgfmt name: Locale-Msgfmt no_index: directory: - inc - private - t requires: File::Spec: 0.80 perl: 5.8.5 resources: license: http://dev.perl.org/licenses/ version: 0.15 Locale-Msgfmt-0.15/inc/0000755000175000017500000000000011465454673014551 5ustar azawawiazawawiLocale-Msgfmt-0.15/inc/Module/0000755000175000017500000000000011465454673015776 5ustar azawawiazawawiLocale-Msgfmt-0.15/inc/Module/Install.pm0000644000175000017500000003013511465454660017740 0ustar azawawiazawawi#line 1 package Module::Install; # For any maintainers: # The load order for Module::Install is a bit magic. # It goes something like this... # # IF ( host has Module::Install installed, creating author mode ) { # 1. Makefile.PL calls "use inc::Module::Install" # 2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install # 3. The installed version of inc::Module::Install loads # 4. inc::Module::Install calls "require Module::Install" # 5. The ./inc/ version of Module::Install loads # } ELSE { # 1. Makefile.PL calls "use inc::Module::Install" # 2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install # 3. The ./inc/ version of Module::Install loads # } use 5.005; use strict 'vars'; use Cwd (); use File::Find (); use File::Path (); use vars qw{$VERSION $MAIN}; BEGIN { # All Module::Install core packages now require synchronised versions. # This will be used to ensure we don't accidentally load old or # different versions of modules. # This is not enforced yet, but will be some time in the next few # releases once we can make sure it won't clash with custom # Module::Install extensions. $VERSION = '1.00'; # Storage for the pseudo-singleton $MAIN = undef; *inc::Module::Install::VERSION = *VERSION; @inc::Module::Install::ISA = __PACKAGE__; } sub import { my $class = shift; my $self = $class->new(@_); my $who = $self->_caller; #------------------------------------------------------------- # all of the following checks should be included in import(), # to allow "eval 'require Module::Install; 1' to test # installation of Module::Install. (RT #51267) #------------------------------------------------------------- # Whether or not inc::Module::Install is actually loaded, the # $INC{inc/Module/Install.pm} is what will still get set as long as # the caller loaded module this in the documented manner. # If not set, the caller may NOT have loaded the bundled version, and thus # they may not have a MI version that works with the Makefile.PL. This would # result in false errors or unexpected behaviour. And we don't want that. my $file = join( '/', 'inc', split /::/, __PACKAGE__ ) . '.pm'; unless ( $INC{$file} ) { die <<"END_DIE" } Please invoke ${\__PACKAGE__} with: use inc::${\__PACKAGE__}; not: use ${\__PACKAGE__}; END_DIE # This reportedly fixes a rare Win32 UTC file time issue, but # as this is a non-cross-platform XS module not in the core, # we shouldn't really depend on it. See RT #24194 for detail. # (Also, this module only supports Perl 5.6 and above). eval "use Win32::UTCFileTime" if $^O eq 'MSWin32' && $] >= 5.006; # If the script that is loading Module::Install is from the future, # then make will detect this and cause it to re-run over and over # again. This is bad. Rather than taking action to touch it (which # is unreliable on some platforms and requires write permissions) # for now we should catch this and refuse to run. if ( -f $0 ) { my $s = (stat($0))[9]; # If the modification time is only slightly in the future, # sleep briefly to remove the problem. my $a = $s - time; if ( $a > 0 and $a < 5 ) { sleep 5 } # Too far in the future, throw an error. my $t = time; if ( $s > $t ) { die <<"END_DIE" } Your installer $0 has a modification time in the future ($s > $t). This is known to create infinite loops in make. Please correct this, then run $0 again. END_DIE } # Build.PL was formerly supported, but no longer is due to excessive # difficulty in implementing every single feature twice. if ( $0 =~ /Build.PL$/i ) { die <<"END_DIE" } Module::Install no longer supports Build.PL. It was impossible to maintain duel backends, and has been deprecated. Please remove all Build.PL files and only use the Makefile.PL installer. END_DIE #------------------------------------------------------------- # To save some more typing in Module::Install installers, every... # use inc::Module::Install # ...also acts as an implicit use strict. $^H |= strict::bits(qw(refs subs vars)); #------------------------------------------------------------- unless ( -f $self->{file} ) { foreach my $key (keys %INC) { delete $INC{$key} if $key =~ /Module\/Install/; } local $^W; require "$self->{path}/$self->{dispatch}.pm"; File::Path::mkpath("$self->{prefix}/$self->{author}"); $self->{admin} = "$self->{name}::$self->{dispatch}"->new( _top => $self ); $self->{admin}->init; @_ = ($class, _self => $self); goto &{"$self->{name}::import"}; } local $^W; *{"${who}::AUTOLOAD"} = $self->autoload; $self->preload; # Unregister loader and worker packages so subdirs can use them again delete $INC{'inc/Module/Install.pm'}; delete $INC{'Module/Install.pm'}; # Save to the singleton $MAIN = $self; return 1; } sub autoload { my $self = shift; my $who = $self->_caller; my $cwd = Cwd::cwd(); my $sym = "${who}::AUTOLOAD"; $sym->{$cwd} = sub { my $pwd = Cwd::cwd(); if ( my $code = $sym->{$pwd} ) { # Delegate back to parent dirs goto &$code unless $cwd eq $pwd; } unless ($$sym =~ s/([^:]+)$//) { # XXX: it looks like we can't retrieve the missing function # via $$sym (usually $main::AUTOLOAD) in this case. # I'm still wondering if we should slurp Makefile.PL to # get some context or not ... my ($package, $file, $line) = caller; die <<"EOT"; Unknown function is found at $file line $line. Execution of $file aborted due to runtime errors. If you're a contributor to a project, you may need to install some Module::Install extensions from CPAN (or other repository). If you're a user of a module, please contact the author. EOT } my $method = $1; if ( uc($method) eq $method ) { # Do nothing return; } elsif ( $method =~ /^_/ and $self->can($method) ) { # Dispatch to the root M:I class return $self->$method(@_); } # Dispatch to the appropriate plugin unshift @_, ( $self, $1 ); goto &{$self->can('call')}; }; } sub preload { my $self = shift; unless ( $self->{extensions} ) { $self->load_extensions( "$self->{prefix}/$self->{path}", $self ); } my @exts = @{$self->{extensions}}; unless ( @exts ) { @exts = $self->{admin}->load_all_extensions; } my %seen; foreach my $obj ( @exts ) { while (my ($method, $glob) = each %{ref($obj) . '::'}) { next unless $obj->can($method); next if $method =~ /^_/; next if $method eq uc($method); $seen{$method}++; } } my $who = $self->_caller; foreach my $name ( sort keys %seen ) { local $^W; *{"${who}::$name"} = sub { ${"${who}::AUTOLOAD"} = "${who}::$name"; goto &{"${who}::AUTOLOAD"}; }; } } sub new { my ($class, %args) = @_; delete $INC{'FindBin.pm'}; { # to suppress the redefine warning local $SIG{__WARN__} = sub {}; require FindBin; } # ignore the prefix on extension modules built from top level. my $base_path = Cwd::abs_path($FindBin::Bin); unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) { delete $args{prefix}; } return $args{_self} if $args{_self}; $args{dispatch} ||= 'Admin'; $args{prefix} ||= 'inc'; $args{author} ||= ($^O eq 'VMS' ? '_author' : '.author'); $args{bundle} ||= 'inc/BUNDLES'; $args{base} ||= $base_path; $class =~ s/^\Q$args{prefix}\E:://; $args{name} ||= $class; $args{version} ||= $class->VERSION; unless ( $args{path} ) { $args{path} = $args{name}; $args{path} =~ s!::!/!g; } $args{file} ||= "$args{base}/$args{prefix}/$args{path}.pm"; $args{wrote} = 0; bless( \%args, $class ); } sub call { my ($self, $method) = @_; my $obj = $self->load($method) or return; splice(@_, 0, 2, $obj); goto &{$obj->can($method)}; } sub load { my ($self, $method) = @_; $self->load_extensions( "$self->{prefix}/$self->{path}", $self ) unless $self->{extensions}; foreach my $obj (@{$self->{extensions}}) { return $obj if $obj->can($method); } my $admin = $self->{admin} or die <<"END_DIE"; The '$method' method does not exist in the '$self->{prefix}' path! Please remove the '$self->{prefix}' directory and run $0 again to load it. END_DIE my $obj = $admin->load($method, 1); push @{$self->{extensions}}, $obj; $obj; } sub load_extensions { my ($self, $path, $top) = @_; my $should_reload = 0; unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) { unshift @INC, $self->{prefix}; $should_reload = 1; } foreach my $rv ( $self->find_extensions($path) ) { my ($file, $pkg) = @{$rv}; next if $self->{pathnames}{$pkg}; local $@; my $new = eval { local $^W; require $file; $pkg->can('new') }; unless ( $new ) { warn $@ if $@; next; } $self->{pathnames}{$pkg} = $should_reload ? delete $INC{$file} : $INC{$file}; push @{$self->{extensions}}, &{$new}($pkg, _top => $top ); } $self->{extensions} ||= []; } sub find_extensions { my ($self, $path) = @_; my @found; File::Find::find( sub { my $file = $File::Find::name; return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is; my $subpath = $1; return if lc($subpath) eq lc($self->{dispatch}); $file = "$self->{path}/$subpath.pm"; my $pkg = "$self->{name}::$subpath"; $pkg =~ s!/!::!g; # If we have a mixed-case package name, assume case has been preserved # correctly. Otherwise, root through the file to locate the case-preserved # version of the package name. if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) { my $content = Module::Install::_read($subpath . '.pm'); my $in_pod = 0; foreach ( split //, $content ) { $in_pod = 1 if /^=\w/; $in_pod = 0 if /^=cut/; next if ($in_pod || /^=cut/); # skip pod text next if /^\s*#/; # and comments if ( m/^\s*package\s+($pkg)\s*;/i ) { $pkg = $1; last; } } } push @found, [ $file, $pkg ]; }, $path ) if -d $path; @found; } ##################################################################### # Common Utility Functions sub _caller { my $depth = 0; my $call = caller($depth); while ( $call eq __PACKAGE__ ) { $depth++; $call = caller($depth); } return $call; } # Done in evals to avoid confusing Perl::MinimumVersion eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@; sub _read { local *FH; open( FH, '<', $_[0] ) or die "open($_[0]): $!"; my $string = do { local $/; }; close FH or die "close($_[0]): $!"; return $string; } END_NEW sub _read { local *FH; open( FH, "< $_[0]" ) or die "open($_[0]): $!"; my $string = do { local $/; }; close FH or die "close($_[0]): $!"; return $string; } END_OLD sub _readperl { my $string = Module::Install::_read($_[0]); $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg; $string =~ s/(\n)\n*__(?:DATA|END)__\b.*\z/$1/s; $string =~ s/\n\n=\w+.+?\n\n=cut\b.+?\n+/\n\n/sg; return $string; } sub _readpod { my $string = Module::Install::_read($_[0]); $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg; return $string if $_[0] =~ /\.pod\z/; $string =~ s/(^|\n=cut\b.+?\n+)[^=\s].+?\n(\n=\w+|\z)/$1$2/sg; $string =~ s/\n*=pod\b[^\n]*\n+/\n\n/sg; $string =~ s/\n*=cut\b[^\n]*\n+/\n\n/sg; $string =~ s/^\n+//s; return $string; } # Done in evals to avoid confusing Perl::MinimumVersion eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@; sub _write { local *FH; open( FH, '>', $_[0] ) or die "open($_[0]): $!"; foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!"; } close FH or die "close($_[0]): $!"; } END_NEW sub _write { local *FH; open( FH, "> $_[0]" ) or die "open($_[0]): $!"; foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!"; } close FH or die "close($_[0]): $!"; } END_OLD # _version is for processing module versions (eg, 1.03_05) not # Perl versions (eg, 5.8.1). sub _version ($) { my $s = shift || 0; my $d =()= $s =~ /(\.)/g; if ( $d >= 2 ) { # Normalise multipart versions $s =~ s/(\.)(\d{1,3})/sprintf("$1%03d",$2)/eg; } $s =~ s/^(\d+)\.?//; my $l = $1 || 0; my @v = map { $_ . '0' x (3 - length $_) } $s =~ /(\d{1,3})\D?/g; $l = $l . '.' . join '', @v if @v; return $l + 0; } sub _cmp ($$) { _version($_[0]) <=> _version($_[1]); } # Cloned from Params::Util::_CLASS sub _CLASS ($) { ( defined $_[0] and ! ref $_[0] and $_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s ) ? $_[0] : undef; } 1; # Copyright 2008 - 2010 Adam Kennedy. Locale-Msgfmt-0.15/inc/Module/Install/0000755000175000017500000000000011465454673017404 5ustar azawawiazawawiLocale-Msgfmt-0.15/inc/Module/Install/WriteAll.pm0000644000175000017500000000237611465454661021472 0ustar azawawiazawawi#line 1 package Module::Install::WriteAll; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = qw{Module::Install::Base}; $ISCORE = 1; } sub WriteAll { my $self = shift; my %args = ( meta => 1, sign => 0, inline => 0, check_nmake => 1, @_, ); $self->sign(1) if $args{sign}; $self->admin->WriteAll(%args) if $self->is_admin; $self->check_nmake if $args{check_nmake}; unless ( $self->makemaker_args->{PL_FILES} ) { # XXX: This still may be a bit over-defensive... unless ($self->makemaker(6.25)) { $self->makemaker_args( PL_FILES => {} ) if -f 'Build.PL'; } } # Until ExtUtils::MakeMaker support MYMETA.yml, make sure # we clean it up properly ourself. $self->realclean_files('MYMETA.yml'); if ( $args{inline} ) { $self->Inline->write; } else { $self->Makefile->write; } # The Makefile write process adds a couple of dependencies, # so write the META.yml files after the Makefile. if ( $args{meta} ) { $self->Meta->write; } # Experimental support for MYMETA if ( $ENV{X_MYMETA} ) { if ( $ENV{X_MYMETA} eq 'JSON' ) { $self->Meta->write_mymeta_json; } else { $self->Meta->write_mymeta_yaml; } } return 1; } 1; Locale-Msgfmt-0.15/inc/Module/Install/Fetch.pm0000644000175000017500000000462711465454661021001 0ustar azawawiazawawi#line 1 package Module::Install::Fetch; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub get_file { my ($self, %args) = @_; my ($scheme, $host, $path, $file) = $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return; if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) { $args{url} = $args{ftp_url} or (warn("LWP support unavailable!\n"), return); ($scheme, $host, $path, $file) = $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return; } $|++; print "Fetching '$file' from $host... "; unless (eval { require Socket; Socket::inet_aton($host) }) { warn "'$host' resolve failed!\n"; return; } return unless $scheme eq 'ftp' or $scheme eq 'http'; require Cwd; my $dir = Cwd::getcwd(); chdir $args{local_dir} or return if exists $args{local_dir}; if (eval { require LWP::Simple; 1 }) { LWP::Simple::mirror($args{url}, $file); } elsif (eval { require Net::FTP; 1 }) { eval { # use Net::FTP to get past firewall my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600); $ftp->login("anonymous", 'anonymous@example.com'); $ftp->cwd($path); $ftp->binary; $ftp->get($file) or (warn("$!\n"), return); $ftp->quit; } } elsif (my $ftp = $self->can_run('ftp')) { eval { # no Net::FTP, fallback to ftp.exe require FileHandle; my $fh = FileHandle->new; local $SIG{CHLD} = 'IGNORE'; unless ($fh->open("|$ftp -n")) { warn "Couldn't open ftp: $!\n"; chdir $dir; return; } my @dialog = split(/\n/, <<"END_FTP"); open $host user anonymous anonymous\@example.com cd $path binary get $file $file quit END_FTP foreach (@dialog) { $fh->print("$_\n") } $fh->close; } } else { warn "No working 'ftp' program available!\n"; chdir $dir; return; } unless (-f $file) { warn "Fetching failed: $@\n"; chdir $dir; return; } return if exists $args{size} and -s $file != $args{size}; system($args{run}) if exists $args{run}; unlink($file) if $args{remove}; print(((!exists $args{check_for} or -e $args{check_for}) ? "done!" : "failed! ($!)"), "\n"); chdir $dir; return !$?; } 1; Locale-Msgfmt-0.15/inc/Module/Install/DSL.pm0000644000175000017500000000425011465454661020362 0ustar azawawiazawawi#line 1 package Module::Install::DSL; use strict; use vars qw{$VERSION $ISCORE}; BEGIN { $VERSION = '1.00'; $ISCORE = 1; *inc::Module::Install::DSL::VERSION = *VERSION; @inc::Module::Install::DSL::ISA = __PACKAGE__; } sub import { # Read in the rest of the Makefile.PL open 0 or die "Couldn't open $0: $!"; my $dsl; SCOPE: { local $/ = undef; $dsl = join "", <0>; } # Change inc::Module::Install::DSL to the regular one. # Remove anything before the use inc::... line. $dsl =~ s/.*?^\s*use\s+(?:inc::)?Module::Install::DSL(\b[^;]*);\s*\n//sm; # Load inc::Module::Install as we would in a regular Makefile.Pl SCOPE: { package main; require inc::Module::Install; inc::Module::Install->import; } # Add the ::DSL plugin to the list of packages in /inc my $admin = $Module::Install::MAIN->{admin}; if ( $admin ) { my $from = $INC{"$admin->{path}/DSL.pm"}; my $to = "$admin->{base}/$admin->{prefix}/$admin->{path}/DSL.pm"; $admin->copy( $from => $to ); } # Convert the basic syntax to code my $code = "INIT {\n" . "package main;\n\n" . dsl2code($dsl) . "\n\nWriteAll();\n" . "}\n"; # Execute the script eval $code; print STDERR "Failed to execute the generated code...\n$@" if $@; exit(0); } sub dsl2code { my $dsl = shift; # Split into lines and strip blanks my @lines = grep { /\S/ } split /[\012\015]+/, $dsl; # Each line represents one command my @code = (); foreach my $line ( @lines ) { # Split the lines into tokens my @tokens = split /\s+/, $line; # The first word is the command my $command = shift @tokens; my @params = (); my @suffix = (); while ( @tokens ) { my $token = shift @tokens; if ( $token eq 'if' or $token eq 'unless' ) { # This is the beginning of a suffix push @suffix, $token; push @suffix, @tokens; last; } else { # Convert to a string $token =~ s/([\\\'])/\\$1/g; push @params, "'$token'"; } }; # Merge to create the final line of code @tokens = ( $command, @params ? join( ', ', @params ) : (), @suffix ); push @code, join( ' ', @tokens ) . ";\n"; } # Join into the complete code block return join( '', @code ); } 1; Locale-Msgfmt-0.15/inc/Module/Install/Makefile.pm0000644000175000017500000002703211465454661021460 0ustar azawawiazawawi#line 1 package Module::Install::Makefile; use strict 'vars'; use ExtUtils::MakeMaker (); use Module::Install::Base (); use Fcntl qw/:flock :seek/; use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub Makefile { $_[0] } my %seen = (); sub prompt { shift; # Infinite loop protection my @c = caller(); if ( ++$seen{"$c[1]|$c[2]|$_[0]"} > 3 ) { die "Caught an potential prompt infinite loop ($c[1]|$c[2]|$_[0])"; } # In automated testing or non-interactive session, always use defaults if ( ($ENV{AUTOMATED_TESTING} or -! -t STDIN) and ! $ENV{PERL_MM_USE_DEFAULT} ) { local $ENV{PERL_MM_USE_DEFAULT} = 1; goto &ExtUtils::MakeMaker::prompt; } else { goto &ExtUtils::MakeMaker::prompt; } } # Store a cleaned up version of the MakeMaker version, # since we need to behave differently in a variety of # ways based on the MM version. my $makemaker = eval $ExtUtils::MakeMaker::VERSION; # If we are passed a param, do a "newer than" comparison. # Otherwise, just return the MakeMaker version. sub makemaker { ( @_ < 2 or $makemaker >= eval($_[1]) ) ? $makemaker : 0 } # Ripped from ExtUtils::MakeMaker 6.56, and slightly modified # as we only need to know here whether the attribute is an array # or a hash or something else (which may or may not be appendable). my %makemaker_argtype = ( C => 'ARRAY', CONFIG => 'ARRAY', # CONFIGURE => 'CODE', # ignore DIR => 'ARRAY', DL_FUNCS => 'HASH', DL_VARS => 'ARRAY', EXCLUDE_EXT => 'ARRAY', EXE_FILES => 'ARRAY', FUNCLIST => 'ARRAY', H => 'ARRAY', IMPORTS => 'HASH', INCLUDE_EXT => 'ARRAY', LIBS => 'ARRAY', # ignore '' MAN1PODS => 'HASH', MAN3PODS => 'HASH', META_ADD => 'HASH', META_MERGE => 'HASH', PL_FILES => 'HASH', PM => 'HASH', PMLIBDIRS => 'ARRAY', PMLIBPARENTDIRS => 'ARRAY', PREREQ_PM => 'HASH', CONFIGURE_REQUIRES => 'HASH', SKIP => 'ARRAY', TYPEMAPS => 'ARRAY', XS => 'HASH', # VERSION => ['version',''], # ignore # _KEEP_AFTER_FLUSH => '', clean => 'HASH', depend => 'HASH', dist => 'HASH', dynamic_lib=> 'HASH', linkext => 'HASH', macro => 'HASH', postamble => 'HASH', realclean => 'HASH', test => 'HASH', tool_autosplit => 'HASH', # special cases where you can use makemaker_append CCFLAGS => 'APPENDABLE', DEFINE => 'APPENDABLE', INC => 'APPENDABLE', LDDLFLAGS => 'APPENDABLE', LDFROM => 'APPENDABLE', ); sub makemaker_args { my ($self, %new_args) = @_; my $args = ( $self->{makemaker_args} ||= {} ); foreach my $key (keys %new_args) { if ($makemaker_argtype{$key}) { if ($makemaker_argtype{$key} eq 'ARRAY') { $args->{$key} = [] unless defined $args->{$key}; unless (ref $args->{$key} eq 'ARRAY') { $args->{$key} = [$args->{$key}] } push @{$args->{$key}}, ref $new_args{$key} eq 'ARRAY' ? @{$new_args{$key}} : $new_args{$key}; } elsif ($makemaker_argtype{$key} eq 'HASH') { $args->{$key} = {} unless defined $args->{$key}; foreach my $skey (keys %{ $new_args{$key} }) { $args->{$key}{$skey} = $new_args{$key}{$skey}; } } elsif ($makemaker_argtype{$key} eq 'APPENDABLE') { $self->makemaker_append($key => $new_args{$key}); } } else { if (defined $args->{$key}) { warn qq{MakeMaker attribute "$key" is overriden; use "makemaker_append" to append values\n}; } $args->{$key} = $new_args{$key}; } } return $args; } # For mm args that take multiple space-seperated args, # append an argument to the current list. sub makemaker_append { my $self = shift; my $name = shift; my $args = $self->makemaker_args; $args->{$name} = defined $args->{$name} ? join( ' ', $args->{$name}, @_ ) : join( ' ', @_ ); } sub build_subdirs { my $self = shift; my $subdirs = $self->makemaker_args->{DIR} ||= []; for my $subdir (@_) { push @$subdirs, $subdir; } } sub clean_files { my $self = shift; my $clean = $self->makemaker_args->{clean} ||= {}; %$clean = ( %$clean, FILES => join ' ', grep { length $_ } ($clean->{FILES} || (), @_), ); } sub realclean_files { my $self = shift; my $realclean = $self->makemaker_args->{realclean} ||= {}; %$realclean = ( %$realclean, FILES => join ' ', grep { length $_ } ($realclean->{FILES} || (), @_), ); } sub libs { my $self = shift; my $libs = ref $_[0] ? shift : [ shift ]; $self->makemaker_args( LIBS => $libs ); } sub inc { my $self = shift; $self->makemaker_args( INC => shift ); } sub _wanted_t { } sub tests_recursive { my $self = shift; my $dir = shift || 't'; unless ( -d $dir ) { die "tests_recursive dir '$dir' does not exist"; } my %tests = map { $_ => 1 } split / /, ($self->tests || ''); require File::Find; File::Find::find( sub { /\.t$/ and -f $_ and $tests{"$File::Find::dir/*.t"} = 1 }, $dir ); $self->tests( join ' ', sort keys %tests ); } sub write { my $self = shift; die "&Makefile->write() takes no arguments\n" if @_; # Check the current Perl version my $perl_version = $self->perl_version; if ( $perl_version ) { eval "use $perl_version; 1" or die "ERROR: perl: Version $] is installed, " . "but we need version >= $perl_version"; } # Make sure we have a new enough MakeMaker require ExtUtils::MakeMaker; if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) { # MakeMaker can complain about module versions that include # an underscore, even though its own version may contain one! # Hence the funny regexp to get rid of it. See RT #35800 # for details. my $v = $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/; $self->build_requires( 'ExtUtils::MakeMaker' => $v ); $self->configure_requires( 'ExtUtils::MakeMaker' => $v ); } else { # Allow legacy-compatibility with 5.005 by depending on the # most recent EU:MM that supported 5.005. $self->build_requires( 'ExtUtils::MakeMaker' => 6.42 ); $self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 ); } # Generate the MakeMaker params my $args = $self->makemaker_args; $args->{DISTNAME} = $self->name; $args->{NAME} = $self->module_name || $self->name; $args->{NAME} =~ s/-/::/g; $args->{VERSION} = $self->version or die <<'EOT'; ERROR: Can't determine distribution version. Please specify it explicitly via 'version' in Makefile.PL, or set a valid $VERSION in a module, and provide its file path via 'version_from' (or 'all_from' if you prefer) in Makefile.PL. EOT $DB::single = 1; if ( $self->tests ) { my @tests = split ' ', $self->tests; my %seen; $args->{test} = { TESTS => (join ' ', grep {!$seen{$_}++} @tests), }; } elsif ( $Module::Install::ExtraTests::use_extratests ) { # Module::Install::ExtraTests doesn't set $self->tests and does its own tests via harness. # So, just ignore our xt tests here. } elsif ( -d 'xt' and ($Module::Install::AUTHOR or $ENV{RELEASE_TESTING}) ) { $args->{test} = { TESTS => join( ' ', map { "$_/*.t" } grep { -d $_ } qw{ t xt } ), }; } if ( $] >= 5.005 ) { $args->{ABSTRACT} = $self->abstract; $args->{AUTHOR} = join ', ', @{$self->author || []}; } if ( $self->makemaker(6.10) ) { $args->{NO_META} = 1; #$args->{NO_MYMETA} = 1; } if ( $self->makemaker(6.17) and $self->sign ) { $args->{SIGN} = 1; } unless ( $self->is_admin ) { delete $args->{SIGN}; } if ( $self->makemaker(6.31) and $self->license ) { $args->{LICENSE} = $self->license; } my $prereq = ($args->{PREREQ_PM} ||= {}); %$prereq = ( %$prereq, map { @$_ } # flatten [module => version] map { @$_ } grep $_, ($self->requires) ); # Remove any reference to perl, PREREQ_PM doesn't support it delete $args->{PREREQ_PM}->{perl}; # Merge both kinds of requires into BUILD_REQUIRES my $build_prereq = ($args->{BUILD_REQUIRES} ||= {}); %$build_prereq = ( %$build_prereq, map { @$_ } # flatten [module => version] map { @$_ } grep $_, ($self->configure_requires, $self->build_requires) ); # Remove any reference to perl, BUILD_REQUIRES doesn't support it delete $args->{BUILD_REQUIRES}->{perl}; # Delete bundled dists from prereq_pm, add it to Makefile DIR my $subdirs = ($args->{DIR} || []); if ($self->bundles) { my %processed; foreach my $bundle (@{ $self->bundles }) { my ($mod_name, $dist_dir) = @$bundle; delete $prereq->{$mod_name}; $dist_dir = File::Basename::basename($dist_dir); # dir for building this module if (not exists $processed{$dist_dir}) { if (-d $dist_dir) { # List as sub-directory to be processed by make push @$subdirs, $dist_dir; } # Else do nothing: the module is already present on the system $processed{$dist_dir} = undef; } } } unless ( $self->makemaker('6.55_03') ) { %$prereq = (%$prereq,%$build_prereq); delete $args->{BUILD_REQUIRES}; } if ( my $perl_version = $self->perl_version ) { eval "use $perl_version; 1" or die "ERROR: perl: Version $] is installed, " . "but we need version >= $perl_version"; if ( $self->makemaker(6.48) ) { $args->{MIN_PERL_VERSION} = $perl_version; } } if ($self->installdirs) { warn qq{old INSTALLDIRS (probably set by makemaker_args) is overriden by installdirs\n} if $args->{INSTALLDIRS}; $args->{INSTALLDIRS} = $self->installdirs; } my %args = map { ( $_ => $args->{$_} ) } grep {defined($args->{$_} ) } keys %$args; my $user_preop = delete $args{dist}->{PREOP}; if ( my $preop = $self->admin->preop($user_preop) ) { foreach my $key ( keys %$preop ) { $args{dist}->{$key} = $preop->{$key}; } } my $mm = ExtUtils::MakeMaker::WriteMakefile(%args); $self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile'); } sub fix_up_makefile { my $self = shift; my $makefile_name = shift; my $top_class = ref($self->_top) || ''; my $top_version = $self->_top->VERSION || ''; my $preamble = $self->preamble ? "# Preamble by $top_class $top_version\n" . $self->preamble : ''; my $postamble = "# Postamble by $top_class $top_version\n" . ($self->postamble || ''); local *MAKEFILE; open MAKEFILE, "+< $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!"; eval { flock MAKEFILE, LOCK_EX }; my $makefile = do { local $/; }; $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /; $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g; $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g; $makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m; $makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m; # Module::Install will never be used to build the Core Perl # Sometimes PERL_LIB and PERL_ARCHLIB get written anyway, which breaks # PREFIX/PERL5LIB, and thus, install_share. Blank them if they exist $makefile =~ s/^PERL_LIB = .+/PERL_LIB =/m; #$makefile =~ s/^PERL_ARCHLIB = .+/PERL_ARCHLIB =/m; # Perl 5.005 mentions PERL_LIB explicitly, so we have to remove that as well. $makefile =~ s/(\"?)-I\$\(PERL_LIB\)\1//g; # XXX - This is currently unused; not sure if it breaks other MM-users # $makefile =~ s/^pm_to_blib\s+:\s+/pm_to_blib :: /mg; seek MAKEFILE, 0, SEEK_SET; truncate MAKEFILE, 0; print MAKEFILE "$preamble$makefile$postamble" or die $!; close MAKEFILE or die $!; 1; } sub preamble { my ($self, $text) = @_; $self->{preamble} = $text . $self->{preamble} if defined $text; $self->{preamble}; } sub postamble { my ($self, $text) = @_; $self->{postamble} ||= $self->admin->postamble; $self->{postamble} .= $text if defined $text; $self->{postamble} } 1; __END__ #line 541 Locale-Msgfmt-0.15/inc/Module/Install/Win32.pm0000644000175000017500000000340311465454661020641 0ustar azawawiazawawi#line 1 package Module::Install::Win32; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } # determine if the user needs nmake, and download it if needed sub check_nmake { my $self = shift; $self->load('can_run'); $self->load('get_file'); require Config; return unless ( $^O eq 'MSWin32' and $Config::Config{make} and $Config::Config{make} =~ /^nmake\b/i and ! $self->can_run('nmake') ); print "The required 'nmake' executable not found, fetching it...\n"; require File::Basename; my $rv = $self->get_file( url => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe', ftp_url => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe', local_dir => File::Basename::dirname($^X), size => 51928, run => 'Nmake15.exe /o > nul', check_for => 'Nmake.exe', remove => 1, ); die <<'END_MESSAGE' unless $rv; ------------------------------------------------------------------------------- Since you are using Microsoft Windows, you will need the 'nmake' utility before installation. It's available at: http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe or ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe Please download the file manually, save it to a directory in %PATH% (e.g. C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to that directory, and run "Nmake15.exe" from there; that will create the 'nmake.exe' file needed by this module. You may then resume the installation process described in README. ------------------------------------------------------------------------------- END_MESSAGE } 1; Locale-Msgfmt-0.15/inc/Module/Install/Can.pm0000644000175000017500000000333311465454661020442 0ustar azawawiazawawi#line 1 package Module::Install::Can; use strict; use Config (); use File::Spec (); use ExtUtils::MakeMaker (); use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } # check if we can load some module ### Upgrade this to not have to load the module if possible sub can_use { my ($self, $mod, $ver) = @_; $mod =~ s{::|\\}{/}g; $mod .= '.pm' unless $mod =~ /\.pm$/i; my $pkg = $mod; $pkg =~ s{/}{::}g; $pkg =~ s{\.pm$}{}i; local $@; eval { require $mod; $pkg->VERSION($ver || 0); 1 }; } # check if we can run some command sub can_run { my ($self, $cmd) = @_; my $_cmd = $cmd; return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd)); for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { next if $dir eq ''; my $abs = File::Spec->catfile($dir, $_[1]); return $abs if (-x $abs or $abs = MM->maybe_command($abs)); } return; } # can we locate a (the) C compiler sub can_cc { my $self = shift; my @chunks = split(/ /, $Config::Config{cc}) or return; # $Config{cc} may contain args; try to find out the program part while (@chunks) { return $self->can_run("@chunks") || (pop(@chunks), next); } return; } # Fix Cygwin bug on maybe_command(); if ( $^O eq 'cygwin' ) { require ExtUtils::MM_Cygwin; require ExtUtils::MM_Win32; if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) { *ExtUtils::MM_Cygwin::maybe_command = sub { my ($self, $file) = @_; if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) { ExtUtils::MM_Win32->maybe_command($file); } else { ExtUtils::MM_Unix->maybe_command($file); } } } } 1; __END__ #line 156 Locale-Msgfmt-0.15/inc/Module/Install/Metadata.pm0000644000175000017500000004302011465454661021456 0ustar azawawiazawawi#line 1 package Module::Install::Metadata; use strict 'vars'; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } my @boolean_keys = qw{ sign }; my @scalar_keys = qw{ name module_name abstract version distribution_type tests installdirs }; my @tuple_keys = qw{ configure_requires build_requires requires recommends bundles resources }; my @resource_keys = qw{ homepage bugtracker repository }; my @array_keys = qw{ keywords author }; *authors = \&author; sub Meta { shift } sub Meta_BooleanKeys { @boolean_keys } sub Meta_ScalarKeys { @scalar_keys } sub Meta_TupleKeys { @tuple_keys } sub Meta_ResourceKeys { @resource_keys } sub Meta_ArrayKeys { @array_keys } foreach my $key ( @boolean_keys ) { *$key = sub { my $self = shift; if ( defined wantarray and not @_ ) { return $self->{values}->{$key}; } $self->{values}->{$key} = ( @_ ? $_[0] : 1 ); return $self; }; } foreach my $key ( @scalar_keys ) { *$key = sub { my $self = shift; return $self->{values}->{$key} if defined wantarray and !@_; $self->{values}->{$key} = shift; return $self; }; } foreach my $key ( @array_keys ) { *$key = sub { my $self = shift; return $self->{values}->{$key} if defined wantarray and !@_; $self->{values}->{$key} ||= []; push @{$self->{values}->{$key}}, @_; return $self; }; } foreach my $key ( @resource_keys ) { *$key = sub { my $self = shift; unless ( @_ ) { return () unless $self->{values}->{resources}; return map { $_->[1] } grep { $_->[0] eq $key } @{ $self->{values}->{resources} }; } return $self->{values}->{resources}->{$key} unless @_; my $uri = shift or die( "Did not provide a value to $key()" ); $self->resources( $key => $uri ); return 1; }; } foreach my $key ( grep { $_ ne "resources" } @tuple_keys) { *$key = sub { my $self = shift; return $self->{values}->{$key} unless @_; my @added; while ( @_ ) { my $module = shift or last; my $version = shift || 0; push @added, [ $module, $version ]; } push @{ $self->{values}->{$key} }, @added; return map {@$_} @added; }; } # Resource handling my %lc_resource = map { $_ => 1 } qw{ homepage license bugtracker repository }; sub resources { my $self = shift; while ( @_ ) { my $name = shift or last; my $value = shift or next; if ( $name eq lc $name and ! $lc_resource{$name} ) { die("Unsupported reserved lowercase resource '$name'"); } $self->{values}->{resources} ||= []; push @{ $self->{values}->{resources} }, [ $name, $value ]; } $self->{values}->{resources}; } # Aliases for build_requires that will have alternative # meanings in some future version of META.yml. sub test_requires { shift->build_requires(@_) } sub install_requires { shift->build_requires(@_) } # Aliases for installdirs options sub install_as_core { $_[0]->installdirs('perl') } sub install_as_cpan { $_[0]->installdirs('site') } sub install_as_site { $_[0]->installdirs('site') } sub install_as_vendor { $_[0]->installdirs('vendor') } sub dynamic_config { my $self = shift; unless ( @_ ) { warn "You MUST provide an explicit true/false value to dynamic_config\n"; return $self; } $self->{values}->{dynamic_config} = $_[0] ? 1 : 0; return 1; } sub perl_version { my $self = shift; return $self->{values}->{perl_version} unless @_; my $version = shift or die( "Did not provide a value to perl_version()" ); # Normalize the version $version = $self->_perl_version($version); # We don't support the reall old versions unless ( $version >= 5.005 ) { die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n"; } $self->{values}->{perl_version} = $version; } sub all_from { my ( $self, $file ) = @_; unless ( defined($file) ) { my $name = $self->name or die( "all_from called with no args without setting name() first" ); $file = join('/', 'lib', split(/-/, $name)) . '.pm'; $file =~ s{.*/}{} unless -e $file; unless ( -e $file ) { die("all_from cannot find $file from $name"); } } unless ( -f $file ) { die("The path '$file' does not exist, or is not a file"); } $self->{values}{all_from} = $file; # Some methods pull from POD instead of code. # If there is a matching .pod, use that instead my $pod = $file; $pod =~ s/\.pm$/.pod/i; $pod = $file unless -e $pod; # Pull the different values $self->name_from($file) unless $self->name; $self->version_from($file) unless $self->version; $self->perl_version_from($file) unless $self->perl_version; $self->author_from($pod) unless @{$self->author || []}; $self->license_from($pod) unless $self->license; $self->abstract_from($pod) unless $self->abstract; return 1; } sub provides { my $self = shift; my $provides = ( $self->{values}->{provides} ||= {} ); %$provides = (%$provides, @_) if @_; return $provides; } sub auto_provides { my $self = shift; return $self unless $self->is_admin; unless (-e 'MANIFEST') { warn "Cannot deduce auto_provides without a MANIFEST, skipping\n"; return $self; } # Avoid spurious warnings as we are not checking manifest here. local $SIG{__WARN__} = sub {1}; require ExtUtils::Manifest; local *ExtUtils::Manifest::manicheck = sub { return }; require Module::Build; my $build = Module::Build->new( dist_name => $self->name, dist_version => $self->version, license => $self->license, ); $self->provides( %{ $build->find_dist_packages || {} } ); } sub feature { my $self = shift; my $name = shift; my $features = ( $self->{values}->{features} ||= [] ); my $mods; if ( @_ == 1 and ref( $_[0] ) ) { # The user used ->feature like ->features by passing in the second # argument as a reference. Accomodate for that. $mods = $_[0]; } else { $mods = \@_; } my $count = 0; push @$features, ( $name => [ map { ref($_) ? ( ref($_) eq 'HASH' ) ? %$_ : @$_ : $_ } @$mods ] ); return @$features; } sub features { my $self = shift; while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) { $self->feature( $name, @$mods ); } return $self->{values}->{features} ? @{ $self->{values}->{features} } : (); } sub no_index { my $self = shift; my $type = shift; push @{ $self->{values}->{no_index}->{$type} }, @_ if $type; return $self->{values}->{no_index}; } sub read { my $self = shift; $self->include_deps( 'YAML::Tiny', 0 ); require YAML::Tiny; my $data = YAML::Tiny::LoadFile('META.yml'); # Call methods explicitly in case user has already set some values. while ( my ( $key, $value ) = each %$data ) { next unless $self->can($key); if ( ref $value eq 'HASH' ) { while ( my ( $module, $version ) = each %$value ) { $self->can($key)->($self, $module => $version ); } } else { $self->can($key)->($self, $value); } } return $self; } sub write { my $self = shift; return $self unless $self->is_admin; $self->admin->write_meta; return $self; } sub version_from { require ExtUtils::MM_Unix; my ( $self, $file ) = @_; $self->version( ExtUtils::MM_Unix->parse_version($file) ); # for version integrity check $self->makemaker_args( VERSION_FROM => $file ); } sub abstract_from { require ExtUtils::MM_Unix; my ( $self, $file ) = @_; $self->abstract( bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix' )->parse_abstract($file) ); } # Add both distribution and module name sub name_from { my ($self, $file) = @_; if ( Module::Install::_read($file) =~ m/ ^ \s* package \s* ([\w:]+) \s* ; /ixms ) { my ($name, $module_name) = ($1, $1); $name =~ s{::}{-}g; $self->name($name); unless ( $self->module_name ) { $self->module_name($module_name); } } else { die("Cannot determine name from $file\n"); } } sub _extract_perl_version { if ( $_[0] =~ m/ ^\s* (?:use|require) \s* v? ([\d_\.]+) \s* ; /ixms ) { my $perl_version = $1; $perl_version =~ s{_}{}g; return $perl_version; } else { return; } } sub perl_version_from { my $self = shift; my $perl_version=_extract_perl_version(Module::Install::_read($_[0])); if ($perl_version) { $self->perl_version($perl_version); } else { warn "Cannot determine perl version info from $_[0]\n"; return; } } sub author_from { my $self = shift; my $content = Module::Install::_read($_[0]); if ($content =~ m/ =head \d \s+ (?:authors?)\b \s* ([^\n]*) | =head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s* .*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s* ([^\n]*) /ixms) { my $author = $1 || $2; # XXX: ugly but should work anyway... if (eval "require Pod::Escapes; 1") { # Pod::Escapes has a mapping table. # It's in core of perl >= 5.9.3, and should be installed # as one of the Pod::Simple's prereqs, which is a prereq # of Pod::Text 3.x (see also below). $author =~ s{ E<( (\d+) | ([A-Za-z]+) )> } { defined $2 ? chr($2) : defined $Pod::Escapes::Name2character_number{$1} ? chr($Pod::Escapes::Name2character_number{$1}) : do { warn "Unknown escape: E<$1>"; "E<$1>"; }; }gex; } elsif (eval "require Pod::Text; 1" && $Pod::Text::VERSION < 3) { # Pod::Text < 3.0 has yet another mapping table, # though the table name of 2.x and 1.x are different. # (1.x is in core of Perl < 5.6, 2.x is in core of # Perl < 5.9.3) my $mapping = ($Pod::Text::VERSION < 2) ? \%Pod::Text::HTML_Escapes : \%Pod::Text::ESCAPES; $author =~ s{ E<( (\d+) | ([A-Za-z]+) )> } { defined $2 ? chr($2) : defined $mapping->{$1} ? $mapping->{$1} : do { warn "Unknown escape: E<$1>"; "E<$1>"; }; }gex; } else { $author =~ s{E}{<}g; $author =~ s{E}{>}g; } $self->author($author); } else { warn "Cannot determine author info from $_[0]\n"; } } #Stolen from M::B my %license_urls = ( perl => 'http://dev.perl.org/licenses/', apache => 'http://apache.org/licenses/LICENSE-2.0', apache_1_1 => 'http://apache.org/licenses/LICENSE-1.1', artistic => 'http://opensource.org/licenses/artistic-license.php', artistic_2 => 'http://opensource.org/licenses/artistic-license-2.0.php', lgpl => 'http://opensource.org/licenses/lgpl-license.php', lgpl2 => 'http://opensource.org/licenses/lgpl-2.1.php', lgpl3 => 'http://opensource.org/licenses/lgpl-3.0.html', bsd => 'http://opensource.org/licenses/bsd-license.php', gpl => 'http://opensource.org/licenses/gpl-license.php', gpl2 => 'http://opensource.org/licenses/gpl-2.0.php', gpl3 => 'http://opensource.org/licenses/gpl-3.0.html', mit => 'http://opensource.org/licenses/mit-license.php', mozilla => 'http://opensource.org/licenses/mozilla1.1.php', open_source => undef, unrestricted => undef, restrictive => undef, unknown => undef, ); sub license { my $self = shift; return $self->{values}->{license} unless @_; my $license = shift or die( 'Did not provide a value to license()' ); $license = __extract_license($license) || lc $license; $self->{values}->{license} = $license; # Automatically fill in license URLs if ( $license_urls{$license} ) { $self->resources( license => $license_urls{$license} ); } return 1; } sub _extract_license { my $pod = shift; my $matched; return __extract_license( ($matched) = $pod =~ m/ (=head \d \s+ L(?i:ICEN[CS]E|ICENSING)\b.*?) (=head \d.*|=cut.*|)\z /xms ) || __extract_license( ($matched) = $pod =~ m/ (=head \d \s+ (?:C(?i:OPYRIGHTS?)|L(?i:EGAL))\b.*?) (=head \d.*|=cut.*|)\z /xms ); } sub __extract_license { my $license_text = shift or return; my @phrases = ( '(?:under )?the same (?:terms|license) as (?:perl|the perl (?:\d )?programming language)' => 'perl', 1, '(?:under )?the terms of (?:perl|the perl programming language) itself' => 'perl', 1, 'Artistic and GPL' => 'perl', 1, 'GNU general public license' => 'gpl', 1, 'GNU public license' => 'gpl', 1, 'GNU lesser general public license' => 'lgpl', 1, 'GNU lesser public license' => 'lgpl', 1, 'GNU library general public license' => 'lgpl', 1, 'GNU library public license' => 'lgpl', 1, 'GNU Free Documentation license' => 'unrestricted', 1, 'GNU Affero General Public License' => 'open_source', 1, '(?:Free)?BSD license' => 'bsd', 1, 'Artistic license' => 'artistic', 1, 'Apache (?:Software )?license' => 'apache', 1, 'GPL' => 'gpl', 1, 'LGPL' => 'lgpl', 1, 'BSD' => 'bsd', 1, 'Artistic' => 'artistic', 1, 'MIT' => 'mit', 1, 'Mozilla Public License' => 'mozilla', 1, 'Q Public License' => 'open_source', 1, 'OpenSSL License' => 'unrestricted', 1, 'SSLeay License' => 'unrestricted', 1, 'zlib License' => 'open_source', 1, 'proprietary' => 'proprietary', 0, ); while ( my ($pattern, $license, $osi) = splice(@phrases, 0, 3) ) { $pattern =~ s#\s+#\\s+#gs; if ( $license_text =~ /\b$pattern\b/i ) { return $license; } } return ''; } sub license_from { my $self = shift; if (my $license=_extract_license(Module::Install::_read($_[0]))) { $self->license($license); } else { warn "Cannot determine license info from $_[0]\n"; return 'unknown'; } } sub _extract_bugtracker { my @links = $_[0] =~ m#L<( \Qhttp://rt.cpan.org/\E[^>]+| \Qhttp://github.com/\E[\w_]+/[\w_]+/issues| \Qhttp://code.google.com/p/\E[\w_\-]+/issues/list )>#gx; my %links; @links{@links}=(); @links=keys %links; return @links; } sub bugtracker_from { my $self = shift; my $content = Module::Install::_read($_[0]); my @links = _extract_bugtracker($content); unless ( @links ) { warn "Cannot determine bugtracker info from $_[0]\n"; return 0; } if ( @links > 1 ) { warn "Found more than one bugtracker link in $_[0]\n"; return 0; } # Set the bugtracker bugtracker( $links[0] ); return 1; } sub requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; $self->requires( $module => $version ); } } sub test_requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; $self->test_requires( $module => $version ); } } # Convert triple-part versions (eg, 5.6.1 or 5.8.9) to # numbers (eg, 5.006001 or 5.008009). # Also, convert double-part versions (eg, 5.8) sub _perl_version { my $v = $_[-1]; $v =~ s/^([1-9])\.([1-9]\d?\d?)$/sprintf("%d.%03d",$1,$2)/e; $v =~ s/^([1-9])\.([1-9]\d?\d?)\.(0|[1-9]\d?\d?)$/sprintf("%d.%03d%03d",$1,$2,$3 || 0)/e; $v =~ s/(\.\d\d\d)000$/$1/; $v =~ s/_.+$//; if ( ref($v) ) { # Numify $v = $v + 0; } return $v; } sub add_metadata { my $self = shift; my %hash = @_; for my $key (keys %hash) { warn "add_metadata: $key is not prefixed with 'x_'.\n" . "Use appopriate function to add non-private metadata.\n" unless $key =~ /^x_/; $self->{values}->{$key} = $hash{$key}; } } ###################################################################### # MYMETA Support sub WriteMyMeta { die "WriteMyMeta has been deprecated"; } sub write_mymeta_yaml { my $self = shift; # We need YAML::Tiny to write the MYMETA.yml file unless ( eval { require YAML::Tiny; 1; } ) { return 1; } # Generate the data my $meta = $self->_write_mymeta_data or return 1; # Save as the MYMETA.yml file print "Writing MYMETA.yml\n"; YAML::Tiny::DumpFile('MYMETA.yml', $meta); } sub write_mymeta_json { my $self = shift; # We need JSON to write the MYMETA.json file unless ( eval { require JSON; 1; } ) { return 1; } # Generate the data my $meta = $self->_write_mymeta_data or return 1; # Save as the MYMETA.yml file print "Writing MYMETA.json\n"; Module::Install::_write( 'MYMETA.json', JSON->new->pretty(1)->canonical->encode($meta), ); } sub _write_mymeta_data { my $self = shift; # If there's no existing META.yml there is nothing we can do return undef unless -f 'META.yml'; # We need Parse::CPAN::Meta to load the file unless ( eval { require Parse::CPAN::Meta; 1; } ) { return undef; } # Merge the perl version into the dependencies my $val = $self->Meta->{values}; my $perl = delete $val->{perl_version}; if ( $perl ) { $val->{requires} ||= []; my $requires = $val->{requires}; # Canonize to three-dot version after Perl 5.6 if ( $perl >= 5.006 ) { $perl =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2||0), int($3||0))}e } unshift @$requires, [ perl => $perl ]; } # Load the advisory META.yml file my @yaml = Parse::CPAN::Meta::LoadFile('META.yml'); my $meta = $yaml[0]; # Overwrite the non-configure dependency hashs delete $meta->{requires}; delete $meta->{build_requires}; delete $meta->{recommends}; if ( exists $val->{requires} ) { $meta->{requires} = { map { @$_ } @{ $val->{requires} } }; } if ( exists $val->{build_requires} ) { $meta->{build_requires} = { map { @$_ } @{ $val->{build_requires} } }; } return $meta; } 1; Locale-Msgfmt-0.15/inc/Module/Install/Base.pm0000644000175000017500000000214711465454661020615 0ustar azawawiazawawi#line 1 package Module::Install::Base; use strict 'vars'; use vars qw{$VERSION}; BEGIN { $VERSION = '1.00'; } # Suspend handler for "redefined" warnings BEGIN { my $w = $SIG{__WARN__}; $SIG{__WARN__} = sub { $w }; } #line 42 sub new { my $class = shift; unless ( defined &{"${class}::call"} ) { *{"${class}::call"} = sub { shift->_top->call(@_) }; } unless ( defined &{"${class}::load"} ) { *{"${class}::load"} = sub { shift->_top->load(@_) }; } bless { @_ }, $class; } #line 61 sub AUTOLOAD { local $@; my $func = eval { shift->_top->autoload } or return; goto &$func; } #line 75 sub _top { $_[0]->{_top}; } #line 90 sub admin { $_[0]->_top->{admin} or Module::Install::Base::FakeAdmin->new; } #line 106 sub is_admin { ! $_[0]->admin->isa('Module::Install::Base::FakeAdmin'); } sub DESTROY {} package Module::Install::Base::FakeAdmin; use vars qw{$VERSION}; BEGIN { $VERSION = $Module::Install::Base::VERSION; } my $fake; sub new { $fake ||= bless(\@_, $_[0]); } sub AUTOLOAD {} sub DESTROY {} # Restore warning handler BEGIN { $SIG{__WARN__} = $SIG{__WARN__}->(); } 1; #line 159 Locale-Msgfmt-0.15/t/0000755000175000017500000000000011465454673014243 5ustar azawawiazawawiLocale-Msgfmt-0.15/t/00-load.t0000644000175000017500000000016111464227315015550 0ustar azawawiazawawi#!/usr/bin/perl use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 1; use_ok('Locale::Msgfmt'); Locale-Msgfmt-0.15/t/msgfmt.t0000644000175000017500000000232511464227315015715 0ustar azawawiazawawi#!/usr/bin/perl use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 5; use File::Spec; use File::Temp; use Locale::Msgfmt; SKIP: { unless ( eval("use Locale::Maketext::Gettext; 1;") ) { skip( "Test needs Locale::Maketext::Gettext", 5 ); } sub my_read_mo { return +{ read_mo(shift) }; } sub my_msgfmt { my ( $fh, $filename ) = File::Temp::tempfile(); close $fh; my $in = shift; utime( undef, undef, $in ); my $fuzzy = $_[0] ? 1 : 0; msgfmt( { in => $in, out => $filename, fuzzy => $fuzzy } ); return $filename; } sub do_one_test { my $basename = shift; my $po = File::Spec->catfile( "t", "samples", $basename . ".po" ); my $mo = File::Spec->catfile( "t", "samples", $basename . ".mo" ); my $good = my_read_mo($mo); my $filename = my_msgfmt($po); my $test = my_read_mo($filename); is_deeply( $test, $good ); if ( $basename eq "basic" ) { unlink($filename); $filename = my_msgfmt( $po, 1 ); $good = my_read_mo( File::Spec->catfile( "t", "samples", "fuzz.mo" ) ); $test = my_read_mo($filename); is_deeply( $test, $good ); } unlink($filename); } do_one_test("basic"); do_one_test("ja"); do_one_test("context"); do_one_test("ngettext"); } Locale-Msgfmt-0.15/t/version.t0000644000175000017500000000123011464227315016077 0ustar azawawiazawawi#!/usr/bin/perl use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 2; use File::Spec (); use Locale::Msgfmt (); sub slurp { my $file = File::Spec->catfile(@_); local *FILE; open( FILE, '<', $file ) or die "open($file): $!"; my @str = ; my $str = join "", @str; close FILE; return wantarray ? @str : $str; } my @all_bin = slurp("script", "msgfmt.pl"); my @all_pm = slurp("lib", "Locale", "Msgfmt.pm"); my ($pm, $bin); foreach( @all_bin ) { $_ =~ /^use Locale::Msgfmt (.*);$/; $bin = $1 if($1); } foreach( @all_pm ) { $_ =~ /^our \$VERSION = '(.*)';$/; $pm = $1 if($1); } is( $pm, $Locale::Msgfmt::VERSION ); is( $bin, $pm ); Locale-Msgfmt-0.15/t/samples/0000755000175000017500000000000011465454673015707 5ustar azawawiazawawiLocale-Msgfmt-0.15/t/samples/fuzz.mo0000644000175000017500000000014211464227315017225 0ustar azawawiazawawi,<PTY]foofuzzbarfuzzLocale-Msgfmt-0.15/t/samples/ngettext.po0000644000175000017500000000011311464227315020072 0ustar azawawiazawawimsgid "thing" msgid_plural "things" msgstr[0] "1 foo" msgstr[1] "%s foos" Locale-Msgfmt-0.15/t/samples/build0000755000175000017500000000030211464227315016715 0ustar azawawiazawawi#!/bin/sh cd `dirname $0` rm *.mo for PO in *.po; do MO=$(echo $PO | sed 's/po$/mo/') msgfmt -o $MO $PO if [ "$PO" = "basic.po" ]; then msgfmt -f -o fuzz.mo $PO fi done Locale-Msgfmt-0.15/t/samples/ngettext.mo0000644000175000017500000000012311464227315020070 0ustar azawawiazawawi$, 8 Ethingthings1 foo%s foosLocale-Msgfmt-0.15/t/samples/basic.mo0000644000175000017500000000010011464227315017302 0ustar azawawiazawawi$,8<foobarLocale-Msgfmt-0.15/t/samples/basic.po0000644000175000017500000000007611464227315017321 0ustar azawawiazawawimsgid "foo" msgstr "bar" #, fuzzy msgid "fuzz" msgstr "fuzz" Locale-Msgfmt-0.15/t/samples/ja.mo0000644000175000017500000007514311464227315016636 0ustar azawawiazawawit 9#5#2#$)$E$e$l$q$$$ $$ $$$$ $$ % %&%,%4% G%S%Y% i% w% % %%%%% %% %%&%& #&.&4&<&'T&6|&&&&&& & ''.'H' ^'j'%'''+' ((##(YG('((( ((()*)9)H)X)`)u))))) )) ))$* +*8* H*S*X*q*+****+ ++++3@+ t+3+++++"+, ,+,A, X, d, q,},,, ,,,, ,,--&-8-=-P-f-z-- -- ----&- .!.(./.>.X. `.m.u.....Q.4/ :/$E/"j/ ////!/ /& 0!30U0)r0"0C0@1%D1j1 {111 1 11111 22*2B02s2|222 222223"3=3C3`3g3 3333 3344+4F4X4t444444444 4455 5 5*5;5O5`5z555 555555555 6C6(b66/66 666 77.37b7g7{77 7777 78 8*898A8 H8T8j8|8 8 8 8 8#888899 -9':9/b9g99%:W@:::: :): : ; &;1;6; H;U; h;t;; ; ; ;;;;;<<4< C< Q< r< |<< <<<< <<<<==&= -=8=J=[=z= = == =====>>->D> V> d> q>}>>>>>>>? ?? +?8?J?R?f?m?u?{? ??? ?????"@?3@s@@@ @@ @@ @ @@@AA %A0A8ARAfAzAA{A B B&B 5B VBcB}BBBBB 0C=CBC ICWC[C^CcCkC!tC CCC6C7D33E gEuE3EE E&E/ F9FMF2bFF FF FFF G#G ;G IGTG)rGG#GGGG H,H =H HHSHdH |H"H/H;HI'I 8ICI/WI*I6III I. J98JrJyJ JEJ$JJ$K*;K3fK3KBKL L?&LkfLNL+!M+MMyMMMM-M!M-N JNTNiN ~N3N*N NN-O3O1LO<~OOOO P, P37P8kP<P2P&Q;QKQcQQ?QBQF"R iR vR%RR$RR R$R$S=SDSLS?bSSSSS!STT!:T\TyTTTT-T9U=UMU kUvUUUU%U(U&VCVZVaV*zVVVVVV W+W:WsIW WW6WNX ]XkXrX!X6X6X%Y5 <,ITg4 =EulN`%f\@!j\>An P]vsKGCheFk-z;Z$?0qW5B*IE<|pT.khSp{,8Yc9} RQ(;xQi)ilw'qrmX3(%+7 8L@Jm"MG]   [aeS9O Additionally, there are %s tasks pending execution. %s apparantly created. Do you want to open it now?%s line %s: %s%s occurences were replaced%s worker threads are running. &About&Add&AutoComp Ctrl-P&Brace matching Ctrl-1&Cancel&Close Ctrl-W&Comment Selected Lines Ctrl-M&Copy Ctrl-C&Edit&File&Find&Find Ctrl-F&Full Screen F11&GoTo Element&Goto Ctrl-G&Help&Insert&Join lines Ctrl-J&New Ctrl-N&Next&Open... Ctrl-O&Paste Ctrl-V&Print...&Quit Ctrl-Q&Recent Files&Redo&Replace&Run&Save&Save Ctrl-S&Search&Split window&Toggle Comment Ctrl-Shift-C&Uncomment Selected Lines Ctrl-Shift-M&Undo&Use Regex&View&Window(Re)load Current Plugin- %s of type '%s': (in thread(s) %s) A set of unrelated tools used by the Padre developers AboutAckAllAll available plugins on CPANAll braces appear to be matchedAppearanceArabicAuthor:Auto-fold POD markup when code folding enabledAutocompletions errorAutoindent:Automatic bracket completionAutomatic indentation style detectionBackground Tasks are idleBackground Tasks are runningBackground Tasks are running with high loadBehaviourBuilder:Cannot diff if file was never savedCannot open %s as it is over the arbitrary file size limit of Padre which is currently %sCannot set bookmark in unsaved documentCase &InsensitiveCase &insensitiveCategory:Ch:Chars with spaces: %dChars without spaces: %sCheck CanceledCheck CompleteCheck cancelledChineseChinese (Simplified)Chinese (Traditional)Class:Clean Recent Files ListClear selection marksCloseClose AllClose All but CurrentClose FileClose Window on &hitColored text in output window (ANSI)Command lineContext Help F1Convert...CopyCould not find file '%s'Could not find project rootCould not find the Padre::Plugin::My pluginCould not locate project dirCould not reload file: %sCould not save file: CrashedCu&t Ctrl-XCurrent DocumentCurrent Document: %sCurrent cursor does not seem to point at a variableCurrent document has no filenameCurrently, no background tasks are being executed. CutCzechDecrease Font Size Ctrl--DefaultDefault word wrap on for each fileDeleteDelete &AllDelete Leading SpacesDelete Trailing SpacesDescriptionDescription:DiagnosticsDid not provide a distributionDiffDir:DirectoryDisableDisable Experimental ModeDisable loggingDisable traceDocument StatisticsDocument location:Document name:Document type: %sDoneDump %INC and @INCDump Current DocumentDump Top IDE ObjectDutchDutch (Belgium)E&xperimentalEOL to Mac ClassicEOL to UnixEOL to WindowsEdit My PluginEdit/Add SnippetsEditor Current Line Background Colour:Editor Font:Email:EnableEnable loggingEnable trace when loggingEnable?Encoding: %sEnglishEnglish (Australian)English (Canada)English (New Zealand)English (United Kingdom)English (United States)Enter URL to install e.g. http://svn.ali.as/cpan/releases/Config-Tiny-2.00.tar.gzErrorError ListError loading pod for class '%s': %sError when calling menu for pluginError: %sExistExisting bookmarks:Failed to create serverFailed to disable plugin '%s': %sFailed to enable plugin '%s': %sFailed to find your CPAN configurationFailed to load the plugin '%s' %sFailed to start '%s' commandField %s was missing. Module not created.File already exists. Overwrite it?File changed on disk since last saved. Do you want to overwrite it?File changed on disk since last saved. Do you want to reload it?File changed. Do you want to save it?File not in syncFilename: %sFilesFindFind Next F3Find Next F4Find Previous Shift-F3Find Previous Shift-F4Find Unmatched BraceFind Variable DeclarationFind in FilesFind in fi&les...Find:First character of selection must be a non-word character to alignFold allFrenchFrench (France)GermanGoTo BookmarkGoTo Main Window Alt-MGoTo Outline Window Alt-LGoTo Output Window Alt-OGoTo Subs WindowGoTo Syntax Check Window Alt-CGoto Bookmark Ctrl-Shift-BGuessGuess from current document:HebrewHow many spaces for each tab:HungarianI&gnore hidden SubdirectoriesIn Files/Types:Increase Font Size Ctrl-+IndentationIndentation width (in columns):Insert From File...Install CPAN ModuleInstall Local DistributionInstall Module...Install Remote DistributionInternal errorInterpreter arguments:ItalianJapaneseKlingonKoreanL:LanguageLast Visited File Ctrl-6Last updateLexically Rename VariableLicense:LineLine number:Lines: %dList of sessionsLock User InterfaceLower All Ctrl-UMark selection end Ctrl-]Mark selection start Ctrl-[MessageMethods order:Module Name:N/ANameName:New FileNew plugins detectedNew...Newline type: %sNext File Ctrl-TABNo DocumentNo declaration could be found for the specified (lexical?) variableNo diagnostics available for this error!No document openNo execution mode was defined for this documentNo file is openNo filenameNo open documentNo such session %sNorwegian (Norway)Not a Perl documentNothing selected. Enter what should be opened:OpenOpen &DocumentationOpen All Recent FilesOpen CPAN Config FileOpen FileOpen SelectionOpen Selection Ctrl-Shift-OOpen Session... Ctrl-Alt-OOpen fileOpen files in existing PadreOpen files:Open selectionOutlineOutputOutput ViewPadre Developer ToolsParent Directory:PastePerl 5 ModulePerl 5 ScriptPerl 5 TestPerl 6 ScriptPerl Distribution (Module::Starter)Perl beginner modePick &directoryPick parent directoryPl&uginsPlugin ManagerPlugin ToolsPlugin must have '%s' as base directoryPlugin:%s - Could not instantiate plugin objectPlugin:%s - Could not instantiate plugin object: the constructor does not return a Padre::Plugin objectPlugin:%s - Does not have menusPlugin:%s - Failed to load module: %sPlugin:%s - Not compatible with Padre::Plugin API. Need to be subclass of Padre::PluginPolishPortuguese (Brazil)Portuguese (Portugal)PreferencesPreferred language for error diagnostics:Previ&ousPrevious File Ctrl-Shift-TABQuick FindRedoRefresh Counter: Refresh MenuReload All PluginsReload FileReload My PluginReplace Ctrl-RReplace &allReplace with:ReplacementReport a New &BugReset Font Size Ctrl-/Reset My PluginRight Click Alt-/Run Command Ctrl-F5Run Document inside PadreRun ParametersRun Script F5Run Script (debug info) Shift-F5Run TestsRun setupRussianSTC ReferenceSaveSave &As... F12Save AllSave FileSave Session... Ctrl-Alt-SSave file as...Save session as...Script arguments:Search &BackwardsSelectSelect allSelect all Ctrl-ASelect directorySelect distribution to installSession ManagerSession name:Set BookmarkSet Bookmark Ctrl-BSettings DemoShow Call TipsShow Code FoldingShow Current LineShow Directory TreeShow Error ListShow FunctionsShow Indentation GuideShow Line NumbersShow NewlinesShow OutlineShow OutputShow StatusBarShow Syntax CheckShow WhitespacesShow error messageSimulate CrashSimulate Crashing Bg TaskSkipped for large filesSnippet:SnippetsSnippets Ctrl-Shift-ASpace to TabSpaces to Tabs...SpanishSpanish (Argentina)StatusStop F6StyleSub ListSyntax CheckSystem DefaultTAB display size (in spaces):Tab to SpaceTabs and SpacesTabs to Spaces...Term:Test A Plugin From Local DirThe bookmark '%s' no longer existsThe following tasks are currently executing in the background: There are no differences TypeUndoUnfold allUnknownUnknown errorUnsavedUnsaved %dUnsaved FileUpper All Ctrl-Shift-UUpper/Lower CaseUse PPI Syntax HighlightingUse TabsUse rege&xVersionVertically Align SelectedView All &Open BugsView Document As...Visit the PerlMonksWarningWe found several new plugins. In order to configure and enable them go to Plugins -> Plugin Manager List of new plugins: Word-WrapWords: %sWorkspace ViewYou must select a range of linesalphabeticalalphabetical_private_lastdeepdisabledenablederrori.e. include directory: -I enable tainting checks: -T enable many useful warnings: -w enable all warnings: -W disable all warnings: -X incompatiblelastloadedmissing fieldnewnononenothingoriginalpip is unexpectedly not installedsame_levelunloadedwxWidgets 2.8.8 ReferenceProject-Id-Version: Padre-JA-20090504 Report-Msgid-Bugs-To: POT-Creation-Date: 2009-05-13 18:56+0200 PO-Revision-Date: 2009-05-03 03:07+0900 Last-Translator: Kenichi Ishigaki Language-Team: Japanese MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit なお%s個のタスクがペンディング中です %sは作成済みのようです。開きますか?%s 行 %s: %s%s件置換しました%s個のワーカースレッドが実行中です Padreについて(&A)追加(&A)オートコンプリート(&A) Ctrl-P対応するかっこに移動する(&B) Ctrl-1キャンセル(&C)閉じる(&C) Ctrl-W選択した行をコメントにする(&C) Ctrl-Mコピー(&C) Ctrl-C編集(&E)ファイル(&F)検索(&F)検索する(&F) Ctrl-Fフルスクリーン表示 F11要素に移動する(&G)移動する(&G) Ctrl-Gヘルプ(&H)挿入(&I)行を結合する(&J) Ctrl-J新しいファイルを開く(&N) Ctrl-N次(&N)ファイルを開く(&O)... Ctrl-O貼り付け(&P) Ctrl-V印刷する(&P)...終了する(&Q) Ctrl-Q最近使ったファイル(&R)やり直す(&R)置換(&R)実行(&R)保存する(&S)保存する(&S) Ctrl-S検索(&S)ウィンドウを分割する(&S)コメントをトグルする(&T) Ctrl-Shift-C選択した行をコメントにしない(&U) Ctrl-Shift-M元に戻す(&U)正規表現(&U)表示(&V)ウィンドウ(&W)現在のプラグインを(リ)ロードする- %s個の「%s」: (スレッド数%s) Padre開発者が利用している外部ツール群 PadreについてAckすべてCPANから入手できるプラグイン一覧かっこはすべて対応がとれているようです表示アラビア語作者名:コードを折りたたむときはPODも自動的に折りたたむオートコンプリートエラー自動インデント:かっこを自動的に補完するインデントスタイルの自動検出バックグラウンドタスクはありませんバックグラウンドタスクが実行中ですバックグラウンドタスクが高負荷になっています動作ビルダー:保存されていないファイルの差分はとれません「%s」を開けません。Padreのファイルサイズの上限を越えています(現在の上限%s)保存されていないドキュメントにはしおりをはさめません大文字と小文字を区別しない(&I)大文字と小文字を区別しない(&i)カテゴリー:文字:空白込みの文字数: %d空白以外の文字数: %sチェックはキャンセルされましたチェックが完了しましたチェックはキャンセルされました中国語中国語(簡体字)中国語(繁体字)クラス:最近使ったファイルの一覧を消去する選択範囲のマークをクリアする閉じるすべて閉じる現在のファイル以外すべて閉じるファイルを閉じる見つかったらウィンドウを閉じる(&h)出力ウィンドウのテキストに色をつける(ANSI)コマンドラインコンテキストヘルプ F1変換する...コピーファイル「%s」が見つかりませんプロジェクトルートが見つかりませんPadre::Plugin::Myプラグインが見つかりませんプロジェクトディレクトリが見つかりませんファイル「%s」をリロードできませんファイルを保存できません: クラッシュ切り取り(&t) Ctrl-X現在のドキュメント現在のドキュメント: %s現在のカーソル位置には変数が見つかりません現在のドキュメントにはファイル名がありません現在実行中のバックグラウンドタスクはありません 切り取りチェコ語フォントを小さくする Ctrl--デフォルトデフォルトでワードラップ削除全削除(&A)行頭のスペースを削除する行末のスペースを削除する説明説明:診断メッセージディストリビューションが指定されていません差分をとるディレクトリ:ディレクトリ無効実験モードを無効にするログを無効にするトレースを無効にするドキュメントの統計情報ドキュメントの位置:ドキュメント名:ドキュメントタイプ: %s完了%INCと@INCをダンプする現在のドキュメントをダンプする最前列にあるIDEオブジェクトをダンプするオランダ語オランダ語(ベルギー)実験(&x)改行をMac Classic風に改行をUnix風に改行をWindows風にMyプラグインを編集スニペットを編集/追加するエディタの現在の行の背景色:エディタのフォント:メールアドレス:有効ログを有効にするログ時にトレースを有効にする有効にする?エンコーディング: %s英語英語(オーストラリア)英語(カナダ)英語(ニュージーランド)英語(英国)英語(米国)インストールするURLを入力してください 例: http://svn.ali.as/cpan/releases/Config-Tiny-2.00.tar.gzエラーエラー一覧クラス「%s」のpodをロードできません: %sプラグインのメニューを呼ぶときにエラーが発生しましたエラー: %s存在既存のしおり:サーバを作成できませんプラグイン「%s」を無効にできません: %sプラグイン「%s」を有効にできません: %sCPANの設定が見つかりませんプラグイン「%s」をロードできません %s「%s」コマンドを起動できません%sフィールドが入力されていません。モジュールを作成できませんファイルはすでに存在します。上書きしますか?最後に保存してからファイルが変更されています。上書きしますか?最後に保存してからファイルが変更されています。リロードしますか?ファイルが変更されています。保存しますか?ファイルの同期がとれていませんファイル名: %sファイル検索する次を検索する F3次を検索する F4前を検索する Shift-F3前を検索する Shift-F4対応していないかっこを検索する変数宣言を検索するファイル内を検索ファイル内を検索(&l)検索:選択範囲の最初の文字は英数字以外にしてくださいすべて折りたたむフランス語フランス語(フランス)ドイツ語しおりに移動するメインウィンドウに移動する Alt-Mアウトラインウィンドウに移動する Alt-L出力ウィンドウに移動する Alt-Oサブルーチンウィンドウに移動する構文チェックウィンドウに移動する Alt-Cしおりに移動する Ctrl-Shift-B推測現在のドキュメントから推測:ヘブライ語タブ幅:ハンガリー語隠しディレクトリは無視する(&g)ファイル/タイプ:フォントを大きくする Ctrl-+インデントガイドを表示するインデント幅(カラム数):ファイルから挿入する...CPANモジュールのインストールローカルディストリビューションのインストールモジュールのインストール...リモートディストリビューションのインストール内部エラーインタプリタの引数:イタリア語日本語クリンゴン語韓国語行:言語最後に訪れたファイル Ctrl-6最終更新変数をレキシカルにリネームするライセンス:行行番号:行数: %dセッション一覧ユーザインタフェースをロックするすべて小文字 Ctrl-U選択範囲の終点をマークする Ctrl-]選択範囲の始点をマークする Ctrl-[メッセージメソッドの並び順:モジュール名:なし名前名前:新しいファイルを開く新しいプラグインを検出しました新しい...改行種別: %s次のファイル Ctrl-TABドキュメントがありません指定された(レキシカル?)変数の宣言が見つかりませんこのエラーには診断メッセージがありません!開いているドキュメントはありませんこのドキュメントは実行可能になっていません開いているファイルはありませんファイル名はありません開いているドキュメントはありませんセッション「%s」が見つかりませんノルウェー語Perlのドキュメントではありません選択されているものがありません。開くファイル名を入力してください:開くドキュメントを開く(&D)最近使ったすべてのファイルを開くCPANコンフィグファイルを開くファイルを開く選択範囲を開く選択範囲を開く Ctrl-Shift-Oセッションを開く... Ctrl-Alt-Oファイルを開く既存のPadreでファイルを開く(MDIモード)ファイルの並び順:選択範囲を開くアウトライン出力出力ビューPadre開発者用ツール親ディレクトリ:貼り付けPerl 5モジュールPerl 5スクリプトPerl 5テストPerl 6スクリプトPerlディストリビューション (Module::Starter)Perl初心者モードディレクトリ選択(&d)親ディレクトリを選択してくださいプラグイン(&u)プラグインマネージャープラグインツールプラグインのベースディレクトリは「%s」でなければなりませんプラグイン「%s」 - オブジェクトをインスタンス化できませんプラグイン「%s」 - オブジェクトをインスタンス化できません。コンストラクタがPadre::Pluginオブジェクトを返しませんプラグイン「%s」 - メニューがありませんプラグイン「%s」 - モジュールをロードできません: %sプラグイン「%s」 - Padre::PluginのAPIと互換性がありません。Padre::Pluginのサブクラスではありませんポーランド語ポルトガル語(ブラジル)ポルトガル語(ポルトガル)設定エラーメッセージの言語:前(&o)前のファイル Ctrl-Shift-TABクイック検索やり直すリフレッシュカウンタ: メニューをリフレッシュするすべてのプラグインをリロードするファイルをリロードするMyプラグインをリロードする置換する Ctrl-R全置換(&a)置換:置換する新しいバグを報告する(&B)フォントの大きさをリセットする Ctrl-/Myプラグインをリセットする右クリック Alt-/コマンドを実行する Ctrl-F5Padre内部でドキュメントを実行する実行パラメータスクリプトを実行する F5スクリプトを実行する (デバッグ情報) Shift-F5テストを実行するセットアップを実行するロシア語STCリファレンス保存名前をつけて保存する(&A)... F12すべて保存するファイルを保存する現在のセッションを保存する... Ctrl-Alt-S名前をつけて保存する...名前をつけてセッションを保存する...スクリプトの引数:後方検索(&B)選択するすべてを選択すべてを選択 Ctrl-Aディレクトリを選択インストールするディストリビューションを選択してくださいセッションマネージャーセッション名:しおりをはさむしおりをはさむ Ctrl-B設定デモコールチップを表示するコードの折りたたみを表示する現在の行を表示するディレクトリツリーを表示するエラー一覧を表示する関数を表示するインデントガイドを表示する行番号を表示する改行を表示するアウトラインを表示する出力を表示するステータスバーを表示する構文チェックを表示する空白を表示するエラーメッセージを表示するクラッシュをシミュレートするバックグラウンドタスクのクラッシュをシミュレートする大きなファイルでは省略スニペット:スニペットスニペット Ctrl-Shift-Aスペースからタブスペースからタブ...スペイン語スペイン語(アルゼンチン)ステータス停止する F6スタイルサブルーチン一覧構文チェックシステムデフォルトタブ表示幅(空白の数):タブからスペースタブとスペースタブからスペース...検索語:ローカルディレクトリのプラグインをテストするしおり「%s」はすでに存在しません以下のタスクが現在バックグラウンドで実行中です: 差はありません タイプ元に戻すすべて展開する不明原因不明のエラーです未保存未保存 %d保存されていないファイルすべて大文字 Ctrl-Shift-U大文字/小文字PPIによる構文ハイライト表示タブを使う正規表現(&x)バージョン選択範囲を桁揃えする未解決のバグを全表示する(&O)ドキュメントの表示を変える...PerlMonksを訪問する警告新しいプラグインが見つかりました。 設定や利用はプラグインメニューの プラグインマネージャーから行ってください 新しいプラグイン一覧 ワードラップ単語数: %sワークスペースビュー行を選択してくださいアルファベット順プライベート変数は最後深くする無効有効エラー例 インクルードディレクトリ: -I 汚染チェックを有効にする: -T 便利な警告を有効にする: -w すべての警告を有効にする: -W すべての警告を無効にする: -X 非互換古い順ロード済入力されていないフィールドがあります新しい順なしなしなし出現順pipがインストールされていません同じ深さ未ロードwxWidgets 2.8.8リファレンスLocale-Msgfmt-0.15/t/samples/context.po0000644000175000017500000000012011464227315017712 0ustar azawawiazawawimsgctxt "one" msgid "foo" msgstr "bar" msgctxt "two" msgid "foo" msgstr "baz" Locale-Msgfmt-0.15/t/samples/ja.po0000644000175000017500000013762011464227315016640 0ustar azawawiazawawi# Japanese translations for Padre. # Copyright (C) 2009 The Padre development team as list in Padre.pm # This file is distributed under the same license as the Padre package. # Kenichi Ishigaki , 2009. # msgid "" msgstr "" "Project-Id-Version: Padre-JA-20090504\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-05-13 18:56+0200\n" "PO-Revision-Date: 2009-05-03 03:07+0900\n" "Last-Translator: Kenichi Ishigaki \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: lib/Padre/Locale.pm:72 msgid "English (United Kingdom)" msgstr "英語(英国)" #: lib/Padre/Locale.pm:111 msgid "English (Australian)" msgstr "英語(オーストラリア)" #: lib/Padre/Locale.pm:129 msgid "Unknown" msgstr "不明" #: lib/Padre/Locale.pm:143 msgid "Arabic" msgstr "アラビア語" #: lib/Padre/Locale.pm:153 msgid "Czech" msgstr "チェコ語" #: lib/Padre/Locale.pm:163 msgid "German" msgstr "ドイツ語" #: lib/Padre/Locale.pm:173 msgid "English" msgstr "英語" #: lib/Padre/Locale.pm:182 msgid "English (Canada)" msgstr "英語(カナダ)" #: lib/Padre/Locale.pm:191 msgid "English (New Zealand)" msgstr "英語(ニュージーランド)" #: lib/Padre/Locale.pm:202 msgid "English (United States)" msgstr "英語(米国)" #: lib/Padre/Locale.pm:211 msgid "Spanish (Argentina)" msgstr "スペイン語(アルゼンチン)" #: lib/Padre/Locale.pm:224 msgid "Spanish" msgstr "スペイン語" #: lib/Padre/Locale.pm:234 msgid "French (France)" msgstr "フランス語(フランス)" #: lib/Padre/Locale.pm:247 msgid "French" msgstr "フランス語" #: lib/Padre/Locale.pm:257 msgid "Hebrew" msgstr "ヘブライ語" #: lib/Padre/Locale.pm:267 msgid "Hungarian" msgstr "ハンガリー語" #: lib/Padre/Locale.pm:281 msgid "Italian" msgstr "イタリア語" #: lib/Padre/Locale.pm:291 msgid "Japanese" msgstr "日本語" #: lib/Padre/Locale.pm:301 msgid "Korean" msgstr "韓国語" #: lib/Padre/Locale.pm:315 msgid "Dutch" msgstr "オランダ語" #: lib/Padre/Locale.pm:325 msgid "Dutch (Belgium)" msgstr "オランダ語(ベルギー)" #: lib/Padre/Locale.pm:334 msgid "Norwegian (Norway)" msgstr "ノルウェー語" #: lib/Padre/Locale.pm:343 msgid "Polish" msgstr "ポーランド語" #: lib/Padre/Locale.pm:353 msgid "Portuguese (Brazil)" msgstr "ポルトガル語(ブラジル)" #: lib/Padre/Locale.pm:363 msgid "Portuguese (Portugal)" msgstr "ポルトガル語(ポルトガル)" #: lib/Padre/Locale.pm:372 msgid "Russian" msgstr "ロシア語" #: lib/Padre/Locale.pm:382 msgid "Chinese" msgstr "中国語" #: lib/Padre/Locale.pm:392 msgid "Chinese (Simplified)" msgstr "中国語(簡体字)" #: lib/Padre/Locale.pm:402 msgid "Chinese (Traditional)" msgstr "中国語(繁体字)" #: lib/Padre/Locale.pm:415 msgid "Klingon" msgstr "クリンゴン語" #: lib/Padre/PluginManager.pm:345 msgid "" "We found several new plugins.\n" "In order to configure and enable them go to\n" "Plugins -> Plugin Manager\n" "\n" "List of new plugins:\n" "\n" msgstr "" "新しいプラグインが見つかりました。\n" "設定や利用はプラグインメニューの\n" "プラグインマネージャーから行ってください\n" "\n" "新しいプラグイン一覧\n" "\n" #: lib/Padre/PluginManager.pm:355 msgid "New plugins detected" msgstr "新しいプラグインを検出しました" #: lib/Padre/PluginManager.pm:477 #, perl-format msgid "Plugin:%s - Failed to load module: %s" msgstr "プラグイン「%s」 - モジュールをロードできません: %s" #: lib/Padre/PluginManager.pm:491 #, perl-format msgid "" "Plugin:%s - Not compatible with Padre::Plugin API. Need to be subclass of " "Padre::Plugin" msgstr "" "プラグイン「%s」 - Padre::PluginのAPIと互換性がありません。Padre::Pluginのサ" "ブクラスではありません" #: lib/Padre/PluginManager.pm:505 #, perl-format msgid "Plugin:%s - Could not instantiate plugin object" msgstr "プラグイン「%s」 - オブジェクトをインスタンス化できません" #: lib/Padre/PluginManager.pm:517 #, perl-format msgid "" "Plugin:%s - Could not instantiate plugin object: the constructor does not " "return a Padre::Plugin object" msgstr "" "プラグイン「%s」 - オブジェクトをインスタンス化できません。コンストラクタが" "Padre::Pluginオブジェクトを返しません" #: lib/Padre/PluginManager.pm:537 #, perl-format msgid "Plugin:%s - Does not have menus" msgstr "プラグイン「%s」 - メニューがありません" #: lib/Padre/PluginManager.pm:756 msgid "Error when calling menu for plugin" msgstr "プラグインのメニューを呼ぶときにエラーが発生しました" #: lib/Padre/PluginManager.pm:785 lib/Padre/Wx/Main.pm:1396 msgid "No document open" msgstr "開いているドキュメントはありません" #: lib/Padre/PluginManager.pm:787 lib/Padre/Wx/Main.pm:3461 msgid "No filename" msgstr "ファイル名はありません" #: lib/Padre/PluginManager.pm:791 msgid "Could not locate project dir" msgstr "プロジェクトディレクトリが見つかりません" #: lib/Padre/PluginManager.pm:810 lib/Padre/PluginManager.pm:907 #, perl-format msgid "" "Failed to load the plugin '%s'\n" "%s" msgstr "" "プラグイン「%s」をロードできません\n" "%s" #: lib/Padre/PluginManager.pm:861 lib/Padre/Wx/Main.pm:2373 #: lib/Padre/Wx/Main.pm:3155 msgid "Open file" msgstr "ファイルを開く" #: lib/Padre/PluginManager.pm:881 #, perl-format msgid "Plugin must have '%s' as base directory" msgstr "プラグインのベースディレクトリは「%s」でなければなりません" #: lib/Padre/PluginHandle.pm:71 lib/Padre/Wx/Dialog/PluginManager.pm:468 msgid "error" msgstr "エラー" #: lib/Padre/PluginHandle.pm:72 msgid "unloaded" msgstr "未ロード" #: lib/Padre/PluginHandle.pm:73 msgid "loaded" msgstr "ロード済" #: lib/Padre/PluginHandle.pm:74 lib/Padre/Wx/Dialog/PluginManager.pm:478 msgid "incompatible" msgstr "非互換" #: lib/Padre/PluginHandle.pm:75 lib/Padre/Wx/Dialog/PluginManager.pm:502 msgid "disabled" msgstr "無効" #: lib/Padre/PluginHandle.pm:76 lib/Padre/Wx/Dialog/PluginManager.pm:492 msgid "enabled" msgstr "有効" #: lib/Padre/PluginHandle.pm:171 #, perl-format msgid "Failed to enable plugin '%s': %s" msgstr "プラグイン「%s」を有効にできません: %s" #: lib/Padre/PluginHandle.pm:225 #, perl-format msgid "Failed to disable plugin '%s': %s" msgstr "プラグイン「%s」を無効にできません: %s" #: lib/Padre/Document.pm:680 #, perl-format msgid "Unsaved %d" msgstr "未保存 %d" #: lib/Padre/Document.pm:949 lib/Padre/Document.pm:950 msgid "Skipped for large files" msgstr "大きなファイルでは省略" #: lib/Padre/TaskManager.pm:541 #, perl-format msgid "%s worker threads are running.\n" msgstr "%s個のワーカースレッドが実行中です\n" #: lib/Padre/TaskManager.pm:544 msgid "Currently, no background tasks are being executed.\n" msgstr "現在実行中のバックグラウンドタスクはありません\n" #: lib/Padre/TaskManager.pm:550 msgid "The following tasks are currently executing in the background:\n" msgstr "以下のタスクが現在バックグラウンドで実行中です:\n" #: lib/Padre/TaskManager.pm:556 #, perl-format msgid "" "- %s of type '%s':\n" " (in thread(s) %s)\n" msgstr "" "- %s個の「%s」:\n" " (スレッド数%s)\n" #: lib/Padre/TaskManager.pm:568 #, perl-format msgid "" "\n" "Additionally, there are %s tasks pending execution.\n" msgstr "" "\n" "なお%s個のタスクがペンディング中です\n" #: lib/Padre/Task/SyntaxChecker.pm:179 lib/Padre/Wx/Syntax.pm:96 #: lib/Padre/Wx/Syntax.pm:97 msgid "Warning" msgstr "警告" #: lib/Padre/Task/SyntaxChecker.pm:179 lib/Padre/Wx/Syntax.pm:96 #: lib/Padre/Wx/Syntax.pm:99 lib/Padre/Wx/Main.pm:1481 #: lib/Padre/Wx/Main.pm:1733 lib/Padre/Wx/Main.pm:2566 #: lib/Padre/Wx/Dialog/PluginManager.pm:358 msgid "Error" msgstr "エラー" #: lib/Padre/Task/Outline/Perl.pm:146 lib/Padre/Wx/Outline.pm:58 msgid "Outline" msgstr "アウトライン" #: lib/Padre/Task/Outline/Perl.pm:180 msgid "&GoTo Element" msgstr "要素に移動する(&G)" #: lib/Padre/Task/Outline/Perl.pm:192 lib/Padre/Wx/Directory.pm:182 msgid "Open &Documentation" msgstr "ドキュメントを開く(&D)" #: lib/Padre/Task/PPI/FindUnmatchedBrace.pm:77 msgid "All braces appear to be matched" msgstr "かっこはすべて対応がとれているようです" #: lib/Padre/Task/PPI/FindUnmatchedBrace.pm:78 msgid "Check Complete" msgstr "チェックが完了しました" #: lib/Padre/Task/PPI/FindVariableDeclaration.pm:87 #: lib/Padre/Task/PPI/LexicalReplaceVariable.pm:182 #: lib/Padre/Document/Perl.pm:511 lib/Padre/Document/Perl.pm:537 msgid "Current cursor does not seem to point at a variable" msgstr "現在のカーソル位置には変数が見つかりません" #: lib/Padre/Task/PPI/FindVariableDeclaration.pm:89 #: lib/Padre/Task/PPI/LexicalReplaceVariable.pm:184 msgid "No declaration could be found for the specified (lexical?) variable" msgstr "指定された(レキシカル?)変数の宣言が見つかりません" #: lib/Padre/Task/PPI/FindVariableDeclaration.pm:91 #: lib/Padre/Task/PPI/LexicalReplaceVariable.pm:186 msgid "Unknown error" msgstr "原因不明のエラーです" #: lib/Padre/Task/PPI/FindVariableDeclaration.pm:95 #: lib/Padre/Task/PPI/LexicalReplaceVariable.pm:190 msgid "Check Canceled" msgstr "チェックはキャンセルされました" #: lib/Padre/Wx/StatusBar.pm:78 msgid "L:" msgstr "行:" #: lib/Padre/Wx/StatusBar.pm:78 msgid "Ch:" msgstr "文字:" #: lib/Padre/Wx/Syntax.pm:66 msgid "Syntax Check" msgstr "構文チェック" #: lib/Padre/Wx/Syntax.pm:92 lib/Padre/Wx/Syntax.pm:254 msgid "Line" msgstr "行" #: lib/Padre/Wx/Syntax.pm:255 msgid "Type" msgstr "タイプ" #: lib/Padre/Wx/Syntax.pm:256 lib/Padre/Wx/Dialog/SessionManager.pm:211 msgid "Description" msgstr "説明" #: lib/Padre/Wx/ToolBar.pm:41 msgid "New File" msgstr "新しいファイルを開く" #: lib/Padre/Wx/ToolBar.pm:49 lib/Padre/Wx/Directory.pm:170 msgid "Open File" msgstr "ファイルを開く" #: lib/Padre/Wx/ToolBar.pm:54 msgid "Save File" msgstr "ファイルを保存する" #: lib/Padre/Wx/ToolBar.pm:59 msgid "Close File" msgstr "ファイルを閉じる" #: lib/Padre/Wx/ToolBar.pm:71 msgid "Undo" msgstr "元に戻す" #: lib/Padre/Wx/ToolBar.pm:77 msgid "Redo" msgstr "やり直す" #: lib/Padre/Wx/ToolBar.pm:86 msgid "Cut" msgstr "切り取り" #: lib/Padre/Wx/ToolBar.pm:99 msgid "Copy" msgstr "コピー" #: lib/Padre/Wx/ToolBar.pm:112 msgid "Paste" msgstr "貼り付け" #: lib/Padre/Wx/ToolBar.pm:126 msgid "Select all" msgstr "すべてを選択" #: lib/Padre/Wx/ToolBar.pm:151 lib/Padre/Wx/ToolBar.pm:201 msgid "Background Tasks are idle" msgstr "バックグラウンドタスクはありません" #: lib/Padre/Wx/ToolBar.pm:211 msgid "Background Tasks are running" msgstr "バックグラウンドタスクが実行中です" #: lib/Padre/Wx/ToolBar.pm:221 msgid "Background Tasks are running with high load" msgstr "バックグラウンドタスクが高負荷になっています" #: lib/Padre/Wx/Ack.pm:82 msgid "Term:" msgstr "検索語:" #: lib/Padre/Wx/Ack.pm:86 msgid "Dir:" msgstr "ディレクトリ:" #: lib/Padre/Wx/Ack.pm:88 msgid "Pick &directory" msgstr "ディレクトリ選択(&d)" #: lib/Padre/Wx/Ack.pm:90 msgid "In Files/Types:" msgstr "ファイル/タイプ:" #: lib/Padre/Wx/Ack.pm:96 lib/Padre/Wx/Dialog/Find.pm:137 msgid "Case &Insensitive" msgstr "大文字と小文字を区別しない(&I)" #: lib/Padre/Wx/Ack.pm:102 msgid "I&gnore hidden Subdirectories" msgstr "隠しディレクトリは無視する(&g)" #: lib/Padre/Wx/Ack.pm:118 msgid "Find in Files" msgstr "ファイル内を検索" #: lib/Padre/Wx/Ack.pm:147 msgid "Select directory" msgstr "ディレクトリを選択" #: lib/Padre/Wx/Ack.pm:281 lib/Padre/Wx/Ack.pm:305 msgid "Ack" msgstr "Ack" #: lib/Padre/Wx/Right.pm:42 msgid "Workspace View" msgstr "ワークスペースビュー" #: lib/Padre/Wx/Output.pm:54 msgid "Output" msgstr "出力" #: lib/Padre/Wx/Editor.pm:709 lib/Padre/Wx/Menu/Edit.pm:66 msgid "Select all\tCtrl-A" msgstr "すべてを選択\tCtrl-A" #: lib/Padre/Wx/Editor.pm:720 lib/Padre/Wx/Menu/Edit.pm:110 msgid "&Copy\tCtrl-C" msgstr "コピー(&C)\tCtrl-C" #: lib/Padre/Wx/Editor.pm:732 lib/Padre/Wx/Menu/Edit.pm:122 msgid "Cu&t\tCtrl-X" msgstr "切り取り(&t)\tCtrl-X" #: lib/Padre/Wx/Editor.pm:744 lib/Padre/Wx/Menu/Edit.pm:134 msgid "&Paste\tCtrl-V" msgstr "貼り付け(&P)\tCtrl-V" #: lib/Padre/Wx/Editor.pm:761 lib/Padre/Wx/Menu/Edit.pm:205 msgid "&Toggle Comment\tCtrl-Shift-C" msgstr "コメントをトグルする(&T)\tCtrl-Shift-C" #: lib/Padre/Wx/Editor.pm:766 lib/Padre/Wx/Menu/Edit.pm:215 msgid "&Comment Selected Lines\tCtrl-M" msgstr "選択した行をコメントにする(&C)\tCtrl-M" #: lib/Padre/Wx/Editor.pm:771 lib/Padre/Wx/Menu/Edit.pm:225 msgid "&Uncomment Selected Lines\tCtrl-Shift-M" msgstr "選択した行をコメントにしない(&U)\tCtrl-Shift-M" #: lib/Padre/Wx/Editor.pm:789 msgid "Fold all" msgstr "すべて折りたたむ" #: lib/Padre/Wx/Editor.pm:796 msgid "Unfold all" msgstr "すべて展開する" #: lib/Padre/Wx/Editor.pm:809 lib/Padre/Wx/Menu/Window.pm:34 msgid "&Split window" msgstr "ウィンドウを分割する(&S)" #: lib/Padre/Wx/Editor.pm:1149 msgid "You must select a range of lines" msgstr "行を選択してください" #: lib/Padre/Wx/Editor.pm:1165 msgid "First character of selection must be a non-word character to align" msgstr "選択範囲の最初の文字は英数字以外にしてください" #: lib/Padre/Wx/Directory.pm:52 lib/Padre/Wx/Directory.pm:143 msgid "Directory" msgstr "ディレクトリ" #: lib/Padre/Wx/Menubar.pm:72 msgid "&File" msgstr "ファイル(&F)" #: lib/Padre/Wx/Menubar.pm:73 lib/Padre/Wx/Dialog/Snippets.pm:26 msgid "&Edit" msgstr "編集(&E)" #: lib/Padre/Wx/Menubar.pm:74 msgid "&Search" msgstr "検索(&S)" #: lib/Padre/Wx/Menubar.pm:75 msgid "&View" msgstr "表示(&V)" #: lib/Padre/Wx/Menubar.pm:76 msgid "&Run" msgstr "実行(&R)" #: lib/Padre/Wx/Menubar.pm:77 msgid "Pl&ugins" msgstr "プラグイン(&u)" #: lib/Padre/Wx/Menubar.pm:78 msgid "&Window" msgstr "ウィンドウ(&W)" #: lib/Padre/Wx/Menubar.pm:79 msgid "&Help" msgstr "ヘルプ(&H)" #: lib/Padre/Wx/Menubar.pm:96 msgid "E&xperimental" msgstr "実験(&x)" #: lib/Padre/Wx/Menubar.pm:119 lib/Padre/Wx/Menubar.pm:159 msgid "&Perl" msgstr "" #: lib/Padre/Wx/Notebook.pm:31 msgid "Files" msgstr "ファイル" #: lib/Padre/Wx/ErrorList.pm:91 msgid "Error List" msgstr "エラー一覧" #: lib/Padre/Wx/ErrorList.pm:126 msgid "No diagnostics available for this error!" msgstr "このエラーには診断メッセージがありません!" #: lib/Padre/Wx/ErrorList.pm:135 msgid "Diagnostics" msgstr "診断メッセージ" #: lib/Padre/Wx/Main.pm:391 #, perl-format msgid "No such session %s" msgstr "セッション「%s」が見つかりません" #: lib/Padre/Wx/Main.pm:569 msgid "Failed to create server" msgstr "サーバを作成できません" #: lib/Padre/Wx/Main.pm:1369 msgid "Command line" msgstr "コマンドライン" #: lib/Padre/Wx/Main.pm:1370 msgid "Run setup" msgstr "セットアップを実行する" #: lib/Padre/Wx/Main.pm:1400 msgid "Current document has no filename" msgstr "現在のドキュメントにはファイル名がありません" #: lib/Padre/Wx/Main.pm:1403 msgid "Could not find project root" msgstr "プロジェクトルートが見つかりません" #: lib/Padre/Wx/Main.pm:1480 #, perl-format msgid "Failed to start '%s' command" msgstr "「%s」コマンドを起動できません" #: lib/Padre/Wx/Main.pm:1505 msgid "No open document" msgstr "開いているドキュメントはありません" #: lib/Padre/Wx/Main.pm:1522 msgid "No execution mode was defined for this document" msgstr "このドキュメントは実行可能になっていません" #: lib/Padre/Wx/Main.pm:1553 msgid "Not a Perl document" msgstr "Perlのドキュメントではありません" #: lib/Padre/Wx/Main.pm:1719 msgid "Message" msgstr "メッセージ" #: lib/Padre/Wx/Main.pm:1915 msgid "Autocompletions error" msgstr "オートコンプリートエラー" #: lib/Padre/Wx/Main.pm:1934 msgid "Line number:" msgstr "行番号:" #: lib/Padre/Wx/Main.pm:2166 #, perl-format msgid "" "Cannot open %s as it is over the arbitrary file size limit of Padre which is " "currently %s" msgstr "" "「%s」を開けません。Padreのファイルサイズの上限を越えています(現在の上限%s)" #: lib/Padre/Wx/Main.pm:2264 msgid "Nothing selected. Enter what should be opened:" msgstr "選択されているものがありません。開くファイル名を入力してください:" #: lib/Padre/Wx/Main.pm:2265 msgid "Open selection" msgstr "選択範囲を開く" #: lib/Padre/Wx/Main.pm:2329 #, perl-format msgid "Could not find file '%s'" msgstr "ファイル「%s」が見つかりません" #: lib/Padre/Wx/Main.pm:2330 msgid "Open Selection" msgstr "選択範囲を開く" #: lib/Padre/Wx/Main.pm:2414 lib/Padre/Wx/Main.pm:3618 #, perl-format msgid "Could not reload file: %s" msgstr "ファイル「%s」をリロードできません" #: lib/Padre/Wx/Main.pm:2440 msgid "Save file as..." msgstr "名前をつけて保存する..." #: lib/Padre/Wx/Main.pm:2454 msgid "File already exists. Overwrite it?" msgstr "ファイルはすでに存在します。上書きしますか?" #: lib/Padre/Wx/Main.pm:2455 msgid "Exist" msgstr "存在" #: lib/Padre/Wx/Main.pm:2555 msgid "File changed on disk since last saved. Do you want to overwrite it?" msgstr "最後に保存してからファイルが変更されています。上書きしますか?" #: lib/Padre/Wx/Main.pm:2556 lib/Padre/Wx/Main.pm:3611 msgid "File not in sync" msgstr "ファイルの同期がとれていません" #: lib/Padre/Wx/Main.pm:2565 msgid "Could not save file: " msgstr "ファイルを保存できません: " #: lib/Padre/Wx/Main.pm:2627 msgid "File changed. Do you want to save it?" msgstr "ファイルが変更されています。保存しますか?" #: lib/Padre/Wx/Main.pm:2628 msgid "Unsaved File" msgstr "保存されていないファイル" #: lib/Padre/Wx/Main.pm:2790 msgid "Cannot diff if file was never saved" msgstr "保存されていないファイルの差分はとれません" #: lib/Padre/Wx/Main.pm:2796 msgid "There are no differences\n" msgstr "差はありません\n" #: lib/Padre/Wx/Main.pm:3263 lib/Padre/Plugin/Devel.pm:162 #, perl-format msgid "Error: %s" msgstr "エラー: %s" #: lib/Padre/Wx/Main.pm:3264 msgid "Internal error" msgstr "内部エラー" #: lib/Padre/Wx/Main.pm:3452 #, perl-format msgid "Words: %s" msgstr "単語数: %s" #: lib/Padre/Wx/Main.pm:3453 #, perl-format msgid "Lines: %d" msgstr "行数: %d" #: lib/Padre/Wx/Main.pm:3454 #, perl-format msgid "Chars without spaces: %s" msgstr "空白以外の文字数: %s" #: lib/Padre/Wx/Main.pm:3455 #, perl-format msgid "Chars with spaces: %d" msgstr "空白込みの文字数: %d" #: lib/Padre/Wx/Main.pm:3456 #, perl-format msgid "Newline type: %s" msgstr "改行種別: %s" #: lib/Padre/Wx/Main.pm:3457 #, perl-format msgid "Encoding: %s" msgstr "エンコーディング: %s" #: lib/Padre/Wx/Main.pm:3458 #, perl-format msgid "Document type: %s" msgstr "ドキュメントタイプ: %s" #: lib/Padre/Wx/Main.pm:3458 msgid "none" msgstr "なし" #: lib/Padre/Wx/Main.pm:3460 #, perl-format msgid "Filename: %s" msgstr "ファイル名: %s" #: lib/Padre/Wx/Main.pm:3490 msgid "Space to Tab" msgstr "スペースからタブ" #: lib/Padre/Wx/Main.pm:3491 msgid "Tab to Space" msgstr "タブからスペース" #: lib/Padre/Wx/Main.pm:3494 msgid "How many spaces for each tab:" msgstr "タブ幅:" #: lib/Padre/Wx/Main.pm:3610 msgid "File changed on disk since last saved. Do you want to reload it?" msgstr "最後に保存してからファイルが変更されています。リロードしますか?" #: lib/Padre/Wx/Bottom.pm:42 msgid "Output View" msgstr "出力ビュー" #: lib/Padre/Wx/FunctionList.pm:71 msgid "Sub List" msgstr "サブルーチン一覧" #: lib/Padre/Wx/Dialog/Find.pm:58 msgid "Find" msgstr "検索する" #: lib/Padre/Wx/Dialog/Find.pm:76 lib/Padre/Wx/Dialog/Search.pm:132 msgid "Find:" msgstr "検索:" #: lib/Padre/Wx/Dialog/Find.pm:91 msgid "Replace with:" msgstr "置換:" #: lib/Padre/Wx/Dialog/Find.pm:113 msgid "&Find" msgstr "検索(&F)" #: lib/Padre/Wx/Dialog/Find.pm:121 msgid "&Replace" msgstr "置換(&R)" #: lib/Padre/Wx/Dialog/Find.pm:146 msgid "&Use Regex" msgstr "正規表現(&U)" #: lib/Padre/Wx/Dialog/Find.pm:155 msgid "Search &Backwards" msgstr "後方検索(&B)" #: lib/Padre/Wx/Dialog/Find.pm:164 msgid "Close Window on &hit" msgstr "見つかったらウィンドウを閉じる(&h)" #: lib/Padre/Wx/Dialog/Find.pm:178 msgid "Replace &all" msgstr "全置換(&a)" #: lib/Padre/Wx/Dialog/Find.pm:189 lib/Padre/Wx/Dialog/Preferences.pm:500 msgid "&Cancel" msgstr "キャンセル(&C)" #: lib/Padre/Wx/Dialog/Find.pm:347 #, perl-format msgid "%s occurences were replaced" msgstr "%s件置換しました" #: lib/Padre/Wx/Dialog/Snippets.pm:18 msgid "All" msgstr "すべて" #: lib/Padre/Wx/Dialog/Snippets.pm:22 msgid "Class:" msgstr "クラス:" #: lib/Padre/Wx/Dialog/Snippets.pm:23 lib/Padre/Wx/Dialog/Snippets.pm:113 msgid "Snippet:" msgstr "スニペット:" #: lib/Padre/Wx/Dialog/Snippets.pm:24 msgid "&Insert" msgstr "挿入(&I)" #: lib/Padre/Wx/Dialog/Snippets.pm:26 msgid "&Add" msgstr "追加(&A)" #: lib/Padre/Wx/Dialog/Snippets.pm:39 msgid "Snippets" msgstr "スニペット" #: lib/Padre/Wx/Dialog/Snippets.pm:111 msgid "Category:" msgstr "カテゴリー:" #: lib/Padre/Wx/Dialog/Snippets.pm:112 msgid "Name:" msgstr "名前:" #: lib/Padre/Wx/Dialog/Snippets.pm:114 lib/Padre/Wx/Dialog/Preferences.pm:489 msgid "&Save" msgstr "保存する(&S)" #: lib/Padre/Wx/Dialog/Snippets.pm:125 msgid "Edit/Add Snippets" msgstr "スニペットを編集/追加する" #: lib/Padre/Wx/Dialog/Preferences.pm:37 msgid "Automatic indentation style detection" msgstr "インデントスタイルの自動検出" #: lib/Padre/Wx/Dialog/Preferences.pm:41 msgid "Use Tabs" msgstr "タブを使う" #: lib/Padre/Wx/Dialog/Preferences.pm:44 msgid "TAB display size (in spaces):" msgstr "タブ表示幅(空白の数):" #: lib/Padre/Wx/Dialog/Preferences.pm:47 msgid "Indentation width (in columns):" msgstr "インデント幅(カラム数):" #: lib/Padre/Wx/Dialog/Preferences.pm:50 msgid "Guess from current document:" msgstr "現在のドキュメントから推測:" #: lib/Padre/Wx/Dialog/Preferences.pm:51 msgid "Guess" msgstr "推測" #: lib/Padre/Wx/Dialog/Preferences.pm:53 msgid "Autoindent:" msgstr "自動インデント:" #: lib/Padre/Wx/Dialog/Preferences.pm:77 msgid "Default word wrap on for each file" msgstr "デフォルトでワードラップ" #: lib/Padre/Wx/Dialog/Preferences.pm:82 msgid "Auto-fold POD markup when code folding enabled" msgstr "コードを折りたたむときはPODも自動的に折りたたむ" #: lib/Padre/Wx/Dialog/Preferences.pm:87 msgid "Perl beginner mode" msgstr "Perl初心者モード" #: lib/Padre/Wx/Dialog/Preferences.pm:91 msgid "Open files:" msgstr "ファイルの並び順:" #: lib/Padre/Wx/Dialog/Preferences.pm:95 msgid "Open files in existing Padre" msgstr "既存のPadreでファイルを開く(MDIモード)" #: lib/Padre/Wx/Dialog/Preferences.pm:99 msgid "Methods order:" msgstr "メソッドの並び順:" #: lib/Padre/Wx/Dialog/Preferences.pm:102 msgid "Preferred language for error diagnostics:" msgstr "エラーメッセージの言語:" #: lib/Padre/Wx/Dialog/Preferences.pm:139 msgid "Colored text in output window (ANSI)" msgstr "出力ウィンドウのテキストに色をつける(ANSI)" #: lib/Padre/Wx/Dialog/Preferences.pm:143 msgid "Editor Font:" msgstr "エディタのフォント:" #: lib/Padre/Wx/Dialog/Preferences.pm:146 msgid "Editor Current Line Background Colour:" msgstr "エディタの現在の行の背景色:" #: lib/Padre/Wx/Dialog/Preferences.pm:196 msgid "Settings Demo" msgstr "設定デモ" #: lib/Padre/Wx/Dialog/Preferences.pm:280 msgid "Enable?" msgstr "有効にする?" #: lib/Padre/Wx/Dialog/Preferences.pm:295 msgid "Crashed" msgstr "クラッシュ" #: lib/Padre/Wx/Dialog/Preferences.pm:328 msgid "" "i.e.\n" "\tinclude directory: -I\n" "\tenable tainting checks: -T\n" "\tenable many useful warnings: -w\n" "\tenable all warnings: -W\n" "\tdisable all warnings: -X\n" msgstr "" "例\n" "\tインクルードディレクトリ: -I\n" "\t汚染チェックを有効にする: -T\n" "\t便利な警告を有効にする: -w\n" "\tすべての警告を有効にする: -W\n" "\tすべての警告を無効にする: -X\n" #: lib/Padre/Wx/Dialog/Preferences.pm:338 #: lib/Padre/Wx/Dialog/Preferences.pm:382 msgid "Interpreter arguments:" msgstr "インタプリタの引数:" #: lib/Padre/Wx/Dialog/Preferences.pm:344 #: lib/Padre/Wx/Dialog/Preferences.pm:388 msgid "Script arguments:" msgstr "スクリプトの引数:" #: lib/Padre/Wx/Dialog/Preferences.pm:351 msgid "Unsaved" msgstr "未保存" #: lib/Padre/Wx/Dialog/Preferences.pm:352 msgid "N/A" msgstr "なし" #: lib/Padre/Wx/Dialog/Preferences.pm:371 msgid "No Document" msgstr "ドキュメントがありません" #: lib/Padre/Wx/Dialog/Preferences.pm:376 msgid "Document name:" msgstr "ドキュメント名:" #: lib/Padre/Wx/Dialog/Preferences.pm:379 msgid "Document location:" msgstr "ドキュメントの位置:" #: lib/Padre/Wx/Dialog/Preferences.pm:406 msgid "Default" msgstr "デフォルト" #: lib/Padre/Wx/Dialog/Preferences.pm:412 #, perl-format msgid "Current Document: %s" msgstr "現在のドキュメント: %s" #: lib/Padre/Wx/Dialog/Preferences.pm:427 #: lib/Padre/Wx/Dialog/PluginManager.pm:290 lib/Padre/Wx/Menu/Edit.pm:355 msgid "Preferences" msgstr "設定" #: lib/Padre/Wx/Dialog/Preferences.pm:452 msgid "Behaviour" msgstr "動作" #: lib/Padre/Wx/Dialog/Preferences.pm:455 msgid "Appearance" msgstr "表示" #: lib/Padre/Wx/Dialog/Preferences.pm:458 msgid "Run Parameters" msgstr "実行パラメータ" #: lib/Padre/Wx/Dialog/Preferences.pm:462 msgid "Indentation" msgstr "インデントガイドを表示する" #: lib/Padre/Wx/Dialog/Preferences.pm:535 msgid "new" msgstr "新しい順" #: lib/Padre/Wx/Dialog/Preferences.pm:536 msgid "nothing" msgstr "なし" #: lib/Padre/Wx/Dialog/Preferences.pm:537 msgid "last" msgstr "古い順" #: lib/Padre/Wx/Dialog/Preferences.pm:538 msgid "no" msgstr "なし" #: lib/Padre/Wx/Dialog/Preferences.pm:539 msgid "same_level" msgstr "同じ深さ" #: lib/Padre/Wx/Dialog/Preferences.pm:540 msgid "deep" msgstr "深くする" #: lib/Padre/Wx/Dialog/Preferences.pm:541 msgid "alphabetical" msgstr "アルファベット順" #: lib/Padre/Wx/Dialog/Preferences.pm:542 msgid "original" msgstr "出現順" #: lib/Padre/Wx/Dialog/Preferences.pm:543 msgid "alphabetical_private_last" msgstr "プライベート変数は最後" #: lib/Padre/Wx/Dialog/Bookmarks.pm:30 msgid "Existing bookmarks:" msgstr "既存のしおり:" #: lib/Padre/Wx/Dialog/Bookmarks.pm:42 msgid "Delete &All" msgstr "全削除(&A)" #: lib/Padre/Wx/Dialog/Bookmarks.pm:55 msgid "Set Bookmark" msgstr "しおりをはさむ" #: lib/Padre/Wx/Dialog/Bookmarks.pm:56 msgid "GoTo Bookmark" msgstr "しおりに移動する" #: lib/Padre/Wx/Dialog/Bookmarks.pm:122 msgid "Cannot set bookmark in unsaved document" msgstr "保存されていないドキュメントにはしおりをはさめません" #: lib/Padre/Wx/Dialog/Bookmarks.pm:133 #, perl-format msgid "%s line %s: %s" msgstr "%s 行 %s: %s" #: lib/Padre/Wx/Dialog/Bookmarks.pm:171 #, perl-format msgid "The bookmark '%s' no longer exists" msgstr "しおり「%s」はすでに存在しません" #: lib/Padre/Wx/Dialog/PluginManager.pm:43 lib/Padre/Wx/Menu/Plugins.pm:34 msgid "Plugin Manager" msgstr "プラグインマネージャー" #: lib/Padre/Wx/Dialog/PluginManager.pm:174 #, perl-format msgid "Error loading pod for class '%s': %s" msgstr "クラス「%s」のpodをロードできません: %s" #: lib/Padre/Wx/Dialog/PluginManager.pm:229 #: lib/Padre/Wx/Dialog/SessionManager.pm:210 msgid "Name" msgstr "名前" #: lib/Padre/Wx/Dialog/PluginManager.pm:230 msgid "Version" msgstr "バージョン" #: lib/Padre/Wx/Dialog/PluginManager.pm:231 lib/Padre/Wx/CPAN/Listview.pm:43 #: lib/Padre/Wx/CPAN/Listview.pm:78 msgid "Status" msgstr "ステータス" #: lib/Padre/Wx/Dialog/PluginManager.pm:291 #: lib/Padre/Wx/Dialog/SessionSave.pm:209 #: lib/Padre/Wx/Dialog/SessionManager.pm:241 msgid "Close" msgstr "閉じる" #: lib/Padre/Wx/Dialog/PluginManager.pm:465 #: lib/Padre/Wx/Dialog/PluginManager.pm:475 msgid "Show error message" msgstr "エラーメッセージを表示する" #: lib/Padre/Wx/Dialog/PluginManager.pm:489 msgid "Disable" msgstr "無効" #: lib/Padre/Wx/Dialog/PluginManager.pm:499 msgid "Enable" msgstr "有効" #: lib/Padre/Wx/Dialog/ModuleStart.pm:26 msgid "Module Name:" msgstr "モジュール名:" #: lib/Padre/Wx/Dialog/ModuleStart.pm:29 msgid "Author:" msgstr "作者名:" #: lib/Padre/Wx/Dialog/ModuleStart.pm:32 msgid "Email:" msgstr "メールアドレス:" #: lib/Padre/Wx/Dialog/ModuleStart.pm:35 msgid "Builder:" msgstr "ビルダー:" #: lib/Padre/Wx/Dialog/ModuleStart.pm:38 msgid "License:" msgstr "ライセンス:" #: lib/Padre/Wx/Dialog/ModuleStart.pm:41 msgid "Parent Directory:" msgstr "親ディレクトリ:" #: lib/Padre/Wx/Dialog/ModuleStart.pm:42 msgid "Pick parent directory" msgstr "親ディレクトリを選択してください" #: lib/Padre/Wx/Dialog/ModuleStart.pm:68 msgid "Module Start" msgstr "" #: lib/Padre/Wx/Dialog/ModuleStart.pm:110 #, perl-format msgid "Field %s was missing. Module not created." msgstr "%sフィールドが入力されていません。モジュールを作成できません" #: lib/Padre/Wx/Dialog/ModuleStart.pm:111 msgid "missing field" msgstr "入力されていないフィールドがあります" #: lib/Padre/Wx/Dialog/ModuleStart.pm:139 #, perl-format msgid "%s apparantly created. Do you want to open it now?" msgstr "%sは作成済みのようです。開きますか?" #: lib/Padre/Wx/Dialog/ModuleStart.pm:140 msgid "Done" msgstr "完了" #: lib/Padre/Wx/Dialog/SessionSave.pm:32 msgid "Save session as..." msgstr "名前をつけてセッションを保存する..." #: lib/Padre/Wx/Dialog/SessionSave.pm:179 msgid "Session name:" msgstr "セッション名:" #: lib/Padre/Wx/Dialog/SessionSave.pm:188 msgid "Description:" msgstr "説明:" #: lib/Padre/Wx/Dialog/SessionSave.pm:208 msgid "Save" msgstr "保存" #: lib/Padre/Wx/Dialog/Search.pm:151 msgid "Previ&ous" msgstr "前(&o)" #: lib/Padre/Wx/Dialog/Search.pm:169 msgid "&Next" msgstr "次(&N)" #: lib/Padre/Wx/Dialog/Search.pm:177 msgid "Case &insensitive" msgstr "大文字と小文字を区別しない(&i)" #: lib/Padre/Wx/Dialog/Search.pm:181 msgid "Use rege&x" msgstr "正規表現(&x)" #: lib/Padre/Wx/Dialog/SessionManager.pm:36 msgid "Session Manager" msgstr "セッションマネージャー" #: lib/Padre/Wx/Dialog/SessionManager.pm:198 msgid "List of sessions" msgstr "セッション一覧" #: lib/Padre/Wx/Dialog/SessionManager.pm:212 msgid "Last update" msgstr "最終更新" #: lib/Padre/Wx/Dialog/SessionManager.pm:239 msgid "Open" msgstr "開く" #: lib/Padre/Wx/Dialog/SessionManager.pm:240 msgid "Delete" msgstr "削除" #: lib/Padre/Wx/Menu/Edit.pm:31 msgid "&Undo" msgstr "元に戻す(&U)" #: lib/Padre/Wx/Menu/Edit.pm:43 msgid "&Redo" msgstr "やり直す(&R)" #: lib/Padre/Wx/Menu/Edit.pm:59 msgid "Select" msgstr "選択する" #: lib/Padre/Wx/Menu/Edit.pm:78 msgid "Mark selection start\tCtrl-[" msgstr "選択範囲の始点をマークする\tCtrl-[" #: lib/Padre/Wx/Menu/Edit.pm:90 msgid "Mark selection end\tCtrl-]" msgstr "選択範囲の終点をマークする\tCtrl-]" #: lib/Padre/Wx/Menu/Edit.pm:102 msgid "Clear selection marks" msgstr "選択範囲のマークをクリアする" #: lib/Padre/Wx/Menu/Edit.pm:150 msgid "&Goto\tCtrl-G" msgstr "移動する(&G)\tCtrl-G" #: lib/Padre/Wx/Menu/Edit.pm:160 msgid "&AutoComp\tCtrl-P" msgstr "オートコンプリート(&A)\tCtrl-P" #: lib/Padre/Wx/Menu/Edit.pm:170 msgid "&Brace matching\tCtrl-1" msgstr "対応するかっこに移動する(&B)\tCtrl-1" #: lib/Padre/Wx/Menu/Edit.pm:180 msgid "&Join lines\tCtrl-J" msgstr "行を結合する(&J)\tCtrl-J" #: lib/Padre/Wx/Menu/Edit.pm:190 msgid "Snippets\tCtrl-Shift-A" msgstr "スニペット\tCtrl-Shift-A" #: lib/Padre/Wx/Menu/Edit.pm:238 msgid "Tabs and Spaces" msgstr "タブとスペース" #: lib/Padre/Wx/Menu/Edit.pm:244 msgid "Tabs to Spaces..." msgstr "タブからスペース..." #: lib/Padre/Wx/Menu/Edit.pm:256 msgid "Spaces to Tabs..." msgstr "スペースからタブ..." #: lib/Padre/Wx/Menu/Edit.pm:270 msgid "Delete Trailing Spaces" msgstr "行末のスペースを削除する" #: lib/Padre/Wx/Menu/Edit.pm:283 msgid "Delete Leading Spaces" msgstr "行頭のスペースを削除する" #: lib/Padre/Wx/Menu/Edit.pm:297 msgid "Upper/Lower Case" msgstr "大文字/小文字" #: lib/Padre/Wx/Menu/Edit.pm:303 msgid "Upper All\tCtrl-Shift-U" msgstr "すべて大文字\tCtrl-Shift-U" #: lib/Padre/Wx/Menu/Edit.pm:315 msgid "Lower All\tCtrl-U" msgstr "すべて小文字\tCtrl-U" #: lib/Padre/Wx/Menu/Edit.pm:330 msgid "Diff" msgstr "差分をとる" #: lib/Padre/Wx/Menu/Edit.pm:340 msgid "Insert From File..." msgstr "ファイルから挿入する..." #: lib/Padre/Wx/Menu/View.pm:37 msgid "Lock User Interface" msgstr "ユーザインタフェースをロックする" #: lib/Padre/Wx/Menu/View.pm:52 msgid "Show Output" msgstr "出力を表示する" #: lib/Padre/Wx/Menu/View.pm:64 msgid "Show Functions" msgstr "関数を表示する" #: lib/Padre/Wx/Menu/View.pm:82 msgid "Show Outline" msgstr "アウトラインを表示する" #: lib/Padre/Wx/Menu/View.pm:94 msgid "Show Directory Tree" msgstr "ディレクトリツリーを表示する" #: lib/Padre/Wx/Menu/View.pm:106 msgid "Show Syntax Check" msgstr "構文チェックを表示する" #: lib/Padre/Wx/Menu/View.pm:118 msgid "Show Error List" msgstr "エラー一覧を表示する" #: lib/Padre/Wx/Menu/View.pm:132 msgid "Show StatusBar" msgstr "ステータスバーを表示する" #: lib/Padre/Wx/Menu/View.pm:149 msgid "View Document As..." msgstr "ドキュメントの表示を変える..." #: lib/Padre/Wx/Menu/View.pm:183 msgid "Show Line Numbers" msgstr "行番号を表示する" #: lib/Padre/Wx/Menu/View.pm:195 msgid "Show Code Folding" msgstr "コードの折りたたみを表示する" #: lib/Padre/Wx/Menu/View.pm:207 msgid "Show Call Tips" msgstr "コールチップを表示する" #: lib/Padre/Wx/Menu/View.pm:222 msgid "Show Current Line" msgstr "現在の行を表示する" #: lib/Padre/Wx/Menu/View.pm:237 msgid "Show Newlines" msgstr "改行を表示する" #: lib/Padre/Wx/Menu/View.pm:249 msgid "Show Whitespaces" msgstr "空白を表示する" #: lib/Padre/Wx/Menu/View.pm:261 msgid "Show Indentation Guide" msgstr "インデントガイドを表示する" #: lib/Padre/Wx/Menu/View.pm:273 msgid "Word-Wrap" msgstr "ワードラップ" #: lib/Padre/Wx/Menu/View.pm:288 msgid "Increase Font Size\tCtrl-+" msgstr "フォントを大きくする\tCtrl-+" #: lib/Padre/Wx/Menu/View.pm:300 msgid "Decrease Font Size\tCtrl--" msgstr "フォントを小さくする\tCtrl--" #: lib/Padre/Wx/Menu/View.pm:312 msgid "Reset Font Size\tCtrl-/" msgstr "フォントの大きさをリセットする\tCtrl-/" #: lib/Padre/Wx/Menu/View.pm:327 msgid "Set Bookmark\tCtrl-B" msgstr "しおりをはさむ\tCtrl-B" #: lib/Padre/Wx/Menu/View.pm:339 msgid "Goto Bookmark\tCtrl-Shift-B" msgstr "しおりに移動する\tCtrl-Shift-B" #: lib/Padre/Wx/Menu/View.pm:355 msgid "Style" msgstr "スタイル" #: lib/Padre/Wx/Menu/View.pm:359 msgid "Padre" msgstr "" #: lib/Padre/Wx/Menu/View.pm:360 msgid "Night" msgstr "" #: lib/Padre/Wx/Menu/View.pm:361 msgid "Ultraedit" msgstr "" #: lib/Padre/Wx/Menu/View.pm:362 msgid "Notepad++" msgstr "" #: lib/Padre/Wx/Menu/View.pm:410 msgid "Language" msgstr "言語" #: lib/Padre/Wx/Menu/View.pm:417 msgid "System Default" msgstr "システムデフォルト" #: lib/Padre/Wx/Menu/View.pm:464 msgid "&Full Screen\tF11" msgstr "フルスクリーン表示\tF11" #: lib/Padre/Wx/Menu/Plugins.pm:49 msgid "All available plugins on CPAN" msgstr "CPANから入手できるプラグイン一覧" #: lib/Padre/Wx/Menu/Plugins.pm:60 msgid "Edit My Plugin" msgstr "Myプラグインを編集" #: lib/Padre/Wx/Menu/Plugins.pm:66 msgid "Could not find the Padre::Plugin::My plugin" msgstr "Padre::Plugin::Myプラグインが見つかりません" #: lib/Padre/Wx/Menu/Plugins.pm:75 msgid "Reload My Plugin" msgstr "Myプラグインをリロードする" #: lib/Padre/Wx/Menu/Plugins.pm:82 lib/Padre/Wx/Menu/Plugins.pm:85 #: lib/Padre/Wx/Menu/Plugins.pm:86 msgid "Reset My Plugin" msgstr "Myプラグインをリセットする" #: lib/Padre/Wx/Menu/Plugins.pm:101 msgid "Reload All Plugins" msgstr "すべてのプラグインをリロードする" #: lib/Padre/Wx/Menu/Plugins.pm:108 msgid "(Re)load Current Plugin" msgstr "現在のプラグインを(リ)ロードする" #: lib/Padre/Wx/Menu/Plugins.pm:115 msgid "Test A Plugin From Local Dir" msgstr "ローカルディレクトリのプラグインをテストする" #: lib/Padre/Wx/Menu/Plugins.pm:122 msgid "Plugin Tools" msgstr "プラグインツール" #: lib/Padre/Wx/Menu/Search.pm:31 msgid "&Find\tCtrl-F" msgstr "検索する(&F)\tCtrl-F" #: lib/Padre/Wx/Menu/Search.pm:43 msgid "Find Next\tF3" msgstr "次を検索する\tF3" #: lib/Padre/Wx/Menu/Search.pm:55 msgid "Find Previous\tShift-F3" msgstr "前を検索する\tShift-F3" #: lib/Padre/Wx/Menu/Search.pm:68 msgid "Replace\tCtrl-R" msgstr "置換する\tCtrl-R" #: lib/Padre/Wx/Menu/Search.pm:81 msgid "Quick Find" msgstr "クイック検索" #: lib/Padre/Wx/Menu/Search.pm:102 msgid "Find Next\tF4" msgstr "次を検索する\tF4" #: lib/Padre/Wx/Menu/Search.pm:114 msgid "Find Previous\tShift-F4" msgstr "前を検索する\tShift-F4" #: lib/Padre/Wx/Menu/Search.pm:131 msgid "Find in fi&les..." msgstr "ファイル内を検索(&l)" #: lib/Padre/Wx/Menu/Help.pm:38 msgid "Context Help\tF1" msgstr "コンテキストヘルプ\tF1" #: lib/Padre/Wx/Menu/Help.pm:58 msgid "Current Document" msgstr "現在のドキュメント" #: lib/Padre/Wx/Menu/Help.pm:70 msgid "Visit the PerlMonks" msgstr "PerlMonksを訪問する" #: lib/Padre/Wx/Menu/Help.pm:80 msgid "Report a New &Bug" msgstr "新しいバグを報告する(&B)" #: lib/Padre/Wx/Menu/Help.pm:87 msgid "View All &Open Bugs" msgstr "未解決のバグを全表示する(&O)" #: lib/Padre/Wx/Menu/Help.pm:97 msgid "&About" msgstr "Padreについて(&A)" #: lib/Padre/Wx/Menu/Help.pm:151 msgid "Copyright 2008-2009 The Padre development team as listed in Padre.pm" msgstr "" #: lib/Padre/Wx/Menu/Run.pm:31 msgid "Run Script\tF5" msgstr "スクリプトを実行する\tF5" #: lib/Padre/Wx/Menu/Run.pm:43 msgid "Run Script (debug info)\tShift-F5" msgstr "スクリプトを実行する (デバッグ情報)\tShift-F5" #: lib/Padre/Wx/Menu/Run.pm:55 msgid "Run Command\tCtrl-F5" msgstr "コマンドを実行する\tCtrl-F5" #: lib/Padre/Wx/Menu/Run.pm:67 msgid "Run Tests" msgstr "テストを実行する" #: lib/Padre/Wx/Menu/Run.pm:80 msgid "Stop\tF6" msgstr "停止する\tF6" #: lib/Padre/Wx/Menu/File.pm:31 msgid "&New\tCtrl-N" msgstr "新しいファイルを開く(&N)\tCtrl-N" #: lib/Padre/Wx/Menu/File.pm:48 msgid "New..." msgstr "新しい..." #: lib/Padre/Wx/Menu/File.pm:55 msgid "Perl 5 Script" msgstr "Perl 5スクリプト" #: lib/Padre/Wx/Menu/File.pm:65 msgid "Perl 5 Module" msgstr "Perl 5モジュール" #: lib/Padre/Wx/Menu/File.pm:75 msgid "Perl 5 Test" msgstr "Perl 5テスト" #: lib/Padre/Wx/Menu/File.pm:85 msgid "Perl 6 Script" msgstr "Perl 6スクリプト" #: lib/Padre/Wx/Menu/File.pm:95 msgid "Perl Distribution (Module::Starter)" msgstr "Perlディストリビューション (Module::Starter)" #: lib/Padre/Wx/Menu/File.pm:108 msgid "&Open...\tCtrl-O" msgstr "ファイルを開く(&O)...\tCtrl-O" #: lib/Padre/Wx/Menu/File.pm:117 msgid "Open Selection\tCtrl-Shift-O" msgstr "選択範囲を開く\tCtrl-Shift-O" #: lib/Padre/Wx/Menu/File.pm:121 msgid "Open Session...\tCtrl-Alt-O" msgstr "セッションを開く...\tCtrl-Alt-O" #: lib/Padre/Wx/Menu/File.pm:138 msgid "&Close\tCtrl-W" msgstr "閉じる(&C)\tCtrl-W" #: lib/Padre/Wx/Menu/File.pm:150 msgid "Close All" msgstr "すべて閉じる" #: lib/Padre/Wx/Menu/File.pm:161 msgid "Close All but Current" msgstr "現在のファイル以外すべて閉じる" #: lib/Padre/Wx/Menu/File.pm:172 msgid "Reload File" msgstr "ファイルをリロードする" #: lib/Padre/Wx/Menu/File.pm:187 msgid "&Save\tCtrl-S" msgstr "保存する(&S)\tCtrl-S" #: lib/Padre/Wx/Menu/File.pm:198 msgid "Save &As...\tF12" msgstr "名前をつけて保存する(&A)...\tF12" #: lib/Padre/Wx/Menu/File.pm:209 msgid "Save All" msgstr "すべて保存する" #: lib/Padre/Wx/Menu/File.pm:220 msgid "Save Session...\tCtrl-Alt-S" msgstr "現在のセッションを保存する...\tCtrl-Alt-S" #: lib/Padre/Wx/Menu/File.pm:232 msgid "&Print..." msgstr "印刷する(&P)..." #: lib/Padre/Wx/Menu/File.pm:256 msgid "Convert..." msgstr "変換する..." #: lib/Padre/Wx/Menu/File.pm:262 msgid "EOL to Windows" msgstr "改行をWindows風に" #: lib/Padre/Wx/Menu/File.pm:274 msgid "EOL to Unix" msgstr "改行をUnix風に" #: lib/Padre/Wx/Menu/File.pm:286 msgid "EOL to Mac Classic" msgstr "改行をMac Classic風に" #: lib/Padre/Wx/Menu/File.pm:302 msgid "&Recent Files" msgstr "最近使ったファイル(&R)" #: lib/Padre/Wx/Menu/File.pm:309 msgid "Open All Recent Files" msgstr "最近使ったすべてのファイルを開く" #: lib/Padre/Wx/Menu/File.pm:319 msgid "Clean Recent Files List" msgstr "最近使ったファイルの一覧を消去する" #: lib/Padre/Wx/Menu/File.pm:336 msgid "Document Statistics" msgstr "ドキュメントの統計情報" #: lib/Padre/Wx/Menu/File.pm:353 msgid "&Quit\tCtrl-Q" msgstr "終了する(&Q)\tCtrl-Q" #: lib/Padre/Wx/Menu/Perl.pm:40 msgid "Find Unmatched Brace" msgstr "対応していないかっこを検索する" #: lib/Padre/Wx/Menu/Perl.pm:51 lib/Padre/Document/Perl.pm:666 msgid "Find Variable Declaration" msgstr "変数宣言を検索する" #: lib/Padre/Wx/Menu/Perl.pm:66 lib/Padre/Document/Perl.pm:678 msgid "Lexically Rename Variable" msgstr "変数をレキシカルにリネームする" #: lib/Padre/Wx/Menu/Perl.pm:73 lib/Padre/Wx/Menu/Perl.pm:74 #: lib/Padre/Document/Perl.pm:689 lib/Padre/Document/Perl.pm:690 msgid "Replacement" msgstr "置換する" #: lib/Padre/Wx/Menu/Perl.pm:89 msgid "Vertically Align Selected" msgstr "選択範囲を桁揃えする" #: lib/Padre/Wx/Menu/Perl.pm:102 msgid "Use PPI Syntax Highlighting" msgstr "PPIによる構文ハイライト表示" #: lib/Padre/Wx/Menu/Perl.pm:128 msgid "Automatic bracket completion" msgstr "かっこを自動的に補完する" #: lib/Padre/Wx/Menu/Window.pm:46 msgid "Next File\tCtrl-TAB" msgstr "次のファイル\tCtrl-TAB" #: lib/Padre/Wx/Menu/Window.pm:55 msgid "Previous File\tCtrl-Shift-TAB" msgstr "前のファイル\tCtrl-Shift-TAB" #: lib/Padre/Wx/Menu/Window.pm:64 msgid "Last Visited File\tCtrl-6" msgstr "最後に訪れたファイル\tCtrl-6" #: lib/Padre/Wx/Menu/Window.pm:73 msgid "Right Click\tAlt-/" msgstr "右クリック\tAlt-/" #: lib/Padre/Wx/Menu/Window.pm:90 msgid "GoTo Subs Window" msgstr "サブルーチンウィンドウに移動する" #: lib/Padre/Wx/Menu/Window.pm:103 msgid "GoTo Outline Window\tAlt-L" msgstr "アウトラインウィンドウに移動する\tAlt-L" #: lib/Padre/Wx/Menu/Window.pm:115 msgid "GoTo Output Window\tAlt-O" msgstr "出力ウィンドウに移動する\tAlt-O" #: lib/Padre/Wx/Menu/Window.pm:125 msgid "GoTo Syntax Check Window\tAlt-C" msgstr "構文チェックウィンドウに移動する\tAlt-C" #: lib/Padre/Wx/Menu/Window.pm:140 msgid "GoTo Main Window\tAlt-M" msgstr "メインウィンドウに移動する\tAlt-M" #: lib/Padre/Wx/Menu/Experimental.pm:30 msgid "Disable Experimental Mode" msgstr "実験モードを無効にする" #: lib/Padre/Wx/Menu/Experimental.pm:44 msgid "Refresh Menu" msgstr "メニューをリフレッシュする" #: lib/Padre/Wx/Menu/Experimental.pm:55 lib/Padre/Wx/Menu/Experimental.pm:76 msgid "Refresh Counter: " msgstr "リフレッシュカウンタ: " #: lib/Padre/Plugin/Perl5.pm:39 msgid "Install Module..." msgstr "モジュールのインストール..." #: lib/Padre/Plugin/Perl5.pm:40 msgid "Install CPAN Module" msgstr "CPANモジュールのインストール" #: lib/Padre/Plugin/Perl5.pm:42 msgid "Install Local Distribution" msgstr "ローカルディストリビューションのインストール" #: lib/Padre/Plugin/Perl5.pm:43 msgid "Install Remote Distribution" msgstr "リモートディストリビューションのインストール" #: lib/Padre/Plugin/Perl5.pm:45 msgid "Open CPAN Config File" msgstr "CPANコンフィグファイルを開く" #: lib/Padre/Plugin/Perl5.pm:96 msgid "Failed to find your CPAN configuration" msgstr "CPANの設定が見つかりません" #: lib/Padre/Plugin/Perl5.pm:106 msgid "Select distribution to install" msgstr "インストールするディストリビューションを選択してください" #: lib/Padre/Plugin/Perl5.pm:119 lib/Padre/Plugin/Perl5.pm:144 msgid "Did not provide a distribution" msgstr "ディストリビューションが指定されていません" #: lib/Padre/Plugin/Perl5.pm:134 msgid "" "Enter URL to install\n" "e.g. http://svn.ali.as/cpan/releases/Config-Tiny-2.00.tar.gz" msgstr "" "インストールするURLを入力してください\n" "例: http://svn.ali.as/cpan/releases/Config-Tiny-2.00.tar.gz" #: lib/Padre/Plugin/Perl5.pm:164 msgid "pip is unexpectedly not installed" msgstr "pipがインストールされていません" #: lib/Padre/Plugin/Devel.pm:21 msgid "Padre Developer Tools" msgstr "Padre開発者用ツール" #: lib/Padre/Plugin/Devel.pm:55 msgid "Run Document inside Padre" msgstr "Padre内部でドキュメントを実行する" #: lib/Padre/Plugin/Devel.pm:57 msgid "Dump Current Document" msgstr "現在のドキュメントをダンプする" #: lib/Padre/Plugin/Devel.pm:58 msgid "Dump Top IDE Object" msgstr "最前列にあるIDEオブジェクトをダンプする" #: lib/Padre/Plugin/Devel.pm:59 msgid "Dump %INC and @INC" msgstr "%INCと@INCをダンプする" #: lib/Padre/Plugin/Devel.pm:65 msgid "Enable logging" msgstr "ログを有効にする" #: lib/Padre/Plugin/Devel.pm:66 msgid "Disable logging" msgstr "ログを無効にする" #: lib/Padre/Plugin/Devel.pm:67 msgid "Enable trace when logging" msgstr "ログ時にトレースを有効にする" #: lib/Padre/Plugin/Devel.pm:68 msgid "Disable trace" msgstr "トレースを無効にする" #: lib/Padre/Plugin/Devel.pm:70 msgid "Simulate Crash" msgstr "クラッシュをシミュレートする" #: lib/Padre/Plugin/Devel.pm:71 msgid "Simulate Crashing Bg Task" msgstr "バックグラウンドタスクのクラッシュをシミュレートする" #: lib/Padre/Plugin/Devel.pm:73 msgid "wxWidgets 2.8.8 Reference" msgstr "wxWidgets 2.8.8リファレンス" #: lib/Padre/Plugin/Devel.pm:76 msgid "STC Reference" msgstr "STCリファレンス" #: lib/Padre/Plugin/Devel.pm:80 lib/Padre/Plugin/PopularityContest.pm:118 msgid "About" msgstr "Padreについて" #: lib/Padre/Plugin/Devel.pm:119 msgid "No file is open" msgstr "開いているファイルはありません" #: lib/Padre/Plugin/Devel.pm:149 msgid "A set of unrelated tools used by the Padre developers\n" msgstr "Padre開発者が利用している外部ツール群\n" #: lib/Padre/Plugin/PopularityContest.pm:119 msgid "Ping" msgstr "" #: lib/Padre/Document/Perl.pm:512 lib/Padre/Document/Perl.pm:538 msgid "Check cancelled" msgstr "チェックはキャンセルされました" #~ msgid "" #~ "Plugin:%s - Not compatible with Padre::Plugin API. Plugin cannot be " #~ "instantiated" #~ msgstr "" #~ "プラグイン「%s」 - Padre::PluginのAPIと互換性がありません。プラグインをイ" #~ "ンスタンス化できません" #~ msgid "" #~ "Plugin:%s - Not compatible with Padre::Plugin API. Need to have sub " #~ "padre_interfaces" #~ msgstr "" #~ "プラグイン「%s」 - Padre::PluginのAPIと互換性がありません。" #~ "padre_interfacesサブルーチンがありません" #~ msgid "No output" #~ msgstr "出力がありません" #~ msgid "Ac&k Search" #~ msgstr "Ack検索(&k)" Locale-Msgfmt-0.15/t/samples/context.mo0000644000175000017500000000015011464227315017712 0ustar azawawiazawawi,<PX`donefootwofoobarbazLocale-Msgfmt-0.15/t/interface.t0000644000175000017500000000535511464227315016366 0ustar azawawiazawawi#!/usr/bin/perl use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 8; use File::Spec; use File::Temp; use File::Copy; use File::Path; use Locale::Msgfmt; sub slurp { my $file = shift; local *FILE; open FILE, '<', $file or die "Could not open ($file) $!"; binmode FILE; my $string = ""; while ( ) { $string .= $_; } close FILE; return $string; } my $dir = File::Temp::tempdir( CLEANUP => 0 ); copy( File::Spec->catfile( "t", "samples", "basic.po" ), File::Spec->catfile( $dir, "basic.po" ) ); msgfmt( File::Spec->catfile( $dir, "basic.po" ) ); ok( -f File::Spec->catfile( $dir, "basic.mo" ) ); unlink File::Spec->catfile( $dir, "basic.mo" ); msgfmt( { in => File::Spec->catfile( $dir, "basic.po" ) } ); ok( -f File::Spec->catfile( $dir, "basic.mo" ) ); unlink File::Spec->catfile( $dir, "basic.mo" ); msgfmt( { in => File::Spec->catfile( $dir, "basic.po" ), out => File::Spec->catfile( $dir, "mo" ) } ); ok( -f File::Spec->catfile( $dir, "mo" ) ); unlink( File::Spec->catfile( $dir, "mo" ) ); mkdir( File::Spec->catdir( $dir, "a" ) ); mkdir( File::Spec->catdir( $dir, "b" ) ); move( File::Spec->catfile( $dir, "basic.po" ), File::Spec->catfile( $dir, "a", "basic.po" ) ); msgfmt( File::Spec->catdir( $dir, "a" ) ); ok( -f File::Spec->catfile( $dir, "a", "basic.mo" ) ); unlink File::Spec->catfile( $dir, "a", "basic.mo" ); msgfmt( { in => File::Spec->catdir( $dir, "a" ) } ); ok( -f File::Spec->catfile( $dir, "a", "basic.mo" ) ); unlink File::Spec->catfile( $dir, "a", "basic.mo" ); msgfmt( { in => File::Spec->catdir( $dir, "a" ), out => File::Spec->catdir( $dir, "b" ), } ); ok( -f File::Spec->catfile( $dir, "b", "basic.mo" ) ); unlink( File::Spec->catfile( $dir, "b", "basic.mo" ) ); move( File::Spec->catfile( $dir, "a", "basic.po" ), File::Spec->catfile( $dir, "basic.po" ) ); msgfmt( { in => File::Spec->catfile( $dir, "basic.po" ), fuzzy => 1, out => File::Spec->catfile( $dir, "fuzzy" ) } ); msgfmt( { in => File::Spec->catfile( $dir, "basic.po" ), out => File::Spec->catfile( $dir, "not_fuzzy" ) } ); ok( !( slurp( File::Spec->catfile( $dir, "not_fuzzy" ) ) eq slurp( File::Spec->catfile( $dir, "fuzzy" ) ) ) ); unlink( File::Spec->catfile( $dir, "not_fuzzy" ) ); unlink( File::Spec->catfile( $dir, "fuzzy" ) ); move( File::Spec->catfile( $dir, "basic.po" ), File::Spec->catfile( $dir, "a", "basic.po" ) ); msgfmt( { in => File::Spec->catfile( $dir, "a" ), fuzzy => 1, out => File::Spec->catfile( $dir, "b" ) } ); msgfmt( { in => File::Spec->catfile( $dir, "a" ), out => File::Spec->catfile( $dir, "c" ) } ); ok( !( slurp( File::Spec->catfile( $dir, "b", "basic.mo" ) ) eq slurp( File::Spec->catfile( $dir, "c", "basic.mo" ) ) ) ); unlink( File::Spec->catfile( $dir, "c", "basic.mo" ) ); unlink( File::Spec->catfile( $dir, "b", "basic.mo" ) ); Locale-Msgfmt-0.15/private/0000755000175000017500000000000011465454673015452 5ustar azawawiazawawiLocale-Msgfmt-0.15/private/compare-all0000755000175000017500000000034311464227316017563 0ustar azawawiazawawi#!/bin/sh rm ~/padre/list find ~/padre/ | grep -v "\.svn" | grep "\.po$" > ~/padre/list for i in $(cat ~/padre/list); do PERL5LIB=./lib/ ./dev/compare $i; PERL5LIB=./lib/ ./dev/compare -f $i; done rm gnu.out mine.out gnu mine Locale-Msgfmt-0.15/private/dump-mo0000755000175000017500000000020111464227316016736 0ustar azawawiazawawi#!/usr/bin/perl use Locale::Maketext::Gettext; my %h = read_mo(shift); foreach(sort keys %h){print $_ . " " . $h{$_} . "\n";}; Locale-Msgfmt-0.15/private/compare0000755000175000017500000000022511464227316017014 0ustar azawawiazawawi#!/bin/sh echo "$@" ./bin/msgfmt.pl -o mine "$@" ./dev/dump-mo mine > mine.out msgfmt -o gnu "$@" ./dev/dump-mo gnu > gnu.out diff gnu.out mine.out Locale-Msgfmt-0.15/private/dump-po0000755000175000017500000000033511464227316016751 0ustar azawawiazawawi#!/bin/sh perl -MLocale::Maketext::Extract -MData::Dumper -e '$Ext = Locale::Maketext::Extract->new; $Ext->read_po(shift); my $f = $Ext->lexicon; my %h = %{$f}; foreach(sort keys %h){print $_ . " " . $h{$_} . "\n";}' $1 Locale-Msgfmt-0.15/Changes0000644000175000017500000000600711465454642015272 0ustar azawawiazawawiRevision history for Locale-Msgfmt 0.15 Nov 07, 2010 - General code cleaning (ADAMK) - Changes to Module::Install::Msgfmt to make it compatible with Module::Install::Share. (ADAMK) - Moved script from bin/ to script/ (ADAMK) - Moved private tools from dev to private (ADAMK) - Picking 5.008005 as our minimum Perl to ensure solid Unicode support (ADAMK) - Converted the Build.PL to a Module::Install Makefile.PL (ADAMK) - Fixed it so that it actually works (AZAWAWI) 0.14 Jul 09, 2009 - fix a mess with Module::Install::Msgfmt :P 0.13 Jul 08, 2009 - act like make when rebuilding, only rebuild things that need to be rebuilt. - add a --force option to force the old behavior of always rebuilding - make the "use" in msgfmt.pl versioned to make sure that the correct version of Locale::Msgfmt is being used, and add a test to keep this up to date 0.12 Jul 06, 2009 - unlink the output file before writing to it if it already exists - default to verbose (pass -q to msgfmt.pl or verbose => 0 to msgfmt) - die when an unknown line is found in a .po file 0.11 Jul 06, 2009 - some code improvement in open() and opendir() and error handling (SZABGAB) 0.10 Jul 5, 2009 - actually upload with Module::Install::Msgfmt this time. 0.09 Jul 5, 2009 - still require the newer version of Locale::Maketext::Gettext when running under CPAN Testers - use is_deeply instead of making a string out of the hash and then using is - add Module::Install::Msgfmt. just replace install_share with install_share_with_mofiles in your Makefile.PL. - add remove option to remove the source file(s) and all .pot files if a directory is being processed - add verbose option to print the files that were converted 0.08 Jun 27, 2009 - again remove the dependency on Locale::Maketext::Gettext, there is another problem with its installation 0.07 Jun 26, 2009 - make the interface a bit nicer - remove the msgfmt_dir function (msgfmt now handles this if the input file is a directory) - more tests - always build_require Locale::Maketext::Gettext, now it will install correctly - improved POD - switch the "sample" translation used for the tests to japanese instead of french, since the japanese includes copyright and license information 0.06 Jun 26, 2009 - add support for contexts - add support for ngettext 0.05 Jun 25, 2009 - don't run the external script from the tests 0.04 Jun 25, 2009 - if running from CPAN testers, require Locale::Maketext::Gettext too 0.03 Jun 24, 2009 - fix on perl 5.8 0.02 Jun 24, 2009 - add a msgfmt_dir function to convert all of the .po files in a directory 0.01 Jun 24, 2009 - First version, released on an unsuspecting world.