Jump to content

[gelöst] - Verständnisprobleme Architektur für Textbausteine


Recommended Posts

Hallo,

ich bin relativ neu in PHP drinnen und komme gerade nicht weiter, was die Internationalisierung betrifft.

Was bedeutet folgender Smarty-Befehl?

{l s='Contact us'}

Ich denke, dass l für Language steht und s für standard. Ist dies so? Wenn ich auf Englisch die Locale stehen habe, dann wird immer der Text in Hochkommatas angezeigt, aber wenn ich auf französisch schalte, ist glaube ich der Text 'Contact us' so eine Art Key?

Stimmt das? Wo kann ich den französischen Text finden? Ich kann den weder in einem File noch in der Datenbank finden. Ist das einkompiliert? Wo?

Beispiel: Ich rufe URI: http://localhost/prestashop/order-slip.php?id_lang=1

Hier sehe ich in Englisch (id_lang=1) den Text canceled orders (der hardgecoded) im TPL File steht. Rufe ich aber
http://localhost/prestashop/order-slip.php?id_lang=2 (französisch) auf, steht da 'annulations de commandes', nur finde ich diesen Text (auch einzeln z.B. nur commandes) nirgends in einer Datei.

Kann mir bitte einer erklären, wie das applikationstechnisch abläuft?

Link to comment
Share on other sites

Hallo,

du solltest da gar nichts verändern ;) Es gibt im Adminbereich ein Übersetzungstool (Einstellungen->Übersetzungen), damit lässen sich alle solche Ausdrücke in jede installierte Sprache übersetzen. Der Ausdruck {l s=‘Contact us’} bedeutet nur, dass an dieser Stelle eine neue Sprachvariable ezeugt wird mit dem Defaultwert Contact us auf Englisch. Sollte für diesen Ausdruck keine Entsprechung existieren, wird auch der Defaultwert ausgegeben.

Der Ausdruck "annulations de commandes", genau wie jeder andere Ausdruck in dieser Anwendung wurde also über diese Tool angelegt.

s steht denke ich für "string".

Gruß

Link to comment
Share on other sites

Super, vielen Dank!

Wo aber ist das dann gespeichert und wie (in welchem Format)?
Mich interessiert das einfach.

Ist die Anweisung {s l='XYZ'} Smarty-spezifisch oder eine Erweiterung von Smarty?

Danke schon einmal für etwaige Antworten im Voraus!

Link to comment
Share on other sites

Hallo,
die übersetzten Strings werden in den Dateien en.php, fr.php und de.php (und anderen länderspezifischen Kennungen gespeichert). Sie befinden sich sich in jedem Modulorder under /modules, in den Mails und im Themaordner /theme/[dein themt]/lang

Gruß

Link to comment
Share on other sites

Ganz kurz noch eine kleine Verständnisfrage.

Wenn ich einen neuen Textbaustein einbauen möchte, dann muss ich immer einen "Pseudo-Englisch-Key" anlegen?

also ich möchte neuen Text FC Bayern München, dann mache ich das so:

{l s="team.xyz"} im Template und im Back-Office gebe ich für team.xyz = FC Bayern München ein.

Geht nur so oder gleich, was ich nicht möchte, hardgecoded im Template.
Anders geht es nicht ohne den englischen "Pseudo-Key" - zumindest habe ich das jetzt so verstanden.

Danke schon einmal für etwaige Antworten im Voraus.

Edit: OK, hat sich erledigt, ich stelle dann einfach die Default-Language auf Deutsch! Trotzdem danke nochmal für die Hilfe!

Link to comment
Share on other sites

ja, so ist es sauberer.

{l s="my default string for the english shop version" mod="mymodule"}

die Englische Variable erschein dann, wenn der Shop mehrsprachig ist als Defaultwert. Kann aber in der englischen Übersetzung nachträglich übersetzt werden. den Wert "mod" nicht vergessen, wenn die Variable modulbezogen ist, dann erschein sie entsprechend in der Modulübersetzung.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...