Macht Smarty-Unterstützung mehrerer Sprachen
zuerst von allem, lassen Sie mich sagen, ya, ich bin aus Deutschland. Also mein Englisch ist nicht sehr gut. Bitte verzeihen Sie mir. =P
Ich bin über die Entwicklung einer mehrsprachigen website mit PHP5. Um Sie zu trennen, die Darstellungsschicht von der Geschäftslogik, ich bin mit dem SmartyTemplateEngine (v3.0.8). Um es multilingual musste ich editieren diese SmartyPlugin manchmal. Aber schließlich ist es für mich arbeiten. Ich verwende es so:
{lang}language.string{/lang}
.
In der language-Datei habe ich:
language.string = <![CDATA[Hello world!]]>
(So sagt es Hallo Welt!)
Funktioniert einwandfrei. Aber ich wollen Sie aufwenden, um das Skript ein wenig weiter. Ich möchten, übergeben Sie eine variable, um den language string. So etwas wie dieses:
{lang s=$userName}language.string{/lang}
In der language-Datei, die ich haben will:
language.string = <![CDATA[Hello %s!]]>
(So sagt es Hallo Benutzername!)
Versuchte ich zu finden, meine Lösung mit Google, aber ich didn ' T finden etwas gutes. Soweit bin ich kein Profi in PHP bin ich nicht in der Lage, es zu editieren, mich. Ich hoffe, jemand kann mir dabei helfen. Es stört mich schon eine ganze Weile...
Grüßt,
Basti
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich bin nicht mit diesem plugin, hatte aber die gleiche Sache zu tun. Ich figuered heraus, dass für meine Bedürfnisse wurde Folgendes die beste Lösung:
In einer XML-Datei definiere ich meine Saiten (in diesem Beispiel ist
xml/en/content.xml
):In meinem
Localizer
Klasse Initialisiere ich diese übersetzungen und speichern Sie Sie in einem array. Dietranslate
Funktion wird der ID-string von smarty, sucht nach der id in seinen übersetzungen, und für jede##string##
text. Diese##...##
ersetzt werden, mit Variablen bereits zugewiesen smarty.Nun muss man sagen, smarty, welche Funktion er verwenden soll. Dies könnte Ihr
index.php
:Zur Nutzung der übersetzungen, der erste, vergebe ich den Benutzername:
In der template-Datei:
Hoffe das hilft, Grüße aus österreich 🙂
init('en')
en in es. wenn Sie$_SERVER['HTTP_ACCEPT_LANGUAGE']
es wohl sein wird, 'de-de' oder 'de-de', so müssen Sie einen Ordner mit 'en-gb'. versuchen Sie es zuerst mit der init('de'), erstellen Sie eine Datei 'xml/en/content.xml' und führen Sievar_dump(Localizer::translate(array(), 'hello_world', $smarty));
um zu sehen, ob es gibt alles.('../lang/' . $language . '.xml');
Für Testzwecke habe ich versucht ../lang/de.xml - auch dann gibt es keine Ausgabe. Was kann der Fehler???..
Sie den Pfad für die Sprache. versuchen Sie, und in derLocalizer::init()
schreibenvar_dump($temp_content);
nach$temp_content
gesetzt, um zu sehen, wenn xml-Inhalt richtig geladen.<![CDATA[
für? Kann es nicht sein<translation id="hello_world">Hello ##username##!</translation>
? Seine arbeiten aber maby ich etwas vergessen.