From e7cb77c38201a379f7a781e1acdd1355a472ad4d Mon Sep 17 00:00:00 2001 From: "gerv%gerv.net" <> Date: Sat, 27 Jul 2002 03:39:14 +0000 Subject: Bug 106640 - allow translation of system messages. Patch by gerv; r=burnus. --- CGI.pl | 21 ++++++++------- template/en/default/global/code-error.html.tmpl | 36 +++++++++++++++++++++++-- template/en/default/global/user-error.html.tmpl | 33 +++++++++++++++++++++-- 3 files changed, 77 insertions(+), 13 deletions(-) diff --git a/CGI.pl b/CGI.pl index 4dfc772e8..d3ca9f8f9 100644 --- a/CGI.pl +++ b/CGI.pl @@ -865,7 +865,6 @@ sub PutFooter { # ThrowTemplateError instead. sub DisplayError { ($vars->{'error'}, $vars->{'title'}) = (@_); - $vars->{'title'} ||= "Error"; print "Content-type: text/html\n\n" if !$vars->{'header_done'}; $template->process("global/user-error.html.tmpl", $vars) @@ -878,11 +877,10 @@ sub DisplayError { # $vars->{'variables'} is a reference to a hash of useful debugging info. sub ThrowCodeError { ($vars->{'error'}, $vars->{'variables'}, my $unlock_tables) = (@_); - $vars->{'title'} = "Code Error"; SendSQL("UNLOCK TABLES") if $unlock_tables; - # We may optionally log something to file here. + # We may one day log something to file here. print "Content-type: text/html\n\n" if !$vars->{'header_done'}; $template->process("global/code-error.html.tmpl", $vars) @@ -892,9 +890,12 @@ sub ThrowCodeError { } # For errors made by the user. +# The correct use of this function is to pass an error tag, defined in +# user-error.html.tmpl, as the first parameter, and then, optionally, +# undef as the second parameter and $unlock_tables as the third. +# The second parameter will eventually go away. sub ThrowUserError { ($vars->{'error'}, $vars->{'title'}, my $unlock_tables) = (@_); - $vars->{'title'} ||= "Error"; SendSQL("UNLOCK TABLES") if $unlock_tables; @@ -905,18 +906,20 @@ sub ThrowUserError { exit; } -# If the template system isn't working, we can't use a template. -# This should only be called if a template->process() fails. +# This function should only be called if a template->process() fails. +# It tries another template first, because often one template being +# broken or missing doesn't mean that they all are. But it falls back on +# a print statement. # The Content-Type will already have been printed. sub ThrowTemplateError { - ($vars->{'error'}) = (@_); - $vars->{'title'} = "Template Error"; + ($vars->{'template_error_msg'}) = (@_); + $vars->{'error'} = "template_error"; # Try a template first; but if this one fails too, fall back # on plain old print statements. if (!$template->process("global/code-error.html.tmpl", $vars)) { my $maintainer = Param('maintainer'); - my $error = html_quote($vars->{'error'}); + my $error = html_quote($vars->{'template_error_msg'}); my $error2 = html_quote($template->error()); print < diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl index 4b5ac2f67..64bf5064e 100644 --- a/template/en/default/global/code-error.html.tmpl +++ b/template/en/default/global/code-error.html.tmpl @@ -21,11 +21,43 @@ [%# INTERFACE: # header_done: boolean. True if the header has already been printed. - # error: string. The error message to be printed. May contain HTML. + # error: string. The tag of the error, or the error message to be displayed + # (deprecated). May contain HTML if it's an error message. + # title: string. If error is an error message, the title (deprecated.) # variables: hash. Useful data about the problem. The keys are the variable # names, and the values the variable values. #%] +[%# This is a list of all the possible code errors. Please keep them in + # alphabetical order by error tag, and leave a blank line between errors. + #%] + +[% DEFAULT title = "Internal Error" %] + +[% error_message = BLOCK %] + [% IF error == "aaa_example_error_tag" %] + [% title = "Example Error" %] + This is an example error. The title is set above. This text is the body + of the error. It can contain arbitrary HTML, and also references + to any [% parameters %] which you may have set before calling + ThrowCodeError. + + [% ELSIF error == "another_error_tag" %] + This is another sample error, without a special title. This + should be the usual usage for this file. This sample can be removed. + + [% ELSIF error == "template_error" %] + [% template_error_msg %] + + [% ELSE %] + [%# Cope with legacy calling convention, where "error" was the string + # to print. + #%] + + [% error %] + [% END %] +[% END %] + [% UNLESS header_done %] [% PROCESS global/header.html.tmpl %] [% END %] @@ -46,7 +78,7 @@ - [% error %] + [% error_message %] diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl index f24b5293f..b9654a135 100644 --- a/template/en/default/global/user-error.html.tmpl +++ b/template/en/default/global/user-error.html.tmpl @@ -21,9 +21,38 @@ [%# INTERFACE: # header_done: boolean. True if the header has already been printed. - # error: string. The error message to be displayed. May contain HTML. + # error: string. The tag of the error, or the error message to be displayed + # (deprecated). May contain HTML if it's an error message. + # title: string. If error is an error message, the title (deprecated.) #%] + +[%# This is a list of all the possible user errors. Please keep them in + # alphabetical order by error tag, and leave a blank line between errors. + #%] + +[% DEFAULT title = "Error" %] +[% error_message = BLOCK %] + [% IF error == "aaa_example_error_tag" %] + [% title = "Example Error" %] + This is an example error. The title is set above. This text is the body + of the error. It can contain arbitrary HTML, and also references + to any [% parameters %] which you may have set before calling + ThrowUserError. + + [% ELSIF error == "another_error_tag" %] + [% title = "Another Error" %] + This is another sample error. It can be removed. + + [% ELSE %] + [%# Cope with legacy calling convention, where "error" was the string + # to print. + #%] + + [% error %] + [% END %] +[% END %] + [% UNLESS header_done %] [% PROCESS global/header.html.tmpl %] [% END %] @@ -32,7 +61,7 @@ - [% error %] + [% error_message %] -- cgit v1.2.3-24-g4f1b