[Perl] Franciser un module
Résolu/Fermé
julow
Messages postés
2198
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
7 juillet 2015
-
20 mai 2008 à 16:37
julow Messages postés 2198 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 7 juillet 2015 - 28 mai 2008 à 10:53
julow Messages postés 2198 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 7 juillet 2015 - 28 mai 2008 à 10:53
Salut à tous!
J'ai là un module PERL que je voudrais "franciser" dirons nous. Le problème c'est que dès que je touche à une portion de code plus rien ne fonctionne!! Le Perl je ne le connais pas assez pour savoir quel est le problème alors je me tourne vers vous. Le code étant assez long je vous demanderais de m'envoyer un MP si vous voulez m'aider afin que je vous l'envoi ensuite. Je préfère le dire de suite, ce module est assez compliqué à comprendre, j'ai tenté de le déchiffrer grâce à mes connaissances en C et C# mais rien à faire je ne le comprend pas.
Bref, si vous voulez bien m'aider...! Merci!
J'ai là un module PERL que je voudrais "franciser" dirons nous. Le problème c'est que dès que je touche à une portion de code plus rien ne fonctionne!! Le Perl je ne le connais pas assez pour savoir quel est le problème alors je me tourne vers vous. Le code étant assez long je vous demanderais de m'envoyer un MP si vous voulez m'aider afin que je vous l'envoi ensuite. Je préfère le dire de suite, ce module est assez compliqué à comprendre, j'ai tenté de le déchiffrer grâce à mes connaissances en C et C# mais rien à faire je ne le comprend pas.
Bref, si vous voulez bien m'aider...! Merci!
A voir également:
- [Perl] Franciser un module
- Igfxtray module ✓ - Forum Virus
- Module d'expérience locale francais ✓ - Forum Matériel & Système
- Hkcmd module ✓ - Forum Virus
- Pas de module ci - Forum TV & Vidéo
- Manque cam module - Forum TNT / Satellite / Réception
6 réponses
Castor
Messages postés
17858
Date d'inscription
mardi 3 juillet 2001
Statut
Modérateur
Dernière intervention
7 novembre 2023
170
20 mai 2008 à 16:47
20 mai 2008 à 16:47
De plus, pour que tout le monde puisse profiter de la discussion, il est fortement déconseillé de passer par les MP
Utilisateur anonyme
20 mai 2008 à 16:41
20 mai 2008 à 16:41
Perl est un langage où on peut facilement programmer comme un porc et rendre son code illisible, parfois c'est même volontaire (pour empêcher aux autres de comprendre). Où tu as eu ce code? Il y a pas un moyen de contacter son auteur pour qu'il te dise comment il a programmé ça. Autant te dire qu'il est très très compliqué de comprendre un code Perl parfois, sans commentaires ni rien, c'est du temps perdu.
Utilisateur anonyme
20 mai 2008 à 21:43
20 mai 2008 à 21:43
je ne vois pas pourquoi on aurait des erreurs si on modifie juste la chaîne de caractères, en plus il n'y a aucun caractère spécial.
julow
Messages postés
2198
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
7 juillet 2015
244
21 mai 2008 à 08:02
21 mai 2008 à 08:02
Si je modifie tout avec "Plage date" alors je rentre dans une erreur
"Invalid Date Option 16 selected"
Je ne comprend pas pourquoi.... N'étant pas un pro du Perl je ne parviens pas à comprendre pourquoi j'ai cette erreur...
Je pense que "Select Date Range doit etre utilisé comme paramètre dans un autre module lié à l'execution du programme principal et qu'il faut donc ne pas toucher à ce paramètre, le hic c'est que si j'ai bien compris, le nom du libéllé du bouton donne le nom du paramètre donc en changeant le libellé du bouton je crée un paramètre "Plage date" qu'un autre module ne reconnait peut etre pas... En fait je suis perdu lol!
"Invalid Date Option 16 selected"
Je ne comprend pas pourquoi.... N'étant pas un pro du Perl je ne parviens pas à comprendre pourquoi j'ai cette erreur...
Je pense que "Select Date Range doit etre utilisé comme paramètre dans un autre module lié à l'execution du programme principal et qu'il faut donc ne pas toucher à ce paramètre, le hic c'est que si j'ai bien compris, le nom du libéllé du bouton donne le nom du paramètre donc en changeant le libellé du bouton je crée un paramètre "Plage date" qu'un autre module ne reconnait peut etre pas... En fait je suis perdu lol!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 mai 2008 à 09:18
21 mai 2008 à 09:18
Salut,
dis mois swish-e tu l'as compilé depuis les sources?!
dis mois swish-e tu l'as compilé depuis les sources?!
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 mai 2008 à 09:59
21 mai 2008 à 09:59
essaie comme ça
wget http://swish-e.org/distribution/swish-e-2.4.5.tar.gz tar xzvf swish-e-2.4.5.tar.gz cd swish-e-2.4.5/ sed -i.orig 's/Select Date Range/Plage Dates/g' example/modules/SWISH/DateRanges.pm ./configure make make install
julow
Messages postés
2198
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
7 juillet 2015
244
28 mai 2008 à 10:53
28 mai 2008 à 10:53
Ca ne fonctionne pas avec tout (il doit y avoir plein de référence à des modules externes ce qui fausse le tout) mais dans la majeur partie mon interface PERL ressemble enfin à une interface pour nous autres français!!
Merci!
Merci!
20 mai 2008 à 21:16
Je pensais que mettre le code en ligne ne serait pas autorisé mais comme ce n'est pas le cas, alors le voici:
DateRanges.mp
[code]
# $Id: DateRanges.pm,v 1.1 2003/02/28 06:06:10 whmoseley Exp $
package SWISH::DateRanges;
use strict;
=head1 NAME
DateRanges
=head1 SYNOPSIS
use DateRanges;
use CGI;
my $cgi = CGI->new();
...
my %hash = (
date_ranges => {
# Define what buttons to include
time_periods => [
'All','Tout',
'Today','Aujourd\'hui',
'Yesterday','Hier',
#'Yesterday onward',
'This Week','Cette semaine',
'Last Week','Semaine derniere',
'Last 90 Days','Derniers 90 jours',
'This Month','Ce mois-ci',
'Last Month','Mois dernier',
#'Past',
#'Future',
#'Next 30 Days',
],
# Default button
default => 'All',
# Should buttons be in a row or a column?
line_break => 0,
# Should a date input form be shown, too?
date_range => 1,
},
);
=head1 DESCRIPTION
This module provides I<basic> support for entering and using date ranges. It
was written to use with swish-e (http://swish-e.org).
See swish.cgi in the swish-e distribution for an example.
Sorry about the interface -- if anyone really wants to use this please let me know and I'll
rewrite as OO interface!
=head1 FUNCTIONS
=cut
require Exporter;
use vars qw/$VERSION @ISA @EXPORT/;
@ISA = qw(Exporter);
$VERSION = '0.01';
@EXPORT = qw (
DateRangeForm
DateRangeParse
GetDateRangeArgs
);
# what to pick from
my @TIME_PERIODS = (
'Today', 'Aujourd\'hui',
'Yesterday','Hier',
'Yesterday onward',
'This Week','Cette semaine',
'Last Week','Semaine derniere',
'Last 90 Days','Derniers 90 jours',
'This Month','Ce mois-ci',
'Last Month','Mois dernier',
'Past','Passé',
'Future','Futur',
'Next 30 Days','30 prochains jours',
'All','Tout',
'Select Date Range','Plage de dates',
);
my %Num_to_label;
my %Label_to_num;
my $i = 1;
for ( @TIME_PERIODS ) {
my $label = $_;
$label =~ s/ / /g;
$Num_to_label{$i} = $label;
$Label_to_num{$_} = $i++;
}
use Date::Calc qw /
Day_of_Week_to_Text
Day_of_Week
Date_to_Text
Monday_of_Week
Week_of_Year
Today
Add_Delta_Days
Days_in_Month
check_date
/;
my $prefix = 'dr';
use Time::Local;
=item DateRangeForm( $cgi, $params, $fields );
This function simple creates a simple form for selecting date ranges based
on the fields passed in C<$params>. Will call C<die()> on errors.
C<$params> must be a hash reference with a key named C<time_periods> as shown in
B<SYNOPSIS> above. This is used to select which time periods to display.
C<$fields> is a reference to a hash where C<DateRanges> returns data.
These store the HTML for display on your form.
buttons - the buttons to select the different time ranges
date_range_button - the button to select a date range
date_range_low - the low range select form fields
date_range_hi - the hight range select form fields
=cut
sub DateRangeForm {
my ( $CGI, $params, $fields ) = @_;
die "Must supply array ref for 'options'"
unless $params->{time_periods} && ref $params->{time_periods} eq 'ARRAY';
my @time_periods;
# Filter out valid selections for radio buttons
for ( @{ $params->{time_periods} } ) {
next if !$Label_to_num{$_} || $_ eq 'Select Date Range';
push @time_periods, $Label_to_num{$_};
}
# Set default as default passed in, or the first one, or 'Select Date Range' if none passed in
my $default = $params->{default} && $Label_to_num{$params->{default}}
? $Label_to_num{$params->{default}}
: @time_periods ? $time_periods[0] : $Label_to_num{'Select Date Range'};
$fields->{buttons} = '';
$fields->{date_range_button} = '';
$fields->{date_range_low} = '';
$fields->{date_range_high} = '';
my $autoescape = $CGI->autoEscape(undef); # labels have HTML
$fields->{buttons} =
$CGI->radio_group(
-name => 'dr_o',
-values => \@time_periods,
-default => $default,
-linebreak => (exists $params->{line_break} ? $params->{line_break} : 1),
-labels => \%Num_to_label,
#-columns=>2,
) if @time_periods;
if ( $params->{date_range} ) {
$fields->{date_range_button} =
$CGI->radio_group(
-name => 'dr_o',
-values => [$Label_to_num{'Select Date Range'}],
-default => $default,
-labels => \%Num_to_label,
-linebreak => (exists $params->{line_break} ? $params->{line_break} : 1),
);
$fields->{date_range_low} = show_date_input($CGI, 's');
$fields->{date_range_high} = show_date_input($CGI, 'e');
}
$CGI->autoEscape($autoescape);
}
=item my $args = GetDateRangeArgs( $cgi );
Returns a string to use in a HREF with all the parameters set.
=cut
sub GetDateRangeArgs {
my $CGI = shift;
my %args;
$args{dr_o} = $CGI->param('dr_o')
if defined $CGI->param('dr_o');
for ( qw/ mon day year / ) {
my $start = "dr_s_$_";
my $end = "dr_e_$_";
$args{$start} = $CGI->param($start) if defined $CGI->param($start);
$args{$end} = $CGI->param($end) if defined $CGI->param($end);
}
return '' unless %args;
return join '&', map { "$_=" . $CGI->escape($args{$_}) } keys %args;
}
=item DateRangeParse( $cgi, $form )
Parses the date range form and returns a low and high range unix timestamp.
Returns false on error with the folowing key set in C<$form>:
dr_error - error string explaining the problem
C<$form> is a hash reference where the following keys may be set:
All - no date ranges were selected
dr_time_low - low range unix timestamp
dr_time_high - high range unix timestamp
=cut
#------------------------ Get the report dates ---------------------
sub DateRangeParse {
my ( $q, $form ) = @_;
$form->{dr_error} = '';
# For making HREFs
$form->{data_range_href} = GetDateRangeArgs( $q );
# If requesting ALL (or not found in form) return true for all
my $num = $q->param('dr_o') || $Label_to_num{All};
# In range?
if ( $num !~ /^\d+$/ || $num < 1 || $num > @TIME_PERIODS ) {
return 1;
}
my $time = time();
my ( @start, @end );
for ( $TIME_PERIODS[$num-1] ) {
(/^All/ || /^Tout/) && do { return 1 }; # don't set any dates
(/^Today/ || /^Aujourd\'hui/) && do { @start = @end = Today(); last; };
/^Yesterday onward/ && do {
@start = Add_Delta_Days( Today(), -1 );
@end = (2030,1,1);
last;
};
(/^Yesterday/ || /^Hier/ ) && do {
@start = @end = Add_Delta_Days( Today(), -1 );
last;
};
(/^This Week/|| /^Cette semaine/) && do {
@start = Monday_of_Week( Week_of_Year( Today() ) );
@end = Add_Delta_Days( @start, 6 );
last;
};
(/^Last Week/ || /^Semaine derniere/) && do {
@start = Monday_of_Week( Week_of_Year( Add_Delta_Days( Today(), -7 ) ) );
@end = Add_Delta_Days( @start, 6 );
last;
};
(/^This Month/ || /^Ce mois-ci/) && do {
@start = @end = Today();
$start[2] = 1;
$end[2] = Days_in_Month($end[0],$end[1]);
last;
};
(/^Last Month/ || /^Mois dernier/) && do {
@start = Today();
$start[2] = 1;
--$start[1];
if ( $start[1] == 0 ) {
$start[1] = 12;
$start[0]--;
}
@end = @start;
$end[2] = Days_in_Month($end[0],$end[1]);
last;
};
(/^Last 90 Days/ || /^Derniers 90 jours/) && do {
@end = Today();
@start = Add_Delta_Days( Today(), -90 );
last
};
(/^Past/ || /^Passe/) && return 1; # use defaults;
(/^Futur/ && do {
$form->{dr_time_low} = time;
delete $form->{dr_time_high};
return 1;
};
(/^Next 30 Days/ || /^30 prochains jours/) && do {
@start = Today();
@end = Add_Delta_Days( Today(), +30 );
last
};
(/^Select/ || /^Plage/) && do {
my ( $day, $mon, $year );
$day = $q->param('dr_s_day') || 0;
$mon = $q->param('dr_s_mon') || 0;
$year = $q->param('dr_s_year') || 0;
@start = ( $year, $mon, $day );
$day = $q->param('dr_e_day') || 0;
$mon = $q->param('dr_e_mon') || 0;
$year = $q->param('dr_e_year') || 0;
@end = ( $year, $mon, $day );
last;
};
$form->{dr_error} = 'Invalid Date Option ' . $q->param('dr_o') . ' Selected';
return;
}
$form->{dr_error} = 'Invalid Start Date' && return if @start && !check_date( @start );
$form->{dr_error} = 'Invalid Ending Date' && return if @end && !check_date( @end );
my $start_time = @start ? timelocal( 0, 0, 0, $start[2], $start[1]-1, $start[0]-1900 ) : 0;
my $end_time = @end ? timelocal( 59, 59, 23, $end[2], $end[1]-1, $end[0]-1900 ) : 0;
$form->{dr_error} = "Starting time should be before now, don't you think?" && return
if $start_time && $start_time > time();
$form->{dr_error} = 'Start date must be same day or before end date' && return
if $start_time && $end_time && $start_time > $end_time;
$form->{dr_time_low} = $start_time;
$form->{dr_time_high} = $end_time;
print STDERR "$TIME_PERIODS[$num-1]: ", scalar localtime($start_time), " -> ", scalar localtime($end_time), "\n"
if 0;
return 1;
}
#----------------------------------------------------------------------------
sub show_date_input {
my ( $CGI, $name ) = @_;
$name = "dr_$name";
my @months = qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/;
my $x = 1;
my %months = map { $x++, $_ } @months;
my ($mon, $day, $year) = (localtime)[4,3,5];
$year = $year + 1900;
$mon++;
my $cur_year = $year;
#$cur_year += 5;
($year,$mon,$day) = Date::Calc::Add_Delta_Days($year,$mon,$day, -28 ) if $name eq 'start';
my $str = join "\n",
$CGI->popup_menu(
-name => "${name}_mon",
-values => [1..12],
-default => $mon,
-labels => \%months
),
' ',
$CGI->popup_menu(
-name => "${name}_day",
-default => $day,
-values => [1..31],
),
' ',
$CGI->popup_menu(
-name => "${name}_year",
-default => $year,
-values => [reverse ($cur_year-8..$cur_year) ],
);
return $str;
}
#----------------------- ymd_to_unix --------------------------
# Silly Date::Calc
sub ymd_to_unix {
my ($y, $m, $d ) = @_;
$m--;
$y -= 1900;
return timelocal( 0, 0, 0, $d, $m, $y );
}
1;
=back
=head1 COPYRIGHT
Copyright 2001 Bill Moseley
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=cut
/code
Voici ce que je souhaite :
Modifier le libéllé "Select Date Range" pour qu'il devienne "Plage dates", le truc c'est que lorsque j'ai éssayé j'ai eu des erreurs que je ne parviens pas à résoudre... A l'origine, dans un autre programme (swish.cgi), lorsque l'on coche le bouton radion "Select Date Range" alors on choisi deux intervalles de dates pour effectuer une recherche. Mais je souhaite que ce bouton radion ai pour libéllé "Plages dates" plutot que "Select Date Range" or le libéllé de ce bouton radio ne se trouve pas dans ce programme mais dans ce module ci. (Suis je assez claire... :-/)
Merci de votre aide!!
20 mai 2008 à 21:40
normalement tu dois modifier tous les occurrences de
"Select Date Range" avec "Plage dates" et ça doit marcher