suliko: Mehrspachigkeit in HTML

Hallo Leute,

ich möchte gerne eine Funktion schreiben, die meine Textvariablen in einer bestimmten Sprache initialisiert und auf die Variablen kann man dann über mehrere CGI-Codes zugreifen.

Beispiel:

Die Funktion "initTextVars (de);" initialisiert die zwei Variablen:

  
sub initTextVars () {  
  
 VAR_A = setText (120, $_[0]); # in der Variable steht dann z.B. der Text "Guten Morgen!"  
 VAR_B = setText (128, $_[0]); # in der Variable steht dann z.B. der Text "Guten Tag!"  
  
};  

und das passiert in der Datei "index.cgi". Dann später möchte ich die beiden Variablen in einer anderen neue_datei.cgi benutzen und zwar so, dass ich die Variablen nicht als Parameter übergeben bekomme. Quasi ein globale Initialisierung. Aber ich weiss es leider nicht, wie man sowas macht.

Danke

ps: ich verwende Perl 5.6.1

  1. und das passiert in der Datei "index.cgi". Dann später möchte ich die beiden Variablen in einer anderen neue_datei.cgi benutzen und zwar so, dass ich die Variablen nicht als Parameter übergeben bekomme. Quasi ein globale Initialisierung. Aber ich weiss es leider nicht, wie man sowas macht.

    Das klingt so, als ob du ein Modul schreiben möchtest.

    Struppi.

    1. Das klingt so, als ob du ein Modul schreiben möchtest.

      Ok, Modul. Aber die Variablen? Wie sollen sie angelget werden? Etwas so:

      Textinits.pm

        
        
      package Textinits;  
        
      require 5.6.0;  
        
      use CGI::Carp qw(fatalsToBrowser);  
      use strict;  
        
      #...  
        
      sub initTextVars () {  
        
       use constant VAR_A => setText (120, $_[0]); # in der Variable steht dann z.B. der Text "Guten Morgen!"  
       use constant VAR_B => setText (128, $_[0]); # in der Variable steht dann z.B. der Text "Guten Tag!"  
        
        
      };  
        
      
      

      oder so:

        
        
      package Textinits;  
        
      require 5.6.0;  
        
      use CGI::Carp qw(fatalsToBrowser);  
      use strict;  
        
      #...  
        
      sub initTextVars () {  
        
       our VAR_A = setText (120, $_[0]); # in der Variable steht dann z.B. der Text "Guten Morgen!"  
       our VAR_B = setText (128, $_[0]); # in der Variable steht dann z.B. der Text "Guten Tag!"  
        
      };  
        
      
      
      1. Das klingt so, als ob du ein Modul schreiben möchtest.

        Ok, Modul. Aber die Variablen? Wie sollen sie angelget werden? Etwas so:

        kommt darauf an was du konkret willst. Da globale Variabeln unerwünscht sind, würde ich höchstens die Funktion exportieren oder einfach direkt auf diese Zugreifen Textinits::getVar('A');

        package Textinits;  
          
        my %lng;  
        sub initTextVars () {  
        $lng{A} = setText (120, $_[0]); # in der Variable steht dann z.B. der Text "Guten Morgen!"  
        $lng{B} = setText (128, $_[0]); # in der Variable steht dann z.B. der Text "Guten Tag!"  
          
        }  
          
        sub getVar{  
        return $lng{$_[0]} || $_[0];  
        }  
        
        

        Struppi.

        1. kommt darauf an was du konkret willst.

          Einmal initialisieren und dann in jedem Script ohne Weitergabe via Querystring verwenden war doch die Aufgabe, oder? Da hilft auch ein Modul nicht wirklich weiter, dann müssten es schon Cookies sein. Oder Content Negotiation.

          Siechfred

          1. Einmal initialisieren und dann in jedem Script ohne Weitergabe via Querystring verwenden war doch die Aufgabe, oder? Da hilft auch ein Modul nicht wirklich weiter, dann müssten es schon Cookies sein. Oder Content Negotiation.

            So sieht's aus, das hatte ich falsch verstanden.

            Struppi.

            1. Hi

              So sieht's aus, das hatte ich falsch verstanden.

              nö IMHO falsch erklärt und ein elendiges Doppelposting dazu: http://board.perl-community.de/thread/12692/#MSG2

              Over and out
                Lanx