Sorted-Controller-Helper: Spaltentitle nicht direkt in make_sorted() übersetzen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 5 Sep 2012 07:18:45 +0000 (09:18 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 5 Sep 2012 07:18:45 +0000 (09:18 +0200)
Hintergrund ist der, dass ansonsten die Übersetzung nur einmal
passiert, nämlich dann, wenn das Modul compiliert wird. Für normales
CGI funktioniert das:

- Zuerst wird der Dispatcher geladen und ausgeführt. Der analysiert
  zur Laufzeit die GET-/POST-Parameter und lädt erst dann den
  erforderlichen Controller mittels "require".
- Sprich Dispatcher hat schon das für den Benutzer notwendige
  $::locale-Objekt angelegt, und die Compilezeit des Controller-Moduls
  liegt danach.

Für FastCGI würde das kaputt gehen:

- Zuerst wird der Dispatcher geladen und ausgeführt. Der analysiert
  zur Laufzeit die GET-/POST-Parameter und lädt erst dann den
  erforderlichen Controller mittels "require".
- Nach Beenden des Requests bleibt das Modul aber im Speicher.
- Beim nächsten Request auf denselben Controller wurde dieser bereits
  compiliert, und die Titel wären bereits übersetzt -- in der Sprache
  des Benutzers, der den Controller seit Start des FastCGI-Prozesses
  das erste Mal aufgerufen hat.

SL/Controller/BackgroundJob.pm
SL/Controller/BackgroundJobHistory.pm
SL/Controller/Helper/Sorted.pm
SL/Template/Plugin/L.pm

index f80f57a..bddb308 100644 (file)
@@ -26,12 +26,12 @@ __PACKAGE__->make_paginated(ONLY => [ qw(list) ]);
 __PACKAGE__->make_sorted(
   ONLY         => [ qw(list) ],
 
-  package_name => $::locale->text('Package name'),
-  type         => $::locale->text('Execution type'),
-  active       => $::locale->text('Active'),
-  cron_spec    => $::locale->text('Execution schedule'),
-  last_run_at  => $::locale->text('Last run at'),
-  next_run_at  => $::locale->text('Next run at'),
+  package_name => 'Package name',
+  type         => 'Execution type',
+  active       => 'Active',
+  cron_spec    => 'Execution schedule',
+  last_run_at  => 'Last run at',
+  next_run_at  => 'Next run at',
 );
 
 #
index 5992dc0..3e11106 100644 (file)
@@ -26,11 +26,11 @@ __PACKAGE__->make_paginated(ONLY => [ qw(list) ]);
 __PACKAGE__->make_sorted(
   ONLY         => [ qw(list) ],
 
-  package_name => $::locale->text('Package name'),
-  run_at       => $::locale->text('Run at'),
-  status       => $::locale->text('Execution status'),
-  result       => $::locale->text('Result'),
-  error        => $::locale->text('Error'),
+  package_name => 'Package name',
+  run_at       => 'Run at',
+  status       => 'Execution status',
+  result       => 'Result',
+  error        => 'Error',
 );
 
 #
index ca8a565..d8d3335 100644 (file)
@@ -277,6 +277,9 @@ Required. A user-displayable title to be used by functions like the
 layout helper's C<sortable_table_header>. Does not have a default
 value.
 
+Note that this string must be the untranslated English version of the
+string. The titles will be translated whenever they're requested.
+
 =item * C<model>
 
 Optional. The name of a Rose database model this sort index refers
index b3eaac9..fd99614 100644 (file)
@@ -591,7 +591,7 @@ sub sortable_table_header {
   my $by_spec             = $sort_spec->{$by};
   my %current_sort_params = $controller->get_current_sort_params;
   my ($image, $new_dir)   = ('', $current_sort_params{dir});
-  my $title               = delete($params{title}) || $by_spec->{title};
+  my $title               = delete($params{title}) || $::locale->text($by_spec->{title});
 
   if ($current_sort_params{by} eq $by) {
     my $current_dir = $current_sort_params{dir} ? 'up' : 'down';