Hallo,
da ich nichts Vergleichbares gefunden habe, poste ich mal.
Zuerst die Ursache des Problems:
Eine Community in 4 Sprachen. Alle festen Texte werden aus Sprachdateien geholt.
In einige dieser Fest-Texte müssen jedoch variable Inhalte eingefügt werden, z.B. Alter, Geschlecht usw.
Dadurch, dass verschiedene Sprachen nunmal eine unterschiedliche Syntax im Satzbau verwenden, sehe ich darin ein Problem und finde keine Lösung. (Da ich die Sätze ja nicht aus einzelnen Wörtern bilden kann.)
Angenommen, ich möchte folgenden Satz ausgeben:
"ADco ist 97 Jahre alt, männlich und wohnt in einer eigenen Wohnung. Zu seinen Hobbys zählen blah, blah und blah."
In der Sprachdatei müsste die Variable für diesen Satz also so aussehen:
$VTXT[1]="$nick ist $alter Jahre alt, $geschlecht und wohnt $wohnart. Zu seinen Hobbys zählen $hobbys."
Wäre es nur dieser eine Satz, oder wären es Sätze, die eine Konstante Anzahl variabler Inhalte haben, könnte man das vermutlich mit einer einfachen Funktion lösen, z.B. so o. s.ä.:
function MachSatz($txtVar, $alter, $geschlecht, $wohnart, $hobbys) {
global $VTXT;
$derSatz=$VTXT[$txtVar];
return $derSatz;
}
Ich weiß jetzt nicht, ob die Variablen in dem Text in diesem Fall noch durch Werte ersetzt werden, oder ob man sie zuerst escapen müsste. Notfalls könnte man sie ja auch anders innerhalb des Satzes nennen, z.B. [alter], [geschlecht] usw. und sie dann mit einem RegEx durch die an die Funktion übergebenen Variablenwerte ersetzen. Aber das spielt jetzt mal keine Rolle.
Das Problem an sich ist, dass es zig verschiedene Sätze sein können. Der eine Satz kann 3 variable Inhalte haben, der andere 10, ein ganz anderer wiederum gar keine.
Somit kommt eine Funktion nicht infrage. Wie kann ich das also sinnvoll lösen?
Wäre schön, wenn es nur an meiner nächtlichen Umnebelung liegt, dass mir keine Lösung einfällt
ADco
da ich nichts Vergleichbares gefunden habe, poste ich mal.
Zuerst die Ursache des Problems:
Eine Community in 4 Sprachen. Alle festen Texte werden aus Sprachdateien geholt.
In einige dieser Fest-Texte müssen jedoch variable Inhalte eingefügt werden, z.B. Alter, Geschlecht usw.
Dadurch, dass verschiedene Sprachen nunmal eine unterschiedliche Syntax im Satzbau verwenden, sehe ich darin ein Problem und finde keine Lösung. (Da ich die Sätze ja nicht aus einzelnen Wörtern bilden kann.)
Angenommen, ich möchte folgenden Satz ausgeben:
"ADco ist 97 Jahre alt, männlich und wohnt in einer eigenen Wohnung. Zu seinen Hobbys zählen blah, blah und blah."
In der Sprachdatei müsste die Variable für diesen Satz also so aussehen:
$VTXT[1]="$nick ist $alter Jahre alt, $geschlecht und wohnt $wohnart. Zu seinen Hobbys zählen $hobbys."
Wäre es nur dieser eine Satz, oder wären es Sätze, die eine Konstante Anzahl variabler Inhalte haben, könnte man das vermutlich mit einer einfachen Funktion lösen, z.B. so o. s.ä.:
function MachSatz($txtVar, $alter, $geschlecht, $wohnart, $hobbys) {
global $VTXT;
$derSatz=$VTXT[$txtVar];
return $derSatz;
}
Ich weiß jetzt nicht, ob die Variablen in dem Text in diesem Fall noch durch Werte ersetzt werden, oder ob man sie zuerst escapen müsste. Notfalls könnte man sie ja auch anders innerhalb des Satzes nennen, z.B. [alter], [geschlecht] usw. und sie dann mit einem RegEx durch die an die Funktion übergebenen Variablenwerte ersetzen. Aber das spielt jetzt mal keine Rolle.
Das Problem an sich ist, dass es zig verschiedene Sätze sein können. Der eine Satz kann 3 variable Inhalte haben, der andere 10, ein ganz anderer wiederum gar keine.
Somit kommt eine Funktion nicht infrage. Wie kann ich das also sinnvoll lösen?
Wäre schön, wenn es nur an meiner nächtlichen Umnebelung liegt, dass mir keine Lösung einfällt
ADco
Kommentar