From 4d4715f441688aea1982b354eac2cabd69b38bca Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Thu, 28 Dec 2006 14:01:06 +0000 Subject: [PATCH] Locales mit eingebracht --- locale/de.UTF-8 | 1 + locale/de/LC_MESSAGES/sicher.mo | Bin 0 -> 542 bytes locale/de_DE.UTF-8 | 1 + po/Makefile | 12 ++ po/sicher.de.po | 51 ++++++++ sicher.pl | 200 ++++++++++++++++++++++++++++++-- 6 files changed, 253 insertions(+), 12 deletions(-) create mode 120000 locale/de.UTF-8 create mode 100644 locale/de/LC_MESSAGES/sicher.mo create mode 120000 locale/de_DE.UTF-8 create mode 100644 po/Makefile create mode 100644 po/sicher.de.po diff --git a/locale/de.UTF-8 b/locale/de.UTF-8 new file mode 120000 index 0000000..c42e816 --- /dev/null +++ b/locale/de.UTF-8 @@ -0,0 +1 @@ +de \ No newline at end of file diff --git a/locale/de/LC_MESSAGES/sicher.mo b/locale/de/LC_MESSAGES/sicher.mo new file mode 100644 index 0000000000000000000000000000000000000000..b505aae8913a9e4f3c06b48aae3501038a885ae9 GIT binary patch literal 542 zcmaKp%}(4v497!DTNJ4m4n1)gZbisxvI4Zqeh9I!71FM{g20&}G08x7Ch|B49;7#( ztc{Mp|89f*Atc7y}rlQ0uHyAi$!TKFs&;bkKT8u44g*AMIX zH}P^DhB!+8PMNZvS`s#DEq;L_w3Qfo^OmpPe+RT3rP z1vZWt=DsuqoU{_mT&jk*gw^ucGii2Ff#Y!TD}xE4W~m5W!Bq9)_z037^!h3}OyhVz zPU2V+;Q}8`r~Kc%nf44BY3pmzpj1s|{h&@d;eYkV;Y{1I)g?lPdYP)9t5(%eUbnj4 zNwGwrz+;&O`^dYNa=dd?Vq}rW;rx7l_CAm#io=Psj8>lT+(<8sPyC~)wXp-0SDHNX z=qj5+|2?l0yF-FAo4dl;GFAOs!{MTCN!KuSwDhU6&1&mMy@6UUN8hd59jRn*5dQtE Lyb20z*^7S#9sQUo literal 0 HcmV?d00001 diff --git a/locale/de_DE.UTF-8 b/locale/de_DE.UTF-8 new file mode 120000 index 0000000..c42e816 --- /dev/null +++ b/locale/de_DE.UTF-8 @@ -0,0 +1 @@ +de \ No newline at end of file diff --git a/po/Makefile b/po/Makefile new file mode 100644 index 0000000..b332fe9 --- /dev/null +++ b/po/Makefile @@ -0,0 +1,12 @@ +# Makefile zur Erstellung der kompilierten deutschen Sprachdatei + +# $Id$ +# $URL$ + + +all: Makefile sicher.de.po.time + +sicher.de.po.time: sicher.de.po + LC_ALL=de_DE.utf8 msgfmt -o ../locale/de/LC_MESSAGES/sicher.mo sicher.de.po + touch sicher.de.po.time + diff --git a/po/sicher.de.po b/po/sicher.de.po new file mode 100644 index 0000000..92d4d84 --- /dev/null +++ b/po/sicher.de.po @@ -0,0 +1,51 @@ +# Template-File for Translations +# Copyright (C) 2006 Frank Brehm +# This file is distributed under the same license as the test-gettext package. +# Frank Brehm , 2006. +# +# $Id$ +# $URL$ + +msgid "" +msgstr "" +"Project-Id-Version: Datei-Sicherungs-Script 1.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-12-28 15:00+0100\n" +"PO-Revision-Date: 2006-12-28 15:00+0100\n" +"Last-Translator: Frank Brehm \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +# #: test-gettext.pl:29 +# #, perl-format +# msgid "Current location of localisation files: '%s'\n" +# msgstr "Aktuelle Lage der Lokalisierungs-Dateien: '%s'\n" + +# #: test-gettext.pl:31 +# msgid "Welcome to my program." +# msgstr "Willkommen zu meinem Programm." + +# #: test-gettext.pl:33 +# #, perl-format +# msgid "Today: UNIX-Timestamp %d, local time: %s\n" +# msgstr "Lokale Uhrzeit: %2$s, Heute: UNIX-Timestamp %1$d\n" + +# #: test-gettext.pl:36 +# #, perl-format +# msgid "I've count one man\n" +# msgid_plural "I've count %d men\n" +# msgstr[0] "Ich habe einen Mann gezählt.\n" +# msgstr[1] "Ich habe %d Männer gezählt.\n" + +# Die Sprachbezeichnungen +msgid "german" +msgstr "deutsch" + +# Die Sprachbezeichnungen +msgid "english" +msgstr "englisch" + + diff --git a/sicher.pl b/sicher.pl index 5cd24e2..6268fef 100755 --- a/sicher.pl +++ b/sicher.pl @@ -13,7 +13,7 @@ Script zum rekursiven Erstellen von Sicherheitskopien von Dateien (mit Zeitstemp =head1 SYNOPSIS - sicher.pl [-c ] [-t] [-v[ -v...]] [-D ] [ [Datei2] usw.] + sicher.pl [-t] [-v[ -v...]] [-D ] [-o ] [ [Datei2] usw.] sicher.pl -h sicher.pl -V @@ -21,14 +21,6 @@ Script zum rekursiven Erstellen von Sicherheitskopien von Dateien (mit Zeitstemp =over 4 -=item B<--configfile I> - -=item B<--conf I> - -=item B<-c I> - Konfigurationsdatei - -Wenn nicht angegeben, wird C bzw., wenn vorhanden, die Datei C<$HOME/.sicher.conf> verwendet. - =item B<--verbose> =item B<-v> - Verbose-Level (Debug-Level) @@ -48,6 +40,16 @@ I: Die Parameter C<-v> und C<-D> wirken sich gleich aus. Wenn beide angegeben werden, wird der hoehere von beiden verwendet. +=item B<--olddir oldirname> + +=item B<--old oldirname> + +=item B<-o olddirname> + +Gibt den Namen des Verzeichnisses an, in dem Sicherheitskopien abgelegt werden. + +Wenn nicht angegeben, wird C<.old> verwendet. + =item B<--test> =item B<-t> - Testmodus @@ -70,6 +72,19 @@ Gibt die Versionsnummer dieses Programms aus und beendet sich. =back +=head1 ENVIRONMENT + +=over 4 + +=item B + +Gibt den Namen des Verzeichnisses an, in dem Sicherheitskopien abgelegt werden. Wird +von der Kommandozeilenoption C<-o> overruled. + +Wenn nicht angegeben, wird C<.old> verwendet. + +=back + =cut @@ -80,7 +95,11 @@ use warnings; use Data::Dumper; use Getopt::Long; use Pod::Usage; -use Time::HiRes qw( gettimeofday tv_interval ); +# use Time::HiRes qw( gettimeofday tv_interval ); +use File::Basename; +use File::Spec::Functions; +use Locale::gettext; +use POSIX qw(setlocale LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME); $| = 1; @@ -94,11 +113,11 @@ ENDE $Revis =~ s/^.*:\s*(\S+)\s*\$.*/$1/s; our $VERSION = "1." . $Revis; -my ( $cfgfile, $test_mode, $help, $cmdline_verbose, $show_version, $DebugLevel ); +my ( $olddir, $test_mode, $help, $cmdline_verbose, $show_version, $DebugLevel ); unless ( GetOptions( - "configfile|conf|c=s" => \$cfgfile, + "olddir|old|o=s" => \$olddir, "test|t" => \$test_mode, "help|h|?" => \$help, "verbose|v+" => \$cmdline_verbose, @@ -125,6 +144,163 @@ if ($show_version) { exit 0; } +$olddir ||= $ENV{'OLDDIR'} || '.old'; + +print "OldDir-Name: '" . $olddir . "'\n" if $verbose; +print "Test-Modus: " . ( $test_mode ? "ON" : "OFF" ) . "\n" if $verbose or $test_mode; +if ($verbose) { + print "Verbose-Level: " . $verbose . "\n"; +} + +print "\nInitialisiere Locales ....\n" if $verbose > 1; +my $l = Locale::gettext->domain_raw('sicher'); +unless ( $l ) { + die "Konnte Locale::gettext nicht initialisieren.\n"; +} +$l->codeset('utf-8'); + +my $locale_dir = catdir( dirname($0), "locale" ); +$l->dir($locale_dir); +_debug( 5, "Locale-Objekt: ", $l ); +_debug( 2, "Locale-Verzeichnis: ", $locale_dir ); + + +exit 0; + + +################################################################################################################# + +=head1 Funktionen + +die halt mal so begraucht werden... + +#--------------------------------------------------------------------------- + +=head2 _debug( $debug_level, @messages ) + +Logroutine fuer Debug-Logging ... + +=cut + +sub _debug { + + my $debug_level = shift; + + # Debug-Level richtig setzen + $debug_level = to_int($debug_level); + $debug_level = 1 unless defined $debug_level; + + return undef if $debug_level > $verbose; + + # Zuerst die Messages zurechtstutzen... + my @Out = (); + + for (@_) { + my $msg = defined $_ ? $_ : ""; + chomp $msg; + $msg = Dumper($msg) if ref($msg); + push @Out, $msg; + } + + my $out = join( " ", @Out ); + @Out = (); + + # Datum zu Meldung dazu ... + $out = "[" . localtime() . "] debug-" . $debug_level . ": " . $out . "\n"; + + # Ausgabe auf Stdout + print $out; + + return 1; + +} + +#--------------------------------------------------------------------------- + +=head2 _error( $error_level, @messages ) + +Fehler-Ausgabefunktion + +=cut + +sub _error { + + my $error_level = shift; + + # Zuerst die Messages zurechtstutzen... + my @Out = (); + + for (@_) { + my $msg = defined $_ ? $_ : ""; + chomp $msg; + $msg = Dumper($msg) if ref($msg); + push @Out, $msg; + } + + my $out = join( " ", @Out ); + @Out = (); + + $error_level = 'notice' unless defined $error_level; + if ( $error_level =~ /^\s*(emerg|alert|crit|err|warning|notice|info)\s*$/i ) { + $error_level = lc($1); + } + elsif ( $error_level =~ /^\s*error\s*$/i ) { + $error_level = 'err'; + } + elsif ( $error_level =~ /^\s*warn\s*$/i ) { + $error_level = 'warning'; + } + else { + $error_level = 'notice'; + } + + # Datum + Error-level zu Meldung dazu ... + $out = "[" . localtime() . "] " . $error_level . ": " . $out . "\n"; + warn $out; + + return 1; + +} + +#------------------------------------------------------------------------------------------ + +=head2 to_int( $wert, $signed ) + +Wandelt den uebergebenen Wert sicher in eine Integer-Zahl um. + +Dabei legt der optionale logische Parameter $signed fest, ob auch +vorzeichenbehaftete Werte zulaessig sind. + +Wenn keine gueltige Zahl uebergeben wird, wird undef zurueckgegeben. + +=cut + +sub to_int { + + my $val = shift; + my $signed = shift; + + return undef unless defined $val; + unless ( $val =~ /\d/ ) { + return undef; + } + + if ($signed) { + $val =~ /^[^\d-]*(?:(-)\s*)?(\d+)/; + $val = ( defined $1 ? $1 : '' ) . $2; + } + else { + $val =~ /^\D*(\d+)/; + $val = $1; + } + + return $val + 0; + +} ## end sub to_int + +#------------------------------------------------------------------------------ + +__END__ -- 2.39.5