fix lang spec and parsing

This commit is contained in:
TLINDEN
2016-10-08 12:36:25 +02:00
parent 50ac4d65ed
commit a865f75f0e
3 changed files with 217 additions and 179 deletions

View File

@@ -1,3 +1,13 @@
1.41:
Generalized lang parsing and passing to dict.leo.org, which
also adds support for new languages like ru, ch or pl. Thanks
to J.A.Eichler.
1.40:
not logged, sorry.
1.39: 1.39:
fixed rt.cpan.org#91464: disable caching if DB_File is not found. fixed rt.cpan.org#91464: disable caching if DB_File is not found.

85
Org.pm
View File

@@ -7,7 +7,7 @@
# or service marks of their respective holders. # or service marks of their respective holders.
package WWW::Dict::Leo::Org; package WWW::Dict::Leo::Org;
$WWW::Dict::Leo::Org::VERSION = "1.40"; $WWW::Dict::Leo::Org::VERSION = "1.41";
use strict; use strict;
use warnings; use warnings;
@@ -63,34 +63,31 @@ sub translate {
my @match = (); my @match = ();
# #
# form var transitions for searchLoc # form var transitions for searchLoc(=translation direction) and lp(=language)
# my %lang = ( speak => "ende" );
my %lang = (
de2en => 1,
en2de => -1,
de2fr => 1,
fr2de => -1,
es2de => -1,
de2es => 1,
es => 0,
en => 0,
fr => 0,
speak => "ende"
);
my @langs = qw(en es ru pt fr pl ch it);
if ($this->{"-Language"}) { if ($this->{"-Language"}) {
if ($this->{"-Language"} =~ /fr/) { # en | fr | ru2en | de2pl etc
# used for francaise translation # de2, 2de, de are not part of lang spec
$lang{speak} = "frde"; if (! grep { $this->{"-Language"} =~ /$_/ } @langs) {
croak "Unsupported language: " . $this->{"-Language"};
} }
elsif ($this->{"-Language"} =~ /es/) { my $spec = $this->{"-Language"};
$lang{speak} = "esde"; my $l;
if ($spec =~ /(..)2de/) {
$l = $1;
$this->{"-Language"} = -1;
$lang{speak} = "${l}de";
} }
if (exists $lang{$this->{"-Language"}}) { elsif ($spec =~ /de2(..)/) {
$this->{"-Language"} = $lang{$this->{"-Language"}}; $l = $1;
$this->{"-Language"} = 1;
$lang{speak} = "${l}de";
} }
else { else {
croak "Unsupported language: " . $this->{"-Language"}; $lang{speak} = $this->{"-Language"} . 'de';
$this->{"-Language"} = 0;
} }
} }
@@ -418,35 +415,31 @@ Possible values: fuzzy, exact, relaxed.
=item I<-Language> =item I<-Language>
Translation direction. Please note that dict.leo.org always translates Translation direction. Please note that dict.leo.org always translates
either to or from german. The following values can be used: either to or from german.
=over The following languages are supported: english, polish, spanish, portugese
russian and chinese.
=item de You can specify only the country code, or append B<de2> in order to
force translation to german, or preprend B<de2> in order to translate
to the other language.
Alias for B<de2en> - german to english. Valid examples:
=item fr ru to or from russian
de2pl to polish
es2de spanish to german
Alias for B<de2fr> - german to french. Valid country codes:
=item es en english
es spanish
ru russian
pt portugese
pl polish
ch chinese
Alias for B<de2es> - german to espaniol. Default: B<en>.
=item en2de
english to german.
=item fr2de
french to german.
=item es2de
espaniol to german.
=back
=back =back
@@ -541,6 +534,6 @@ Please don't forget to add debugging output!
=head1 VERSION =head1 VERSION
1.40 1.41
=cut =cut

55
leo
View File

@@ -8,8 +8,6 @@
# the term to be translated. It will then return the results in # the term to be translated. It will then return the results in
# an unformatted form. # an unformatted form.
# #
# $Id: leo,v 1.33 2008/04/22 22:23:39 scip Exp $
#
# Copyleft (l) 2000-2016 by Thomas v.D. <tlinden@cpan.org>. leo may be # Copyleft (l) 2000-2016 by Thomas v.D. <tlinden@cpan.org>. leo may be
# used and distributed under the terms of the GNU General Public License. # used and distributed under the terms of the GNU General Public License.
# All other brand and product names are trademarks, registered trademarks # All other brand and product names are trademarks, registered trademarks
@@ -37,7 +35,7 @@ my $default_c = "\033[0m"; # reset default terminal color
my $bold_c = "\033[0;34m"; # blue color my $bold_c = "\033[0;34m"; # blue color
my $copy_c = "\033[0;35m"; # copyright message color (green) my $copy_c = "\033[0;35m"; # copyright message color (green)
my $version = "1.39"; my $version = "1.41";
my $config = $ENV{HOME} . "/.leo"; my $config = $ENV{HOME} . "/.leo";
my $cache = $ENV{HOME} . "/.leo-CACHE.db"; my $cache = $ENV{HOME} . "/.leo-CACHE.db";
@@ -137,7 +135,8 @@ if (-e $config) {
foreach my $opt (keys %conf) { foreach my $opt (keys %conf) {
if (!exists $validopts{$opt}) { if (!exists $validopts{$opt}) {
print "<$opt>\n"; print "<$opt>\n";
print STDERR "Error in config $config line: " . $line{$opt} . ". Unsupported option \"$opt\"!\n"; print STDERR "Error in config $config line: " .
$line{$opt} . ". Unsupported option \"$opt\"!\n";
exit; exit;
} }
} }
@@ -328,7 +327,7 @@ Translate a term from german to english or vice versa.
-s, --spelltolerance=on|off allow spelling errors -s, --spelltolerance=on|off allow spelling errors
-m, --morphology=none|forcedAll provide morphology information -m, --morphology=none|forcedAll provide morphology information
-c, --chartolerance=fuzzy|exact allow umlaut alternatives -c, --chartolerance=fuzzy|exact allow umlaut alternatives
-l, --language=en|fr|de2(en|fr)|(en|fr)2de translation direction -l, --language=[de2]<countrycode>[2de] translation direction
-n, --noescapechars dont use escapes for highlighting -n, --noescapechars dont use escapes for highlighting
-f, --force don't use the query cache -f, --force don't use the query cache
-u, --user=username user for proxy authentication -u, --user=username user for proxy authentication
@@ -340,7 +339,24 @@ Translate a term from german to english or vice versa.
<term> is the string you are asking to be translated. It will <term> is the string you are asking to be translated. It will
be requested from STDIN if not specified on the commandline. be requested from STDIN if not specified on the commandline.
Report bugs to <tom\@daemon.de>. Supported <countrycode>s are:
en english
es spanish
ru russian
pt portugese
pl polish
ch chinese
You can specify only the country code, or append B<de2> in order to
force translation to german, or preprend B<de2> in order to translate
to the other language. Valid examples:
ru to or from russian
de2pl to polish
es2de spanish to german
Report bugs to <tlinden\@cpan.org>.
); );
exit 1; exit 1;
@@ -412,11 +428,30 @@ Default: B<relaxed>.
=item I<-l --language> =item I<-l --language>
Translation direction. Translation direction. Please note that dict.leo.org always translates
either to or from german.
Possible values: B<en>, B<fr>, B<de2en>, B<en2de>, B<de2fr> or B<fr2de>. The following languages are supported: english, polish, spanish, portugese
russian and chinese.
B<en> and B<fr> do select the translation direction automatically. You can specify only the country code, or append B<de2> in order to
force translation to german, or preprend B<de2> in order to translate
to the other language.
Valid examples:
ru to or from russian
de2pl to polish
es2de spanish to german
Valid country codes:
en english
es spanish
ru russian
pt portugese
pl polish
ch chinese
Default: B<en>. Default: B<en>.
@@ -632,6 +667,6 @@ browser, what is not prohibited. At least not today.
=head1 VERSION =head1 VERSION
This is the manpage for B<leo> version B<1.39>. This is the manpage for B<leo> version B<1.41>.
=cut =cut