Wegen der Globalen datei.
Es gibt meldungen bzw texte die auf jeder Seite vorkommen könnten, ein beispiel dafür ist "Sie werden weitergeleite, falls die weiterleitung nicht funktioniert klicken sie bitter hier" , wenn du für jede seite und sprache eine lang datei erstellst, musst du diesen string jedesmal in die datei mit rüberkopieren. da mir das zu umständlich wurde, habe ich eine Allgemeine globale sprachdatei erstellt. so dass in dieser datei , texte drin stehen , die überall erscheinen könnten. Diese Globale datei ist bei mir mittlerweile doch etwas größer geworden.
Zur MYSQL, du musst dir ja vorstellen wieviel Texte * Anzahl an Sprachen drin stehen werden. und jedesmal ein SQL Befehl an Datenbank zu schicken müsste doch viel Traffic verusachen. Außerdem sagen meine Arbeitskollegen immer:"Wenn du Performance Probleme hast, dann liegt es in den meisten Fällen an der Datenbank".
Wegen der Ini, ich denke nicht dass es Tragisch ist, wenn jemand die Sprachdateien sich ansehen kann(fand die vorstellung einfach unschön dass jemand was ansehen konnte was ich nicht nach außen zeigen wollte), zudem bin ich da einfach von ausgegangen dass parse_ini_file langsamer ist als include.
Wegen den Defines, da dachte ich mir folgendes: Defines sind ja superglobal also müssen die irgendwo abgespeichert werden und verbrauchen dadurch platz und KÖNNTEN ja die Perfomance stören. genau weis ich es nicht, verwende diese auch nicht und kenne keine Projekte die Defines als language variablen einsetzen.
getText hat für mich ein nachteil, dass ich mehr quellcode tippen kann. der Editor von gettext parst alle PHP Dateien und sucht nach _('text') aus diesen sätzen baut er satzbausteine in einer .mo bzw .po datei und mit dem editor kann man dann einzelne sätze in andere sprache übersetzen und neue .mo und .po dateien generieren. Das problem dabei ist. Dass deine Meldungen aufjedenfall dann im Quellcode stehen müssten. also sowas wie
if($account->register()){
echo $text['registerSuccess'];
}else{
foreach($account->getError() as $error){
echo $text[$error];
könnte man bei gettext nicht verwenden sondern müsste man da ein switch case einbauen und je nach fehlermeldung dann jedesmal ein echo _('fehler1') ; echo _('fehler2') und so weiter ausgeben.
hoffe es ist nun etwas verständlicher;)
MFG