* newsstat/* - Proper spacing in original text and translations - Use Number::Format - Improved commify() (unused) - Use println() - Organized imports
/trunk/tools/network/news/newsstat/newsstat.pl |
---|
1,6 → 1,7 |
#!/usr/bin/env perl |
use strict; |
use warnings; |
require 5.004; |
#use diagnostics; |
use utf8; |
12,23 → 13,67 |
binmode STDOUT, ':encoding(UTF-8)'; |
binmode STDERR, ':encoding(UTF-8)'; |
# FIXME: Automatically include resolved '.' in @INC |
## L10n |
use locale ':not_characters'; |
# setlocale( LC_MESSAGES, '' ); |
require Number::Format; |
## i18n |
## FIXME: Automatically include resolved '.' in @INC |
# print join "\n", @INC; |
use locale ':not_characters'; |
use Locale::TextDomain ('de.pointedears.newsstat'); |
use POSIX ('locale_h'); |
use POSIX ('locale_h'); |
use Locale::Messages qw (bind_textdomain_filter |
bind_textdomain_codeset |
turn_utf_8_on); |
#setlocale( LC_MESSAGES, '' ); |
bind_textdomain_filter 'de.pointedears.newsstat', \&turn_utf_8_on; |
bind_textdomain_codeset |
turn_utf_8_on); |
bind_textdomain_filter 'de.pointedears.newsstat', \&turn_utf_8_on; |
bind_textdomain_codeset 'de.pointedears.newsstat', 'utf-8'; |
require Mail::Message; |
require DateTime; |
require DateTime::Format::Mail; |
# See comments in previous example |
my ( $thousands_sep, $mon_thousands_sep, $grouping, $decimal_point ) = |
@{ localeconv() }{ 'thousands_sep', 'mon_thousands_sep', 'grouping', |
'decimal_point' }; |
# Apply defaults if values are missing |
$thousands_sep = $mon_thousands_sep unless $thousands_sep; |
$thousands_sep = ' ' unless $thousands_sep; |
# grouping and mon_grouping are packed lists |
# of small integers (characters) telling the |
# grouping (thousand_seps and mon_thousand_seps |
# being the group dividers) of numbers and |
# monetary quantities. The integers' meanings: |
# 255 means no more grouping, 0 means repeat |
# the previous grouping, 1-254 means use that |
# as the current grouping. Grouping goes from |
# right to left (low to high digits). In the |
# below we cheat slightly by never using anything |
# else than the first grouping (whatever that is). |
my @grouping; |
if ($grouping) |
{ |
@grouping = unpack( "C*", $grouping ); |
} |
else |
{ |
@grouping = (3); |
} |
## FIXME: Why don't the defaults work already? |
my $formatter = new Number::Format( |
-decimal_point => $decimal_point, |
-thousands_sep => $thousands_sep, |
# -grouping => $grouping[0] |
); |
###################### USER CONFIGURATIONS ############################ |
## The name of the group to do stats for |
538,61 → 583,76 |
sub display_results |
{ |
#################### DISPLAY RESULTS ##################### |
print "=" x 76, "\n"; |
println( "=" x 76 ); |
printf "%s\n", |
centred( |
__x( "Analysis of posts to {newsgroup}", newsgroup => $newsgroup_name ), |
76 ); |
print "=" x 76, "\n"; |
println( "=" x 76 ); |
printf "%s\n", |
centred( |
__ |
"(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\nGarry Knight et al.)", |
__( |
"(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\nGarry Knight et al.)" |
), |
76 |
); |
print "\n\n"; |
printf __"Total posts considered: %s over %d days" . "\n", |
commify($totalposts), |
$numdays; |
my $time_locale = setlocale(LC_TIME); |
printf __"Total posts considered: %s over %d days\n", |
$formatter->format_number($totalposts), |
$formatter->format_number($numdays); |
my $time_locale = setlocale(LC_TIME); |
my $earliest_datetime = DateTime->from_epoch( |
epoch => $earliest, |
locale => $time_locale, |
epoch => $earliest, |
locale => $time_locale, |
time_zone => 'UTC', |
); |
my $latest_datetime = DateTime->from_epoch( |
epoch => $latest, |
locale => $time_locale, |
epoch => $latest, |
locale => $time_locale, |
time_zone => 'UTC', |
); |
my $datetime_format = '%a, %Y-%m-%dT%H:%M:%S %Z'; |
printf __"Earliest article" . ": %s\n", $earliest_datetime->strftime($datetime_format); |
printf __"Latest article" . ": %s\n", $latest_datetime->strftime($datetime_format); |
printf __"Original articles: %s; replies" . ": %s\n", |
commify($origposts), |
commify($replies); |
printf __"Total size of posts: %s bytes (%s KiB) (%.2f MiB)" . "\n", |
commify($totsize), commify( int( $totsize / 1024 ) ), $totsize / 1048576; # |
printf __ |
"Average %s articles per day, %.2f MiB per day, %s bytes per article\n", |
commify( int( $totalposts / $numdays ) ), $totsize / $numdays / 1048576, |
commify( int( $totsize / $totalposts ) ); |
printf __"Earliest article: %s\n", |
$earliest_datetime->strftime($datetime_format); |
printf __"Latest article: %s\n", |
$latest_datetime->strftime($datetime_format); |
printf __"Original articles: %s; replies: %s\n", |
$formatter->format_number($origposts), |
$formatter->format_number($replies); |
printf __"Total size of posts: %s bytes (%s)" . "\n", |
$formatter->format_number($totsize), |
$formatter->format_bytes( $totsize, ( 'precision' => 1, 'mode' => 'iec' ) ); |
printf __"Average %s articles per day, %s per day, %s bytes per article\n", |
$formatter->format_number( int( $totalposts / $numdays ) ), |
$formatter->format_bytes( $totsize / $numdays, ( 'mode' => 'iec' ) ), |
$formatter->format_number( int( $totsize / $totalposts ) ); |
my $count = keys %data; |
printf __"Total headers: %s KiB; bodies: %s KiB\n", |
commify( int( $totheader / 1024 ) ), commify( int( $totbody / 1024 ) ); |
printf __"Total headers: %s; bodies: %s\n", |
$formatter->format_bytes( |
$totheader, ( 'precision' => 1, 'mode' => 'iec' ) |
), |
$formatter->format_bytes( $totbody, ( 'precision' => 1, 'mode' => 'iec' ) ); |
printf __ |
"Body text - quoted: %s KiB; original: %s KiB = %02.2f%%; sigs: %s KiB\n", |
commify( int( $totquoted / 1024 ) ), commify( int( $totorig / 1024 ) ), |
( $totorig * 100 ) / ( $totorig + $totquoted ), |
commify( int( $totsig / 1024 ) ); |
printf __"Total number of posters: %s, average %s bytes per poster\n", |
commify($count), commify( int( $totsize / $count ) ); #/ |
"Body text - quoted: %s; original: %s = %s%%; sigs: %s\n", |
$formatter->format_bytes( |
$totquoted, ( 'precision' => 1, 'mode' => 'iec' ) |
), |
$formatter->format_bytes( $totorig, ( 'precision' => 1, 'mode' => 'iec' ) ), |
$formatter->format_number( ( $totorig * 100 ) / ( $totorig + $totquoted ) ), |
$formatter->format_bytes( $totsig, ( 'precision' => 1, 'mode' => 'iec' ) ); |
printf __"Total number of posters: %s, average %s per poster\n", |
$formatter->format_number($count), |
$formatter->format_bytes( $totsize / $count, |
( 'precision' => 1, 'mode' => 'iec' ) ); |
$count = keys %threads; |
printf __"Total number of threads: %s, average %s bytes per thread\n", |
commify($count), commify( int( $totsize / $count ) ); #/ |
printf __"Total number of user agents: %d\n", scalar keys %agents; |
print "\n", "=" x 76, "\n"; |
printf __"Total number of threads: %s, average %s per thread\n", |
$formatter->format_number($count), |
$formatter->format_bytes( $totsize / $count, |
( 'precision' => 1, 'mode' => 'iec' ) ); |
printf __"Total number of user agents: %d\n", |
$formatter->format_number( scalar keys %agents ); |
print "\n", "=" x 76, "\n" ; |
######################################## |
## Show posters by article count Sec 1; |
######################################## |
608,7 → 668,9 |
} |
printf "%s\n", |
centred( |
__x( "Top {count} posters by number of articles", count => $topposters ), 76 ); |
__x( "Top {count} posters by number of articles", count => $topposters ), |
76 |
); |
print "=" x 76, "\n"; |
my $i = 0; |
foreach |
638,7 → 700,8 |
printf "%s\n", |
centred( |
__x( "Top {count} posters by article size in KiB", count => $topposters ), |
76 ); |
76 |
); |
print "=" x 76, "\n"; |
my $i = 0; |
foreach |
742,7 → 805,8 |
$count = $topthreads; |
} |
printf "%s\n", |
centred( __x( "Top {count} threads by no. of articles", count => $topthreads ), |
centred( |
__x( "Top {count} threads by no. of articles", count => $topthreads ), |
76 ); |
print "=" x 76, "\n"; |
my $i = 0; |
773,8 → 837,8 |
$count = $topthreads; |
} |
printf "%s\n", |
centred( __x( "Top {count} threads by size in KiB", count => $topthreads ), |
76 ); |
centred( |
__x( "Top {count} threads by size in KiB", count => $topthreads ), 76 ); |
print "=" x 76, "\n"; |
my $i = 0; |
foreach my $thread ( |
805,7 → 869,8 |
$count = $topcrossposts; |
} |
printf "%s\n", |
centred( __x( "Top {count} cross-posted groups", count => $topcrossposts ), 76 ); |
centred( |
__x( "Top {count} cross-posted groups", count => $topcrossposts ), 76 ); |
print "=" x 76, "\n"; |
my $i = 0; |
foreach |
861,7 → 926,8 |
printf "%s\n", |
centred( |
__x( "Top {count} user agents by number of posts", count => $topagents ), |
76 ); |
76 |
); |
print "=" x 76, "\n"; |
my $i = 0; |
foreach my $agent ( |
890,7 → 956,8 |
{ |
$count = $toptz; |
} |
printf "%s\n", centred( __x("Top {count} time zones", count => $toptz), 76 ); |
printf "%s\n", |
centred( __x( "Top {count} time zones", count => $toptz ), 76 ); |
print "=" x 76, "\n"; |
my $i = 0; |
foreach my $zone ( sort { $tz{$b} <=> $tz{$a} } keys %tz ) |
937,37 → 1004,20 |
########################### |
## Put commas into a number |
########################### |
# Get some of locale's numeric formatting parameters |
my ($thousands_sep, $grouping) = |
@{localeconv()}{'thousands_sep', 'grouping'}; |
# Apply defaults if values are missing |
$thousands_sep = ',' unless $thousands_sep; |
# grouping and mon_grouping are packed lists |
# of small integers (characters) telling the |
# grouping (thousand_seps and mon_thousand_seps |
# being the group dividers) of numbers and |
# monetary quantities. The integers' meanings: |
# 255 means no more grouping, 0 means repeat |
# the previous grouping, 1-254 means use that |
# as the current grouping. Grouping goes from |
# right to left (low to high digits). In the |
# below we cheat slightly by never using anything |
# else than the first grouping (whatever that is). |
my @grouping; |
if ($grouping) { |
@grouping = unpack("C*", $grouping); |
} else { |
@grouping = (3); |
} |
sub commify |
{ |
local $_ = shift; |
#1 while s/^([-+]?\d+)(\d{3})/$1,$2/; |
$_ = int; # Chop non-integer part |
my $number = $_; |
$_ = int; # Chop non-integer part |
1 while |
s/(\d)(\d{$grouping[0]}($|$thousands_sep))/$1$thousands_sep$2/; |
return $_; |
s/([-+]?\d)(\d{$grouping[0]}($|\Q$thousands_sep\E))/$1$thousands_sep$2/; |
my $int_part = $_; |
my $real_part = ''; |
if ( $number =~ /(\Q$decimal_point\E\d+)$/ ) |
{ |
$real_part = $1; |
} |
return $int_part . $real_part; |
} |
################################################################ |
984,7 → 1034,7 |
sub usage |
{ |
print __"usage: newsstat.pl NEWS.GROUP\n"; |
println( __ "usage: newsstat.pl NEWS.GROUP" ); |
exit 1; |
} |
998,3 → 1048,8 |
my ( $level, @msg ) = @_; |
print STDERR @msg, "\n" if $level >= DEBUG; |
} |
sub println |
{ |
print @_, "\n"; |
} |
/trunk/tools/network/news/newsstat/po/de.po |
---|
3,13 → 3,12 |
# This file is distributed under the same license as the newsstat package. |
# Thomas 'PointedEars' Lahn <startrek@PointedEars.de>, 2012. |
# |
#, fuzzy |
msgid "" |
msgstr "" |
"Project-Id-Version: newsstat r22\n" |
"Project-Id-Version: newsstat r23\n" |
"Report-Msgid-Bugs-To: Thomas 'PointedEars' Lahn <startrek@PointedEars.de>\n" |
"POT-Creation-Date: 2012-06-03 222:46+0200\n" |
"PO-Revision-Date: 2012-06-03 22:46+0200\n" |
"POT-Creation-Date: 2012-07-07 04:56+0200\n" |
"PO-Revision-Date: 2012-06-07 04:57+0200\n" |
"Last-Translator: Thomas 'PointedEars' Lahn <startrek@PointedEars.de>\n" |
"Language-Team: German <startrek@PointedEars.de>\n" |
"Language: de\n" |
17,143 → 16,149 |
"Content-Type: text/plain; charset=UTF-8\n" |
"Content-Transfer-Encoding: 8bit\n" |
#: ../newsstat.pl:142 |
#: ../newsstat.pl:187 |
#, perl-brace-format |
msgid "Can't cd to {newsgroup}: {error}\n" |
msgstr "" |
#: ../newsstat.pl:148 |
#: ../newsstat.pl:193 |
#, perl-brace-format |
msgid "Can't open {newsgroup}: {error}\n" |
msgstr "" |
#: ../newsstat.pl:180 |
#: ../newsstat.pl:225 |
#, perl-brace-format |
msgid "Can't open {file}: {error}\n" |
msgstr "" |
#: ../newsstat.pl:235 ../newsstat.pl:354 |
#: ../newsstat.pl:280 |
#: ../newsstat.pl:399 |
msgid "unknown" |
msgstr "unbekannt" |
#: ../newsstat.pl:489 |
#: ../newsstat.pl:534 |
#, perl-brace-format |
msgid "Can't create XDATA: {error}\n" |
msgstr "" |
#: ../newsstat.pl:544 |
#: ../newsstat.pl:589 |
#, perl-brace-format |
msgid "Analysis of posts to {newsgroup}" |
msgstr "Analyse der Artikel in {newsgroup}" |
#: ../newsstat.pl:550 |
msgid "(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\nGarry Knight et al.)" |
msgstr "(erstellt mit einem Skript von Thomas 'PointedEars' Lahn, basierend auf\nder Arbeit von Garry Knight und anderen)" |
#: ../newsstat.pl:595 |
msgid "" |
"(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\n" |
"Garry Knight et al.)" |
msgstr "(erstellt mit einem Skript von Thomas 'PointedEars' Lahn, basierend auf\n" |
"der Arbeit von Garry Knight und anderen)" |
#: ../newsstat.pl:554 |
#: ../newsstat.pl:600 |
#, perl-format |
msgid "Total posts considered: %s over %d days\n" |
msgstr "Berücksichtigte Postings: %s über %d Tage\n" |
#: ../newsstat.pl:557 |
#: ../newsstat.pl:615 |
#, perl-format |
msgid "Earliest article: %s\n" |
msgstr "Ältester Artikel: %s\n" |
#: ../newsstat.pl:558 |
#: ../newsstat.pl:617 |
#, perl-format |
msgid "Latest article: %s\n" |
msgstr "Neuester Artikel: %s\n" |
#: ../newsstat.pl:559 |
#: ../newsstat.pl:619 |
#, perl-format |
msgid "Original articles: %s; replies: %s\n" |
msgstr "Originalartikel: %s; Antworten: %s\n" |
#: ../newsstat.pl:562 |
#: ../newsstat.pl:622 |
#, perl-format |
msgid "Total size of posts: %s bytes (%s KiB) (%.2f MiB)\n" |
msgstr "Postings insgesamt: %s Bytes (%s KiB) (%.2f MiB)\n" |
msgid "Total size of posts: %s bytes (%s)\n" |
msgstr "Postings insgesamt: %s Bytes (%s)\n" |
#: ../newsstat.pl:565 |
#: ../newsstat.pl:625 |
#, perl-format |
msgid "Average %s articles per day, %.2f MiB per day, %s bytes per article\n" |
msgstr "Durchschnittlich %s Artikel je Tag, %.2f MiB je Tag, %s Bytes je Artikel\n" |
msgid "Average %s articles per day, %s per day, %s bytes per article\n" |
msgstr "Durchschnittlich %s Artikel je Tag, %s je Tag, %s Bytes je Artikel\n" |
#: ../newsstat.pl:569 |
#: ../newsstat.pl:631 |
#, perl-format |
msgid "Total headers: %s KiB; bodies: %s KiB\n" |
msgstr "Header insgesamt: %s KiB; Bodys: %s KiB\n" |
msgid "Total headers: %s; bodies: %s\n" |
msgstr "Header insgesamt: %s; Bodys: %s\n" |
#: ../newsstat.pl:572 |
#: ../newsstat.pl:637 |
#, perl-format |
msgid "Body text - quoted: %s KiB; original: %s KiB = %02.2f%%; sigs: %s KiB\n" |
msgstr "Body-Text - zitiert: %s KiB; original: %s KiB = %02.2f%%; sigs: %s KiB\n" |
msgid "Body text - quoted: %s; original: %s = %s%%; sigs: %s\n" |
msgstr "Body-Text - zitiert: %s; original: %s = %s%%; sigs: %s\n" |
#: ../newsstat.pl:576 |
#: ../newsstat.pl:644 |
#, perl-format |
msgid "Total number of posters: %s, average %s bytes per poster\n" |
msgstr "Poster insgesamt: %s, durchschnittlich %s Bytes je Poster\n" |
msgid "Total number of posters: %s, average %s per poster\n" |
msgstr "Poster insgesamt: %s, durchschnittlich %s je Poster\n" |
#: ../newsstat.pl:579 |
#: ../newsstat.pl:649 |
#, perl-format |
msgid "Total number of threads: %s, average %s bytes per thread\n" |
msgstr "Threads insgesamt: %s, durchschnittlich %s Bytes je Thread\n" |
msgid "Total number of threads: %s, average %s per thread\n" |
msgstr "Threads insgesamt: %s, durchschnittlich %s je Thread\n" |
#: ../newsstat.pl:581 |
#: ../newsstat.pl:653 |
#, perl-format |
msgid "Total number of user agents: %d\n" |
msgstr "Benutzerprogramme insgesamt: %d\n" |
#: ../newsstat.pl:599 |
#: ../newsstat.pl:671 |
#, perl-brace-format |
msgid "Top {count} posters by number of articles" |
msgstr "{count} häufigste Poster nach Anzahl der Artikel" |
#: ../newsstat.pl:628 |
#: ../newsstat.pl:702 |
#, perl-brace-format |
msgid "Top {count} posters by article size in KiB" |
msgstr "{count} häufigste Poster nach Artikelgrösse in KiB" |
#: ../newsstat.pl:659 |
#: ../newsstat.pl:734 |
#, perl-brace-format |
msgid "Top {count} responders by original text (> 5 posts)" |
msgstr "{count} häufigste Antwortende nach Originaltext (> 5 Postings)" |
#: ../newsstat.pl:697 |
#: ../newsstat.pl:772 |
#, perl-brace-format |
msgid "Bottom {count} responders by original text (> 5 posts)" |
msgstr "{count} seltenste Antwortende nach Originaltext (> 5 Postings)" |
#: ../newsstat.pl:733 |
#: ../newsstat.pl:809 |
#, perl-brace-format |
msgid "Top {count} threads by no. of articles" |
msgstr "Top {count} der Threads nach Anzahl der Artikel" |
#: ../newsstat.pl:764 |
#: ../newsstat.pl:841 |
#, perl-brace-format |
msgid "Top {count} threads by size in KiB" |
msgstr "Top {count} der Threads nach Grösse in KiB" |
#: ../newsstat.pl:796 |
#: ../newsstat.pl:873 |
#, perl-brace-format |
msgid "Top {count} cross-posted groups" |
msgstr "{count} häufigste Gruppen, in die gecrosspostet wurde" |
#: ../newsstat.pl:823 |
#: ../newsstat.pl:900 |
#, perl-brace-format |
msgid "Top {count} user agents by poster" |
msgstr "{count} häufigste Benutzerprogramme je Poster" |
#: ../newsstat.pl:851 |
#: ../newsstat.pl:928 |
#, perl-brace-format |
msgid "Top {count} user agents by number of posts" |
msgstr "{count} häufigste Benutzerprogramme nach der Anzahl Postings" |
#: ../newsstat.pl:881 |
#: ../newsstat.pl:960 |
#, perl-brace-format |
msgid "Top {count} time zones" |
msgstr "{count} häufigste Zeitzonen" |
#: ../newsstat.pl:949 |
msgid "usage: newsstat.pl NEWS.GROUP\n" |
#: ../newsstat.pl:1037 |
msgid "usage: newsstat.pl NEWS.GROUP" |
msgstr "" |
/trunk/tools/network/news/newsstat/po/de.pointedears.newsstat.pot |
---|
1,159 → 1,162 |
# newsstat LANGUAGE language file |
# Copyright (C) 2012 Thomas 'PointedEars' Lahn |
# This file is distributed under the same license as the newsstat package. |
# Thomas 'PointedEars' Lahn <startrek@PointedEars.de>, 2012. |
# SOME DESCRIPTIVE TITLE. |
# Copyright (C) YEAR Thomas 'PointedEars' Lahn |
# This file is distributed under the same license as the PACKAGE package. |
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
# |
#, fuzzy |
msgid "" |
msgstr "" |
"Project-Id-Version: newsstat r22\n" |
"Project-Id-Version: PACKAGE VERSION\n" |
"Report-Msgid-Bugs-To: Thomas 'PointedEars' Lahn <startrek@PointedEars.de>\n" |
"POT-Creation-Date: 2012-06-03 22:46+0200\n" |
"POT-Creation-Date: 2012-07-07 04:56+0200\n" |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
"Language-Team: LANGUAGE <LL@li.org>\n" |
"Language: LANGUAGE\n" |
"Language: \n" |
"MIME-Version: 1.0\n" |
"Content-Type: text/plain; charset=CHARSET\n" |
"Content-Transfer-Encoding: 8bit\n" |
#: ../newsstat.pl:142 |
#: ../newsstat.pl:187 |
#, perl-brace-format |
msgid "Can't cd to {newsgroup}: {error}\n" |
msgstr "" |
#: ../newsstat.pl:148 |
#: ../newsstat.pl:193 |
#, perl-brace-format |
msgid "Can't open {newsgroup}: {error}\n" |
msgstr "" |
#: ../newsstat.pl:180 |
#: ../newsstat.pl:225 |
#, perl-brace-format |
msgid "Can't open {file}: {error}\n" |
msgstr "" |
#: ../newsstat.pl:235 ../newsstat.pl:354 |
#: ../newsstat.pl:280 ../newsstat.pl:399 |
msgid "unknown" |
msgstr "" |
#: ../newsstat.pl:489 |
#: ../newsstat.pl:534 |
#, perl-brace-format |
msgid "Can't create XDATA: {error}\n" |
msgstr "" |
#: ../newsstat.pl:544 |
#: ../newsstat.pl:589 |
#, perl-brace-format |
msgid "Analysis of posts to {newsgroup}" |
msgstr "" |
#: ../newsstat.pl:550 |
msgid "(compiled with a script by Thomas 'PointedEars' Lahn, based on work by Garry Knight et al.)" |
#: ../newsstat.pl:595 |
msgid "" |
"(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\n" |
"Garry Knight et al.)" |
msgstr "" |
#: ../newsstat.pl:554 |
#: ../newsstat.pl:600 |
#, perl-format |
msgid "Total posts considered: %s over %d days\n" |
msgstr "" |
#: ../newsstat.pl:557 |
#: ../newsstat.pl:615 |
#, perl-format |
msgid "Earliest article: %s\n" |
msgstr "" |
#: ../newsstat.pl:558 |
#: ../newsstat.pl:617 |
#, perl-format |
msgid "Latest article: %s\n" |
msgstr "" |
#: ../newsstat.pl:559 |
#: ../newsstat.pl:619 |
#, perl-format |
msgid "Original articles: %s, replies: %s\n" |
msgid "Original articles: %s; replies: %s\n" |
msgstr "" |
#: ../newsstat.pl:562 |
#: ../newsstat.pl:622 |
#, perl-format |
msgid "Total size of posts: %s bytes (%s KiB) (%.2f MiB)\n" |
msgid "Total size of posts: %s bytes (%s)\n" |
msgstr "" |
#: ../newsstat.pl:565 |
#: ../newsstat.pl:625 |
#, perl-format |
msgid "Average %s articles per day, %.2f MiB per day, %s bytes per article\n" |
msgid "Average %s articles per day, %s per day, %s bytes per article\n" |
msgstr "" |
#: ../newsstat.pl:569 |
#: ../newsstat.pl:631 |
#, perl-format |
msgid "Total headers: %s KiB bodies: %s KiB\n" |
msgid "Total headers: %s; bodies: %s\n" |
msgstr "" |
#: ../newsstat.pl:572 |
#: ../newsstat.pl:637 |
#, perl-format |
msgid "Body text - quoted: %s KiB, original: %s KiB = %02.2f%%, sigs: %s KiB\n" |
msgid "Body text - quoted: %s; original: %s = %s%%; sigs: %s\n" |
msgstr "" |
#: ../newsstat.pl:576 |
#: ../newsstat.pl:644 |
#, perl-format |
msgid "Total number of posters: %s, average %s bytes per poster\n" |
msgid "Total number of posters: %s, average %s per poster\n" |
msgstr "" |
#: ../newsstat.pl:579 |
#: ../newsstat.pl:649 |
#, perl-format |
msgid "Total number of threads: %s, average %s bytes per thread\n" |
msgid "Total number of threads: %s, average %s per thread\n" |
msgstr "" |
#: ../newsstat.pl:581 |
#: ../newsstat.pl:653 |
#, perl-format |
msgid "Total number of user agents: %d\n" |
msgstr "" |
#: ../newsstat.pl:599 |
#: ../newsstat.pl:671 |
#, perl-brace-format |
msgid "Top {count} posters by number of articles" |
msgstr "" |
#: ../newsstat.pl:628 |
#: ../newsstat.pl:702 |
#, perl-brace-format |
msgid "Top {count} posters by article size in KiB" |
msgstr "" |
#: ../newsstat.pl:659 |
#: ../newsstat.pl:734 |
#, perl-brace-format |
msgid "Top {count} responders by original text (> 5 posts)" |
msgstr "" |
#: ../newsstat.pl:697 |
#: ../newsstat.pl:772 |
#, perl-brace-format |
msgid "Bottom {count} responders by original text (> 5 posts)" |
msgstr "" |
#: ../newsstat.pl:733 |
#: ../newsstat.pl:809 |
#, perl-brace-format |
msgid "Top {count} threads by no. of articles" |
msgstr "" |
#: ../newsstat.pl:764 |
#: ../newsstat.pl:841 |
#, perl-brace-format |
msgid "Top {count} threads by size in KiB" |
msgstr "" |
#: ../newsstat.pl:796 |
#: ../newsstat.pl:873 |
#, perl-brace-format |
msgid "Top {count} cross-posted groups" |
msgstr "" |
#: ../newsstat.pl:823 |
#: ../newsstat.pl:900 |
#, perl-brace-format |
msgid "Top {count} user agents by poster" |
msgstr "" |
#: ../newsstat.pl:851 |
#: ../newsstat.pl:928 |
#, perl-brace-format |
msgid "Top {count} user agents by number of posts" |
msgstr "" |
#: ../newsstat.pl:881 |
#: ../newsstat.pl:960 |
#, perl-brace-format |
msgid "Top {count} time zones" |
msgstr "" |
#: ../newsstat.pl:949 |
msgid "usage: newsstat.pl NEWS.GROUP\n" |
#: ../newsstat.pl:1037 |
msgid "usage: newsstat.pl NEWS.GROUP" |
msgstr "" |