Re: Persian page fail to build
On Sat, Apr 21, 2007 at 12:13:42AM +0200, Jens Seidel wrote:
> after adding the Persian translation of the website I found the
> following error in the log file:
>
> wml -q -D CUR_YEAR=2007 -o UNDEFuFA:index.fa.html@g+w index.wml
> ePerl:Error: Perl parsing error (interpreter rc=2)
>
> ---- Contents of STDERR channel: ---------
> syntax error at /tmp/wml.SDs4aI/wml.3124.tmp1.wml line 382, near "{}"
> Execution of /tmp/wml.SDs4aI/wml.3124.tmp1.wml aborted due to
> compilation errors.
> ------------------------------------------
> ** WML:Break: Error in Pass 3 (rc=1).
> make[1]: *** [index.fa.html] Error 1
> make[1]: Leaving directory `/org/www.debian.org/webwml/persian'
> make: *** [persian-install] Error 2
>
> I cannot reproduce it since it works for me. I have also no access to
> /tmp/wml.SDs4aI/wml.3124.tmp1.wml so I really do not know how to fix
> this. Any ideas?
Here's the file.
--
Matt
<:# line 0 "/tmp/ipp.ngr3CM/ipp.27999.tmp":>
<:# line 0 "/usr/share/wml/include/sys/bootp3.wml":>
<:
BEGIN {
unshift @INC, qw(
/usr/lib/wml/perl/lib
/usr/lib/wml/perl/lib/i386-linux-thread-multi
);
$^W = 0;
}
:><:# line 1 "/tmp/ipp.ngr3CM/ipp.27999.tmp":>
<:# line 0 "/usr/share/wml/include/sys/bootp4.wml":>
m4_changequote()m4_changequote(`,')m4_dnl
m4_define(`m4_noquotes', `m4_changequote()')m4_dnl
m4_define(`m4_quotes', `m4_changequote`'')m4_dnl
m4_noquotes()m4_dnl
m4_changecom()m4_dnl
<:# line 2 "/tmp/ipp.ngr3CM/ipp.27999.tmp":>
<:# line 0 "index.wml":>
<:# line 0 "../english/template/debian/mainpage.wml":>
<:# line 0 "../english/template/debian/common_translation.wml":>
<:# line 0 "../english/template/debian/common_tags.wml":>
<:# line 1 "../english/template/debian/common_translation.wml":>
<:# line 17 "../english/template/debian/mainpage.wml":>
<:# line 0 "../english/template/debian/basic.wml":>
<:# line 0 "/usr/share/wml/include/std/tags.wml":>
<:# line 0 "/usr/share/wml/include/mod/version.wml":>
<:# line 7 "/usr/share/wml/include/std/tags.wml":>
<:# line 1 "../english/template/debian/basic.wml":>
<:# line 0 "/usr/share/wml/include/std/box.wml":>
<:# line 7 "/usr/share/wml/include/std/box.wml":>
<:# line 0 "/usr/share/wml/include/des/space.wml":>
<:# line 0 "/usr/share/wml/include/des/imgdot.wml":>
<:# line 8 "/usr/share/wml/include/des/imgdot.wml":>
<:# line 11 "/usr/share/wml/include/des/imgdot.wml":>
<:# line 0 "/usr/share/wml/include/sup/hextriple.wml":>
<:
sub triple2rgb {
my ($triple) = @_;
my ($r, $g, $b);
$triple =~ s|^#||;
$triple =~ tr|A-F|a-f|;
$triple =~ m|([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])|;
($r, $g, $b) = (hex($1), hex($2), hex($3));
return ($r, $g, $b);
}
sub rgb2triple {
my ($r, $g, $b) = @_;
my ($triple);
$triple = sprintf("%02x%02x%02x", $r, $g, $b);
return $triple;
}
:>
<:# line 12 "/usr/share/wml/include/des/imgdot.wml":>
<:
use WML::GD;
sub imgdot {
my ($base, $x, $y, $c, $r, $g, $b, $transp, $format) = @_;
my ($file, $im, $col, $data);
local (*FP);
if ($base ne '' && $base !~ m|/$|) {
if (-d $base) {
$base .= '/';
}
else {
$base .= '.';
}
}
if ($main::DEBUG) {
$c = 'DEBUG';
($r, $g, $b) = (255, 64, 64);
$transp = 0;
}
$file = "${base}imgdot-${x}x${y}-$c.$format";
if (not -f $file) {
$im = new WML::GD::Image($x, $y);
$col = $im->colorAllocate($r, $g, $b);
$im->transparent($col) if $transp;
eval "\$data = \$im->$format";
if ($@) {
warn "Error: wml::des::imgdot: " . $@;
}
else {
open(FP, ">$file");
print FP $data;
close(FP);
}
}
return $file;
}
:>
<:# line 6 "/usr/share/wml/include/des/space.wml":>
<:# line 10 "/usr/share/wml/include/std/box.wml":>
<:# line 2 "../english/template/debian/basic.wml":>
<:# line 4 "../english/template/debian/basic.wml":>
<:# line 5 "../english/template/debian/basic.wml":>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang=""[FA: dir="RTL":]>
{:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=" >
<title>Debian -- {: [[s/<q>/"/g]] [[s/<\/q>/"/g]] سیستم عامل جهانی :}</title>
<link rev="made" href="mailto:webmaster@debian.org" >
<link rel="shortcut icon" href="favicon.ico" >
<meta name="Keywords" content="debian, GNU, linux, unix, open source, free, DFSG" >
<meta name="Description" content="Debian GNU/Linux is a free distribution of the GNU/Linux operating system. It is maintained and updated through the work of many users who volunteer their time and effort." >
<meta name="Generator" content="WML 2.0.8 (30-Oct-2001)" >
<meta name="Modified" content="2007-04-21 04:35:55" >
{#rss#}
{#style#}
{#style#:<link href="/debian.css" rel="stylesheet" type="text/css" >
<link href="/debian-.css" rel="stylesheet" type="text/css" media="all">
:#style#}
</head>
<body>
<:# line 0 "../english/template/debian/navbar.wml":>
<:# line 1 "../english/template/debian/navbar.wml":>
<:# line 0 "../english/template/debian/mirrors.wml":>
<:# line 0 "../english/template/debian/countries.wml":>
<:# line 1 "../english/template/debian/countries.wml":>
<:
$_ = <<'EOT';
United Arab Emirates
EOT
s/^\s+//s;
s/\s+$//s;
$countries{AE}{} = $_;
:>
<:
$_ = <<'EOT';
Albania
EOT
s/^\s+//s;
s/\s+$//s;
$countries{AL}{} = $_;
:>
<:
$_ = <<'EOT';
Armenia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{AM}{} = $_;
:>
<:
$_ = <<'EOT';
Argentina
EOT
s/^\s+//s;
s/\s+$//s;
$countries{AR}{} = $_;
:>
<:
$_ = <<'EOT';
Austria
EOT
s/^\s+//s;
s/\s+$//s;
$countries{AT}{} = $_;
:>
<:
$_ = <<'EOT';
Australia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{AU}{} = $_;
:>
<:
$_ = <<'EOT';
Bosnia and Herzegovina
EOT
s/^\s+//s;
s/\s+$//s;
$countries{BA}{} = $_;
:>
<:
$_ = <<'EOT';
Bangladesh
EOT
s/^\s+//s;
s/\s+$//s;
$countries{BD}{} = $_;
:>
<:
$_ = <<'EOT';
Belgium
EOT
s/^\s+//s;
s/\s+$//s;
$countries{BE}{} = $_;
:>
<:
$_ = <<'EOT';
Bulgaria
EOT
s/^\s+//s;
s/\s+$//s;
$countries{BG}{} = $_;
:>
<:
$_ = <<'EOT';
Brazil
EOT
s/^\s+//s;
s/\s+$//s;
$countries{BR}{} = $_;
:>
<:
$_ = <<'EOT';
Bahamas
EOT
s/^\s+//s;
s/\s+$//s;
$countries{BS}{} = $_;
:>
<:
$_ = <<'EOT';
Belarus
EOT
s/^\s+//s;
s/\s+$//s;
$countries{BY}{} = $_;
:>
<:
$_ = <<'EOT';
Canada
EOT
s/^\s+//s;
s/\s+$//s;
$countries{CA}{} = $_;
:>
<:
$_ = <<'EOT';
Switzerland
EOT
s/^\s+//s;
s/\s+$//s;
$countries{CH}{} = $_;
:>
<:
$_ = <<'EOT';
Chile
EOT
s/^\s+//s;
s/\s+$//s;
$countries{CL}{} = $_;
:>
<:
$_ = <<'EOT';
China
EOT
s/^\s+//s;
s/\s+$//s;
$countries{CN}{} = $_;
:>
<:
$_ = <<'EOT';
Colombia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{CO}{} = $_;
:>
<:
$_ = <<'EOT';
Costa Rica
EOT
s/^\s+//s;
s/\s+$//s;
$countries{CR}{} = $_;
:>
<:
$_ = <<'EOT';
Czech Republic
EOT
s/^\s+//s;
s/\s+$//s;
$countries{CZ}{} = $_;
:>
<:
$_ = <<'EOT';
Germany
EOT
s/^\s+//s;
s/\s+$//s;
$countries{DE}{} = $_;
:>
<:
$_ = <<'EOT';
Denmark
EOT
s/^\s+//s;
s/\s+$//s;
$countries{DK}{} = $_;
:>
<:
$_ = <<'EOT';
Dominican Republic
EOT
s/^\s+//s;
s/\s+$//s;
$countries{DO}{} = $_;
:>
<:
$_ = <<'EOT';
Ecuador
EOT
s/^\s+//s;
s/\s+$//s;
$countries{EC}{} = $_;
:>
<:
$_ = <<'EOT';
Estonia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{EE}{} = $_;
:>
<:
$_ = <<'EOT';
Egypt
EOT
s/^\s+//s;
s/\s+$//s;
$countries{EG}{} = $_;
:>
<:
$_ = <<'EOT';
Spain
EOT
s/^\s+//s;
s/\s+$//s;
$countries{ES}{} = $_;
:>
<:
$_ = <<'EOT';
Ethiopia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{ET}{} = $_;
:>
<:
$_ = <<'EOT';
Finland
EOT
s/^\s+//s;
s/\s+$//s;
$countries{FI}{} = $_;
:>
<:
$_ = <<'EOT';
Faroe Islands
EOT
s/^\s+//s;
s/\s+$//s;
$countries{FO}{} = $_;
:>
<:
$_ = <<'EOT';
France
EOT
s/^\s+//s;
s/\s+$//s;
$countries{FR}{} = $_;
:>
<:
$_ = <<'EOT';
Great Britain
EOT
s/^\s+//s;
s/\s+$//s;
$countries{GB}{} = $_;
:>
<:
$_ = <<'EOT';
Grenada
EOT
s/^\s+//s;
s/\s+$//s;
$countries{GD}{} = $_;
:>
<:
$_ = <<'EOT';
Greenland
EOT
s/^\s+//s;
s/\s+$//s;
$countries{GL}{} = $_;
:>
<:
$_ = <<'EOT';
Greece
EOT
s/^\s+//s;
s/\s+$//s;
$countries{GR}{} = $_;
:>
<:
$_ = <<'EOT';
Guatemala
EOT
s/^\s+//s;
s/\s+$//s;
$countries{GT}{} = $_;
:>
<:
$_ = <<'EOT';
Hong Kong
EOT
s/^\s+//s;
s/\s+$//s;
$countries{HK}{} = $_;
:>
<:
$_ = <<'EOT';
Honduras
EOT
s/^\s+//s;
s/\s+$//s;
$countries{HN}{} = $_;
:>
<:
$_ = <<'EOT';
Croatia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{HR}{} = $_;
:>
<:
$_ = <<'EOT';
Hungary
EOT
s/^\s+//s;
s/\s+$//s;
$countries{HU}{} = $_;
:>
<:
$_ = <<'EOT';
Indonesia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{ID}{} = $_;
:>
<:
$_ = <<'EOT';
Ireland
EOT
s/^\s+//s;
s/\s+$//s;
$countries{IE}{} = $_;
:>
<:
$_ = <<'EOT';
Israel
EOT
s/^\s+//s;
s/\s+$//s;
$countries{IL}{} = $_;
:>
<:
$_ = <<'EOT';
India
EOT
s/^\s+//s;
s/\s+$//s;
$countries{IN}{} = $_;
:>
<:
$_ = <<'EOT';
Iceland
EOT
s/^\s+//s;
s/\s+$//s;
$countries{IS}{} = $_;
:>
<:
$_ = <<'EOT';
Italy
EOT
s/^\s+//s;
s/\s+$//s;
$countries{IT}{} = $_;
:>
<:
$_ = <<'EOT';
Jordan
EOT
s/^\s+//s;
s/\s+$//s;
$countries{JO}{} = $_;
:>
<:
$_ = <<'EOT';
Japan
EOT
s/^\s+//s;
s/\s+$//s;
$countries{JP}{} = $_;
:>
<:
$_ = <<'EOT';
Kenya
EOT
s/^\s+//s;
s/\s+$//s;
$countries{KE}{} = $_;
:>
<:
$_ = <<'EOT';
Korea
EOT
s/^\s+//s;
s/\s+$//s;
$countries{KR}{} = $_;
:>
<:
$_ = <<'EOT';
Kuwait
EOT
s/^\s+//s;
s/\s+$//s;
$countries{KW}{} = $_;
:>
<:
$_ = <<'EOT';
Sri Lanka
EOT
s/^\s+//s;
s/\s+$//s;
$countries{LK}{} = $_;
:>
<:
$_ = <<'EOT';
Lithuania
EOT
s/^\s+//s;
s/\s+$//s;
$countries{LT}{} = $_;
:>
<:
$_ = <<'EOT';
Luxembourg
EOT
s/^\s+//s;
s/\s+$//s;
$countries{LU}{} = $_;
:>
<:
$_ = <<'EOT';
Latvia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{LV}{} = $_;
:>
<:
$_ = <<'EOT';
Morocco
EOT
s/^\s+//s;
s/\s+$//s;
$countries{MA}{} = $_;
:>
<:
$_ = <<'EOT';
Mexico
EOT
s/^\s+//s;
s/\s+$//s;
$countries{MX}{} = $_;
:>
<:
$_ = <<'EOT';
Malaysia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{MY}{} = $_;
:>
<:
$_ = <<'EOT';
Nicaragua
EOT
s/^\s+//s;
s/\s+$//s;
$countries{NI}{} = $_;
:>
<:
$_ = <<'EOT';
Netherlands
EOT
s/^\s+//s;
s/\s+$//s;
$countries{NL}{} = $_;
:>
<:
$_ = <<'EOT';
Norway
EOT
s/^\s+//s;
s/\s+$//s;
$countries{NO}{} = $_;
:>
<:
$_ = <<'EOT';
New Zealand
EOT
s/^\s+//s;
s/\s+$//s;
$countries{NZ}{} = $_;
:>
<:
$_ = <<'EOT';
Panama
EOT
s/^\s+//s;
s/\s+$//s;
$countries{PA}{} = $_;
:>
<:
$_ = <<'EOT';
Peru
EOT
s/^\s+//s;
s/\s+$//s;
$countries{PE}{} = $_;
:>
<:
$_ = <<'EOT';
Philippines
EOT
s/^\s+//s;
s/\s+$//s;
$countries{PH}{} = $_;
:>
<:
$_ = <<'EOT';
Pakistan
EOT
s/^\s+//s;
s/\s+$//s;
$countries{PK}{} = $_;
:>
<:
$_ = <<'EOT';
Poland
EOT
s/^\s+//s;
s/\s+$//s;
$countries{PL}{} = $_;
:>
<:
$_ = <<'EOT';
Portugal
EOT
s/^\s+//s;
s/\s+$//s;
$countries{PT}{} = $_;
:>
<:
$_ = <<'EOT';
Romania
EOT
s/^\s+//s;
s/\s+$//s;
$countries{RO}{} = $_;
:>
<:
$_ = <<'EOT';
Russia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{RU}{} = $_;
:>
<:
$_ = <<'EOT';
Saudi Arabia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{SA}{} = $_;
:>
<:
$_ = <<'EOT';
Sweden
EOT
s/^\s+//s;
s/\s+$//s;
$countries{SE}{} = $_;
:>
<:
$_ = <<'EOT';
Singapore
EOT
s/^\s+//s;
s/\s+$//s;
$countries{SG}{} = $_;
:>
<:
$_ = <<'EOT';
Slovenia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{SI}{} = $_;
:>
<:
$_ = <<'EOT';
Slovakia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{SK}{} = $_;
:>
<:
$_ = <<'EOT';
El Salvador
EOT
s/^\s+//s;
s/\s+$//s;
$countries{SV}{} = $_;
:>
<:
$_ = <<'EOT';
Thailand
EOT
s/^\s+//s;
s/\s+$//s;
$countries{TH}{} = $_;
:>
<:
$_ = <<'EOT';
Tunisia
EOT
s/^\s+//s;
s/\s+$//s;
$countries{TN}{} = $_;
:>
<:
$_ = <<'EOT';
Turkey
EOT
s/^\s+//s;
s/\s+$//s;
$countries{TR}{} = $_;
:>
<:
$_ = <<'EOT';
Taiwan
EOT
s/^\s+//s;
s/\s+$//s;
$countries{TW}{} = $_;
:>
<:
$_ = <<'EOT';
Ukraine
EOT
s/^\s+//s;
s/\s+$//s;
$countries{UA}{} = $_;
:>
<:
$_ = <<'EOT';
United Kingdom
EOT
s/^\s+//s;
s/\s+$//s;
$countries{UK}{} = $_;
:>
<:
$_ = <<'EOT';
United States
EOT
s/^\s+//s;
s/\s+$//s;
$countries{US}{} = $_;
:>
<:
$_ = <<'EOT';
Uruguay
EOT
s/^\s+//s;
s/\s+$//s;
$countries{UY}{} = $_;
:>
<:
$_ = <<'EOT';
Venezuela
EOT
s/^\s+//s;
s/\s+$//s;
$countries{VE}{} = $_;
:>
<:
$_ = <<'EOT';
Vietnam
EOT
s/^\s+//s;
s/\s+$//s;
$countries{VN}{} = $_;
:>
<:
$_ = <<'EOT';
Serbia and Montenegro
EOT
s/^\s+//s;
s/\s+$//s;
$countries{YU}{} = $_;
:>
<:
$_ = <<'EOT';
South Africa
EOT
s/^\s+//s;
s/\s+$//s;
$countries{ZA}{} = $_;
:>
<:
if ('' ne '') {
open(GEN, "> countries.def");
print GEN "# File generated automatically. Do not edit!\n";
close(GEN);
}
:>
<:# line 1 "../english/template/debian/mirrors.wml":>
<:# line 0 "../english/template/debian/languages.wml":>
<:# line 1 "../english/template/debian/languages.wml":>
<:# line 0 "/usr/share/wml/include/sup/path.wml":>
<:
sub relpath {
my ($from, $to) = @_;
my (@F, @T, $i, $j, $path);
$from .= '/' if ($from !~ m|/$|);
$to .= '/' if ($to !~ m|/$|);
$from = '' if ($from eq './');
$to = '' if ($to eq './');
$path = '';
@F = split('/', $from);
@T = split('/', $to);
for ($i = 0; $i <= $#F; $i++) {
last if ($F[$i] ne $T[$i]);
}
for ($j = $i; $j <= $#F; $j++) {
$path .= '../';
}
for ($j = $i; $j <= $#T; $j++) {
$path .= "$T[$j]/";
}
return $path;
}
sub canonpath {
my ($path) = @_;
$pathL = '';
while ($path ne $pathL) {
$pathL = $path;
$path =~ s|/+|/|g;
$path =~ s|/\./|/|g;
$path =~ s|/\.$|/|;
$path =~ s|^\./||;
$path =~ s{(^|/)(\.\.)$}{$1$2/};
$path =~ s{(^|/)([^/]+)(/\.\.)(?=/)}{$2 ne '..' ? $1.'./' : $1.$2.$3}eg;
}
$path = './' if $path eq '';
return $path;
}
sub canonurl {
my ($url) = @_;
if ($url =~ m|^(.+?://)(.+)|) {
$url = $1.&canonpath($2);
}
else {
$url = &canonpath($url);
}
return $url;
}
:>
<:# line 2 "../english/template/debian/languages.wml":>
<:# line 3 "../english/template/debian/languages.wml":>
<:# line 0 "../english/template/debian/language_names.wml":>
<:# line 1 "../english/template/debian/language_names.wml":>
<:# line 2 "../english/template/debian/language_names.wml":>
<:
my %ctrans = (
arabic => q+Arabic+,
armenian => q+Armenian+,
finnish => q+Finnish+,
croatian => q+Croatian+,
danish => q+Danish+,
dutch => q+Dutch+,
english => q+English+,
french => q+French+,
german => q+German+,
italian => q+Italian+,
japanese => q+Japanese+,
korean => q+Korean+,
spanish => q+Spanish+,
portuguese => q+Portuguese+,
portuguese_br => q+Portuguese (Brazilian)+,
chinese => q+Chinese+,
chinese_cn => q+Chinese (China)+,
chinese_hk => q+Chinese (Hong Kong)+,
chinese_tw => q+Chinese (Taiwan)+,
chinese_big5 => q+Chinese (Traditional)+,
chinese_gb => q+Chinese (Simplified)+,
swedish => q+Swedish+,
polish => q+Polish+,
norwegian => q+Norwegian+,
turkish => q+Turkish+,
russian => q+Russian+,
czech => q+Czech+,
esperanto => q+Esperanto+,
hungarian => q+Hungarian+,
romanian => q+Romanian+,
slovak => q+Slovak+,
greek => q+Greek+,
catalan => q+Catalan+,
indonesian => q+Indonesian+,
lithuanian => q+Lithuanian+,
slovene => q+Slovene+,
bulgarian => q+Bulgarian+,
afrikaans => q+Afrikaans+,
albanian => q+Albanian+,
amharic => q+Amharic+,
azerbaijani => q+Azerbaijani+,
basque => q+Basque+,
belarusian => q+Belarusian+,
bengali => q+Bengali+,
bosnian => q+Bosnian+,
breton => q+Breton+,
cornish => q+Cornish+,
estonian => q+Estonian+,
faeroese => q+Faeroese+,
'gaelic (scots)'=> q+Gaelic (Scots)+,
gallegan => q+Galician+,
georgian => q+Georgian+,
hebrew => q+Hebrew+,
hindi => q+Hindi+,
icelandic => q+Icelandic+,
interlingua => q+Interlingua+,
irish => q+Irish+,
kalaallisut => q+Kalaallisut+,
kannada => q+Kannada+,
kurdish => q+Kurdish+,
latvian => q+Latvian+,
macedonian => q+Macedonian+,
malay => q+Malay+,
malayalam => q+Malayalam+,
maltese => q+Maltese+,
manx => q+Manx+,
maori => q+Maori+,
mongolian => q+Mongolian+,
"norwegian bokm\xe5l"
=> q+Norwegian Bokmål+,
"norwegian nynorsk"
=> q+Norwegian Nynorsk+,
'occitan (post 1500)'=> q+Occitan (post 1500)+,
persian => q+Persian+,
serbian => q+Serbian+,
slovenian => q+Slovenian+,
tajik => q+Tajik+,
tamil => q+Tamil+,
thai => q+Thai+,
tonga => q+Tonga+,
twi => q+Twi+,
ukrainian => q+Ukrainian+,
vietnamese => q+Vietnamese+,
welsh => q+Welsh+,
xhosa => q+Xhosa+,
yiddish => q+Yiddish+,
zulu => q+Zulu+,
);
foreach (keys %ctrans) {
$trans{$CUR_ISO_LANG}{$_} = $ctrans{$_};
}
if ('' ne '') {
open(GEN, "> language_names.def");
print GEN "# File generated automatically. Do not edit!\n";
print GEN "<"."set-var _webwml_langs_=\"\" />\n";
}
:>
<:# line 4 "../english/template/debian/languages.wml":>
<:
${perl_var1} = '';
my %langs = (
english => "en",
arabic => "ar",
bulgarian => "bg",
catalan => "ca",
czech => "cs",
danish => "da",
german => "de",
greek => "el",
esperanto => "eo",
spanish => "es",
finnish => "fi",
french => "fr",
croatian => "hr",
hungarian => "hu",
armenian => "hy",
indonesian => "id",
italian => "it",
japanese => "ja",
korean => "ko",
lithuanian => "lt",
dutch => "nl",
norwegian => "no",
polish => "pl",
portuguese => "pt",
romanian => "ro",
russian => "ru",
slovak => "sk",
swedish => "sv",
slovene => "sl",
turkish => "tr",
ukrainian => "uk",
chinese => "zh",
);
my %selflang = (
arabic => 'عربية',
armenian => 'Հայերեն',
bulgarian => 'Български',
catalan => 'català',
chinese => '中文',
chinese_cn => '簡體中文',
chinese_hk => '正體中文',
chinese_tw => '正體中文',
croatian => 'hrvatski',
czech => 'česky',
danish => 'dansk',
dutch => 'Nederlands',
english => 'English',
esperanto => 'Esperanto',
finnish => 'suomi',
french => 'français',
german => 'Deutsch',
greek => 'Ελληνικά',
hungarian => 'magyar',
indonesian => 'Indonesia',
italian => 'Italiano',
japanese => '日本語',
korean => '한국어',
lithuanian => 'Lietuvių',
norwegian => 'norsk (bokmål)',
polish => 'polski',
portuguese => 'Português',
portuguese_br => 'Português',
romanian => 'română',
russian => 'Русский',
slovak => 'slovensky',
spanish => 'español',
swedish => 'svenska',
slovene => 'slovenščina',
turkish => 'Türkçe',
ukrainian => 'українська',
);
my %translit = (
arabic => "Arabiya",
armenian => "hayeren",
bulgarian=> "Bəlgarski",
chinese => "Zhongzu", # Not printed due to Chinese-specific code; kept for sort order
chinese_cn => "Simplified Chinese",
chinese_hk => "Traditional Chinese",
chinese_tw => "Traditional Chinese",
greek => "Ellinika",
japanese => "Nihongo",
korean => "Hangul", # Not sure. "Hanguk-Mal" (=Spoken Korean)?
russian => "Russkij",
ukrainian => "ukrajins'ka",
);
my %translit2 = (
czech => "cesky",
);
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:>
<:
${perl_var1} = '';
sub langcmp {
my ($first, $second) = ($a, $b);
$first = $translit{$sorted_langs{$a}} if defined $translit{$sorted_langs{$a}};
$second = $translit{$sorted_langs{$b}} if defined $translit{$sorted_langs{$b}};
$first = $translit2{$sorted_langs{$a}} if defined $translit2{$sorted_langs{$a}};
$second = $translit2{$sorted_langs{$b}} if defined $translit2{$sorted_langs{$b}};
if (substr($first,0,1) eq '&')
{
$first =~ s/^&/ZZZ&/;
}
if (substr($second,0,1) eq '&')
{
$second =~ s/^&/ZZZ&/;
}
my ($ufirst, $usecond) = (uc($first), uc($second));
return $ufirst cmp $usecond;
}
sub languages {
my $str = "";
$base_url = "";
$file = "index";
$cur_lang = "";
$cwd = $WML_SRC_DIRNAME;
$full_base_url = &canonpath("$cwd/$base_url");
$rel_dir = &relpath($full_base_url, $cwd);
$rel_dir =~ s,/$,,;
foreach(keys %langs) {
if ( -f "$base_url/../$_/$rel_dir/$file.wml" ) {
if ($_ ne lc($cur_lang) or $cur_lang eq "Chinese") {
push @used_langs, $_;
}
}
}
if ($rel_dir eq "" && $file eq "sitemap") { # special case for the site map
$str .= "<!--UdmComment-->\n";
$str .= "<p>\n";
$str .= q{This page is also available in the following languages:}."</p>\n";
$str .= "<p class=\"navpara\">\n";
foreach (keys %langs) {
if ($_ ne lc($cur_lang) or $cur_lang eq "Chinese") {
$sorted_langs{$selflang{$_}} = $_;
}
}
foreach (sort langcmp keys %sorted_langs) {
$cur_lang = $sorted_langs{$_};
$tooltip = $trans{$CUR_ISO_LANG}{$cur_lang};
if ($cur_lang ne "chinese") {
$str .= " <a href=\"$file.$langs{$cur_lang}.html\" title=\"$tooltip\" hreflang=\"$langs{$cur_lang}\" lang=\"$langs{$cur_lang}\" rel=\"alternate\">$_";
$str .= " ($translit{$cur_lang})" if defined $translit{$cur_lang};
$str .= "</a>\n";
} else {
$str .= " <a href=\"$file.$langs{$cur_lang}-cn.html\" title=\"$tooltip (China)\" hreflang=\"$langs{$cur_lang}-CN\" lang=\"$langs{$cur_lang}-CN\" rel=\"alternate\">$_(简)</a>\n";
$str .= " <a href=\"$file.$langs{$cur_lang}-hk.html\" title=\"$tooltip (Hong Kong)\" hreflang=\"$langs{$cur_lang}-HK\" lang=\"$langs{$cur_lang}-HK\" rel=\"alternate\">$_(HK)</a>\n";
$str .= " <a href=\"$file.$langs{$cur_lang}-tw.html\" title=\"$tooltip (Taiwan)\" hreflang=\"$langs{$cur_lang}-TW\" lang=\"$langs{$cur_lang}-TW\" rel=\"alternate\">$_(繁)</a>\n";
}
}
$str .= "</p>\n";
$str .= "<!--/UdmComment-->\n";
}
elsif (@used_langs) {
$str .= "<!--UdmComment-->\n";
$str .= "<p>\n";
$str .= q{This page is also available in the following languages:}."\n";
$str .= "</p><p class=\"navpara\">\n";
foreach (@used_langs) {
$sorted_langs{$selflang{$_}} = $_;
}
foreach (sort langcmp keys %sorted_langs) {
$cur_lang = $sorted_langs{$_};
$tooltip = $trans{$CUR_ISO_LANG}{$cur_lang};
if ($cur_lang ne "chinese") {
$str .= " <a href=\"$file.$langs{$cur_lang}.html\" title=\"$tooltip\" hreflang=\"$langs{$cur_lang}\" lang=\"$langs{$cur_lang}\" rel=\"alternate\">$_";
$str .= " ($translit{$cur_lang})" if defined $translit{$cur_lang};
$str .= "</a>\n";
} else {
$str .= " <a href=\"$file.$langs{$cur_lang}-cn.html\" title=\"$tooltip (China)\" hreflang=\"$langs{$cur_lang}-CN\" lang=\"$langs{$cur_lang}-CN\" rel=\"alternate\">$_(简)</a>\n";
$str .= " <a href=\"$file.$langs{$cur_lang}-hk.html\" title=\"$tooltip (Hong Kong)\" hreflang=\"$langs{$cur_lang}-HK\" lang=\"$langs{$cur_lang}-HK\" rel=\"alternate\">$_(HK)</a>\n";
$str .= " <a href=\"$file.$langs{$cur_lang}-tw.html\" title=\"$tooltip (Taiwan)\" hreflang=\"$langs{$cur_lang}-TW\" lang=\"$langs{$cur_lang}-TW\" rel=\"alternate\">$_(繁)</a>\n";
}
}
$str .= "\n</p><p>\n";
$str .= q{How to set <a href=m4_HOME/intro/cn>the default document language</a>};
$str .= "\n</p>\n<!--/UdmComment-->\n";
}
return $str;
}
sub languages_footer {
if (my $lang_str = languages()) {
$lang_str .= '<hr>';
}
}
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:>
<:# line 2 "../english/template/debian/mirrors.wml":>
<:# line 3 "../english/template/debian/mirrors.wml":>
<:# line 4 "../english/template/debian/mirrors.wml":>
<:# line 5 "../english/template/debian/mirrors.wml":>
<:# line 2 "../english/template/debian/navbar.wml":>
<div id="header">
<div id="upperheader">
<div id="logo">
<a href="/"><img src="/logos/openlogo-nd-50.png" width="50" height="61" alt="" ></a>
<a href="/" rel="start"><img src="/debian.png" width="179" height="61" alt="Debian Project" ></a>
</div> <!-- end logo -->
<div id="serverselect">
<!--UdmComment-->
<form method="get" action="http://cgi.debian.org/cgi-bin/redirect.pl">
<p>
<:
${perl_var1} = '';
my $rootdir = &canonpath('/org/www.debian.org/webwml/persian/');
my $curdir = &relpath($rootdir, '/org/www.debian.org/webwml/persian');
my $file = "/".$curdir."/".'index';
(my $path = &canonpath($file)) =~ s/index$//;
print "<input type=\"hidden\" name=\"page\" value=\"$path\" >\n";
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:>
Select a server near you
<br>
<select name="site">
<:
${perl_var1} = '';
my %mirrors = (
"Austria" => "at",
"Australia" => "au",
"Bulgaria" => "bg",
"Brazil" => "br",
"China" => "cn",
"Germany" => "de",
"Spain" => "es",
"France" => "fr",
"Hong Kong" => "hk",
"Indonesia" => "id",
"Japan" => "jp",
"Netherlands" => "nl",
"Russia" => "ru",
"Ukraine" => "ua",
"United Kingdom" => "uk",
"United States" => "us",
"South Africa" => "za",
);
foreach my $m (sort langcmp keys %mirrors) {
my $s = " selected" if $mirrors{$m} eq "us";
$s .= "=\"selected\"" if ($mirrors{$m} eq "us" && "" eq "xhtml");
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
${perl_var1} .= <<"EPERL_EOT";
<option value=\"$mirrors{$m}\"$s>$m</option>\n
EPERL_EOT
${perl_var1} =~ s/\n$//s;
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
}
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:></select>
<input type="submit" value=" Go " >
</p>
</form>
<!--/UdmComment-->
</div> <!-- end serverselect -->
</div> <!-- end upperheader -->
<!--UdmComment-->
<div id="navbar">
<p class="hidecss"><a href="#inner">Skip Quicknav</a></p>
<ul>
<li><a href="/about">About Debian</a></li>
<li><a href="/News/">News</a></li>
<li><a href="/">Getting Debian</a></li>
<li><a href="/support">Support</a></li>
<li><a href="/devel/">Developers' Corner</a></li>
<li><a href="/sitemap">Site map</a></li>
<li><a href="http://search.debian.org/">Search</a></li>
</ul>
</div> <!-- end navbar -->
</div> <!-- end header -->
<!--/UdmComment-->
<:# line 37 "../english/template/debian/basic.wml":>
{#alternate_navbar#}
<div id="outer">
<div id="inner">
{#body#}
<div class="clr"></div>
</div> <!-- end inner -->
<div id="footer">
{#pre_footer#}
<:# line 0 "../english/template/debian/footer.wml":>
<:# line 0 "../english/template/debian/ctime.wml":>
<:# line 1 "../english/template/debian/ctime.wml":>
<:# line 2 "../english/template/debian/ctime.wml":>
<:
${perl_var1} = '';
use Time::Local;
@dow = (
'Sun',
'Mon',
'Tue',
'Wed',
'Thu',
'Fri',
'Sat'
);
@moy = (
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec'
);
@longmoy = (
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
);
$dateform = 'q{[%]s, [%]s [%]2d [%]02d:[%]02d:[%]02d [%]s [%]04d}, $wday, $mon, $mday, $hour, $min, $sec, q{UTC}, 1900+$year';
$dateform =~ s/\[%\]/%/g;
$newsdateform = 'q{[%]02d [%]s [%]04d}, $mday, $mon_str, $year';
$newsdateform =~ s/\[%\]/%/g;
$spokendateform = 'q{[%]02d [%]s [%]d}, $mday, $mon_str, $year';
$spokendateform =~ s/\[%\]/%/g;
$spokendateform_noyear = 'q{[%]d [%]s}, $mday, $mon_str';
$spokendateform_noyear =~ s/\[%\]/%/g;
$rangeform_samemonth = 'q{[%]d-[%]d [%]s}, $sday, $eday, $smon_str';
$rangeform_samemonth =~ s/\[%\]/%/g;
$rangeform_severalmonths = 'q{[%]d [%]s-[%]d [%]s}, $sday, $smon_str, $eday, $emon_str';
$rangeform_severalmonths =~ s/\[%\]/%/g;
sub webwml_ctime {
my ($time, $sec, $min, $hour, $mday, $monnr, $year, $wday, $yday, $isdst, $mon);
if (defined ) {
$WML_GEN_ISOTIME =~ /(\d+)-(..)-(\d+) (..):(..):(..)/;
if ($1 <= 31) { # for WML 1.x
$time = timelocal($6, $5, $4, $1, $2-1, $3);
} else { # for WML 2.x
$time = timelocal($6, $5, $4, $3, $2-1, $1);
}
}
else {
$WML_SRC_ISOTIME =~ /(\d+)-(..)-(\d+) (..):(..):(..)/;
if ($1 <= 31) { # for WML 1.x
$time = timelocal($6, $5, $4, $1, $2-1, $3);
} else { # for WML 2.x
$time = timelocal($6, $5, $4, $3, $2-1, $1);
}
}
($sec, $min, $hour, $mday, $monnr, $year, $wday, $yday, $isdst) = gmtime($time);
$wday = $dow[$wday];
$mon = $moy[$monnr];
return eval("sprintf($dateform)");
}
sub rdf_ctime {
$WML_GEN_ISOTIME =~ /(\d+)-(..)-(\d+) (..):(..):(..)/;
if ($1 <= 31) { # for WML 1.x
$time = timelocal($6, $5, $4, $1, $2-1, $3);
} else { # for WML 2.x
$time = timelocal($6, $5, $4, $3, $2-1, $1);
}
my ($sec, $min, $hour, $mday, $monnr, $year, $wday, $yday, $isdst) = gmtime($time);
$year += 1900;
$monnr += 1;
return sprintf( "%04d-%02d-%02dT%02d:%02d:%02d+00:00", $year, $monnr, $mday, $hour, $min, $sec );
}
sub newsdate {
my ($year, $mon, $mday) = split /-/, $_[0];
return $_[0] unless $mday;
return $_[0] if ($year < 1900);
$mon_str = $moy[$mon - 1];
return eval("sprintf($newsdateform)");
}
sub englishsuffix {
my $mday = shift;
return 'st' if $mday % 10 == 1 && $mday != 11;
return 'nd' if $mday % 10 == 2 && $mday != 12;
return 'rd' if $mday % 10 == 3 && $mday != 13;
return 'th';
}
sub contractcatalan {
my $str = shift;
$str =~ s/\bde ([a�����$1/g;
return $str;
}
sub spokendate {
my ($year, $mon, $mday) = split /-/, $_[0];
my $appday;
return $_[0] unless $mday;
return $_[0] if ($year < 1900);
$mon_str = $longmoy[$mon - 1];
if ($CUR_ISO_LANG eq "en")
{
return sprintf("%s %d%s, %d", $mon_str, $mday, &englishsuffix($mday), $year);
}
elsif ($CUR_ISO_LANG eq "ca")
{
my $date = sprintf("%d de %s de %d", $mday, $mon_str, $year);
return &contractcatalan($date);
}
else
{
return eval("sprintf($spokendateform)");
}
}
sub spokendate_noyear {
my (undef, $mon, $mday) = split /-/, $_[0];
my $appday;
$mon_str = $longmoy[$mon - 1];
if ($CUR_ISO_LANG eq "en")
{
return sprintf("%s %d%s", $mon_str, $mday, &englishsuffix($mday));
}
elsif ($CUR_ISO_LANG eq "ca")
{
my $date = sprintf("%d de %s", $mday, $mon_str);
return &contractcatalan($date);
}
else
{
return eval("sprintf($spokendateform_noyear)");
}
}
sub daterange {
my (undef, $smon, $sday) = split /-/, $_[0]; # Start date
my (undef, $emon, $eday) = split /-/, $_[1]; # End date
my $samemonth = $smon == $emon;
if ($samemonth && $sday == $eday)
{
return spokendate_noyear($_[0]); # Single day
}
$smon_str = $longmoy[$smon - 1];
$emon_str = $longmoy[$emon - 1];
if ($CUR_ISO_LANG eq "en")
{
return sprintf("%s %d%s - %d%s", $smon_str,
$sday, &englishsuffix($sday),
$eday, &englishsuffix($eday))
if $samemonth;
return sprintf("%s %d%s - %s %d%s", $smon_str,
$sday, &englishsuffix($sday), $emon_str,
$eday, &englishsuffix($eday))
}
elsif ($CUR_ISO_LANG eq "ca")
{
my $str;
$str = sprintf("%d-%d de %s", $sday, $eday, $smon_str)
if $samemonth;
$str = sprintf("%d de %s-%d de %s", $sday, $smon_str, $eday, $emon_str)
if !$samemonth;
return &contractcatalan($str);
}
else
{
return $samemonth ?
eval("sprintf($rangeform_samemonth)") :
eval("sprintf($rangeform_severalmonths)");
}
}
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:>
<:# line 1 "../english/template/debian/footer.wml":>
<:# line 2 "../english/template/debian/footer.wml":>
<div id="fineprint">
<p>To report a problem with the web site, e-mail <a href="mailto:debian-www@lists.debian.org">debian-www@lists.debian.org</a>. For other contact information, see the Debian <a href="m4_HOME/contact">contact page</a>.</p>
<p>
Last Modified: <:= webwml_ctime () :>
<br>
Copyright © <:
${perl_var1} = '';
$file = $WML_SRC_DIRNAME."/".$WML_SRC_FILENAME;if ($file =~ m,/(\d{4})/,) {$first = $1;} else {$first = "1997";}if (defined ) {$timevar = $WML_GEN_ISOTIME;} else {$timevar = $WML_SRC_ISOTIME;}$timevar =~ /^(\d+)-(..)-(\d+)/;if ($1 <= 31) { # for WML 1.x
$second = $3;
} else { # for WML 2.x
$second = $1;
}
if ($first eq $second) {
print $first;
} else {
print $first."-".$second;
}
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:>
<a href="http://www.spi-inc.org/">SPI</a>; See <a href="m4_HOME/license" rel="copyright">license terms</a><br>
Debian is a registered trademark of Software in the Public Interest, Inc.
</p>
</div>
<:# line 46 "../english/template/debian/basic.wml":>
{#post_footer#}
</div> <!-- end footer -->
</div> <!-- end outer -->
</body>
:}
</html>
{#body#:
<:# line 18 "../english/template/debian/mainpage.wml":>
<:# line 0 "../english/template/debian/links.tags.wml":>
<:# line 1 "../english/template/debian/links.tags.wml":>
<:# line 19 "../english/template/debian/mainpage.wml":>
<:# line 20 "../english/template/debian/mainpage.wml":>
<div id="leftcol">
<!--UdmComment-->
<ul>
<li><a href="/about">About</a>
<ul>
<li><a href="/social_contract">Social Contract</a></li>
<li><a href="/intro/free">Free Software</a></li>
<li><a href="/partners/">Partners</a></li>
<li><a href="/donations">Donations</a></li>
<li><a href="/contact">Contact Us</a></li>
</ul>
</li>
<li><a href="/News/">News</a>
<ul>
<li><a href="/News/weekly/">Weekly News</a></li>
<li><a href="/events/">Events</a></li>
</ul>
</li>
<li><a href="/">Getting Debian</a>
<ul>
<li><a href="CD/vendors/">CD vendors</a></li>
<li><a href="CD/">CD ISO images</a></li>
<li><a href="/netinst">Network install</a></li>
<li><a href="/pre-installed">Pre-installed</a></li>
</ul>
</li>
<li><a href="/packages">Debian Packages</a></li>
<li><a href="/">Documentation</a>
<ul>
<li><a href="/releases/">Release Info</a></li>
<li><a href="/releases/stable/installmanual">Installation manual</a></li>
<li><a href="/books">Debian Books</a></li>
</ul>
</li>
<li><a href="/support">Support</a>
<ul>
<li><a href="/international/">Debian International</a></li>
<li><a href="/security/">Security Information</a></li>
<li><a href="/">Bug reports</a></li>
<li><a href="MailingLists/">Mailing Lists</a></li>
<li><a href="http://lists.debian.org/">Mailing List Archives</a></li>
<li><a href="/ports/">Ports/Architectures</a></li>
</ul>
</li>
<li><a href="/">Miscellaneous</a></li>
<li><a href="/intro/help">Help Debian</a></li>
<li><a href="/devel/">Developers' Corner</a></li>
<li><a href="/sitemap">Site map</a></li>
<li><a href="http://search.debian.org/">Search</a></li>
</ul>
<form method="get" action="http://search.debian.org/">
<p>
<input type="text" name="q" size="12" >
</p>
</form>
<p>
<a href="/sponsor.html"><img src="sponsor_img.jpg" alt="Visit the site sponsor" width="102" height="60" ></a>
</p>
<p>
<a href="http://validator.w3.org/check/referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" width="88" height="31" ></a>
</p>
<p>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img src="http://jigsaw.w3.org/css-validator/images/vcss"
alt="Valid CSS!" width="88" height="31" >
</a>
</p>
<!--/UdmComment-->
</div> <!-- end leftcol -->
<div id="maincol">
{#check_trans#}
{#mainbody#}
</div> <!-- end maincol -->
{#pre_footer#:
<hr class ="hidecss" >
<:= languages_footer() :>
<!--UdmComment-->
:#pre_footer#}
{#post_footer#:
<!--/UdmComment-->
:#post_footer#}
{#mainbody#:
<:# line 1 "index.wml":>
<:# line 0 "../english/template/debian/recent_list.wml":>
<:# line 1 "../english/template/debian/recent_list.wml":>
<:# line 2 "../english/template/debian/recent_list.wml":>
<:# line 0 "../english/template/debian/legal_tags.wml":>
<:# line 1 "../english/template/debian/legal_tags.wml":>
<:# line 2 "../english/template/debian/legal_tags.wml":>
<:# line 3 "../english/template/debian/recent_list.wml":>
<:# line 0 "../english/template/debian/openrecode.wml":>
<:
sub openrecode {
local *FILE;
my $path;
if ($CUR_ISO_LANG eq 'ja')
{
while ($path = shift) {
if (-e $path) {
open(FILE,"/usr/bin/kcc -e $path |");
return *FILE;
}
}
return undef;
}
while ($path = shift) {
if (-e $path) {
open(FILE,"< $path");
return *FILE;
}
}
return undef;
}
:>
<:# line 4 "../english/template/debian/recent_list.wml":>
<:
${perl_var1} = '';
my ($listhead, $listfoot, $elemhead, $elemdate, $elemfoot, $elememptyfoot, $elemrealfoot);
my $is_events = 0;
my $is_by_date = 0;
sub get_recent_list {
$is_events = 0;
$is_by_date = 0;
my ($time, $minnum, $eng_dir, $format, $match) = @_;
my $rel_path = ($time =~ s|^(?:\./)?([[:alpha:]]+)/?||) ? $1 : '';
$rel_path .= '/' unless $rel_path eq '';
my $open_by_path = 0;
my ($year, $since_year, $since_date);
unless (($time eq '.')
|| (($time =~ /\d{4}/) && !$minnum)) {
$year = $time;
$since_year = $year;
$since_date = timegm(0, 0, 0, 1, 0, $year) if $year =~ /\d+/;
if ($format =~ /bydate/) {
$year = 2007 unless $year =~ /\d{4}/;
$since_date = parse_time($time);
$since_year = (gmtime($since_date))[5] + 1900;
if ($since_year > $year) {
warn "since_year > year ($since_year > $year)\n";
}
$is_by_date = 1;
}
warn "don't know, what to do: year=$year time=$time\n"
unless $since_date =~ /\d+/;
} else { $open_by_path = 1; }
if ($format =~ order) {
$listhead = '<ol>';
$listfoot = '</ol>';
$elemhead = '<li>';
$elemfoot = '- ';
$elememptyfoot = '</li>';
$elemrealfoot = '</li>';
} elsif ($format =~ bullet) {
$listhead = '<ul>';
$listfoot = '</ul>';
$elemhead = '<li>';
$elemfoot = '- ';
$elememptyfoot = '</li>';
$elemrealfoot = '</li>';
} elsif ($format =~ list) {
$listhead = '<dl>';
$listhead = '<dl compact>' if $format eq "cdeflist";
$listfoot = '</dl>';
$elemhead = '<dt>';
$elemfoot = '</dt><dd>';
$elememptyfoot = '</dt>';
$elemrealfoot = '</dd>';
} elsif ($format =~ table) {
$listhead = '<table>';
$listfoot = '</table>';
$elemhead = '<tr><td>';
$elemdate = '</td><td>';
$elemfoot = '';
$elememptyfoot = ' </td></tr>';
$elemrealfoot = '</td></tr>';
} else {
$listhead = '';
$listfoot = '';
$elemhead = '';
$elemfoot = '- ';
$elememptyfoot = '';
$elemrealfoot = '';
}
my @files;
my @years;
if ( $open_by_path ) { push @years, $time; }
else { foreach (($since_year-1) .. $year) { push @years, $_; } }
for my $act_year (@years) {
opendir DIR, "$eng_dir/$rel_path$act_year"
or do {
next;
};
my @new_files = grep { /^$match.wml$/
&& -f "$eng_dir/$rel_path$act_year/$_"
&& ($_="$rel_path$act_year/$_")
} readdir(DIR);
closedir DIR;
@files = ( @files, @new_files );
}
@files = sort {
($a =~ m,(?:^|/)dsa-(\d+),)[0] <=> ($b =~ m,(?:^|/)dsa-(\d+),)[0] || $a cmp $b
} @files;
my $str = grab_titles( $since_date, $minnum,
$eng_dir, $format, $match , @files);
if ( !$is_events ) { # events already have their head and foot
$str = "$listhead$str$listfoot";
}
return $str;
}
sub grab_titles {
my ($since_date, $minnum, $eng_dir,
$format, $match, @files) = @_;
my ($over, $current, $str);
my (%str, %count, %over, %current);
my $count = 0;
foreach $file (@files) {
(my $trans_title = $file) =~ s/wml/title/;
$count++;
my $str1 = "";
my @str1 = (); # for bydate
my $base = $1 if ($file =~ m|^([[:alpha:]./]*(\d{4})?/(?:$match)).wml|);
my $fh = openrecode($file, $trans_title, "$eng_dir/$file")
or die "couldn't open $eng_dir/$file: $!\n";
my $content;
{
local $/;
$content = <$fh>;
}
close $fh;
my $event = '';
if ($WML_SRC_DIRNAME =~ /events/) { # shouldn't waste time if it's not events
$is_events = 1;
if ($base =~ /-report$/) { next; }
if ($content =~ /^#use wml::debian::past_event$/m) {
$event = "past";
} elsif ($content =~ /^#use wml::debian::event$/m) {
$event = "current";
}
}
my ($title, $date, $rdate, $rvdate, $hdate, $desc, $status,
$where, $moreinfo, $startdate, $enddate, $repfile, $just);
my (@hdate, @rdate, @isodate) = ();
if ($content =~ /^<define-tag pagetitle>\s*(.*?)\s*<\/define-tag>$/ms) {
$title = qq/$1/; } # all
if ($content =~ /^<define-tag release_date>(.*?)<\/define-tag>$/ms) {
$date = qq/$1/; } # News
if ($content =~ /^<define-tag where>(.*?)<\/define-tag>$/ms) {
$where = qq/$1/; } # events
if ($content =~ /^<define-tag date>(.*?)<\/define-tag>$/ms) {
$date = qq/$1/; } # events
if ($content =~ /^<define-tag description>(.*?)<\/define-tag>$/ms) {
$desc = qq/$1/; } # security
if ($content =~ /^<define-tag justification>\s*(.*?)\s*<\/define-tag>$/ms) {
$just = qq/$1/; } # licenses
if ($content =~ /^<define-tag moreinfo>(?:(.*?<\/p>)|(.*?)<\/define-tag>)$/ms) {
$moreinfo = qq/$1/; } # dsa-long.XX.rdf
if ($content =~ /^<define-tag status>(.*?)<\/define-tag>$/ms) {
$status = qq/$1/; } # vote
if ($content =~ /^<define-tag startdate>(.*?)<\/define-tag>$/ms) {
$startdate = qq/$1/; } # startdate (events)
if ($content =~ /^<define-tag enddate>(.*?)<\/define-tag>$/ms) {
$enddate = $1; } # enddate (events)
my ($shortfile) = $file =~ /^(?:.*\/)?(.*)\.wml$/;
if ($content =~ /<a\s+href="($shortfile-report)"\s*>/ms) {
$repfile = $1; } # Report (events)
if ($content =~ /<report\s+href="([^"]*)\s*"\/?>/ms) { #"
$repfile = $1; } # Report (events)
$hdate = $date || $startdate;
if ($startdate && $enddate) { # Convert date range into printable string
$date = &daterange($startdate, $enddate);
}
if ($title && $date && $where) { # for events/
if ($date !~ /^[\d-\s]+$/ ) { # old events dates
$hdate = "";
}
my $report = ($repfile)
? " [<a href=\"$repfile\">Report</a>]"
: '';
$str1 = "$elemhead<tt>[$date]</tt>$elemdate <strong><a href=\"$base\">$title</a></strong>, $elemfoot$where$report<br>$elemrealfoot\n";
}
elsif ($desc) { # for security/
open DATAFILE, "$eng_dir/$base.data"
or do {
warn "couldn't open $eng_dir/$base.data: $!\n";
next;
};
foreach my $l (<DATAFILE>) {
if ($l =~ /^<define-tag pagetitle>(.*)<\/define-tag>$/)
{ $title = qq/$1/; }
elsif ($l =~ /^<define-tag report_date>(.*)<\/define-tag>$/)
{ $rdate = qq/$1/; }
}
close DATAFILE;
@hdate = split ',', $rdate;
$hdate = $hdate[0];
$isodate = sprintf("%04d-%02d-%02d", split '-', $hdate[-1]);
$rdate = newsdate($hdate);
@rdate = map( newsdate($_), @hdate );
@isodate = map( sprintf("%04d-%02d-%02d", split '-', $_), @hdate );
$title =~ s/(DSA-\d{3,})-\d{1}/$1/; # strip off the revision in the DSA number
(my $rdfbase = $base) =~ s/^security\///;
if ($format =~ /\brdf\b/) {
foreach (@isodate)
{
push @str1, "\n"
."<item rdf:about=\"http://www.debian.org"
."/security/$rdfbase\">\n"
." <title>$title</title>\n"
." <link>http://www.debian.org/"
."security/$rdfbase</link>\n"
." <description>\n"
." $desc\n"
." </description>\n"
." <dc:date>$_</dc:date>\n"
."</item>\n";
}
$str1 = $str1[0];
} elsif ($format =~ /\brdflong\b/) {
$moreinfo =~ s/(&[^#;]+;)/&decodehtmlentity($1)/ge;
$moreinfo =~ s#<email "?([^>"]+)"?>#<a href="mailto:$1">$1</a>#g;
$moreinfo =~ s#<url "([^>]+)">#<a href="$1">$1</a>#g;
$moreinfo =~ s/</</g;
$moreinfo =~ s/>/>/g;
$moreinfo =~ s/"/"/g; #"
$moreinfo =~ s/\\\n//g;
foreach (@isodate)
{
push @str1, "\n"
."<item rdf:about=\"http://www.debian.org"
."/security/$rdfbase\">\n"
." <title>$title - $desc</title>\n"
." <link>http://www.debian.org"
."/security/$rdfbase</link>\n"
." <description>\n"
." $moreinfo\n"
." </description>\n"
." <dc:date>$_</dc:date>\n"
."</item>\n";
}
$str1 = @str1[0];
} elsif ($format =~ /\brdfseq/){
foreach (@isodate)
{
push @str1, "<rdf:li resource=\"http://www.debian.org"
."/security/$rdfbase\" />\n";
}
$str1 = $str1[0];
} else {
foreach( @rdate ) {
push @str1, "$elemhead<tt>[$_]</tt> "
."<strong><a href=\"$base\">$title</a></strong> "
."$elemfoot$desc NEW_REVISION<br>$elemrealfoot\n";
}
$str1 = $str1[0];
}
}
elsif ($just) { # for licenses/
open DATAFILE, "$eng_dir/$base.data"
or do {
warn "couldn't open $eng_dir/$base.data: $!\n";
next;
};
my ( $free, $l_name );
foreach my $l (<DATAFILE>) {
if ($l =~ /^<define-tag pagetitle>(.*)<\/define-tag>$/)
{ $title = qq/$1/; }
if ($l =~ /^<define-tag license-name>(.*)<\/define-tag>$/)
{ $l_name = qq/$1/; }
elsif ($l =~ /^<define-tag report_date>(.*)<\/define-tag>$/)
{ $rdate = qq/$1/; }
elsif ($l =~ /^<define-tag isfree>(.*)<\/define-tag>$/)
{ $free = qq/$1/; }
}
close DATAFILE;
$rdate = newsdate($rdate);
if ($free eq 'yes') {
$free = '<font color="#00FF00">free</font>';
} elsif ($free eq 'no') {
$free = '<font color="#FF0000">non-free</font>';
} elsif ($free eq 'non-dist') {
$free = '<font color="#FF0000">not redistributable</font>';
}
$str1 = "$elemhead<tt>[$rdate]</tt> "
."<strong><a href=\"$base\">$title</a></strong>$elemfoot "
."$l_name – $free<br>$elemrealfoot\n";
}
elsif ($title && $date && !$is_events) { # for News/ and not events/
$date = newsdate($date);
$str1 = "$elemhead<tt>[$date]</tt> "
."<strong><a href=\"$base\">$title</a></strong><br>"
."$elemrealfoot\n";
}
elsif ($title && $status) { # for vote/
$str1 = "$elemhead<a href=\"$base\">$title</a> — ";
if ( $status eq "P" ) { $str1 .= "proposed"; }
elsif ( $status eq "D" ) { $str1 .= "in discussion"; }
elsif ( $status eq "V" ) { $str1 .= "voting open"; }
elsif ( $status eq "F" ) { $str1 .= "finished"; }
elsif ( $status eq "W" ) { $str1 .= "withdrawn"; }
else { $str1 .= "$status"; }
$str1 .= "<br>$elememptyfoot\n";
}
if (!$is_by_date || ($hdate eq "")) {
$hdate = $count;
} else {
$hdate = iso2stamp( $hdate );
@hdate = map(iso2stamp($_), @hdate);
}
if ($event ne "") { # this file was for an event
if ( $event eq "past" ) {
$over{$hdate} .= $str1;
$count{$hdate}++;
}
elsif ( $event eq "current" ) {
$current{$hdate} .= $str1;
$count{$hdate}++;
}
} else {
unless ( ($#hdate > 0) && $is_by_date ) {
($str{$hdate} = $str1 . $str{$hdate}) =~ s/NEW_REVISION//;
$count{$hdate}++;
} else {
if ( $#hdate != $#str1 ) { warn '$#hdate != $#str1\n'; }
($str{$hdate[0]} = $str1[0] . $str{$hdate[0]}) =~ s/NEW_REVISION//;
for (1..$#str1) {
($str{$hdate[$_]} = $str1[$_] . $str{$hdate[$_]})
=~ s,NEW_REVISION,(new revision),;
$count{$hdate[$_]}++;
}
}
}
} # for each file
if ($is_events) {
$str = "";
$over = pick_recent( $since_date, $minnum, \%over, \%count);
$current = pick_recent( $since_date, $minnum, \%current, \%count, "reverse:quietnull" );
if ($current) {
$str = "<h2>Future events</h2>\n$listhead\n$current\n$listfoot\n";
}
if ($over) {
$str .= "<h2>Past events</h2>\n$listhead\n$over\n$listfoot\n";
}
} else {
$str = pick_recent( $since_date, $minnum, \%str, \%count);
}
return $str;
}
sub pick_recent {
my ($since_date, $minnum, $str, $str_count, $sort) = @_;
my $out_str = '';
my $count = 0;
my @keys;
if (defined($sort) && ($sort =~ /reverse/)) {
@keys = sort { $a <=> $b } keys %$str;
} else {
@keys = sort { $b <=> $a } keys %$str;
}
foreach (@keys) {
if ($count >= $minnum) {
if( (!$is_by_date && $minnum)
|| (($is_by_date || !$minnum)
&& ($_ < $since_date)) ) {
last;
}
}
$out_str .= ${$str}{$_};
$count += ${$str_count}{$_};
}
if (($count eq 0) && ($sort !~ /quietnull/)) {
$out_str = "No items for this year.\n";
$out_str = $elemhead . $out_str . $elemrealfoot if $is_events;
}
return $out_str;
}
sub parse_time {
my $time_str = shift;
my $year = (gmtime())[5] + 1900;
my $time = time();
my $res;
for ($time_str) {
/\d{4}/ && do {
$res = timegm(0,0,0,1,0,$year);
last;
};
/(\d+)d/ && do {
$res = $time - 86400 * $1;
last;
};
/(\d+)w/ && do {
$res = $time - 86400 * 7 * $1;
last;
};
/(\d+)m/ && do {
$res = $time - 86400 * 30 * $1;
last;
};
/(\d+)y/ && do {
my $ryear = $year - $1 + 1; # the actual year count as a whole one
$res = timegm(0,0,0,1,0,$ryear); # 01.01.$ryear 00:00:00
last;
};
}
return $res;
}
sub iso2stamp {
my $time = shift;
if ($time =~ /undated/) {
return 0;
}
my ($year, $month, $day) = ($time =~ /(\d{4})-(\d{1,2})-(\d{1,2})/);
unless ($year && $month && $day) { warn "not an ISO date: $time\n"; }
return timegm( 59, 59, 23, $day, $month-1, $year);
}
sub decodehtmlentity {
my $ent = shift;
@entities = (
' ', '¡', '¢', '£', '¤', '¥',
'¦', '§', '¨', '©', 'ª', '«', '¬',
'­', '®', '¯', '°', '±', '²', '³',
'´', 'µ', '¶', '·', '¸', '¹',
'º', '»', '¼', '½', '¾', '¿',
'À', 'Á', 'Â', 'Ã', 'Ä', 'Å',
'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë',
'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ',
'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×',
'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý',
'Þ', 'ß', 'à', 'á', 'â', 'ã',
'ä', 'å', 'æ', 'ç', 'è', 'é',
'ê', 'ë', 'ì', 'í', 'î', 'ï',
'ð', 'ñ', 'ò', 'ó', 'ô', 'õ',
'ö', '÷', 'ø', 'ù', 'ú', 'û',
'ü', 'ý', 'þ', 'ÿ'
);
for (my $i = 0; $i < $#entities; ++ $i)
{
return "&#".($i+160).";" if $entities[$i] eq $ent;
}
%entities = (
'Œ' => 'Œ',
'œ' => 'œ',
'Š' => 'Š',
'š' => 'š',
'Ÿ' => 'Ÿ',
'ˆ' => 'ˆ',
'˜' => '˜',
' ' => ' ',
' ' => ' ',
' ' => ' ',
'‌' => '‌',
'‍' => '‍',
'‎' => '‎',
'‏' => '‏',
'–' => '–',
'—' => '—',
'‘' => '‘',
'’' => '’',
'‚' => '‚',
'“' => '“',
'”' => '”',
'„' => '„',
'†' => '†',
'‡' => '‡',
'‰' => '‰',
'‹' => '‹',
'›' => '›',
'€' => '€',
'ƒ' => 'ƒ',
'Α' => 'Α',
'Β' => 'Β',
'Γ' => 'Γ',
'Δ' => 'Δ',
'Ε' => 'Ε',
'Ζ' => 'Ζ',
'Η' => 'Η',
'Θ' => 'Θ',
'Ι' => 'Ι',
'Κ' => 'Κ',
'Λ' => 'Λ',
'Μ' => 'Μ',
'Ν' => 'Ν',
'Ξ' => 'Ξ',
'Ο' => 'Ο',
'Π' => 'Π',
'Ρ' => 'Ρ',
'Σ' => 'Σ',
'Τ' => 'Τ',
'Υ' => 'Υ',
'Φ' => 'Φ',
'Χ' => 'Χ',
'Ψ' => 'Ψ',
'Ω' => 'Ω',
'α' => 'α',
'β' => 'β',
'γ' => 'γ',
'δ' => 'δ',
'ε' => 'ε',
'ζ' => 'ζ',
'η' => 'η',
'θ' => 'θ',
'ι' => 'ι',
'κ' => 'κ',
'λ' => 'λ',
'μ' => 'μ',
'ν' => 'ν',
'ξ' => 'ξ',
'ο' => 'ο',
'π' => 'π',
'ρ' => 'ρ',
'ς' => 'ς',
'σ' => 'σ',
'τ' => 'τ',
'υ' => 'υ',
'φ' => 'φ',
'χ' => 'χ',
'ψ' => 'ψ',
'ω' => 'ω',
'ϑ' => 'ϑ',
'ϒ' => 'ϒ',
'ϖ' => 'ϖ',
'•' => '•',
'…' => '…',
'′' => '′',
'″' => '″',
'‾' => '‾',
'⁄' => '⁄',
'℘' => '℘',
'ℑ' => 'ℑ',
'ℜ' => 'ℜ',
'™' => '™',
'ℵ' => 'ℵ',
'←' => '←',
'↑' => '↑',
'→' => '→',
'↓' => '↓',
'↔' => '↔',
'↵' => '↵',
'⇐' => '⇐',
'⇑' => '⇑',
'⇒' => '⇒',
'⇓' => '⇓',
'⇔' => '⇔',
'∀' => '∀',
'∂' => '∂',
'∃' => '∃',
'∅' => '∅',
'∇' => '∇',
'∈' => '∈',
'∉' => '∉',
'∋' => '∋',
'∏' => '∏',
'∑' => '∑',
'−' => '−',
'∗' => '∗',
'√' => '√',
'∝' => '∝',
'∞' => '∞',
'∠' => '∠',
'∧' => '∧',
'∨' => '∨',
'∩' => '∩',
'∪' => '∪',
'∫' => '∫',
'∴' => '∴',
'∼' => '∼',
'≅' => '≅',
'≈' => '≈',
'≠' => '≠',
'≡' => '≡',
'≤' => '≤',
'≥' => '≥',
'⊂' => '⊂',
'⊃' => '⊃',
'⊄' => '⊄',
'⊆' => '⊆',
'⊇' => '⊇',
'⊕' => '⊕',
'⊗' => '⊗',
'⊥' => '⊥',
'⋅' => '⋅',
'⌈' => '⌈',
'⌉' => '⌉',
'⌊' => '⌊',
'⌋' => '⌋',
'⟨' => '〈',
'⟩' => '〉',
'◊' => '◊',
'♠' => '♠',
'♣' => '♣',
'♥' => '♥',
'♦' => '♦',
);
return $entities{$ent} if defined $entities{$ent};
return '?'; # Say what?
}
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:>
<:# line 2 "index.wml":>
<:# line 0 "./../english/releases/info":>
<:# line 1 "./../english/releases/info":>
<:# line 2 "./../english/releases/info":>
<:# line 3 "index.wml":>
<:# line 0 "../english/template/debian/translation-check.wml":>
<:# line 1 "../english/template/debian/translation-check.wml":>
<:# line 2 "../english/template/debian/translation-check.wml":>
<:# line 3 "../english/template/debian/translation-check.wml":>
<:
${perl_var1} = '';
sub check_translation {
my ($translation, $file, $original, $mindelta, $maxdelta) = @_;
my $parents, $level, $relative_dir, $output;
my @relative_dir = ();
$max_versions = $maxdelta || 5;
$min_versions = $mindelta || 1;
$debug = 0;
$original_lang = $original ? $langs{$original} : "en";
$link = $file;
$link =~ s/\.(wml|src)$//;
$link .= ".$original_lang.html";
$original_dir = $original ? "$original" : "english";
@full_directory_name = split '/', $WML_SRC_DIRNAME;
$dir = pop @full_directory_name;
while ($dir) {
if ($dir ne "webwml" && $dir ne "cdimage") { $level++; } else { last; }
push @relative_dir, $dir;
$dir = pop @full_directory_name;
}
for (; $level > 0; $level--) { $parents .= "../"; }
pop @relative_dir;
@relative_dir = reverse @relative_dir;
$relative_dir = join '/', @relative_dir;
if (open (CVS_ENTRY,"<$parents/$original_dir/$relative_dir/CVS/Entries")) {
while (<CVS_ENTRY>) {
($version) = $_ =~ m,/\Q$file\E/([\d\.]*),;
last if $version;
}
close CVS_ENTRY;
} else {
$version = "1.1";
}
if ($version ne "")
{
print ${file} . "'s original CVS revision is: $version\n"
if ($debug >= 1);
@version_numbers = split /\./,$version;
$major_number = @version_numbers[0];
$last_number = pop @version_numbers;
die "Invalid CVS revision for $file: $version\n"
unless ($major_number =~ /\d+/ && $last_number =~ /\d+/);
@translation_numbers = split /\./,$translation;
$major_translated_number = @translation_numbers[0];
$last_translated_number = pop @translation_numbers;
die "Invalid translation revision for $file: $translation\n"
unless ($major_translated_number =~ /\d+/ && $last_translated_number =~ /\d+/);
}
print "Comparing original $version to translation version $translation\n" if ($debug >= 1);
$output = '';
if ($version eq "") {
$output = qq(
<em>Note:</em> The original document of this translation no longer exists.
)
}
elsif ( $major_number != $major_translated_number ) {
$output = qq(<strong>
Warning! This translation is too out of date, please see the <a href="$link">original</a>.
</strong>)
}
elsif ( $last_number - $last_translated_number >= $max_versions ) {
$output = qq(<strong>
Warning! This translation is too out of date, please see the <a href="$link">original</a>.
</strong>)
}
elsif ( $last_number - $last_translated_number >= $min_versions ) {
$output = qq(
<em>Note:</em> The <a href="$link">original document</a> is newer than this translation.
)
}
if ($output ne "") {
$output =~ s/^\s+//m; # removes whitespace at the beginning
$output =~ s/\s+$//m; # removes whitespace at the end
$output =~ s/\n/ /sg; # replaces linebreaks with whitespace
print "<p>$output</p>";
}
}
print ${perl_var1} if ${perl_var1};
${perl_var1} = '';
_:>
{#check_trans#:<: check_translation ("1.75","$WML_SRC_FILENAME","","","") :>:#check_trans#}
<:# line 4 "index.wml":>
<H2>دبیان چیست؟</H2>
<P>دبیان یک سیستم عامل <A href="intro/free">آزاد</A> برای
کامپیوتر شما میباشد. یک سیستم عامل مجموعهای از برنامهها
و ابزارهای پایه میباشد که باعث اجرای کامپیوتر میشوند. دبیان از
هسته <A HREF="http://www.kernel.org/">لینوکس</A> (به عنوان
هسته سیستم عامل) استفاده میکند، اما بیشتر ابزارهای پایهای
آن از <A HREF="http://www.gnu.org/">پروژه گنو</A> میباشد؛
بنابراین اسم کامل آن گنو/لینوکس است.
<p>دبیان گنو/لینوکس بیشتر از یک سیستم عامل محض است. دبیان به همراه
بیش از 18733 <A HREF="distrib/packages">بسته</A>
نرمافزاری از پیش کامپایلشده ارائه میشود که به راحتی بر روی
دستگاه شما نصب میشوند.
<P><A href="intro/about">اطلاعات بیشتر...</A>
<HR>
<H2>شروع</H2>
<p>آخرین <a href="releases/stable/">نسخه پایدار منتشر شده
دبیان</a> نسخه <: $f = "4.0r0"; $f =~ s/r\d+$//; print $f :> است.
آخرین به روز رسانی این نسخه در تاریخ <:=spokendate('2007-04-08'):> منتشر
شده است. اطلاعات بیشتر درباره <a href="releases/">نسخههای مختلف دبیان</a>.</p>
<p>اگر میخواهید از دبیان استفاده کنید، میتوانید به راحتی <a href="distrib/">یک
نسخه از آن را تهیه کرده</a>، و سپس به کمک <a href="releases/stable/installmanual">راهنمای
نصب</a> آن را نصب نمایید.</p>
<p>اگر در نظر دارید تا از نسخههای قبلی به آخرین نسخه پایدار به روز رسانی
نمایید، لطفا قبل از انجام این کار <a href="releases/stable/releasenotes">یادداشتهای
انتشار</a> را مطالعه نمایید.</p>
<p>برای کسب اطلاعات بیشتر درباره نحوه راهاندازی و استفاده از دبیان
صفحات <a href="doc/">مستندات</a> و <a href="support">پشتیبانی</a>
ما را ببینید.</p>
<p>کاربرانی که به زبانهایی غیر از انگلیسی صحبت میکنند میتوانند
بخش <a href="international/">بینالمللی</a> را مشاهده نمایند.</p>
<p>کاربرانی که از سیستمهایی غیر از اینتل x86 استفاده میکنند به
بخش <a href="ports/">درگاهها</a> مراجعه نمایند.</p>
<HR>
<H2>اخبار</H2>
<P><:= get_recent_list('News/2007', '6', '../english', '', '\d+\w*' ) :>
<P>برای دسترسی به اخبار گذشته <A href="/News/">صفحه
اخبار</A> را ببینید. اگر مایلید که بوسیله پست الکترونیکی از اخبار جدید
دبیان آگاه شوید، در <A href="MailingLists/debian-announce">لیست پستی
اعلانهای دبیان</A> عضو شوید. <A href="/News/weekly/">خبرنامه
هفتگی دبیان</A> نیز خلاصهای از اتفاقات هفته گذشته دنیای دبیان را منتشر میکند.
<HR>
<H2>مشاورههای امنیتی</H2>
<P><:= get_recent_list ('security/2w', '10', '../english', 'bydate', '(2000\d+\w+|dsa-\d+)' ) :>
<P>برای مشاورههای امنیتی گذشته <A href="/security/">صفحه
امنیت</A> را ببینید. اگر مایلید که به محض انتشار اعلانهای امنیتی آنها را دریافت
کنید، در <a href="http://lists.debian.org/debian-security-announce/">لیست
پستی اعلانهای امنیتی دبیان عضو شوید</a>.
{#rss#:
<link rel="alternate" type="application/rss+xml"
title="مشاورههای امنیتی دبیان (فقط عنوانها)" href="security/dsa">
<link rel="alternate" type="application/rss+xml"
title="مشاورههای امنیتی دبیان (خلاصه)" href="security/dsa-long">
:#rss#}
Reply to: