Autor
|
Thema: Auslesen der 2. Sprache (697 mal gelesen)
|
schippe Mitglied Entwicklung & Konstruktion
Beiträge: 40 Registriert: 19.10.2005
|
erstellt am: 02. Mai. 2006 10:41 <-- editieren / zitieren --> Unities abgeben:
Hallo, zur erstelung eines inhaltsverzeichnisses möchte ich unter anderem gern die 2. oder 3. sprache, per script, aus der sprachdatenbank auslesen. bin in vbs noch nicht sehr bewandert, daher meine bitte an euch, mir zu helfen. habe mal das bestehende script mit angehängt. anstelle von text_description_A = 48 'zweite Sprache (Texttype 40, Sprache 2 (/2)) text_description_B = 501 'dritte Sprache (Texttype 40, Sprache 3 (/4)) (zeile 34 und 35) möchte ich einfach, wenn möglich, per parameter "/2" bzw. "/3" die 2. und 3. Sprache des ttypen 40 auslesen. wer kann mir ein lösungsbeispiel geben? gruß Schippe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Eldorado Mitglied
Beiträge: 73 Registriert: 12.06.2004
|
erstellt am: 02. Mai. 2006 21:28 <-- editieren / zitieren --> Unities abgeben: Nur für schippe
Sorry, es gibt leider keinen direkten Weg, die 2., 3. oder sonstige zusätzliche Übersetzung eines bestimmten Text-Tokens mit einem einfachen Aufruf zu ermitteln. Du kannst dir aber auf folgenden Wegen Abhilfe schaffen: 1.) die Textdatenbank lesen 2.) ein Token mit der Endung /<x> in den Text schreiben und die Übersetzung wieder auslesen Die erste Möglichkeit ist komplizierter. Dazu muss man SQL-Statements formulieren. Außerdem sollte dann noch E³ gefragt werden, welche Sprachen aktuell überhaupt im Projekt gesetzt sind damit die erzeugte Liste auch wirklich den Gegebenheiten zum Zeitpunkt des Scriptablaufs entspricht. Diese Möglichkeit lasse ich jetzt mal außen vor. Die zweite funktioniert wie folgt: Code: oldtxt = txt.GetInternalText token = txt.GetLanguageId txt.SetText "" & token & ";/1": t1 = txt.GetText txt.SetText "" & token & ";/2": t2 = txt.GetText txt.SetText "" & token & ";/4": t3 = txt.GetText txt.SetText oldtxt
Im ersten Statement wird der aktuelle Textinhalt gesichert damit wir ihn nach der ganzen Aktion wieder restaurieren können. Dann wird die sog. "LanguageId" ausgelesen. Das ist schlicht eine Nummer, die den übersetzbaren Text repräsentiert. In den dann folgenden drei Zeilen wird jeweils ein String der Form "<num>;/<n>" generiert und in das Textfeld geschrieben. <num>; weist E³ an, dass zur Darstellung des Textfeldes immer ein übersetzbares Token (nämlich das mit der Nummer <num> ) verwendet werden soll. "/1", "/2" und "/4" unmittelbar nach dem Strichpunkt geben (bit-codiert) an, welche Sprachen (in diesem Fall die 1., 2. und 3.) jeweils dargestellt werden soll. Die Übersetzung in der jeweiligen Sprache wird dann wieder mit GetText() ausgelesen.Wenn du allerdings in E³ im Normalfall nur einsprachig arbeitest und nur für die Liste diesen einen Text mehrsprachig ausgeben möchtest, dann sollte doch die erste Lösung gewählt werden. Melde dich hierzu ggf. einfach wieder. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schippe Mitglied Entwicklung & Konstruktion
Beiträge: 40 Registriert: 19.10.2005
|
erstellt am: 03. Mai. 2006 09:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Eldorado, erstmal recht herzlichen dank für die prompte antwort. Wir arbeiten schon mehrsprachig mit E³. Es ist so, dass wir zur erstellung des inhaltsverzeichnisses, nacheinander, blatt für blatt, immer wieder den texttype 40 auslesen möchten. allerdings dann jeweils 3-sprachig (/1, /2, /4). wäre super, wenn du dir den script einmal anschauen könntest. Kann ihn dir auch gern direkt per email zuschicken. gruß schippe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Eldorado Mitglied
Beiträge: 73 Registriert: 12.06.2004
|
erstellt am: 05. Mai. 2006 20:51 <-- editieren / zitieren --> Unities abgeben: Nur für schippe
Ich hatte mir dein Script schon angesehen - bin aber davon ausgegangen, dass du mein kleines Snipplet dort auch selbst sinngemäß reinbringen kannst. Ist eigentlich ganz einfach: Wirf die zweite der folgenden Zeilen deines Scripts weg: Code: if Text.GetTypeId = text_description and not Description_1_found then Text_Description_1_found = Text.GetInternalText
und ersetze sie durch meinen Abschnitt (wobei du dann allerdings statt 'txt' immer 'text' schreiben musst weil deine Objektvariable eben 'text' und nicht wie bei mir 'txt' heißt). In den Variablen t1, t2 und t3 stehen jetzt die die Texte jeweils in der 1., 2. und 3. Sprache. Was du mit diesen Texten machen willst, weiß ich leider nicht...Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schippe Mitglied Entwicklung & Konstruktion
Beiträge: 40 Registriert: 19.10.2005
|
erstellt am: 08. Mai. 2006 09:30 <-- editieren / zitieren --> Unities abgeben:
Hi Eldorado, besten Dank, für deine Hilfe. Sorry, habe noch keine vbs-Kenntnisse. Kann wohl erst nach kompletter E³-Einführung zur Schulung gehen ;-), bitte um Nachsicht. Habe nun mal deinen Part in mein Script eingefügt und angepasst. Es läuft zumindest auch durch und das Blatt "Inhaltsverzeichnis" wird geöffnet. Allerdings ist es leer. Im Ausgabefenster von E³ erscheint 9 mal folgende Meldung: "W - Text '#0' konnte in der Datenbank nicht gefunden werden." Muss ich evtl. weiter unten noch die Textausgabe anpassen? Gruss Schippe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|