From rangi@users.sourceforge.net Tue Jun 26 15:13:52 2001 From: Chris Cormack To: koha-devel@lists.koha-community.org Subject: [Koha-devel] CVS: koha/translator translator.pl,NONE,1.1 translator.readme,NONE,1.1 Date: Tue, 26 Jun 2001 15:13:52 -0700 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4462657211410790644==" --===============4462657211410790644== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Update of /cvsroot/koha/koha/translator In directory usw-pr-cvs1:/tmp/cvs-serv29400/translator Added Files: translator.pl translator.readme=20 Log Message: Scripts to permit koha webpages to display in different natural languages Courtesy of Pawel Skuza --- NEW FILE --- #!/usr/bin/perl use strict; use locale; use POSIX; use Locale::gettext; my $tofile; if (exists $ENV{"HTTP_ACCEPT"}) { $tofile=3D0; } else { $tofile=3D1; } print "Content-Type: text/html \n\n" unless($tofile); my $path=3D$ENV{"PATH_TRANSLATED"}; textdomain("koha"); my %lang=3D( fr =3D> "fr_FR", pl =3D> "pl_PL", ); my @lang=3Dsplit/,/,$ENV{"HTTP_ACCEPT_LANGUAGE"}; my $lang=3D"us_US"; foreach (@lang){ my $lg=3D$lang{$_}; setlocale(LC_MESSAGES,$lg); my $tmp =3D gettext($_); if ($tmp ne $_) { $lang=3D$tmp; last; } } setlocale(LC_MESSAGES,$lang); my @katalog; my $plik; if ($tofile){ @katalog=3D`ls -R`; $plik=3D$ARGV[0]; if ($plik eq ''){=20 $plik=3D"koha.gettext.c";=20 } } else { @katalog=3D("cos"); } my $kat; my (%dgettxt, %dane, %dane2, @dane2); my $i; $dgettxt{'iso-8859-1'}=3D1; my $txt =3D< TXT foreach(@katalog){ if (/:$/){ $kat=3D"$`/"; next; } if ($tofile){ unless ($_=3D~/(\.html|\.inc)$/i) { next; } } print "$kat$_" if ($tofile); my $dane; { local $/; if ($tofile){ open PL, "$kat$_"; } else { open PL, "$path"; } $dane=3D; close PL; } $dane=3D~s//$txt/i; =20 $dane=3D~s/%/&zamien/ges; # change % (specjal symbol) $dane=3D~s/\\\'/&zamien/ges; # change \' $dane=3D~s/\\\"/&zamien/ges; # change \" =20 # taka out graphics $dane=3D~s/[\"\']\/?([\w-\/\.]*?\.gif)[\"\']/&zamien($1)/ges; =20 # $dane=3D~s/messenger\s*\((.*?)\)\s*[\}\{;]/&zamien($1)/ges; # $dane=3D~s/\.write(ln)?\s*\((.*?)\)\s*[\};]/&zamien($2)/ges; # take out string in field alt $dane=3D~s/alt\s*=3D\s*[\"]([^\"]*)[\"]/&zamien($1)/iges; $dane=3D~s/alt\s*=3D\s*[\']([^\']*)[\']/&zamien($1)/iges; =20 $dane=3D~s//&zamien/ges; $dane=3D~s//&zamien/iges; $dane=3D~s/<[\w\/]\w*\s*((\w*\s*=3D\s*(\'[^\']*\'|\"[^\"]*\"|[\w-\/?&,\.=3D= %#]*)|[%\d*%]|\w)\s*)*>/&zamien/ges; $dane=3D~s//&zamien/ges; $dane=3D~s/]*>/&zamien/ges; $dane=3D~s/<#.*?#>/&zamien/ges; my $dane2=3D$dane; $dane2=3D~s/(\s*%\d+%\s*)+/%/gs; $dane2=3D~s/^%//g; $dane2=3D~s/%$//g; foreach my $tmp(split/%/,$dane2){ my $tmp_ok =3D $tmp; $tmp_ok=3D~s/\s+/ /gs; next unless ($tmp_ok=3D~/\w+/); $dgettxt{$tmp_ok}++ unless $dgettxt{$tmp_ok}; $tmp=3D~s/([\)\(])/\\$1/g; $dane=3D~s/$tmp/gettext($tmp_ok)/es; } unless ($tofile){ while($dane=3D~/%\d+%/){ $dane=3D~s/%(\d+)%/$dane2{$1}/g; } print $dane; } } if ($tofile) { open PK, ">$plik"; foreach my $tmp(sort keys %dgettxt){ $tmp=3D~s/\"/\\\"/gs; print PK "gettext(\"$tmp\");\n"; } close PK; } exit; ########################################################### sub zamien { my $tmp =3D $&; unless ($dgettxt{$_[0]}) { $dgettxt{$_[0]}++; } $tmp=3D~s/$_[0]/gettext($&)/es; unless ($dane{$tmp}) { push @dane2, $tmp; $dane2{$i}=3D$tmp; $dane{$tmp}=3D$i++; } return "%${\($dane{$tmp})}%"; } --- NEW FILE --- This is small note about 'translator.pl'. Author: Pawel Skuza email: pawelzc@cz.top.pl Script 'translator.pl' do two things: 1. Prepare strings which can be translate; 2. Translate strings used gettext. 1. Prepare strings which can be translate. Copy file 'translator.pl' into root koha directory and execute it. eg.=20 cd /usr/src/koha cp scripts/translator.pl . ./translator.pl some_file_name xgettext some_file_name -okoha.po vi koha.po //now you must translate koha.po msgfmt koha.po -okoha.mo cp koha.mo /usr/share/locale/$$/LC_MESSAGES //where $$ is your language =20 note: if you omnit 'some_file_name' translator create 'koha.gettext.c' =20 2. Translate strings used gettext. You have to configure your apache. Put this lines in koha and opac virtual: Action text/html /cgi-bin/koha/translator.pl Action text/plane /cgi-bin/koha/translator.pl Don't forget set up the language preference in your browser. --===============4462657211410790644==--