German Vokabeltrainer

Discussion in 'German Forum' started by wbauer, Feb 2, 2009.

  1. wbauer

    wbauer Member Licensed User

    Hallo Leute.

    Wollte euch mal mein erstes Projekt vorstellen - eine Vokabeltrainer. Idee basiert auf einer Lernhilfe, bei der man Kärtchen mit den Vokabeln schreibt. Dann absolviert man Vokabeltest mit ein paar Kärtchen. Die Vokabeln, die man kann, verschiebt man eine Stufe höher und kommen bei den Tests dann seltener vor. Wenn man wieder eines vergessen hat, so reiht man es weiter noch vorne, wo es häufiger abgefragt wird.

    Da ich heuer in Frankreich Urlaub mache, aber nicht mal mein Bier auf Französisch bestellen kann, dachte ich mir, das ist gleich mal ein gutes Einstiegsprojekt.

    Bitte um Urteil und Ideen/Verbesserungsvorschläge eurerseits.

    -------------
    Aufbau des Programms:

    1. Hauptfenster (siehe Bild):
    Auswahlbox für aktuelle Sprache, die geprüft werden soll (Programm kann mehrere Sprachen getrennt voneinander verwalten). Dann Buttons zum Eingeben von neuen Vokabeln ("Vokabeln eingeben") und der eigentliche Vokabeltest ("Vokabeltest").

    Der Button "Testdefinition" öffnet ein Fenster, in dem man die Parameter des Tests verändern kann. D.h. aus wie viele Vokabeln soll ein Test insgesamt bestehen.

    Der Button "Stati" definiert die drei Erfahrungsstufen (Anfänger, Fortgeschrittener und Experte) für die Vokabeln. Vokabeln im Status Anfänger kommen im Test öfter vor als Vokabeln des Status Experte. Hier kann pro Status festgelegt werden, nach wie vielen richtigen Antworten ein Vokabel in den nächsten Status gehoben wird bzw. nach wie vielen falschen Antworten es zurückgestuft wird.

    Mit dem Button "Sprachen" kann man die unterschiedlichen Fremdsprachen definieren, die dann für den Vokabeltest zur Verfügung stehen.

    Der Button "Datenbank & Info" ist nur eine Spielerei, mit der man die Datenbankstruktur und die Programminfo öffnen kann.

    2. Fenster "Vokabeln eingeben"

    Bevor man einen Vokabeltest durchführen kann, müssen natürlich zuerst einmal Vokabeln eingegeben werden. Das kann in diesem Fenster vorgenommen werden. (Ein paar Vokabeln werden beim Erstellen der Datenbank gleich mitgeliefert, sodass ihr gleich was zum "spielen" habt)

    Mit dem Button "Neu" werden die Eingabefelder initalisiert. Dann gibt man das Fremdsprachenvokabel und die deutsche Übersetzung ein, sowie in welcher Lektion diese enthalten sind (wenn man z.B. mit Langenscheit lernt)

    Mit dem Button "Speichern" werden neue oder geänderte Vokabel gespeichert.

    Mit dem Button "Löschen" wird das aktuelle Vokabel gelöscht.

    Die Buttons "+ Stufe" und "-Stufe" sind dazu da, ein einzelnes Vokabel manuell in die nächst höhere Stufe zu erheben bzw. wieder runterzusetzen (also nicht über eine Vokabeltest)

    Über den Buttons "Neu"... wird zum ausgewählten Vokabel immer der aktuelle Status aus den Vokabeltests angezeigt. D.h. in welchem Status (Anfänger...) ist das Vokabel, wie viele richtige (R) und falsche (F) Antworten habe ich schon gegeben und wann war der letzte Test, in dem das Vokabel vorgekommen ist. Dabei wird immer unterschieden, in welche Richtung der Test durchgeführt wurde (Deutsch auf Fremdsprache oder umgekehrt)

    3. Fenster Vokabeltest
    So - jetzt wird's spannend. Zuerst wählt man aus der Combobox die Testrichtung aus (Deutsch -> Fremdsprache oder Fremdsprache -> Deutsch / NICHT Zufall!) Dann klickt man auf den Button "Neuer Test" und es werden aus den verschiedenen Stati die entsprechende Anzahl von Vokabeln zufällig in den Test übernommen.

    Wenn man Deutsch -> Fremdsprache ausgewählt hat, so wird das erste Vokabel auf deutsch angezeigt (rechts neben dem Button "Deutsch"). Das muss man (gedanklich) beantworten.

    Zum Überprüfen klickt man auf den Fremdsprachenbutton und es erscheint das entsprechende Vokabel in der Fremdsprache.

    Hat man es richtige übersetzt (oder geraten ;-), dann klickt man auf den Button "Richtig". Bei falsch auf "Falsch". Das Programm merkt sich die Anzahl der richtigen/falschen Antworten. Sobald eine Grenze zum nächsten (bzw. vorigen) Status überschritten wurde, wird das Vokabel in den jeweiligen Status übernommen (man erhält eine Message darüber).

    Will man keine Antwort geben, dann klickt man auf Überspringen (keine Auswirkung auf richtig oder falsch)

    Danach wird das nächste Vokabel in diesem Test angezeigt.

    Während des Tests kann man auch die Testrichtung ändern, in dem man in der Combobox eine andere Testrichtung auswählt (Beim Wert ZUFALL wird zufällig die Sprache eingestellt, in der das Vokabel abgefragt wird. Info: Zufall darf man nicht zum Erstellen eines NEUEN Test verwenden, da erhält man eine unlogische Fehlermeldung (Eingabe von Vokabeln notwendig...) da muss ich noch was verbessern )

    ------------------

    Zur Technik dahinter.

    Das Programm legt beim ersten Start im Programmpfad eine SQLite Datenbank (vokabeltrainer.sl3) an und erzeugt die notwendige Datenbankstruktur. Das Programm ist so geschrieben, dass Änderungen an der Datenbankstruktur durch zukünftige Programmversionen automatisch rekursiv durchgeführt werden. Ist im Source auch schon vorgenommen, weil ich von der Grundversion 1 schon auf eine 2. Datenbankstruktur ändern musste (Logik ist in den Funktionen "Datenbank_Struktur_Erzeugen" und "Alter_Database" in der Region "interne Funktionen" gekapselt.

    Weiters arbeite ich mit Triggern, die mir das Leben ein bischen leichter machen sollten. So habe ich einen Trigger VOKABELN_INSERT, der mir nach dem Einfügen eines neuen Vokabels die entsprechenden Datensätze für die Tests (in Tabelle ABFRAGEN) automatisch anlegt.

    Weiter den Trigger VOKABELN_DELETE, der beim Löschen eines Vokabels auch die entsprechenden Informationen aus den Tests (Tabelle Abfragen) gleich mit löscht. d.h. ich brauche mich darum im Sourcecode nicht mehr kümmern.

    Das gleiche macht der Trigger "SPRACHE_DELETE", der beim Löschen einer Sprache alle zugehörenden Vokabeln löscht (worauf der Trigger VOKABELN_DELETE die zugehörigen Abfragen löscht...)

    Schon super, was SQLite alles kann. Kenn ich sonst nur von großen SQL Servern...

    Im Source arbeite ich bei SQL Statement so weit es geht transaktionsorientiert, sodass entweder alle Statement miteinander korrekt durchgeführt werden oder keines (falls was schiefgeht). Ich hasse nichts mehr als einen unklaren Zustand in der Datenbank so wie's bei Access halt des öfteren vorkommen kann.

    Als DLLs sind notwendig: ControlsEX, Door, SQLDesktop/SQLDevice, System.Data.SQLite.dll

    Icon zum Einbinden habe ich als ZIP Datei beigelegt, weil ich ICO Dateien direkt nicht hochladen kann - warum auch immer.

    So das wars. Bin gespannt, was ihr sagt.

    LG
    Wolfgang
     

    Attached Files:

  2. klaus

    klaus Expert Licensed User

    Hallo Wolfang,

    Ich hab mir das Programm angeschaut. Interessant, leicht zu handhaben und übersichtlich.

    Einen Vorschlag im Code:
    Folgende Zeilen mit 'KC sind nicht nötig:
    Code:
    [SIZE=2][FONT=Courier New][COLOR=#0000ff][SIZE=2][FONT=Courier New][COLOR=#0000ff][SIZE=2][FONT=Courier New][COLOR=#0000ff]Sub [/COLOR][/FONT][/SIZE][/COLOR][/FONT][/SIZE][/COLOR][/FONT][/SIZE][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]formHauptmenü_Show[/SIZE][/FONT]
     
    [SIZE=
    2][FONT=Courier New]pbHFEingabe.Enabled = [/FONT][/SIZE][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]False[/COLOR][/SIZE][/FONT]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]pbHFVokabeltest.Enabled = [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]False[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000]'KC comboHauptSprache.Clear 'Löschen der alten Zeilen der Combobox[/COLOR][/SIZE][/FONT]
    [SIZE=
    2][FONT=Courier New][COLOR=#008000]'KC comboHauptSprache.Add ("") 'Dummy: Einfügen eines Leerwertes[/COLOR][/FONT][/SIZE]
    [SIZE=
    2][FONT=Courier New][COLOR=#008000]'KC comboHauptSprache.SelectedIndex=0 'Dummy: Auswahlen des Leerwertes zum Anzeigen, wenn man vorher schon einen Wert ausgewählt hatte.[/COLOR][/FONT][/SIZE]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000]'Mit Clear verschwindet leider der letzte ausgewählte Wert (in der Anzeige des combo) nicht[/COLOR][/SIZE][/FONT]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]comboHauptSprache.Clear [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000]'Jetzt nochmals die Zeilen der Combobox löschen[/COLOR][/SIZE][/FONT]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT]
    [SIZE=
    2][FONT=Courier New][SIZE=2][FONT=Courier New]DBReader.New1 [/FONT][/SIZE]
    [SIZE=
    2][FONT=Courier New]DBCommand.CommandText = [/FONT][/SIZE][/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000]"Select Sprache from SPRACHEN order by ID"[/COLOR][/SIZE][/FONT]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]DBReader.Value = DBCommand.ExecuteReader[/SIZE][/FONT]
    [/SIZE][/
    FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]Do[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]While[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2] DBReader.ReadNextRow [/SIZE][/FONT]
    [SIZE=
    2][FONT=Courier New]comboHauptSprache.Add (DBReader.GetValue ([/FONT][/SIZE][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]0[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]))[/SIZE][/FONT]
    [/SIZE][/
    FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]Loop[/COLOR][/SIZE][/FONT]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]DBReader.Close[/SIZE][/FONT]
     
    [/SIZE][/
    FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2] fSqlGetValue ([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000]"Select Count(*) from SPRACHEN"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]) >[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]0[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE][/FONT]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]comboHauptSprache.SelectedIndex = [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]0[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000]'KC comboHauptSprache_SelectionChanged (0,comboHauptSprache.Item(0))[/COLOR][/SIZE][/FONT]
    [/COLOR][/SIZE][/
    FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
    Das Programm funktioniert auch ohne diesen Zeilen. Da Du ja die ComboBoxListe wieder initialisierst.

    Es ist nicht nötig nach der Zeile:
    Code:
    [FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]comboHauptSprache.SelectedIndex = [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]0[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
    noch :
    Code:
    [FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]comboHauptSprache_SelectionChanged ([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]0[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2],comboHauptSprache.Item([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]0[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]))[/SIZE][/FONT][/SIZE][/FONT]
    aufzufufen, denn comboHauptSprache.SelectedIndex = 0 springt sowie so in die comboHauptSprache_SelectionChanged Routine.

    Auf dem PPC löscht ComboBox.Clear auch den Text in der ComboBox.
    Auf dem Desktop kann man ihn auch mit der Door Library löschen mit :
    Code:
    [FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]obj.New1([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080][FONT=Courier New][SIZE=2][COLOR=#800080]False[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2])[/SIZE][/FONT]
    [SIZE=
    2][FONT=Courier New]obj.FromControl([/FONT][/SIZE][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000]"ComboBox1"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2])[/SIZE][/FONT]
    [SIZE=
    2][FONT=Courier New]obj.SetProperty([/FONT][/SIZE][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000]"Text"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2],[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000][FONT=Courier New][SIZE=2][COLOR=#800000]""[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2])[/SIZE][/FONT][/SIZE][/FONT]
    Wie siehst Du die Verwaltung mit mehr als 2 Sprachen ?
    Es wäre interessant für alle Sprachen die gleichen Felder zu haben. Dann könnte man eine x beliebige Sprache als Hauptsprache nützen Zum Beispiel direkt von Französich zu Englisch.

    Was hältst Du von einem mehrsprachigem Userinterface ?

    So ganz nebenbei, die Hintergrundfarben im Haupfenster finde Ich nicht gerade 'sexy', ist aber auch nur Geschmacksache und Nebensache.

    Beste Grüsse.
     
  3. wbauer

    wbauer Member Licensed User

    Hi Klaus.

    Danke für die Anregungen.

    Du schreibst zum Combofeld für die Sprachauswahl, dass ich die von dir auskommentierten Statements nicht brauche:

    PHP:
    Sub formHauptmenü_Show
    pbHFEingabe
    .Enabled False
    pbHFVokabeltest
    .Enabled False
    'KC comboHauptSprache.Clear 'Löschen der alten Zeilen der Combobox
    'KC comboHauptSprache.Add ("") 'DummyEinfügen eines Leerwertes
    'KC comboHauptSprache.SelectedIndex=0 'DummyAuswahlen des Leerwertes zum Anzeigenwenn man vorher schon einen Wert ausgewählt hatteMit Clear verschwindet leider der letzte ausgewählte Wert (in der Anzeige des combonicht
    comboHauptSprache
    .Clear 'Jetzt nochmals die Zeilen der Combobox löschen
    Dass man den sichtbaren Text der Combo mit der Doors Libary löschen kann, habe ich nicht gewusst. Scheint mir ein bißchen kompliziert, aber es funktioniert. Die Doors Libary muss ich mir mal genauer ansehen, damit scheint einiges möglich zu sein.

    Zum Thema SelectedIndex hast du recht, doppelt gemopelt! Schmeiß ich raus.
    PHP:
    If fSqlGetValue ("Select Count(*) from SPRACHEN") >0Then
    comboHauptSprache
    .SelectedIndex 0
    'KC comboHauptSprache_SelectionChanged (0,comboHauptSprache.Item(0))
    End If
    Zum Thema Mehrsprachigkeit
    HTML:
    Wie siehst Du die Verwaltung mit mehr als 2 Sprachen ?
    Es wäre interessant für alle Sprachen die gleichen Felder zu haben. 
    Dann könnte man eine x beliebige Sprache als Hauptsprache nützen 
    Zum Beispiel direkt von Französich zu Englisch.
    
    Was hältst Du von einem mehrsprachigem Userinterface ?
    
    So ganz nebenbei, die Hintergrundfarben im Haupfenster finde Ich 
    nicht gerade 'sexy', ist aber auch nur Geschmacksache 
    und Nebensache.
    Ja da kann man sicher darüber nachdenken. Das ist nicht mehr viel Aufwand, statt der Hauptsprache "Deutsch" eine andere Sprache zu verwenden. Muss ich mir mal durch den Kopf gehen lassen.

    Zum mehrsprachigen Interface:
    1. da brauch ich einen versierten Nativspeaker (keine Ahnung, was das auf Franzöisch heißt - so weit bin ich in meinem Sprachkurs noch nicht :D)

    2. wie setzt man so ein multilingualen Interface am besten um? Kann mir vorstellen, dass man die Labeltexte und MsgBox/Menü-Texte in der Datenbank speichert und beim Start eine Initialisierungsroute für die Defaultsprache startet. Hast du da Erfahrung mit multilingualen Interfaces?

    3. Farben und das Layout der Seiten -> klar, das ist absolut rudimentär. Habe zuerst auf Funktionalität und die Datenbankanbindung dasAugenmerk gelegt. Beim Layout kann man sicher noch viel designen.

    LG
    Wolfgang
     
  4. klaus

    klaus Expert Licensed User

    Hallo Wolfgang,

    Endlich eine Antwort, wollte das Update für die Module (Punkt 2) est fertig machen.

    1. Für die Übersetzungen findest Du Forumuser die das gerne machen. Für Französisch melde Ich mich schon mal an.
    2. Hier findest Du ein Modul für mehrsprachige Programme.
    http://www.basic4ppc.com/forum/code-samples-tips/3701-some-modules.html#post21211

    3. Das ist bei mir auch meisetens so.

    Beste Grüsse.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice