[gelöst] Kopfbereich Text von View übersetzen
Eingetragen von majorbenks (144)
am 28.04.2010 - 09:07 Uhr in
am 28.04.2010 - 09:07 Uhr in
Hallo
Ich habe bei meinem View einen Text im Kopfbereich eingefügt, dort drin stehen allgemeine Informationen über die unten im View zusammengefassten Nodes. Wie kann ich diesen Text nun übersetzen, so dass er in der Englischen Version auch Englisch ist? (Die Nodes und der Rest der Seite ist bereits englisch, nur dieser Text im Kopfbereich nicht. N18i ist installiert)
Besten Dank
Benks
- Anmelden oder Registrieren um Kommentare zu schreiben
Übersetzung
am 28.04.2010 - 09:20 Uhr
Wie kann ich diesen Text nun übersetzen, so dass er in der Englischen Version auch Englisch ist?
Basissprache von Drupal ist Englisch, Texte müssen also nicht extra ins Englische übersetzt werden.
Dementsprechend solltest Du Texte nicht auf deutsch eingeben.
Verwende PHP für den Kopfbereich und die [api:t] Funktion, dann kannst Du den Text in andere Sprachen übersetzen.
<?php
print t('This is the views header text.');
?>
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Wie funktioniert das genau?
am 03.05.2010 - 09:47 Uhr
Wie funktioniert das genau? Ich habe einfach diesen php-Code im als Header eingegeben. Das ergibt aber einen Fehler: "The string Kontaktinfos:default:header for textgroup views is not allowed for translation because of its input format."
Was mache ich falsch? Oder habe ich das am falschen Ort eingetragen? Wo kann ich es danach übersetzen?
Gruss Benks
PHP im content Bereich? Dann
am 03.05.2010 - 13:01 Uhr
PHP im content Bereich?
Dann wäre mein Ansatz doch eher einfach einen Block erstellen der oberhalb vom View dargestellt wird und den übersetzen oder pro Sprache einen Block. (Oder im Theme?)
i18n enthält ja auch ein Modul für Views - Ich kenne das nicht aber da sollte man wohl noch vorher mal nach schauen.
Ich habe das i18n für Views
am 03.05.2010 - 13:34 Uhr
Ich habe das i18n für Views schon installliert, aber ich sehe dort keine Übersetzungsmöglichkeit.
Das mit dem Block geht nicht wirklich, mein Theme sieht dort keinen Block vor...
Wie funktioniert das genau?
am 05.05.2010 - 07:19 Uhr
Verwende PHP für den Kopfbereich und die [api:t] Funktion, dann kannst Du den Text in andere Sprachen übersetzen.
<?php
print t('This is the views header text.');
?>
Also ich verstehs immer noch nicht ganz. Wo muss diese t() Funktion hin? Ins Theme? Oder stimmt etwas mit dem Eingabeformat nicht? (Ich habe Full Html eingestellt)
Gruss Benks
Dabei mußt Du dann den
am 05.05.2010 - 08:27 Uhr
Dabei mußt Du dann den PHP-Inputfilter aktivieren und statt Full HTLM auf PHP stellen. Du willst ja jetzt in diesen Feld PHP-Code ausführen lassen. Das ist normalerweise abgeklemmt und sollte auch nur Leuten erlaubt sein, die wissen, was sie tun. Mit einer fehlerhaften Eingabe kannst Du Deine gesamte Webseite lahmlegen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Fehlermeldung
am 05.05.2010 - 08:40 Uhr
Gut, das hab ich gemacht. Wenn ich im View den Kopfbereich bearbeitet habe (die php Funktion eingetragen) und auf "aktualisieren" klicke erscheint folgende Fehlermeldung:
The string Kontaktinfos:default:header for textgroup views is not allowed for translation because of its input format.
Was muss ich noch einstellen / machen damit es funktioniert?
Vielleicht auch ganz anders?
am 10.05.2010 - 16:09 Uhr
Das Views-übersetzen-Modul ist für Version 3 von Views und du hast sicherlich Views2 installiert, da stable.
Eine andere Möglichkeit als dieses "php in Felder eintragen" ist die Template-Engine zu nutzen und die views-view.tpl.php überschreiben (mit einem geeigneten Namen, bspw. views-view--deinviewname.tpl.php). Dazu kopierst du dir die Originale und veränderst folgenden Bereich:
<?php if ($header): ?>
<div class="view-header">
<?php print $header; ?>
</div>
<?php endif; ?>
auf etwas in dieser Art:
<?php if ($header): ?>
<div class="view-header">
<?php
print t($header); // eventuell auch t(strip_tags($header));
?>
</div>
<?php endif; ?>
Mittels der strip-tags-Funktion könntest du noch erlaubte Tags belassen, etwa so:
strip_tags($header, '<strong><em>');
Wenn das aber wirklich viel Text wird würde ich auch die Lösung mit dem vorangestellten Block bevorzugen oder mittels Views Reference die View an einen Node binden und den Text im Node pflegen und die View eine View sein lassen. Ja, letzteres wäre sicher meine Wahl ;)
Viele Grüße
~ aaki
Bei mir funktioniert das mit
am 12.05.2010 - 10:29 Uhr
Bei mir funktioniert das mit dem print t($header) einfach nicht! Muss man dazu noch irgendetwas einstellen? Der Text erscheint zwar an der richtigen Stelle, aber ohne Übersetzen Link. Oder seh ich diesen Link einfach nicht? (Es wird das richtige Template geladen, habs mit Developer Module angeschaut)
Die Methode mit dem Views Reference ist natürlich für viel Text sinnvoll. Aber ich habe nur einen kleinen Satz. Für das extra einen Nodetyp machen.. Aber wenns nicht anders geht mach ich das halt. Es würde mich aber sehr interessieren, weshalb das mit der Funktion t() bei mir nicht geht!
Oberfläche übersetzen
am 12.05.2010 - 10:52 Uhr
Doch, bei dir wird das auch funktionieren. Es wird aber kein Link neben dem Text in der Ansicht erscheinen (btw wie kommst du da drauf?), sondern du musst ihn über Strukturierung » Oberfläche übersetzen » Suchen übersetzen. Solange keine Übersetzung vorhanden ist, wird auch nur der Originalstring (den du hoffentlich in englisch hinterlegt hast) angezeigt.
Mit Views Reference legst du übrigens einfach ein weiteres CCK Feld in einem vorhandenen node-Typ an, meinetwegen Page, das du dann auf nicht erforderlich stellst. Das hätte darüberhinaus noch den Vorteil der übersetzbaren Pfade...
Viele Grüße
~ aaki
In Drupal bekommst Du nur für
am 12.05.2010 - 15:35 Uhr
In Drupal bekommst Du nur für Inhalte respektive Nodes diesen Übersetzen Tab. Das meiste andere geht dann über übersetzbare Zeichenketten (z.B. in Modulen) oder über Elemente die nur bei der eingestellten Sprache dargestellt werden (z.B. Blöcke können so übersetzt werden) und somit für jede Sprache ein mal angelegt werden. Die t() Funktion führt dazu, dass eine Zeichenkette übersetzt werden kann. Über die Suche wie von aaki beschrieben findest Du die Einträge.
Funktioniert
am 19.05.2010 - 07:47 Uhr
Ach so, das habe ich nicht gewusst. Ok, jetzt funktionierts! Danke vielmal für eure Geduld und eure Hilfe!
Sauberste Lösung: Schreib
am 28.07.2010 - 21:49 Uhr
Sauberste Lösung: Schreib deinen Kopfbereich-Text in Englisch ins dafür vorgesehene Feld. (Ohne t() Funktion)
Das reicht bereits, um jetzt in "Oberfläche übersetzen" -> "Suchen" nach dem Englischen Text suchen, ihn übersetzen und fertig.
gruess guldi