Gelöst:Übersetzung der CKK-Dropdown-Textbox Werte mit Locale und Content Translation - geht das?
am 15.07.2008 - 09:22 Uhr in
Hallo Drupaler,
ich habe jetzt begonnen einen Uni-Instituts-Seite auf Drupal6 zu portieren. Dabei soll auch auf Mehrsprachigkeit des Systems (Englisch, Deutsch, Französisch...) Wert gelegt werden.
Zur Übersetzung des Inhalts nutze ich das Modul ContentTranslation, was mir ja für jeden Inhaltstyp - sofern in den Workflow-Settings freigegeben - eine Übersetung meines Content-Types ermöglicht.
Für die Übersetzung der Oberfläche, d.h. der Label meines Content-Typen, habe ich das Module Localization Client gefunden (Web 2.0 Ajax-Funktionalität im Gegensatz zu Web 1.0 Klick-warte Technik)...
Die Übersetzung meiner Content-Type-Inhalt funktioniert soweit auch ganz gut. Einfach auf Translate-Tab gehen, translate wählen, die deutschen Einträge durch englische ersetzen, als Sprache Englisch einstellen und dann wird eine neue Node mit dem entsprechenden Inhalt erzeugt.
Mein Problem ist nun wie folgt:
In meinen Content-Type nutze ich vermehrt Dropdown-Boxen, deren Inhalte ich ja mit key-value Paaren bei der Erstellung des CKK-Fields im Content Type direkt angebe.... Diese Werte sind jetzt default in Englisch angegegben.
Wie kriege ich es jetzt hin diese Werte für meinen deutschen Eintrag in Deutsch zu übersetzen?
Bei der oben beschriebenen Übersetzung ist mir ja nur die MÖglichkeit gegeben einen Eintrag aus der Dropdown-Box auszuwählen... Diese sind von der Sprache unabhängig - da beim ContentType hinterlegt. Und ContentTypes werden ja nicht sprachabhängig angelegt.
Der langen Rede kurzer Sinn: Wie kann ich Werte von CKK-Dropdown-Boxen übersetzen?
Eine quick and dirty Lösung wäre es sicherlich auch die Englischen Werte mit in die key-value-pairs der DropDown mit aufzunehmen. Doch das kann ja nicht allen ernstes die Lösung sein, oder?
Hoffe auf Vorschläge von eurer Seite...
Vielen Dank,
Gruß
Marcel
- Anmelden oder Registrieren um Kommentare zu schreiben
Lösung ?
am 16.07.2008 - 08:44 Uhr
Hey,
ich schon wieder. Irgendwie muss ich bei allen Posts immer noch einen Nachtrag verfassen :)
Die Dropdown dient in dem einen Fall bisher nur zur Kategoriesierung der Mitarbeiter, so dass ich diese dann in einem View in Gruppen angezeigt bekomme. Solche Kategorisierungen sind doch auch mit dem Taxonomy-Modul möglich, oder? Habe bisher noch nicht mit diesem Model gearbeitet, da ich mich auch erst seit ca. 2 Monaten mit Drupal6 beschäftigte....
Diese Taxonomy-Vokabeln lassen sich doch dann auch mit dem in18- Modul übersetzen und ich hätte das Problem gelöst :)
Werde ich gleich mal ausprobiere und mein Erfahrung hier posten...
Wäre trotzdem nett, wenn vielleicht noch jemand seinen Senf zu obigem Sachverhalt abgeben könnte..
Danke,
Gruß
Marcel
fuer die Dropdown Values die t() Funktion verwenden
am 16.07.2008 - 11:26 Uhr
Wenn man mittels CCK in Nodetypes Dropdown's oder Select's erstellt mach man dies im einfachsten Falle mit der Definition einer Werteliste.
Folgende Idee:
Man kann die Dropdown's oder Select's aber auch mittels PHP Code erstellen - also NICHT mit einer Werteliste.
Innerhalb des PHP Code kann man fuer die Values die t() Funktion von Drupal verwenden. Damit sollten die Values mit Drupals Lokalisierung uebersetzbar sein.
Bevor dies Values eines CCK Feldes uebersetzbar sind muss ein Node mit einem solchen PHP generierten Dropdown oder Select aufgerufen werden.
Gib bitte Feedback ob es so funktioniert.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Funktionert, aber...
am 16.07.2008 - 17:31 Uhr
Hallo quiptime,
erstmal vielen Dank für deinen Tipp :)
Habe das jetzt so probiert wie du vorgeschlagen hast. Folgenden Code habe ich verwendet um die DropDown zu füllen:
$test = array(
'prof' => t('professor'),
'obering' => t('chief engineer'),
'wissM' => t('academic staff'),
'lehrb' => t('assistant professor'),
'techM' => t('engineering staff'),
'verwSek' => t('administration and office')
);
return $test;
Danach konnte ich auch über das TranslateInterface die deutschen Übersetzungen für die Werte der DropDown eingeben... Und siehe da: Wenn ich nun den Wert auf meiner Mitarbeiterseite anzeigen lassen(PlainText), dann ändert er sich von Deutsch nach Englisch, nach Deutsch.... Soweit schonmal super, aber...!
Diesen Wert will ich ja eigentlich gar nicht in der Mitarbeiterseite anzeigen, sondern verwende ihn zur Filterung meiner Mitarbeiter in Gruppen (Professor, Wissenschaftlicher Mitarbeiter etc..)
Es existiert für diese Mitarbeiter nähmlich eine Übersichtsseite, wo alle Mitarbeiter in Gruppen aufgelistet werden. Dazu habe ich mir einen View gebastelt, der prinzipiell erstmal alle Mitarbeiter anzeigt...
Da ich diese Übersichtseite aufgrund der Formatierung mit CSS nicht über einen View realisieren kann, habe ich einfach über folgenden Code den View mehrfach auf diese Seite gepackt, wobei ich jeweils einen Filter auf die Gruppe setze, die ich an der gewünschten Stelle angezeigt bekommen will...
Hier mal der Code - den habe ich aus einem Forum kopiert...
<?php
//hole mir den View
$view = views_get_view('staff_all');
//setze display
$display_id = 'default';
$view->set_display($display_id);
//setze Filter
$id = $view->add_item($display_id, 'filter', 'node_data_field_staff_group', 'field_staff_group_value');
$item = $view->get_item($display_id, 'filter', $id);
//hier setze ich den Filter auf den key der Gruppe
$item['value'] = array('prof');
$view->set_item($display_id, 'filter', $item['id'], $item);
$view->is_cacheable = FALSE;
//Ausgabe
print $view->execute_display('default', $args);
?>
Das funktioniert auch soweit... Er zeigt mir auch immer als Überschrift des Views den jeweiligen Filter an.. D.h. wähle ich prof als Filterkriterium, erscheint über der Liste der Mitarbeiter mit Gruppe prof der englische Titel dieser Gruppe (hier professor) usw...
Eine Übersetzung der Werte wie auf meiner Mitarbeiterseite findet allerding nicht statt...
Hast du zufällig noch ne Idee woran das wiederrum liegen könnte?
Danke,
gruß
Marcel
Was steckt in array('prof') ?
am 16.07.2008 - 17:43 Uhr
Dein Code:
$item['value'] = array('prof');
Was steckt in array('prof') ?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Das Problem ist gelöst ....
am 16.07.2008 - 21:40 Uhr
Das Problem hat sich gerade gelöst...
Scheinbar handelte es sich einfach mal wieder um ein Cache-Problem. Diesen mehrfach gelöscht und schon klappt auch die Übersetung :)
Vielen, vielen Dank für den Tipp mit der t-Funktion. Wäre ich mit meinem bisherigen Wissen nicht drauf gekommen...
Beste Grüße
Marcel