AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [php]: Sprachpakete sinnvoll organisieren
Thema durchsuchen
Ansicht
Themen-Optionen

[php]: Sprachpakete sinnvoll organisieren

Ein Thema von yankee · begonnen am 17. Feb 2006 · letzter Beitrag vom 17. Feb 2006
Antwort Antwort
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#1

[php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 04:17
Hi @ll,

ich arbeite gerade an einem fuer meine Verhaeltnisse grossem php-Projekt. D.h. ca. 180KB php-Dateien (klingt wenig, aber tippt mal 180KB ).
Ich habe mir jetzt ueberlegt das Projekt sprachunabhaengig zu machen. Erstmal habe ich mir also angeguckt wie andere es machen. D.h. ich habe mir eigentlich viel mehr angeguck, wie das bei phpbb laeft. Einfach eine grosse Datei mit einem assoziativen Array und alle an Text drin. Das ist recht praktisch, weil bestimmte arrayitems auch wieder arrays sein koennen, ueber die ich drueber iterieren kann. Oder an stellen, wo ich bei mysql einen enum als Typ hatte, habe ich jetzt eben einen int und ein unterarray in meinem spracharray sind dann die Optionen und so komme ich sehr einfach an die zugehoerige Sprachausgabe.
Mittlerweile ist die Sprachdatei jedopch schon recht gross geworden. Also bis jetzt sind es zwar nur 14KB, aber ich bin mit der Umstellung noch nicht fertig. Viele Texte sind immernoch "hardgecodet".
Jetzt bekomme ich Strukturierungsprobleme. Ich weiss nichtmehr genau was wo ist, ob ich gewisse allgemeine ausdruecke wie "Ja" und "Nein" schon habe, welche items in dem array ich eigentlich garnichtmehr verwende, weil ich es mir anders ueberlegt habe, wo ich zuletzt was dran geaendert habe usw.
Weiteres Problem ist, dass mein Projekt immernoch waechst. Ich mache das deutsche und das englische Sprachpaket, ein Freund von mir macht ein franzoesisches und ein anderer Freund macht ein italienisches. Da muss zwischen uns die Kommunikation natuerlich auch noch klappen. Ich aendere etwas an den scripten und alle sprachpakete muessen angepasst werden. Dafuer ist es aber eben sehr wichtig dass ich den Ueberblick ueber meine Sprachdateien halte.

Alles in eine Datei erscheint mir ploetzlich nichtmehr so gut. Vielleicht doch besser jedes php-Script eine eigene includedatei?
Also eine include fuer so Sachen wie die "enums", ja und nein (aslo was man staendig braucht) und ein include fuer jedes einzelne script nochmal? Das waere doch bestimmt auch performancemaessig beser, oder? Was sagt ihr dazu?
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 07:49
schau mal bei google nach, für PHP gibts es auch gnugettext
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 07:51
http://www.php.net/gettext
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von mh166
mh166

Registriert seit: 14. Nov 2004
Ort: Chemnitz
443 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 10:05
http://www.phpbar.de/w/Gettext

mfg, mh166
Tiefgründige Sätze unserer Zeit:
Zitat von Luckie:
Und diesen Token zur Laufzeit zu modifizieren würde bedeuten, dass du zur laufzeit das Token ändern musst.
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#5

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 10:11
mhh... ich habe gerade mal ein bisschen in der gettext-manual rumgelesen. Eigentlich eine gute Idee, aber andererseits sieht es auch nicht viel anders als ein stark angepasster assoziativer php-Array. Trotzdem haette ich den Nachteil, dass ich keine Unterarrays haben kann, ueber die ich so schoen mit foreach iterieren kann...
Ist das also sinnvoll?
Einfach zu erstellen sind die Dateien ja... Einmal die php-datei erstellen und dann eine Vorlage generieren lassen ist natuerlich praktisch...
*voellig hin und hergerissen*
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 10:20
Zitat:
Trotzdem haette ich den Nachteil, dass ich keine Unterarrays haben kann, ueber die ich so schoen mit foreach iterieren kann...
Wobei nutzt Du die? um eine Combobox zu füllen?
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von mh166
mh166

Registriert seit: 14. Nov 2004
Ort: Chemnitz
443 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 11:15
Naja, ich hab mich jetzt nich soo damit befasst, aber was hälst du von ner Wrapper-Unit? Also praktisch eine Datei, in der aus den einzelnen Dateien die jeweilige Sprache eingelesen und in ein Array geschrieben wird, dass du dann verwendest. Also praktisch so:
Code:
<?php
// Ort der Überetzungstabellen angeben
bindtextdomain("allgemein", "./locale");
bindtextdomain("umfrage", "./locale");
bindtextdomain("admin", "./locale");
textdomain("test");

$sprachen["allgemein"]["ja"]  = gettext("ja");
$sprachen["allgemein"]["nein"] = gettext("nein");
$sprachen["allgemein"]["form"]["senden"]  = gettext("senden");
$sprachen["allgemein"]["form"]["vorschau"] = gettext("vorschau");
// ...
textdomain("umfragen");
$sprachen["umfragen"]["abstimmen"] = gettext("abstimmen");
$sprachen["umfragen"]["ergzeig"]  = gettext("ergzeig");
?>
Ich hoffe du verstehst, was ich meine. Das du also schon gettext verwendest. Dann lagerst du jede "Gruppe" in ne Datei aus (oder auch nich, aber is sicher übersichtlicher) und am Ende kannste dir das Array selber zusammenfriemeln. So ergibt sich zwar ein etwas erhöhter Aufwand (weil ja jeweils noch die Wrapper-Unit angepasst werden muss) aber das wird dann ja durch eine wesentlich bessere Übersicht wieder wett gemacht.

Ansonsten wäre ne andere Möglichkeit auch das Ganze in ne XML-Datei zu hauen. Brauchst dann nur noch ein Parser, der da durch rennt und mitdessenhilfe du dann das Ganze in ein Array schmeist. Dann haste auch deine Subarrays gleich so drin und das Ganze komplett ohne weiteren Wartungsaufwand für die Wrapperklasse.
Wobei man hier dann auch einfach nur ne Funktion schreiben könnte, die dann einen XPath übergeben bekommt. Das wäre sicherlich weniger schreibaufwand, als das mit Arrays der Fall wäre. Wobei dann hier jedesmal bei nem String die komplette Datei geparst werden würde, was zu Performanceverlusten führen kann.

Hat halt alles Vor- und Nachteile. Suchs dir raus, was du machst.

mfg, mh166
Tiefgründige Sätze unserer Zeit:
Zitat von Luckie:
Und diesen Token zur Laufzeit zu modifizieren würde bedeuten, dass du zur laufzeit das Token ändern musst.
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#8

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 13:50
Zitat von sh17:
Wobei nutzt Du die? um eine Combobox zu füllen?
Das waere ein gutes Beispiel...

Zitat von mh166:
Naja, ich hab mich jetzt nich soo damit befasst, aber was hälst du von ner Wrapper-Unit? Also praktisch eine Datei, in der aus den einzelnen Dateien die jeweilige Sprache eingelesen und in ein Array geschrieben wird, dass du dann verwendest.:
Code:
<?php
[..]
$sprachen["allgemein"]["ja"]  = gettext("ja");
[..]
aehm... naja, das koennte ich dann wirklich gleich
Code:
<?php
[..]
$sprachen["allgemein"]["ja"]  = "ja";
[..]
schreiben und eien Datei fuer jede Sprach erstellen. Wenn ich schon gettext nehme, dass natuerlich um den assoziativen Array dabei los zu werden. Und dann kann ich gettext("ja") auch direkt im qt aufrufen und muss nicht ueber den Array gehen.

Aber so naeher ich mir das ansehe, je mehr sieht gettext fuer mich nach nichts anderem aus, als ein normaler assoziativer array. Ich habe zwar in der Manual irgendwas davon gelesen, dass man mit gettext auch ein Datum oder Zahlen gleich entsprechend formatieren kann, aber ich finde nicht heraus wie...

Also WO waere der Vorteil von gttext vs. php-associativer array???
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 14:13
Zitat:
Also WO waere der Vorteil von gttext vs. php-associativer array???
- Du musst Dich nicht um die Verwaltung kümmern.

Sprache aktivieren, fertig.

Du schreibst in Deiner PHP-Datei immer nur deutsch, entweder eine Übersetzung ist da, oder der deutsche Wert kommt zurück.

- Du hast nur die Werte in der po-Datei, die übersetzt werden müssen. Textleichen gibts es nicht.

- Du kannst weltweit übersetzte po-Dateien einsammeln und als Quell-Basis für neue Übersetzungen nutzen


zurück zum Beispiel Combobox ()

<select name="bal">
<option>gettext("Du")
<option>gettext("Ich")
<option>gettext("Er")
<option>gettext("Sie")
</select>

einfacher gehts nicht, oder?
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von mh166
mh166

Registriert seit: 14. Nov 2004
Ort: Chemnitz
443 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

Re: [php]: Sprachpakete sinnvoll organisieren

  Alt 17. Feb 2006, 14:48
Zitat von yankee:
aehm... naja, das koennte ich dann wirklich gleich
Nunja... Jetzt wo dus sagst... http://klassenfeind.org/board/images.../whistling.png Tja, im Eifer des Gefechts... http://klassenfeind.org/board/images/smiles/blush.png

mfg, mh166
Tiefgründige Sätze unserer Zeit:
Zitat von Luckie:
Und diesen Token zur Laufzeit zu modifizieren würde bedeuten, dass du zur laufzeit das Token ändern musst.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.
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