Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Mehrsprachige Seiten erstellen (https://www.delphipraxis.net/129537-%5Bphp%5D-mehrsprachige-seiten-erstellen.html)

TheMiller 20. Feb 2009 21:34


[PHP] Mehrsprachige Seiten erstellen
 
Hallo,

ich habe ein kleines Problem. Ich möchte meine Webseite mehrsprachig aufbauen. Es werden einige Text-Strings benötigt. Deswegen wollte ich keine Datenbank, sondern eine Include-Datei benutzen (aus performancegründen).

Doch nun bekomme ich ein Problem mit dem Aufbau. Ich habe die ganz normale Datei, die im Browser geöffnet ist, diese öffnet selbst noch eine Funktionen-PHP-Datei und zurvor die Sprachdatei. Das sieht so aus:

Code:
<?php
include("languages/de.php");
include("funktionen.php");
?>

<html>
 <body>
  <?php echo $lang[0]; ?>
  <?php eineFunktion(); ?>
 </body>
</html>
Das ist die Sprachdatei

Code:
# $lang[0] - $lang[100] = Startseite
# $lang[100] - $lang[200] = Übersicht
# $lang[1000] - $lang[1100] = Funktion-Ausgaben
# $lang[1200] - $lang[1300] = Fehlermeldungen

$lang[0] = 'Willkommen auf der Webseite';
 u.s.w
Nun bekomme ich wunderbar die Strings angezeigt. Nur wenn ich in der "Funktionen.php" einen Sprachstring benötige (da ist ja immer ein bissl Layout dabei), bekomme ich ihn nicht angezeigt. Ein var_dump sagt nur NULL. Was mache ich denn nun?

Noch eine Frage: Ist es schlimm, dass mein Array so groß wird, weil ich so große Bereiche definiere? Ich habe einen Root-Server. Oder ist das egal, so lange da nichts drinsteht?

Danke und Grüße

Matze 20. Feb 2009 21:39

Re: [PHP] Mehrsprachige Seiten erstellen
 
Hi,

Größenprobleme gibt's keine. Das phpBB macht es beispielsweise genau mit diesen Sprachdateien (ich ebenfalls). Ich muss allerdings in den Dateien, die aufs Array zugreifen ein

Code:
global $lang;
einfügen. Frag mich nicht wieso, aber damit geht's bei mir dann.

An deiner Stelle würde ich aber vernünftige Array-Indizes wählen, um den Code lesbar zu halten. Beispielsweise so:

Code:
$lang['err_invalid_email'] = 'Ungültige E-Mail-Adresse';
Grüße, Matze

TheMiller 20. Feb 2009 21:43

Re: [PHP] Mehrsprachige Seiten erstellen
 
Mit den Array-Namen hast du recht.

Sollte man das global nicht besser unterlassen, oder das das nicht mit register_globals zu tun?

Wo muss ich das Global hinsetzen? Kannte es bis eben nicht ;)

Matze 20. Feb 2009 21:45

Re: [PHP] Mehrsprachige Seiten erstellen
 
Das kannst du beispielsweise nach dem Einbinden der Funktion platzieren. Und nein, "register_globals" macht etwas ganz anderes. Das legt eine Variable an, wenn du Parameter übergibst. Beispielsweise bei einer URL wie "...&id=5" wird die Variable "id" angelegt und der Wert 5 zugewiesen, wenn ich mich nicht irre.

Edit: PHP: global

Grüße

TheMiller 20. Feb 2009 21:52

Re: [PHP] Mehrsprachige Seiten erstellen
 
Hm...

ich habe in der Sprachdatei am Ende

global $fkt;

geschrieben. Das hat in der anderen include-Datei nicht funktioniert. Dann habe ich in der Haupt-PHP-Datei nach dem Inkludieren der Sprachdatei gloabl $fkt; aufgerufen. Das hat auch nicht funktioniert. Mache ich da was falsch?

RoterKasten: So habe ich es gemacht - geht trotzdem nicht. Scheint doch nur mit register_globals zu funktionieren.

Matze 20. Feb 2009 21:55

Re: [PHP] Mehrsprachige Seiten erstellen
 
Zitat:

Zitat von DJ-SPM
Scheint doch nur mit register_globals zu funktionieren.

Nope, das habe ich bei meiner privaten Seite deaktiviert und es geht dennoch.

Also dann muss ich passen. Bei mir geht es so. Aber es wäre interessant zu wissen, wieso es nur mit "global" geht. Hätte nämlich erwartet, dass es auch ohne geht.

Grüße, Matze

TheMiller 20. Feb 2009 21:58

Re: [PHP] Mehrsprachige Seiten erstellen
 
Also,

in meiner funktion.php kann ich außerhalb von Funktionen auf $fkt[0] zugreifen. Nur innerhalb halt nicht - das bringt mir ja irgendwie in einer funktionen.php nix ;)

Auch wenn ich an den Anfang der funktionenphp global $fkt; schreibe, ändert dies nix.

himitsu 20. Feb 2009 22:00

Re: [PHP] Mehrsprachige Seiten erstellen
 
muß man das Global nicht immer machen, wenn man auf "normale" Funktions-externe-Variablen zugreifen will?

ohne global wird funktions-intern nach $lang gesucht und das ist ja leer (existiert nicht).


und global muß am Anfang in die/alle Funktion(en) rein, wo du auf die Variable zugreifen willst.

Zitat:

Auch wenn ich an den Anfang der funktionenphp global $fkt; schreibe, ändert dies nix.
wie gedagt, nicht das GLOBAL "global" in die Datei schreiben, sondern "lokal" in die Funktion(nen)

TheMiller 20. Feb 2009 22:02

Re: [PHP] Mehrsprachige Seiten erstellen
 
Tatsache... das Funktioniert. Ich danke euch beiden für die schnelle und gute Hilfe!

Ich bin begeistert!

himitsu 20. Feb 2009 22:11

Re: [PHP] Mehrsprachige Seiten erstellen
 
PS:
selfphp > Gültigkeitsbereiche und Sichtbarkeit von Variablen

php::bar > global


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz