• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Sprachdateien

Bieber

New member
Abend,

ich will eine Anwendung erstellen, die in mehreren Sprachen laufen soll. Durch den Einsatz einer Template-Engine ist das meiste eigentlich schon erledigt... Wenn eine andere Sprache gewünscht wird, wird einfach ein anderes Template genommen.

Nun gibt es aber auch viele interne Funktionen (wie z.B. sende den Nutzer eine Email) die auch sprachabhängige Texte enthalten. Wie bindet man sowas am Besten ein? Eine php-Datei mit Spachvariablen oder sowas finde ich blöd, da die Sprachdateien eventuell von "unbekannten Personen" bearbeitet werden; wenn es php Dateien wären und die dann inkludiert werden, könnte ja sonst was für Mist drin stehen.

Bei Joomla habe ich mir die Sprachdateien mal angeschaut, dort sind es Textdateien die in etwa so aussehen:

TITLE=ich bin der deutsche Titel
SIG=ich bin die deutsche Signatur
...

leider habe ich nicht gefunden wie das nun alles geparst wird... ich will ungern selbst etwas Schreiben wenn es eh schon 100 gute Lösungen gibt.

Hat jm. eine entsprechende OpenSource-Lösung parat, oder kann mir Literatur empfehlen die sich mit der Sache beschäftigt?

PS gettext ist keine Option für mich, da ich nichts zusätzlich auf dem Server installieren will
 
ich habe doch noch mal ne Frage^^

wenn ich eine ini-Dateien parse, werden mir die Texte der Datei als single-quotes geliefert, ich bräuchte aber double-quotes damit ich Zeilenumbrüche mit \n darstellen kann (z.B. für Mails)

z.B.:
Code:
 this file contains mail information

; generatePwd
subjectGeneratePwd  = "Passwort "
messageGeneratePwd  = "Ihr neues Passwort lautet:"
message2GeneratePwd = "\n\nSie können das Passwort dann im Profilbereich ändern. \n\nMit freundlichen Grüßen"

Code:
 $mail = parse_ini_file("language/"._LANG."/mails.ini");
	  $subject = $mail['subjectGeneratePwd'];
	  $message = $mail['messageGeneratePwd'] . $mail['message2GeneratePwd'];
mail(...);

In der Email kommt dann als Textanzeige \n an... wie kann ich das umwandeln? Sprich eine Konvertierung eines single-quotes-string auf double-quotes machen?
 
Das Verhalten wurde ab php 5.3 umgestellt, ab da werden \n als newlines interpretiert. Wenn du das nicht einsetzen willst/kannst kommst du um eine Lösung wie junkees nicht rum
 
mhh, ich dachte auf meinen Testserver hatte ich php 5.3 ... naja schaue ich mir Morgen noch mal an

@Junkee danke, irgendwie übersehe ich momentan die einfachsten Lösungen, ich denke an vielen Stellen einfach zu kompliziert
 
mhh, also die PHP-Version ist 5.3.3-7

und die Variante von Junkee funktioniert leider auch nicht :-(

edit: selbst wenn ich die Zeilenumbrüche in der ini-Datei mache funktioniert es nicht:
Code:
message2GeneratePwd = "

Sie können das Passwort dann im Profilbereich ändern. 

Mit freundlichen Grüßen"
 
Zuletzt bearbeitet:
Getestet mit PHP 5.3.2

test.ini schrieb:
[foo]
bar = "hello\nWorld!"
baz[] = "moo\nzoo"
baz[] = "hola\nthere!"

PHP:
function fixNewlines($element) {
    if(is_array($element))
        return array_map('fixNewlines', $element);
    elseif(is_string($element))
        return str_replace('\n', "\n", $element);
    return $element;
}

$ini = parse_ini_file('test.ini', true);
$ini = array_map('fixNewLines', $ini);

echo '<pre>' . print_r($ini, true) . '</pre>';

Output:
Code:
Array
(
    [foo] => Array
        (
            [bar] => hello
World!
            [baz] => Array
                (
                    [0] => moo
zoo
                    [1] => hola
there!
                )

        )

)

funktioniert.
Wenn man keine Sections/Arrays verwendet kann man das noch vereinfachen.
 
Zuletzt bearbeitet:
Zurück
Oben