↑ TOP ↑

Preface
Curr.Version
Links
Abstract
Features
Screencasts
(Un-) License
Disclaimer

Install. Win
Upgrade Win
Install. Mac
Upgrade Mac
Install. Linux
Upgrade Linux
Webhoster

How to learn

How to use

Q & A
Setup for iPad®
Lang. Setup
Term Scores
Key Bindings
WP Integration

DB Structure
Changelog

LogoLearning with Texts

Help/Information

Jump to topic:

Preface - [↑]
  • I started this software application in 2010 as a hobby project for my personal learning (reading & listening to foreign texts, saving & reviewing new words and expressions).
  • In June 2011, I decided to publish the software in the hope that it will be useful to other language learners around the world.
  • The software is 100 % free, open source, and in the public domain. You may do with it what you like: use it, improve it, change it, publish an improved version, even use it within a commercial product.
  • English is not my mother tongue - so please forgive me any mistakes.
  • A piece of software will be never completely free of "bugs" - please inform me of any problem you will encounter. Your feedback and ideas are always welcome.
  • My programming style is quite chaotic, and my software is mostly undocumented. This will annoy people with much better programming habits than mine, but please bear in mind that LWT is a one-man hobby project and completely free.
  • Thank you for your attention. I hope you will enjoy this application as I do every day.
Current Version - [↑]
Important Links - [↑]
Abstract - [↑]
  • Learning with Texts (LWT) is a tool for Language Learning, inspired by:
  • You define languages you want to learn and import texts you want to use for learning.
  • While listening to the audio (optional), you read the text, save, review and test "terms" (words or multi word expressions, 2 to 9 words).
  • In new texts all your previously saved words and expressions are displayed according to their current learn statuses, tooltips show translations and romanizations (readings), editing, changing the status, dictionary lookup, etc. is just a click away.
  • Import of terms in TSV/CSV format, export in TSV format, and export to Anki (prepared for cloze tests), are also possible.

  • MOST IMPORTANT:

    To run LWT, you'll need:


    (1) A modern web browser.
    I recommend (in this order) If MP3 audio playback doesn't work, install Adobe Flash, or consider switching to a different browser. MP3 playback on some Firefox editions (like the one for Mac OS X) does not seem to work, and playback via Adobe Flash does not seem to work either if the audio is on a different domain (due to security reasons within Flash).
    Firefox needs the HTML Ruby Add-On to display ruby markup (i. e. to display annotations above a text) properly.

    (2) A local web server.
    An easy way to install a local web server are preconfigured packages like
    (3) The LWT Application.
    The ZIP Archive can be downloaded here.
    The installation is explained
Features - [↑]
  • You define languages you want to learn.
  • You define the web dictionaries you want to use.
  • You define how sentences and words in the language will be split up.
  • You upload texts, and they are automatically split into sentences and words! Later re-parsing is possible.
  • Optional: Assign the URL of an mp3 audio file of the text (Dropbox, local server, ...) in order to listen while reading the text.
  • You read the text while listening to the audio, and you see immediately the status of every word (unknown, learning, learned, well-known, ignored).
  • You click on words, and you use the external dictionaries to find out their meanings.
  • You save words or expressions (2..9 words) with optional romanization (for asiatic languages), translations and example sentence, you change its status, you edit them whenever needed (like in LingQ).
  • You test your understanding of words and expressions within or without sentence context.
  • MCD (Massive-Context Cloze Deletion) testing, as proposed by Khatzumoto @ AJATT, built-in!
  • See your progress on the statistics page.
  • You may export the words and expressions and use them in Anki or other programs.
  • You may upload words and expressions into LWT (from LingQ or other sources, CSV/TSV) - they are immediately available in all texts!
  • New since Version 1.5.0: Create and edit an improved annotated text version (a hyperliteral translation as interlinear text) for online or offline learning. Read more here.
  • The application is 100 % free, open source, and in the Public Domain. Do with it what you like!
  • Prerequisites: a local webserver (Apache, PHP, mySQL), e.g. EasyPHP (Windows), MAMP (OS X), or a LAMP server (Linux).
  • Enjoy your language learning!
Screencasts/Videos - [↑]
(Un-) License - [↑]
  • "Learning with Texts" (LWT) is free and unencumbered software released into the PUBLIC DOMAIN.
    Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
    In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
    Please read also the disclaimer.
    For more information, please refer to http://unlicense.org/.

  • The following software packages, bundled within the LWT software, have different licenses:
  • The icons in the "icn" subdirectory are Copyright © Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 license. The wizard icon "wizard.png" is the "Free Wizard Icon", free for commercial use, from icojam.com (Author: IcoJam / Andrew Zhebrakov).

  • The following examples, supplied within the LWT download package, have the following licenses:
    • Chinese: The Man and the Dog - Copyright © Praxis Language LLC, Source, MP3 licensed under a Creative Commons 3.0 Unported license.
    • German: Die Leiden des jungen Werther by Johann Wolfgang von Goethe - in the Public Domain, Source: Text, Audio.
    • French: Mon premier don du sang - Copyright © France Bienvenue, Source. License: "Bien sûr, les enseignants de FLE peuvent utiliser nos enregistrements et nos transcriptions pour leurs cours. Merci de mentionner notre site !".
    • Korean, Japanese, Thai, Hebrew - own creations from different sources.
Disclaimer - [↑]
  • THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Installation on MS Windows - [↑]
  • Are you upgrading? See section "Upgrade on MS Windows"!



  • Step 1: Go to http://www.easyphp.org/easyphp-devserver.php.
  • Step 2: Download the "EasyPHP DevServer for Windows XP to Windows 8" (currently EasyPHP 14.1 VC9).
  • Step 3: Open your Downloads folder and run the downloaded EasyPHP-DevServer-14.1VC9-install.exe into C:\Program Files (x86)\EasyPHP-... .
  • Step 4: Go to http://sourceforge.net/projects/lwt and download the latest zip archive lwt_v_x_y.zip.
  • Step 5: Copy the downloaded zip archive lwt_v_x_y.zip into the directory data\localweb below the EasyPHP installation directory, i.e. C:\Program Files (x86)\EasyPHP-...\data\localweb.
  • Step 6: Now right-click on the zip archive and select "Extract all", and unzip everything into a new folder C:\Program Files (x86)\EasyPHP-...\data\localweb\lwt_v_x_y. Rename the folder lwt_v_x_y to lwt.
  • Step 7: The zip archive C:\Program Files (x86)\EasyPHP-...\data\localweb\lwt_v_x_y.zip may be deleted.
  • Step 8: Now go into C:\Program Files (x86)\EasyPHP-...\data\localweb\lwt. Rename the file connect_easyphp.inc.php to connect.inc.php. (Sometimes the "php" extension is hidden, so be careful! You can display file extensions via the Windows Explorer settings and check it.)
  • Step 9: Start EasyPHP via the Windows Start Menu. In the Task Bar near the clock appears the EasyPHP app icon (it may be hidden!).
  • Step 10: LWT can now be started. Right-Click on the EasyPHP icon in the taskbar, choose "Local Web", and click on "lwt" in the webpage. You may also bookmark the LWT home page: http://127.0.0.1/lwt.
  • Step 11: You may now install the LWT demo database, or define the first language you want to learn.

  • If you want to use LWT again, just do step 9 and 10. Via "EasyPHP icon - Configuration - EasyPHP" you may start EasyPHP automatically when starting Windows. Now step 9 is no longer needed.
  • The local webserver will be stopped by clicking on "Stop" in EasyPHP menu (see icon near the clock). You can now exit EasyPHP.

  • Watch the video: Installation of "Learning With Texts" on MS Windows


  • Uninstall: Just run the EasyPHP Uninstaller, afterwards delete the EasyPHP directory below C:\Program Files (x86).
  • You have questions about EasyPHP: Try the »EasyPHP Introduction«, or the »EasyPHP FAQ«, or the »EasyPHP Forum«.
Upgrade on MS Windows - [↑]
  • Step 1: Backup (Copy or ZIP) the directory C:\Program Files (x86)\EasyPHP-...\www\lwt. Backup your database (within LWT).
  • Step 2: Unpack the downloaded ZIP archive lwt_v_x_y.zip in a directory of your choice.
  • Step 3: Copy everything (incl. sub-directories) you unpacked to C:\Program Files (x86)\EasyPHP-...\www\lwt.
    You must keep (those are not included in the distributed package):
    • the database connection parameters C:\Program Files (x86)\EasyPHP-...\www\lwt\connect.inc.php (you created this by renaming, see installation) and
    • the whole media sub-directory C:\Program Files (x86)\EasyPHP-...\www\lwt\media (contains your MP3 audio files).
  • Step 4: Clear the web browser cache and start EasyPHP and LWT as usual.
Installation on Mac OS X - [↑]
  • Are you upgrading? See section "Upgrade on Mac OS X"!



  • Step 1: Go to http://www.mamp.info/en/downloads/.
  • Step 2: Download "MAMP & MAMP PRO" (currently MAMP_MAMP_PRO_3.0.5.pkg).
  • Step 3: Double-click on the downloaded installation package MAMP_MAMP_PRO_3.0.5.pkg, accept the license, click on "Install for all users..." and on "Continue", on the next panel titled "Standard Install on Macintosh HD" click on "Customize", deselect "MAMP PRO", and click Install. You must enter your password. After this step MAMP is installed within a folder named "MAMP" in the Applications folder.
  • Step 4: Go to http://sourceforge.net/projects/lwt and download the latest zip archive lwt_v_x_y.zip.
  • Step 5: Copy the downloaded zip archive lwt_v_x_y.zip into the directory htdocs below the MAMP directory, i.e. /Applications/MAMP/htdocs. Doubleclick on the zip archive to unzip; a new folder lwt_v_x_y will be created in htdocs.
  • Step 6: Rename the new folder lwt_v_x_y to lwt. The zip archive lwt_v_x_y.zip may be deleted.
  • Step 7: Go to /Applications/MAMP/htdocs/lwt. Rename the file connect_mamp.inc.php to connect.inc.php.
  • Step 8: Open MAMP.app in /Applications/MAMP. Accept the messages from the firewall. Apache and MySQL start automatically.
  • Step 9: LWT can now be started in your web browser, go to: http://localhost:8888/lwt.
  • Step 10: You may install the LWT demo database, or define the first language you want to learn.

  • If you want to use LWT again, just do step 8 and 9.
  • The local webserver (MAMP) will be automatically stopped by quitting the MAMP application.

  • Watch the video: Installation of "Learning With Texts" on Mac OS X


  • Uninstall: Just delete the folder /Applications/MAMP.
  • You have questions about MAMP: Try the MAMP Help & Documentation.

Upgrade on Mac OS X - [↑]
  • Step 1: Backup (Copy or ZIP) the directory /Applications/MAMP/htdocs/lwt. Backup your database (within LWT).
  • Step 2: Unpack the downloaded ZIP archive lwt_v_x_y.zip in a directory of your choice.
  • Step 3: Copy everything (incl. sub-directories) you unpacked to /Applications/MAMP/htdocs/lwt.
    You must keep (those are not included in the distributed package):
    • the database connection parameters /Applications/MAMP/htdocs/lwt/connect.inc.php (you created this by renaming, see installation) and
    • the whole media sub-directory /Applications/MAMP/htdocs/lwt/media (contains your MP3 audio files).
  • Step 4: Clear the web browser cache and start MAMP and LWT as usual.

Installation on Linux (Ubuntu, LinuxMint, etc.) - [↑]
  • Are you upgrading? See section "Upgrade on Linux (Ubuntu, LinuxMint, etc.)"!

  • The following installation procedure of LAMP "Linux-Apache-MySQL-PHP" and LWT is for newer Ubuntu, LinuxMint, and similar Linux systems.
  • For other Linux systems, see the external links here.

  • Step 1: Open a Terminal and type and execute the following commands:
    • sudo apt-get update
    • sudo apt-get install lamp-server^
    After the first command you must enter your password.
    Mind the caret (^) at the end of the second command.
    During the second command you must confirm once with Y. You are also asked several times for a MySQL password for user "root". Just press [Return] in all these cases.
  • Step 2: Open a browser and go to http://sourceforge.net/projects/lwt and download the latest zip archive lwt_v_x_y.zip. It will be normally placed in /home/[your userid]/Downloads.
  • Step 3: Open a file explorer, go to /home/[your userid]/Downloads and extract the LWT zip archive.
  • Step 4: Rename the new directory lwt_v_x_y to lwt. The zip archive lwt_v_x_y.zip may be deleted.
  • Step 5: Rename the file connect_xampp.inc.php in /home/[your userid]/Downloads/lwt to connect.inc.php.
  • Step 6: Open a Terminal window, type and execute the following commands:
    • sudo mv /home/[your userid]/Downloads/lwt /var/www/html
    • sudo chmod -R 755 /var/www/html/lwt
    • sudo rm /var/www/html/index.html
    • sudo /etc/init.d/apache2 restart
  • Step 7: LWT can now be started in your web browser, go to: http://localhost/lwt.
  • Step 8: You may install the LWT demo database, or define the first language you want to learn.

  • If you want to use LWT again, just do step 7.

  • Watch the video: Installation of "Learning With Texts" on LinuxMint


Upgrade on Linux (Ubuntu, LinuxMint, etc.) - [↑]
  • Step 1: Backup (Copy or ZIP) the directory /var/www/html/lwt. Backup your database (within LWT).
  • Step 2: Open a browser and go to http://sourceforge.net/projects/lwt and download the latest zip archive lwt_v_x_y.zip. It will be normally placed in /home/[your userid]/Downloads.
  • Step 3: Open a file explorer, go to /home/[your userid]/Downloads and extract the LWT zip archive into the new directory lwt_v_x_y.
  • Step 4: Open a Terminal window, type and execute the following commands::
    • sudo cp -R /home/[your userid]/Downloads/lwt_v_x_y/* /var/www/html/lwt
    • sudo chmod -R 755 /var/www/html/lwt
    • sudo /etc/init.d/apache2 restart
    You will keep (those are not included in the distributed package):
    • the database connection parameters /var/www/html/lwt/connect.inc.php (you created this by renaming connect_xampp.inc.php, see installation) and
    • the whole media sub-directory /var/www/html/lwt/media (contains your MP3 audio files).
  • Step 5: Clear the web browser cache and open LWT as usual.

How to install LWT at a (free) Webhoster - [↑]
  • Here I will explain how to install LWT at 000webhost.com, a free web hoster. The installation at other web hosting services is similar.

  • Order free hosting. Goto http://www.000webhost.com/order.php. Enter the data and sign up.

    Image

  • Shortly after signing up you see your account Details Overview. Save your signup data and the data on this page. They are also send to you via email.

    Image

  • Enter the Control Panel.

    Image

  • Click on "MySQL" under "Software/Services". Create a database.

    Image

    After creation save the data displayed. You need them later.

    Image

  • Download and unpack LWT in a directory of your choice. Rename the downloaded file connect_xampp.inc.php into connect.inc.php. Open a text editor and change:

    $server = "localhost";
    $userid = "root";
    $passwd = "";
    $dbname = "learning-with-texts";

    to the information given after database creation:

    $server = "mysql6.000webhost.com";
    $userid = "a2649099_lwt";
    $passwd = "thepassword";
    $dbname = "a2649099_lwt";

  • Click on "View FTP Details" under "Files".

    Image

    Download and install FileZilla, a program to transfer files to and from an external server. Start FileZilla and open the Site Manager. Click on New Site and enter the details from the web page.

    Image

    Click on Connect. On the left hand side you see the files on your computer, on the right hand side the files at the web hoster.

    Now set the left hand side to the directory with downloaded LWT files. On the right hand side change the directory to "/public_html".

    Image

    Select all files on the left hand side (Ctrl+A or Cmd+A), make a right click and select Upload.

    Image

    The Upload starts, it will take some time.

  • After the upload, open your web browser, and go to your domain (see account information).

    Image

    Install the demo database within LWT.

    Image

  • Now secure the domain to ensure that only you have access to your site. Go to http://webnet77.com/cgi-bin/helpers/htaccess.cgi. Enter a Name (can be anything), the directory (alsways "public_html"), the desired user id and a password. Click on Generate.

    Image

    Create two files "_htaccess" and "_htpasswd" in a text editor. Copy the generated lines into the two files. "full-path-to-server-root" in _htaccess must be changed into the actual parameter "Home Root", see account information, in my case it is "/home/a2649099".

    _htaccess:

    AuthUserFile /home/a2649099/public_html/.htpasswd
    AuthGroupFile /dev/null
    AuthName LWT
    AuthType Basic
    <Limit GET POST>
    require valid-user
    </Limit>

    _htpasswd:

    lwt:lithWzBgVjCkk

    Upload both files with FileZilla the same way like above. Delete (in the server directory) the existent file ".htaccess", and rename the files "_htaccess" to ".htaccess" and "_htpasswd" to ".htpasswd".

    Image

  • If you now open your domain, you must enter the user id and the password.

    Image

  • 000webhost.com has some limitations. Downloads and Uploads greater than 2 MB within LWT are not allowed. So the Backup/Restore function will not work here. Other webhoster may have other limitations. So please read all the support information. You will understand that I cannot give any support concerning such problems.

How to learn with LWT - [↑]
  • Find an interesting text (preferably with an mp3 audio file) in the Internet and load it into LWT. If you are a beginner, look for beginner courses or podcasts in the Internet.
  • You don't know where to find texts with audio? The LingQ Library has many (only a free registration is needed). Or look into this thread in the LingQ Forum, you will find there lots of great links to resources. Or click (within the LingQ library) on "My Imports" - you will find a list of links of "Suggested resources".
  • Read the text, look up the new words and expressions (=terms) and save them for review and test.
  • The good thing with LWT: Every saved term will show up with its translation, status, etc. in all other occurrences of the same text and every other text! So you'll see immediately what you already know and how well you know it. And of course you'll see what you don't know!
  • Load the MP3 file also on your portable MP3 player and listen to it often.
  • Review (by reading again) or test your saved words and expressions.

  • Listen ▶ Read ▶ Review/Test.
    Listen ▶ Read ▶ Review/Test.
    ......

  • That's it. It's that simple.
  • If you want know more, watch Steve Kaufmann's videos on YouTube: "The 7 secrets of language learning", "Language learning FAQ", and many more.
How to use - [↑]
  • LWT home screen after installation

    This is home screen of LWT if the database is empty. Please install the demo database or start with the definition of a language you want to learn.

    Image

  • LWT home screen

    This is normal home screen of LWT. You may choose a language here, but you can do this also later. If you you choose a language, the language filter is pre-set to that language in some other screens. The last text you've read or tested is shown, and you may jump directly into reading, testing or printing of this last text.

    Image

  • My Languages

    The list of languages. Here you can add a new or edit an existent language. If no texts and no saved terms in a language exist, you can delete a language. If you change a language, all texts may be be automatically reparsed to refresh (and correct) the cache of sentences and text items (depends on what language settings you have changed). You can do this also manually by clicking on the yellow flash icon. You can also test all (due) terms of a language or set a language as "current" language.

    Image

  • New/Edit Language 

    This is the place to define or edit a language you want to study.

    If you are new to the system, use the "Language Settings Wizard" first. You only select your native (L1) and study (L2) languages, and let the wizard set all language settings that are marked in yellow. You can always adjust the settings afterwards.

    Explainations of the input fields - please read also this section:

    • The three Uniform Resource Identifiers (URIs) are URIs to three web dictionaries (the second and third is optional). Use ### as a placeholder for the searchword in the URIs. If ### is missing, the searchword will be appended. If the URI to query "travailler" in WordReference is "http://www.wordreference.com/fren/travailler", you enter: "http://www.wordreference.com/fren/###" or "http://www.wordreference.com/fren/". Another example: The URI to query "travailler" in sansagent is "http://dictionary.sensagent.com/travailler/fr-en/", so you enter in LWT "http://dictionary.sensagent.com/###/fr-en/".

      As URI No. 3 ("Google Translate URI") is also used to translate whole sentences, I would recommend to enter here always the link to Google Translate, like shown in the examples. The link to Google Translate is "http://translate.google.com/?ie=UTF-8&sl=..&tl=..&text=###", where the two-character codes after "sl=" and "tl=" designate the language codes (or "subtags") for the source and the target language. But a different third web dictionary is of course possible, but sentence translations may not work.

      If the searchword in the three URIs needs to be converted into a different encoding (standard is UTF-8), you can use ###encoding### as a placeholder. Normally you see this right away if terms show up wrongly in the web dictionary. Example: Linguee expects the searchword in ISO-8859-15, not in UTF-8, so you define it this way: "http://www.linguee.de/search?direction=auto&query=###ISO-8859-15###". A list of encodings can be found here.

      IMPORTANT: Some dictionaries (including "Google Translate") don't allow to be opened within a frame set. Put an asterisk * in front of the URI (Examples: *http://mywebdict.com?q=### or *http://translate.google.com/?ie=UTF-8&sl=..&tl=..&text=###) to open such a dictionary not within the frame set but in a popup window (please don't forget to deactivate popup window blocking in your browser!).

      One dictionary (Glosbe) has been closely integrated into LWT via the Glosbe API. To use this dictionary, input the "special" dictionary link "glosbe_api.php?from=...&dest=...&phrase=###" (NO "http://" at the beginning!!) with from: "L2 language code" (the language of your texts) and dest: "L1 language code" (e.g. mother tongue). To find the language codes, open this page to select the "from" (L2) language. On the next page, select the "L2 - L1" language pair. The URL of the next page shows the two language codes, here as an example "French - English": http://glosbe.com/fr/en/. The "from" code is "fr", the "dest" code is "en". Using this dictionary makes the transfer of translation(s) from the Glosbe to LWT very easy: just click on the icon next to the translations to copy them into the LWT edit screen. I recommend to use the LWT-integrated Glosbe dictionary as the "Dictionary 1 URI". Note: I cannot guarantee that the Glosbe API and this special integration will work in the future!

      You don't know how and where to find a good web dictionary? Try these dictionary directories: If you have found a suitable web dictionary, try to translate some words and look whether the word is part of the web address (URI/URL). If yes, replace the word with ### and put this in one of the URI fields within LWT.

    • The entry "Text Size" defines the relative font size of the text. This is great for Chinese, etc.

    • "Character Substitutions" is an optional list of "from=to" items with "|" as list separator. The "from" character is replaced by the "to" character ("to" may be also empty). So different kinds of apostrophes can unified or deleted.

    • "RegExp Split Sentences" is a list of characters that signify a sentence ending (ALWAYS together with a following space or newline!). The space can be omitted (and it is normally), if you set "Make each character a word" to Yes (see below). Whether you include here ":" and ";" - that's your decision. See also this table. Characters can be also defined in Unicode form: "\x{....}"; the Chinese/Japanese full stop "。" is then "\x{3002}" (always without "). Please inform yourself about Unicode here (general information) and here (Table of Unicode characters).

    • "Exceptions Split Sentences" are a list of exceptions that are NOT to be treated as sentence endings with "|" as list separator. [A-Z] is a character range. If you don't want to split sentences after Mr. / Dr. / A. to Z. / Vd. / Vds. / U.S.A., then you should specify these here: "Mr.|Dr.|[A-Z].|Vd.|Vds.|U.S.A." (without ").

    • "RegExp Word Characters" is a list of characters OR character ranges "x-y" that defines all characters in a word, e.g. English: "a-zA-Z", German: "a-zA-ZaöüÄÖÜß", Chinese: 一-龥. See also this table. Characters can be also defined in Unicode form: "\x{....}"; the Chinese/Japanese character "one" "一" is then "\x{4E00}" (always without "). So the above specification for the range of characters in Chinese "一-龥" can also be specified: "\x{4E00}-\x{9FA5}".

    • "Make each character a word" is a special option for Chinese, etc. This makes EVERY character a single word (normally words are split by any non-word character or a space). See also this table.

    • "Remove spaces" is another option for Chinese, etc. It removes all spaces from the text (and the example sentences). See also this table.

    • "Right-To-Left Script" must be set to "Yes" if the language/script is written from right to left, like Arabic, Hebrew, Farsi, Urdu, etc.

    • "Export Template". The export template controls "Flexible" Term Exports for the terms of that language. It consists of a string of characters. Some parts of this string are placeholders that are replaced by the actual term data, see this table. For each term (word or expression), that has been selected for export, the placeholders of the export template will be replaced by the term data and the string will be written to the export file. If the export template is empty, nothing will be exported.

    To understand all these options, please study also this, look at the examples and play around with different settings and different texts.

    Image

  • My Texts

    The list of texts. You can filter this list according to language, title (wildcard = *) or text tag(s) (see also below). The most important links for each text are "Read" and "Test" - that's the place to read, to listen, to save terms and to review and test your terms in sentence context. To see all terms of a text that you have saved, click on the numbers in column "Saved Wo+Ex". To print, archive, edit (and reparse), or to delete a text, click on the icons in column "Actions". There are more actions available, see "Multi Actions".

    Image

    Multi Actions for marked texts

    You can test the terms of the marked texts, delete or archive the marked texts. "Reparse Texts" rebuilds the sentence and the text item cache for all marked texts. "Set Term Sentences" sets a valid sentence (with the term in {..}) for all those saved or imported terms that occur in the text and that do not have a sentence at all or none with {term}. This makes it easy to "create" sentence examples for imported terms.

    Image

  • My Text Tags

    The list of your text tags. You can manage your text tags here. With text tags, it will be easier to categorize and organize your texts. The tags are case sensitive, have 1 to 20 characters, and must not contain any spaces or commas.

    Image

  • New/Edit Text (with Check)

    This is the screen to input, check or edit a single text. Try to store not too long texts (the maximum length is 65,000 Bytes). If texts are very long (> 1000 words), certain operations (e.g. loading a text for reading, calculation of known/unknown words) may be quite slow. An audio URI and a link to the text source can also be defined. The best place to store your audios is the "media" subdirectory below the installation directory "lwt" (you have to create it yourself, and you have to copy the audio files into this directory; click Refresh if you don't see just copied media). But a cloud webspace service like DropBox is also possible. In the moment there is no possibility to import/upload an audio file within the LWT application. By the way, you can use MP3, WAV, or OGG media files, but be aware that not all browsers and/or operating systems support all media types! If you click "Check", the text will be parsed and split into sentences and words according to your language settings. Nothing will be stored if you check a text. You can see whether your text needs some editing, or whether your language settings (especially the ones that influence parsing/splitting) need an adjustment. Words (not expressions) that are already in your word list are displayed in red, and the translation is displayed. The Non-Word List shows all stuff between words. The "Check a Text" function can also be started directly from the main menu. If you click on "Change" or "Save", the text will be only saved. If you click on "Change and Open" or "Save and Open", the text will be saved and opened right away.

    Image

    You can also import a longer text into LWT with the possibility to split it up into several smaller texts. Click on "Long Text Import". You must specify the maximum number of sentences per text, and the handling of newlines for paragraph detection. It is not possible to specify audio files or URIs.

    Image

  • Read a Text

    This is your "working area": Reading (and listening to) a text, saving/editing words and expressions, looking up words, expressions, sentences in external dictionaries or Google Translate. To create an expression, click on the first word. You see "Exp: 2..xx 3..yy 4..zz ...". Just click on the number of words (2..9) of the desired expression you want to save. The dictionary links for multi word expressions are always in the edit frame! You can also use the Keyboard in the text frame, see Key Bindings. Double clicking on a word sets the audio position approximately to the text position, if an audio was defined. The other audio controls are self-explanatory: automatic repeat, rewind and move forward n seconds, etc.).

    Image

    Reading a Right-To-Left Script (Hebrew):

    Image

    With the checkbox [Show All] you can switch the display of text:

    [Show All] = ON (see below): All terms are shown, and all multi-word terms are shown as superscripts before the first word. The superscript indicates the number of words in the multi-word term.

    Image

    [Show All] = OFF (see below): Multi-word terms now hide single words and shorter or overlapping multi-word terms. This makes it easier to concentrate on multi-word terms while displaying them without superscripts, but creation and deletion of multi-word terms can be a bit slow in long texts.

    Image

  • Test terms

    Tests are only possible if a term has a translation. Terms with status "Ignored" and "Well Known" are never tested, and terms with a positive or zero score are not tested today. In summary, the term score must fall below zero to trigger the test. See also Term scores. Terms that are due today are marked with a red bullet in the term table. Terms that are due tomorrow are marked with a yellow bullet in the term table.

    During a test, a status display (at the bottom of the test frame) shows you the elapsed time "mm:ss", a small bar graph, and the total, not yet tested, wrong and correct terms in this test.

    In the following, L1 denotes you mother tongue (= translations), and L2 the language you want to learn (= the terms (words and expressions).

  • Test terms in a text (L2 -> L1)

    This is Test #1 or #4: L2 -> L1 (recognition) - to train your ability to recognize a L2 term. You may test within sentence context (Button "..[L2].."), or just the term (Button "[L2]"). You can also use the Keyboard in the test frame, see Key Bindings.

    Image

  • Test terms in a text (L1 -> L2)

    This is Test #2 or #5: L1 -> L2 (recall) - to train your ability to produce a term from L1. You may test within sentence context (Button "..[L1].."), or just the term (Button "[L1]"). You can also use the Keyboard in the test frame, see Key Bindings.

    Image

  • Test terms in a text (••• -> L2)

    This is test #3: ••• -> L2 (recall) - to train your ability to produce a term only from the sentence context (Button "..[••].."). If you hover over "[•••]", a tooltip displays the translation of the term. You can also use the Keyboard in the test frame, see Key Bindings.

    Image

  • Test yourself in a table / word list format (Button "Table")

    This is test #6: The selected terms and expressions are presented as a table. You can make invisible either the columns "Term" or "Translation", and you can hide or show the columns "Sentence", "Romanization", "Status" and "Ed" (Edit). To reveal the invisible solution ("Term" or "Translation"), you just click into the empty table cell. You can review or test yourself with or without changing the status by clicking "+" or "-" in the "Status" column. A status in red signifies that the term is due for testing. You can also edit the term by clicking the yellow "Edit" icon. Columns 2 to 6 may also my sorted by clicking on the header row. The initial sort order is according to term score.

    Image

  • Print a text

    Here you print a text. Optional: an inline annotation (translation and/or romanization) of terms that are of specified status(es). This screen is also great to just read or study a text.

    Chinese Text with annotation (Romanization/Pinyin and translation):

    Image

    Chinese Text with annotation (only Romanization/Pinyin):

    Image

    How to create, edit, and use an Improved Annotated Text:

    Motivation: Annotated texts (as interlinear text) have been used for language learning for a long time. One example are the word-by-word translations in Assimil courses. The German V. F. Birkenbihl proposes the creation of interlinear word-by-word or hyperliteral translations (calling this creation "decoding") in foreign language learning. Learning Latin or Ancient Greek via interlinear texts is quite old as you can see in this YouTube video.

    LWT's old "Print Screen" offers annotations, but it displays ALL translations of a term. The Improved Annotated Text feature enables you to select the best translation for every word in the text. As a result, you create an L1 word-by-word translation that is displayed above the L2 text. This interlinear text is better suited for language study, especially for beginners.

    Method: While listening to the audio, first follow the blue annotations in your native language while listening and understanding. Later, after understanding the text fully, you read the foreign language text alone. Repeat this often. After these steps, you listen to the text passively or do shadowing.

    On the Print Screen, click on "Create" an Improved Annotated Text. The system creates a default annotated text.

    Edit Mode:

    Image

    Within the "Improved Annotated Text - Edit Mode", you can select the best term translation by clicking on one of the radio buttons. To be able to do this, multiple translations must be delimited by one of the delimiters specified in the LWT Settings (currently: /;|). You can also type in a new translation into the text box at the end (this does not change your saved term translation), or you may change your term by clicking on the yellow icon or add a translation by clicking on the green "+" icon (this does change your saved term translation), and select it afterwards. The "Star" icon indicated that you want the term itself as annotation. Important: It's not possible to create new terms here - please do this in the "Read text" screen. Changing the language settings (e.g. the word characters) may have the effect that you have to start from scratch. The best time for the creation of an improved annotated text is after you have read the text completely and created all terms and expressions in the "Read text" screen.

    Warning: If you change the text, you will lose the saved improved annotated text!
    All changes in the Edit screen are saved automatically in the background!

    To leave the Edit mode, click on "Display/Print Mode". You may then print or display (with audio) the text, and work with the text online or offline.

    Print Mode:

    Image

    Display Mode (with audio player) in a separate window. Clicking the "T" or "A" lightbulb icons hides/shows the text or the blue annotations. You may also click on a single term or a single annotation to show or to hide it. This enables you to test yourself or to concentrate on one text only. Romanizations, if available, appear while hovering over a term.

    Image

  • My Terms

    The list of your saved words or expressions (= terms). You may filter the list of terms by language, text, status, term/romanization/translation (wildcard * possible) or term tag(s). Different sort orders are possible. You can do "multi actions" only on the marked or on all terms (on all pages!). "Se?" displays a green dot if a valid sentences with {term} exists. "Stat/Days" displays the status and the number of days since the last status change. The score of a term is a rough measure (in percent) how well you know a term. Read more about term scores here. Terms with zero score are displayed red and should be tested today.

    Image

    Multi Actions for marked terms

    Most actions are self-explanatory. "Test Marked Terms" starts a test with all marked terms. You may delete marked terms and change the status of marked terms. "Set Status Date to Today" is some kind of "trick" for vacations, illnesses, etc.

    "Export Marked Texts (Anki)" exports all terms that have been marked AND have a valid sentence with {term} for Anki. Terms that do not have a sentence with {term} will NOT be exported. Cloze testing of terms within sentence context can so be easily done in Anki. The export is tab-delimited: (1) term, (2) translation, (3) romanization, (4) Sentence without term (question of cloze test), (5) Sentence with term (answer of cloze test), (6) Language, (7) ID Number, (8) Tag list. Anki template decks (for Anki Version 1 and 2) are provided: "LWT.anki" and "LWT.apkg" in directory "anki".

    "Export Marked Texts (TSV)" exports all terms that have been marked. The export is tab-delimited: (1) term, (2) translation, (3) sentence, (4) romanization, (5) status, (6) language, (7) ID Number, (8) tag list.

    Image

    Multi Actions for all terms on all pages of the current query

    Explanations see above.

    Image

  • My Term Tags

    The list of your term tags. You can manage your term tags here. With term tags, it will be easier to categorize and organize your terms. The tags are case sensitive, have 1 to 20 characters, and must not contain any spaces or commas.

    Image

  • My Text Archive

    The list of archived texts. To unarchive, to edit or to delete a text, click on the icon under "Actions". There are also "Multi Actions" available.

    What is the difference between (active) texts and archived texts?

    • (Active) texts
      • They have been parsed and tokenized according to the rules defined for the language.
      • The result is stored in a cache of sentences and text items.
      • They use a lot of space in the database.
      • Reading with term creation/editing and dictionary lookup is possible.
      • Testing of a stored term that occurs in the text, is possible. A terms will be tested within the context of any sentence(s) in all active texts (the number of sentences may be set (1, 2, or 3) as a preference).

    • Archived texts
      • They are not parsed and tokenized, only the text is stored.
      • Compared with active texts, they don't use much space in the database, because no sentences and no text items are stored.
      • Reading with term creation/editing and dictionary lookup is not possible.
      • Testing of a stored term, that occurs in the text, is possible, but a term will be tested ONLY within the context of the sentence(s) that has/have been stored with the term in the sentence field, if the term does not occur in any active text.


    Image

    Multi Actions for marked archived texts

    Image

  • My Statistics

    It's self-explanatory and shows your performance. The numbers in the first table are links, by clicking on them you jump to the table of all terms in that status and language.

    Image

  • Import Terms

    Import a list of terms for a language, and set the status for all to a specified value. You can specify a file to upload or type/paste the data directly into the textbox. Format: one term per line, fields (columns) are separated either by comma ("CSV" file, e.g. used in LingQ as export format), TAB ("TSV" file, e.g. copy and paste from a spreadsheet program, not possible if you type in data manually) or # (if you type in data manually). The field/column assignment must be specified on the left. Important: You must import a term. The translation can be omitted if the status should be set to 98 or 99 (ignore/well known). Translation, romanization and sentence are all optional, but please understand that tests are only possible if terms have a translation. If a term already exists in the database (comparison is NOT case sensitive), it will not be overwritten; the line will be ignored. You can change this by setting "Overwrite existent terms" to "Yes". Be careful using this screen, a database backup before the import and double-checking everything is always advisable!

    Image

  • Backup/Restore/Empty Database

    This screen offers a possibility to save, restore or empty the LWT database (ONLY the current table set!). This makes it easy to try out new things or just to make regular backups. "Restore" only accepts files that have been created with the "Backup" function above. "Empty Database" deletes the data of all tables (except the settings) of the current table set, and you can start from scratch afterwards. Be careful: you may lose valuable data!

    Image

  • Settings/Preferences

    In this screen you can adjust the program according to your needs. The geometric properties of the Read Text and Test screens can be changed. This is important because different browsers and font sizes may result in an unpleasant viewing experience. The waiting time to display the next test and to hide the old message after a test assessment can also be changed. The number of sentences displayed during testing and generated during term creation can be set to 1 (default), 2 or 3; if set to 2 or 3 you are able to do "MCD" (Massive-Context Cloze Deletion) testing, proposed by Khatzumoto @ AJATT. The number of items per page on different screens can be set, and you can decide whether you want to see the word counts on the textpage immediately (page may load slow) or later (faster initial loading).

    Image

  • Multiple LWT table sets

    WARNING: The use of the "Multiple LWT table sets" feature on an external web server may cause a monstrous database size if some users import many or large texts. Without further improvements (e. g. user quotas, etc.), LWT with activated "Multiple LWT table sets" is in its current version not suitable to be run in a public environment on an external web server!

    When you start using LWT, you store all your data in the "Default Table Set" within the database you have defined in the file "connect.inc.php" during the LWT installation.

    Beginning with LWT Version 1.5.3, you are able to create and to use unlimited LWT table sets within one database (as space and MySQL limitations permit). This feature is especially useful for users who want to set up a multi user environment with a set of tables for each user. You can also create one table set for every language you study - this allows you to create different term/text tags for each language. If you don't need this feature, you just use LWT like in earlier versions with the "default table set". Please observe that the "Backup/Restore/Empty Database" function only works for the CURRENT table set, NOT for ALL table sets you have created!

    Just click on the link at the bottom of the LWT home screen where the current table set name (or "Default") is displayed. In a new screen "Select, Create or Delete a Table Set" you may switch and manage table sets. A table set name is max. 20 characters long. Allowed characters are only: a-z, A-Z, 0-9, and the underscore "_". You will find more details how table sets are internally implemented here.

    Image

    If you want "switch off" this feature, and use just one table set, you may define the name in the file "connect.inc.php":

    $tbpref = "";       // only the default table set

    $tbpref = "setname";       // only the table set "setname"

    After adding such a line in the file "connect.inc.php", you are not able to select, create or delete table sets anymore. Only the one you have defined in "connect.inc.php" will be used. Please observe the rules for table set names (see above)!!

    If more than one table set exists, and $tbpref was NOT set to a fixed value in "connect.inc.php", you can select the desired table set via "start.php" (use this as start page if several people use their own table set), or by clicking on the LWT icon or title in the LWT menu screen "index.php".

    By hovering over the LWT icon in the top left corner of every screen, you can display the current table set in a yellow tooltip.

Questions and Answers - [↑]
  • I want to use LWT, and I see something like this:

    Image

    Answer: Your local webserver (Apache) is not running. Please start it via EasyPHP or MAMP control program/panel.

  • I want to use LWT, and I see something like this:

    Image

    Answer: The server is running, but the application is not found. Maybe the Uniform Resource Identifier (URI) is wrong or misspelled. Please check/correct it. Or the URI is correct, and the application is installed, but not in the correct directory lwt below htdocs. Please install/copy/move it into the correct directory.

  • I want to use LWT, and I see this:

    Image

    Answer: Either the database (MySQL) is not running, or the database connection parameters in ../htdocs/lwt/connect.inc.php are wrong. Please check/correct the database connection parameters and/or start MySQL via the MAMP or EasyPHP control program/panel.

  • I want to use LWT, and I see this:

    Image

    Answer: The Webserver and the database is running, but the database connection parameter file ../htdocs/lwt/connect.inc.php is not found. Please rename one of the connection files (according to your server) to ../htdocs/lwt/connect.inc.php.

  • I have installed or updated LWT on OS X or Linux, but the application does not run as expected:

    Answer: The Webserver does seem to have full access to all files (insufficient rights). Open a terminal window, go to the directory where the directory "lwt" has been created with all LWT files, e. g.
    cd /var/www/html
    Now execute:
    sudo chmod -R 755 lwt
    and everything should now work as expected.

Setup for iPad® (and other mobile devices) - [↑]
  • If you want to use LWT on an iPad®: that's possible (even the audio player works!).
  • In "Settings/Preferences", set the "Frame Set Display Mode" to "Auto" or "Force Mobile". On other mobile devices, you may also try "Force Non-Mobile" if you are unhappy with the results.
  • Try to reduce the length of your texts to reduce scrolling.
  • It's also a good idea to install and run LWT at a web hoster, as explained above. So you can access LWT easily if you are often on the go.
  • I hope you will enjoy using LWT on an iPad® although creating new terms and copy & paste can be a bit tedious. I was not able to test LWT on other mobile devices. I appreciate your feedback!

Language Setup - [↑]
  • This section shows some language setups ("RegExp Split Sentences", "RegExp Word Characters", "Make each character a word", "Remove spaces") for different languages. They are only recommendations, and you may change them according to your needs (and texts). See also here.

  • If you are unsure, try the "Language Settings Wizard" first. Later you can adjust the settings.

  • Please inform yourself about Unicode here (general information) and here (Table of Unicode characters) and about the characters that occur in the language you learn!

    Language RegExp
    Split
    Sentences
    RegExp
    Word
    Characters
    Make each
    character
    a word
    Remove
    spaces
    Latin and all languages
    with a Latin derived alphabet
    (English, French, German, etc.)
    .!?:; a-zA-ZÀ-ÖØ-öø-ȳ No No
    Languages with a
    Cyrillic-derived alphabet
    (Russian, Bulgarian, Ukrainian, etc.)
    .!?:; a-zA-ZÀ-ÖØ-öø-ȳЀ-ӹ No No
    Greek .!?:; \x{0370}-\x{03FF}\x{1F00}-\x{1FFF} No No
    Hebrew (Right-To-Left = Yes) .!?:; \x{0590}-\x{05FF} No No
    Thai .!?:; ก-๛ No Yes
    Chinese .!?:;。!?:; 一-龥 Yes or No Yes
    Japanese .!?:;。!?:; 一-龥ぁ-ヾ Yes or No Yes
    Korean .!?:;。!?:; 가-힣ᄀ-ᇂ No No or Yes

  • "\'" = Apostrophe, and/or "\-" = Dash, may be added to "RegExp Word Characters", then words like "aujourd'hui" or "non-government-owned" are one word, instead of two or more single words. If you omit "\'" and/or "\-" here, you can still create a multi-word expression "aujourd'hui", etc., later.

  • ":" and ";" may be omitted in "RegExp Split Sentences", but longer example sentences may result from this.

  • "Make each character a word" = "Yes" should only be set in Chinese, Japanese, and similar languages. Normally words are split by any non-word character or whitespace. If you choose "Yes", then you do not need to insert spaces to specify word endings. If you choose "No", then you must prepare texts without whitespace by inserting whitespace to specify words. If you are a beginner, "Yes" may be better for you. If you are an advanced learner, and you have a possibility to prepare a text in the above described way, then "No" may be better for you.

  • "Remove spaces" = "Yes" should only be set in Chinese, Japanese, and similar languages to remove whitespace that has been automatically or manually inserted to specify words.
Term Scores - [↑]
  • The score of a term is a rough measure (in percent) how well you know a term. It is displayed in "My Terms", and it is used in tests to decide which terms are tested next.

  • The score is calculated as follows:

    Image

    Terms with status 1 are tested either today (if not created today) or tomorrow (if created today, or a test failed today). Terms set to status 2 should be retested after 2 days. Terms set to status 3 should be retested after 9 days. Terms set to status 4 should be retested after 27 days. Terms set to status 5 should be retested after 72 days.

  • Example 1: Five terms were tested today; they are now in status 1, 2, 3, 4, and 5. The term with status 1 is still unknown (failed the test, so the score is still 0 %). The term with status 5 is well known (score: 100 %).

    Image

  • Example 2: Five terms were not tested for some time; they are in status 1, 2, 3, 4, and 5. All of them have a score of 0, because the number of days indicate that you may have forgotten them. Therefore all should be retested today.

    Image
Key Bindings - [↑]
  • Important: Before using the keyboard you must set the focus within the frame by clicking once on the frame!

  • Key Bindings in the TEXT Frame
    Key(s)Action(s)
    RETURN The next UNKNOWN (blue) word in the text will be shown for creation
    RIGHT or SPACE Mark next SAVED (non-blue) term (*)
    LEFT Mark previous SAVED (non-blue) term (*)
    HOME Mark first SAVED (non-blue) term (*)
    END Mark last SAVED (non-blue) term (*)
    1, 2, 3, 4, 5 Set status of marked term to 1, 2, 3, 4, or 5
    I Set status of marked term to "Ignored"
    W Set status of marked term to "Well Known"
    E Edit marked term
    A Set audio position according to position of marked term.
    ESC Reset marked term(s)
    (*) Only saved terms with the status(es) defined/filtered in the settings are visited and marked!

  • Key Bindings in the TEST Frame
    Key(s)Action(s)
    SPACE Show solution
    UP Set status of tested term to (old status plus 1)
    DOWN Set status of tested term to (old status minus 1)
    ESC Do not change status of tested term
    1, 2, 3, 4, 5 Set status of tested term to 1, 2, 3, 4, or 5
    I Set status of tested term to "Ignored"
    W Set status of tested term to "Well Known"
    E Edit tested term
WordPress Integration - [↑]
  • IMPORTANT: Please read this THIS WARNING first!
    I CANNOT give any support for this feature, NOR can I help you with any WordPress problems!
    USE AT YOUR OWN RISK!

  • The following instructions are for users who have installed WordPress, and want to install LWT for multiple WordPress users in conjunction with WordPress authentication. Every WordPress user will have his/her own LWT table set.

  1. Download and install WordPress.
  2. Download and install LWT into a new subdirectory "lwt", located in the main directory of your WordPress installation.
  3. In subdirectory "lwt", rename the file connect_wordpress.inc.php into connect.inc.php, and enter the database parameters $server (database server), $userid (database user id), $passwd (database password), and $dbname (database name, can be the same like your wordpress database, or a different one) by editing the file with a text editor.
  4. In the WordPress General Settings, decide whether anyone can register and use LWT (Membership = "Anyone can register"), or not (an administrator must create new users). The "New User Default Role" should be "Subscriber".
  5. The link to start LWT with complete WordPress authentication is:
    http://...path-to-wp-blog.../lwt/wp_lwt_start.php
  6. The link to start LWT (without WordPress authentication, only by checking the session cookie that is valid until the browser is closed) is:
    http://...path-to-wp-blog.../lwt/
    If the session cookie does not exist, both above start methods are the same.
  7. To properly log out from both WordPress and LWT, use the link:
    http://...path-to-wp-blog.../lwt/wp_lwt_stop.php
    The LWT home page has such a link. If you only log out via the links on the WordPress pages, you will still be able to use LWT until the browser is closed. If you want to log out from both WordPress and LWT, use the above link, or click on the link on the LWT home page!
  8. If you delete a user, you must find out its user number (table "wp_users"). After deleting the user in WordPress, you can delete all LWT tables with table names beginning with the user number plus an underscore "_". You can do this in phpMyAdmin.
Database Structure - [↑]
  • The following twelve tables are one "LWT table set". The default table set has no table name prefix, so the tables are named just as written below: "settings", "languages", etc.

    Additional table sets have its "table set name" plus an underscore "_" as a table name prefix: "setname_settings", "setname_languages", etc. The "table set name" is max. 20 characters long. Allowed characters are only: a-z, A-Z, 0-9, and the underscore "_".

    Only if the table set is not set in "connect.inc.php", the currently used table set is saved in a global table "_lwtgeneral", in column LWTValue of row with LWTKey = "current_table_prefix". If such a row does not exist, the default table set will be used, or will be automatically created and used.

  • Table "settings" (Settings as Key-Value Pairs):
    StKey varchar(40) NOT NULL,
    StValue varchar(40) DEFAULT NULL,
    PRIMARY KEY (StKey)

  • Table "languages" (Defined languages):
    LgID int(11) unsigned NOT NULL AUTO_INCREMENT,
    LgName varchar(40) NOT NULL,
    LgDict1URI varchar(200) NOT NULL,
    LgDict2URI varchar(200) DEFAULT NULL,
    LgGoogleTranslateURI varchar(200) DEFAULT NULL,
    LgExportTemplate varchar(1000) DEFAULT NULL,
    LgTextSize int(5) unsigned NOT NULL DEFAULT '100',
    LgCharacterSubstitutions varchar(500) NOT NULL,
    LgRegexpSplitSentences varchar(500) NOT NULL,
    LgExceptionsSplitSentences varchar(500) NOT NULL,
    LgRegexpWordCharacters varchar(500) NOT NULL,
    LgRemoveSpaces int(1) unsigned NOT NULL DEFAULT '0',
    LgSplitEachChar int(1) unsigned NOT NULL DEFAULT '0',
    LgRightToLeft INT(1) UNSIGNED NOT NULL DEFAULT '0',
    PRIMARY KEY (LgID),
    UNIQUE KEY LgName (LgName)

  • Table "texts" (Active texts, parsed and cached in sentences and textitems):
    TxID int(11) unsigned NOT NULL AUTO_INCREMENT,
    TxLgID int(11) unsigned NOT NULL, -- LANGUAGE FOREIGN KEY --
    TxTitle varchar(200) NOT NULL,
    TxText text NOT NULL,
    TxAnnotatedText longtext NOT NULL,
    TxAudioURI varchar(200) DEFAULT NULL,
    TxSourceURI varchar(1000) DEFAULT NULL,
    PRIMARY KEY (TxID),
    KEY TxLgID (TxLgID)

  • Table "archivedtexts" (Text Archive, not parsed and cached):
    AtID int(11) unsigned NOT NULL AUTO_INCREMENT,
    AtLgID int(11) unsigned NOT NULL, -- LANGUAGE FOREIGN KEY --
    AtTitle varchar(200) NOT NULL,
    AtText text NOT NULL,
    AtAnnotatedText longtext NOT NULL,
    AtAudioURI varchar(200) DEFAULT NULL,
    AtSourceURI varchar(1000) DEFAULT NULL,
    PRIMARY KEY (AtID),
    KEY AtLgID (AtLgID)

  • Table "tags2" (Text tags and comments):
    T2ID int(11) unsigned NOT NULL AUTO_INCREMENT,
    T2Text varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
    T2Comment varchar(200) NOT NULL DEFAULT '',
    PRIMARY KEY (T2ID),
    UNIQUE KEY T2Text (T2Text)

  • Table "texttags" (Text tags relations):
    TtTxID int(11) unsigned NOT NULL, -- TEXT FOREIGN KEY --
    TtT2ID int(11) unsigned NOT NULL, -- TEXT TAG FOREIGN KEY --
    PRIMARY KEY (TtTxID,TtT2ID),
    KEY TtTxID (TtTxID),
    KEY TtT2ID (TtT2ID)

  • Table "archtexttags" (Archived text tags relations):
    AgAtID int(11) unsigned NOT NULL, -- ARCHIVED TEXT FOREIGN KEY --
    AgT2ID int(11) unsigned NOT NULL, -- TEXT TAG FOREIGN KEY --
    PRIMARY KEY (AgAtID,AgT2ID),
    KEY AgAtID (AgAtID),
    KEY AgT2ID (AgT2ID)

  • Table "words" (the words and expressions you have saved):
    WoID int(11) unsigned NOT NULL AUTO_INCREMENT,
    WoLgID int(11) unsigned NOT NULL, -- LANGUAGE FOREIGN KEY --
    WoText varchar(250) NOT NULL,
    WoTextLC varchar(250) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
    WoStatus tinyint(4) NOT NULL,
    WoTranslation varchar(500) NOT NULL DEFAULT '*',
    WoRomanization varchar(100) DEFAULT NULL,
    WoSentence varchar(1000) DEFAULT NULL,
    WoCreated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    WoStatusChanged timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
    WoTodayScore double NOT NULL DEFAULT '0',
    WoTomorrowScore double NOT NULL DEFAULT '0',
    WoRandom double NOT NULL DEFAULT '0',
    PRIMARY KEY (WoID),
    UNIQUE KEY WoLgIDTextLC (WoLgID,WoTextLC),
    KEY WoLgID (WoLgID),
    KEY WoStatus (WoStatus),
    KEY WoTextLC (WoTextLC),
    KEY WoTranslation (WoTranslation),
    KEY WoCreated (WoCreated),
    KEY WoStatusChanged (WoStatusChanged),
    KEY WoTodayScore (WoTodayScore),
    KEY WoTomorrowScore (WoTomorrowScore),
    KEY WoRandom (WoRandom)

  • Table "tags" (Term tags and comments):
    TgID int(11) unsigned NOT NULL AUTO_INCREMENT,
    TgText varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
    TgComment varchar(200) NOT NULL DEFAULT '',
    PRIMARY KEY (TgID),
    UNIQUE KEY TgText (TgText)

  • Table "wordtags" (Term tags relations):
    WtWoID int(11) unsigned NOT NULL, -- TERM FOREIGN KEY --
    WtTgID int(11) unsigned NOT NULL, -- TERM TAG FOREIGN KEY --
    PRIMARY KEY (WtWoID,WtTgID),
    KEY WtTgID (WtTgID),
    KEY WtWoID (WtWoID)

  • Table "sentences" (Sentences cache, no backup needed):
    SeID int(11) unsigned NOT NULL AUTO_INCREMENT,
    SeLgID int(11) unsigned NOT NULL, -- LANGUAGE FOREIGN KEY --
    SeTxID int(11) unsigned NOT NULL, -- TEXT FOREIGN KEY --
    SeOrder int(11) unsigned NOT NULL,
    SeText text,
    PRIMARY KEY (SeID),
    KEY SeLgID (SeLgID),
    KEY SeTxID (SeTxID),
    KEY SeOrder (SeOrder)

  • Table "textitems" (Text items cache, no backup needed):
    TiID int(11) unsigned NOT NULL AUTO_INCREMENT,
    TiLgID int(11) unsigned NOT NULL, -- LANGUAGE FOREIGN KEY --
    TiTxID int(11) unsigned NOT NULL, -- TEXT FOREIGN KEY --
    TiSeID int(11) unsigned NOT NULL, -- SENTENCE FOREIGN KEY --
    TiOrder int(11) unsigned NOT NULL,
    TiWordCount int(1) unsigned NOT NULL,
    TiText varchar(250) NOT NULL,
    TiTextLC varchar(250) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
    TiIsNotWord tinyint(1) NOT NULL,
    PRIMARY KEY (TiID),
    KEY TiLgID (TiLgID),
    KEY TiTxID (TiTxID),
    KEY TiSeID (TiSeID),
    KEY TiOrder (TiOrder),
    KEY TiTextLC (TiTextLC),
    KEY TiIsNotWord (TiIsNotWord)
Changelog - [↑]
  • 1.5.19 (September 15 2014):
    Missing tag cache updating fixed (in "Add tag in all/marked texts or terms").
    Tag caches now also work properly if several instances of LWT are installed in parallel directories on the same server.
    Information about which web browser to use for LWT in this document updated.

  • 1.5.18 (September 14 2014):
    New Feature: Possibility to display similar terms while creating or editing a term. This will give you more language insight, and may ease inputting new terms that are similar. The number of displayed similar terms can be set from 0 (old behavior, default) to 9 on the "Settings" page. Clicking on the green icon in front of a similar term will copy the translation and romanization into the form fields for further editing. Important: If you want to use this new feature, you must change the setting "Similar terms to be displayed while adding/editing a term" to a value greater than 0. It will make more sense to do this if you have already many saved terms (e.g. more than 1,000). If you start with a language and have only a few terms, no or not very similar terms will be normally displayed and this feature will not make much sense.
    "https://" dictionary URIs are now allowed in the language settings. Checking of dictionary URIs in the language settings has been improved. The Glosbe dictionary page has been improved with a simple form to change the term and do a requery if you are unhappy with the query results.
    The jQuery and jPlayer libraries have been updated to v1.11.1 and v2.7.0, respectively. The jQuery.ScrollTo package has been updated to v1.4.13. The Floating Menu package has been updated to v1.12.
    The audio player skin selection has been removed; the "Blue Monday Small" skin is the standard skin beginning with this release.
    The Catalan language has been added to the Language Settings Wizard.
    New sort option for texts, terms or tags: "Oldest first".
    Some minor bugs fixed: media selection in archived texts, tag import errors, adding existing tag errors, etc.
    Some error messages (term/tag already exists) have been improved.
    Documentation updated.

  • 1.5.17 (August 15 2014, this document updated Aug 17 2014 and Aug 24 2014):
    Minor bug in Utilities fixed.
    Documentation updated. Broken links corrected or deleted. From now on, only the installation with EasyPHP for Windows and MAMP for Mac OS X will be explained in detail and is recommended. Other local web server packages, like XAMPP, etc., are of course still possible, but it's beyond the scope of this document to explain all the details for every webserver package (it will also confuse most LWT users who are not familiar with web server packages and their setup).
    Documentation updated on August 17 2014: Installation screencasts added.
    Documentation updated on August 24 2014: Linux (Ubuntu, LinuxMint) installation hints and screencast added.

  • 1.5.16 (February 19 2014):
    Paging (via page select, and only at the bottom of a page) did not work correctly in all cases, has been corrected.
    Documentation updated.

  • 1.5.15 (December 17 2013):
    Corrected wrong language code (French) within the language wizard definitions.
    Documentation updated.

  • 1.5.14 (August 05 2013, this document updated Oct 30 2013):
    Wrong text display in Print Screen corrected. Special handling of word breaks (if "Remove spaces" = Yes) removed.
    Documentation updated on October 30 2013.

  • 1.5.13 (July 22 2013):
    Removed an erroneous extra space in "wp_logincheck.inc.php". Thanks to a poster in the help forum for pointing this out!
    Minor bug fixes.
    License texts updated according to text on unlicense.org.
    Documentation updated.

  • 1.5.12 (July 16 2013):
    New Sort option for Terms/Expressions: "Word Count in Active Texts" (Descending). Only when you choose this sort option, the word count will be calculated, displayed, and used for sorting the table. This may slow down the term table display. If you prefer faster term table display, choose the other sort options.
    Much better Tablet/iPad® user experience in screens with several frames. There is a new setting "Frame Set Display Mode" where you can select how frame sets are displayed on different devices (default: "Auto"). If you prefer the old mode also on mobile devices, set this to "Force Non-Mobile".
    Tagging and JQuery UI updated.
    Better error message when Glosbe API call fails.
    Unsaved changes alerts extended to tag changes.
    Tags cache updating corrected: when LWT table set has been changed or after restore/emptying tables.

  • 1.5.11 (July 12 2013):
    If an improved annotated text exists, highlight the selected term translation in red in the text window popup and the text display frame (when using the keyboard).
    New language settings wizard.
    Better check on duplicate language names.
    Text window popup title is now a link (text color: yellow) to make editing an existent term a little easier.
    Some minor bug fixes.
    Documentation updated.

  • 1.5.10 (July 07 2013):
    Improved database error checking and reporting, better error messages when fatal errors occur, both with traceback information.
    Default values corrected in new language form.
    Some improvements in Glosbe-LWT integration.
    New alerts in some forms when there are unsaved changes during unload event.
    SQL query optimizations in 1.5.8/1.5.9 caused problems, old versions restored.
    Documentation updated.

  • 1.5.9 (July 03 2013):
    New Feature: Long Text Import: Importing a long text via file upload or from a text box, with splitting options.
    Possibility to save the source URI with an active or archived text.
    Missing code in tag management stylesheet restored.
    Documentation and some screenshots updated.

  • 1.5.8 (June 27 2013):
    Optimization of SQL queries for text and print display (reducing query time by up to thirty percent).
    Checking database status and database upgrade program code rewritten.
    Some minor improvements and bugfixes. Documentation updated.

  • 1.5.7 (June 25 2013):
    Some minor corrections in some SQL CREATE/INSERT statements. MySQL session string is now set to an empty string to avoid too strict SQL checking. Thanks to a poster in the help forum for pointing this out!
    A new 3rd "Flexible" term export is introduced, controlled by an "Export Template" in the language settings. Read more ...
    Texts are now automatically reparsed, however only after changing language settings that influence the sentence and textitems cache.
    Documentation updated.

  • 1.5.6 (June 22 2013):
    Two SQL statements (Anki/TSV export of marked terms) corrected. Thanks to a poster in the help forum for pointing this out!

  • 1.5.5 (June 21 2013):
    Integration of the Glosbe API into LWT via a "special" dictionary link. Read more here.
    Some minor improvements: Window width of dictionary popups changed from 600 to 800 Pixel. No "_lwtgeneral" operations if table prefix is fixed.
    LWT-WordPress integration, read more here (only for users who want to use WordPress authentication together with the LWT multiple user/table set feature introduced in version 1.5.3).
    Documentation updated.

  • 1.5.4 (June 19 2013):
    If more than one table set exists, and $tbpref was NOT set to a fixed value in "connect.inc.php", you can now select a table set via "start.php", or by clicking on the LWT icon or title in the LWT menu screen "index.php".
    By hovering over the LWT icon in the top left corner of every screen, you can now display the current table set in a yellow tooltip.
    A new test/review type "Table" has been added in the testing area. Words, translations, romanizations, sentences and status are presented in a table. You may hide and/or sort columns. After testing yourself, you can reveal the hidden information by clicking into the table cell, and change your status.
    Player appearance improved. Some settings, that were not saved until now, are now automatically saved. Documentation and some screenshots updated.

  • 1.5.3 (June 14 2013):
    New Feature: It is now possible to create and to use not only ONE set of LWT tables within one database. You are now able to create and use unlimited LWT table sets within one database (as space and MySQL limitations permit). This feature is especially useful for users who want to set up a multi user environment with a set of tables for each user. You can also create one table set for every language you study - this allows you to create different term/text tags for each language. If you don't need this feature, you just use LWT like in earlier versions with the "default table set". Read more here and here.
    Complete code review. Some minor improvements and bugfixes. Documentation & Anki 1+2 template decks updated.

  • 1.5.2 (June 09 2013):
    Easy navigation to the previous and the next text (according to current text filters and sort order) is now possible.
    "Backup" does not store anymore the tables 'sentences' and 'textitems'. These tables are now automatically recreated (by reparsing the texts) within "Restore". This makes backup faster and the backup file much smaller, while "Restore" will take a bit longer.
    Documentation and all screenshots updated.
    Installation procedures (EasyPHP) updated.

  • 1.5.1 (June 07 2013):
    Display screen of improved annotated texts (= hyperliteral translations as interlinear text) improved: Clicking the "T" or "A" lightbulb icons hides/shows the complete text or all annotations. You may also click on a single term or a single annotation to show or to hide it. This enables you to test yourself or to concentrate on one text only. Romanizations, if available, appear now while hovering over a term.
    Documentation and screenshots updated.

  • 1.5.0 (April 22 2013):
    New Feature: Create and edit an improved annotated text version (as interlinear text) for online or offline learning. Read more here.
    In-Place-editing of translations and romanizations now possible within the terms table.
    You may now empty (= delete the contents of) the LWT database in the "Backup/Restore/Empty Database" screen.
    Some minor improvements. Documentation, screenshots and demo database updated.

  • 1.4.10 (February 22 2013):
    New option in "Print" screen: annotation can now also be placed above the term (via Ruby characters). This is especially helpful for Chinese and Japanese, when annotating the text with the romanization (Pinyin, Hiragana, Katakana). Your browser must support ruby markup. Firefox needs the HTML Ruby Add-On to display ruby markup properly.
    Help document updated.

  • 1.4.9 (August 29 2012):
    Anki and TSV export bug fixed (in some cases the term tags were not exported).

  • 1.4.8 (May 11 2012, some external links updated June 19 2012):
    Correction of a small (typo) bug in js/jq_pgm.js that caused an SQL error when pressing the "E" key (Thank you, anthonylauder!). See also this thread.
    Correction in do_text_header.php: fix negative audio positions to zero. See also this thread.
    Timing of transactions now possible as an additional debugging option in settings.inc.php ($dspltime = 1; normally switched off = 0).
    "Important Links" section within this document updated and expanded.

  • 1.4.7 (April 6 2012):
    Correction of some minor mistakes and glitches in the code.

  • 1.4.6 (March 14 2012):
    Documentation and example database corrected. Google Translate links now open in a popup window, not in a frame of the frameset, as Google now disallows this. Please make sure to deactivate popup window blockers.

  • 1.4.5 (October 01 2011, documentation updated Oct 13 2011, external links updated Dec 8 2011):
    Double-Click on a term and "A" key (while going through non-blue terms via keyboard) sets audio position approximately to text position. Hovering over sentence marker (green or red dot) in the terms table shows tooltip with sentence. Some updates and corrections in the documentation.

  • 1.4.4 (September 23 2011):
    Changed the handling of backslash removal in posted data on servers with magic_quotes_gpc = Off. Documentation updated.

  • 1.4.3 (September 21 2011):
    Changed some unintentionally written short PHP open tags "<?" to "<?php". Thanks to a poster in the help forum for pointing this out.

  • 1.4.2 (September 19 2011):
    Removed PGUP/PGDN key bindings (mark first/last non-blue term, use HOME/END keys). Some minor changes in the documentation.

  • 1.4.1 (September 15 2011):
    Anki Export changed. The full sentence doesn't have brackets anymore.
    Data in Anki template updated.

  • 1.4.0 (September 09 2011):
    Mobile Version (experimental, via mobile.php): Selection of Language, Text, and Sentence, Playing the audio (if exists), Reading the text either sentence-by-sentence or term-by-term (saved words shown with translation, romanization, and status (via color). This mobile interface does not yet allow data manipulations.
    Texts, archived texts and terms can now also be filtered by "untagged".
    Added a "Repeat Audio / Single Play" toggle button for media player.

  • 1.3.1 (September 05 2011):
    New multi actions for marked/all terms: Set Terms to Lowercase, Capitalize Terms, Delete Sentences of Terms.
    Screenshots updated.

  • 1.3.0 (September 03 2011):
    Tagging of texts and archived texts introduced. With this feature, it will be easier to categorize and organize your texts. After having tagged your texts, you are able to filter texts according to one or two tags.
    Rudimentary right-to-left (rtl) script support: new db field in languages to set a language to right-to-left script, all relevant parts with respect to rtl support changed. A simple Hebrew example added to demonstrate rtl support.
    Documentation, screenshots, Anki example file updated.

  • 1.2.2 (August 26 2011):
    Removed a bug that prevented Strg-C/Cmd-C (and other key strokes) in text/test frames.
    Removed a bug in statistics calculation.
    Removed a bug in text selection dropdown control.
    Added column "Percentage Unknown Words" in Texts table.
    Removed language column in Texts/Terms tables if language filter is set.
    During reading a text, you can now create terms that do not occur in the text. Click on the yellow icon in the top left frame, and type in the term, translation, etc. You may now also edit the text directly.
    iPod touch®/iPhone®/iPad® icons and splash screen added, and HTML header for touch devices modified. (Thanks, Derek!)
    Documentation and screenshots updated.

  • 1.2.1 (August 25 2011):
    New Rewind and Fast Forward button for audio player. User can set the time to rewind or fast forward from 1 to 10 seconds.
    Added a section in the help document about the setup of LWT for iPads®, etc.
    Documentation and screenshots updated.

  • 1.2.0 (August 24 2011):
    Tagging of terms introduced. Tags are little pieces of information (20 characters max., no spaces, no commas, case sensitive!) attached to terms to help you catagorize and organize your terms. You can import (CSV, TSV) and export (Anki, TSV) terms together with tag information. Two new tables save tag information, and they are created automatically during first usage after update.
    Display of example sentences is now delayed.
    Backup creates the database SQL file now as a gzipped file. Restore can process old unzipped or new gzipped files. Gzipped files are much smaller in size (10-20 % of original size).
    Documentation and screenshots updated.

  • 1.1.1 (August 17 2011):
    New option in "Print" screen to select whether annotation should be placed in front (new option) or after (default) the term.
    New option in settings screen "Visit only saved terms with status(es) ..." to specify which terms are visited when using RIGHT/SPACE/LEFT/etc. keys in the text frame (default: ALL non-blue terms = statuses 1..5, Ign, WKn).
    The Status filter lists have been expanded.
    Fixed problems with non-ASCII characters in media file names (hopefully).
    Documentation and screenshots updated.

  • 1.1.0 (August 16 2011):
    DB design altered: Table "words" changed: 3 new columns to make random word selection (in tests) and score calculation/query faster.
    Translation, romanization and sentence are now optional. An empty translation or an asterisk in the translation field are equivalent. Terms without translation or in status "Well Known" or "Ignore" will never be tested. Import of terms without translation is now possible.
    Textarea input boxes have now all a maximum text/bytes length check.
    New status display during tests: "Elapsed Time / Total = Not yet tested + Wrong + Correct", plus a small bar graph.
    Testing algorithm revised, simplified and optimized.
    Tests can now be done also via key strokes (but you must first click in the test frame): SPACE: show solution, UP/DOWN: Status +1/-1, ESC: don't change status, NUMBER KEYS 1-5: set status to 1-5, I: set "Ignored", W: set "Well known", E: edit term.
    Terms due today and tomorrow are marked in score column (red/yellow) in terms table.
    In the "Read Text" frame, the next unknown (blue) word in the text can now be shown for term creation just by pressing the RETURN key. The term will be marked by a red border. You type in the translation, etc., and press RETURN to save the word. Now you can press RETURN again to show the next unknown (blue) word, enter a translation, save it, and so on... There is sometimes the problem that some external dictionaries catch the focus although the cursor should be in the translation field in the edit frame. Especially Chrome behaves badly, and I cannot change this. Please try different dictionaries and/or browsers.
    You can also review/manage saved (non-blue) terms with key strokes in the "Read Text" frame (RIGHT or SPACE: next term, LEFT: previous term, PAGE-UP or HOME: first term, PAGE-DOWN or END: last term, NUMBER KEYS 1-5: set current term status to 1-5, I: set current term status to "Ignored", W: set current term status to "Well known", E: edit current term, ESC: reset). The current term has a black border and the frame scrolls automatically. The term is displayed in the top right frame.
    New refresh button refreshes media files combo box (without page reload) on the text input/edit screen.
    Information added how to install LWT at a (free) webhoster.
    EasyPHP installation corrected.
    Documentation and screenshots updated, new floating menu.

  • 1.0.4 (August 11 2011):
    Code cleanup and optimization, better code documentation.
    Checking maximum text length in text input/edit/check screens.
    Media directory is not anymore included, user has to create it if needed. The demo media are now all online.
    Demo database installation is now done within LWT (optional). If the database is empty, a hint on the main screen is displayed either to install the demo db or to start with the definition of a language. Backup/Restore now with more hints and an option to install the demo database.
    Documentation and screenshots updated.

  • 1.0.3 (August 09 2011):
    New button to open a new text immediately after saving.
    Dictionaries can now be opened not only within the frame set (default) but also in a popup window (please deactivate popup window blocking in your browser!). To open a dictionary in a separate popup window, put an asterisk * in front of the Uniform Resource Identifier (Example: *http://mywebdict.com?q=###). Please use this method if a web dictionary does not open properly within the frame set.
    The application now always checks if the current text or language still exist (could have sometimes resulted in empty query results after deleting).
    New settings "Texts per Page", "Show Word Counts of Texts immediately", "Archived Texts per Page" and "Terms per Page". You can now define how many texts or terms are on one page. As the calculation of text word counts can slow down the loading of a long text table, you can switch off this calculation (and do the calculation later).
    "New/Edit Term" now allow dictionary lookup (always in popup window). If you want to enter a term manually, you must first select the language on the "My Terms" page.
    Documentation and screenshots updated.

  • 1.0.2 (August 05 2011):
    Language definition: If the searchword in the Uniform Resource Identifiers (URIs) needs to be converted into a different encoding (standard is UTF-8), you can now use ###encoding### as a placeholder. Example: http://mywebdict.com?q=###ISO-8859-15###. A list of encodings can be found here (omit the asterisk if one is at the end).
    Documentation and screenshots updated. Thai example added in demo database.

  • 1.0.1 (August 04 2011):
    Testing: Last term tested will not show up immediately. Automatically selected sentences in tests now must not contain unsaved (blue) words. This does not apply if a sentence saved with a term contains unknown words - such sentences may come up within a test.
    Empty database will be created automatically if database does not exist. Tables will be automatically recreated if some or all tables are missing. System handles (future) database changes automatically.
    Documentation and screenshots updated.

  • 1.0.0 (August 01 2011):
    First stable release. For some time, there won't be any new releases. I hope you'll understand that. Please post all problems, questions, and (hopefully not too many) bugs here, and ideas and suggestions for new features here. Thanks!

  • 0.9.8 (July 31 2011):
    New Text Display Mode (see new checkbox on the "Read text" screen).
    [Show All] = ON (the only mode in previous releases): ALL terms are shown, and all multi-word terms are shown as superscripts before the first word. The superscript indicates the number of words in the multi-word term.
    [Show All] = OFF (new): Multi-word terms now hide single words and shorter or overlapping multi-word terms. This makes it easier to concentrate on multi-word terms while displaying them without superscripts, but creation and deletion of multi-word terms can be a bit slow in long texts.
    Documentation and screenshots updated.

  • 0.9.7 (July 28 2011):
    Internal improvements, status names, abbreviations, and tooltips (Thanks, Arthaey!). Printout of texts with optional inline annotation (translation and/or romanization) of terms that are of specified status(es). Documentation and screenshots corrected.

  • 0.9.6 (July 26 2011):
    More visual improvements (layout, tables, etc.), many improvements and bugfixes. Dictionary Uniform Resource Identifiers (URIs) use now ### as a placeholder for the searchword. If ### is missing, the searchword will be appended (like in older versions). More multi-actions for terms. Translation and sentence fields do NOT accept newlines anymore, now the form is submitted. Status entry changed from dropdown to radio buttons. Backup/Restore improved. CSS and XHTML corrected and validated. Korean example added. An Anki example deck is now provided: "LWT.anki" in directory "anki". Documentation and screenshots improved.

  • 0.9.5 (July 23 2011):
    Visual improvements (icons), a few bug fixes. Database Restore changed for bigger files. Two new tests to test L2 -> L1 or L1 -> L2 without sentence (just the term). The term filter operates not only on the term field but also on the romanization and translation field.

  • 0.9.4 (July 22 2011):
    "Import of terms" now only needs a translation if the status is set to 1, 2, 3, 4 or 5. Furthermore it not only imports terms as TAB (ASCII 9) separated values (TSV) or "#" separated values, but also as comma separated values (CSV, strings in quotes ("...", if needed), a quote within a string as double quotes (""); this is the format that LingQ uses for exporting terms).
    New buttons to switch easier between active texts and archived texts.
    New settings "Testing: Number of sentences displayed from text, if available" and "Terms: Number of sentences generated from text, if available". Default is "Just ONE". The options "TWO (+ previous)" and "THREE (+ previous, + next)" now allow you to do MCD (Massive-Context Cloze Deletion) testing, as proposed by Khatzumoto @ AJATT.
    Some minor bug fixes. Documentation updated.

  • 0.9.3 (July 21 2011):
    After a lot of multi-platform/multi-server testing: several bug fixes and improvements. One severe bug that crashed importing and checking of texts on XAMPP/Win removed (Thanks, Kendall!). Within text, archive, and term queries, selected sort order will be retained (saved in database). All other query settings are now retained per session. Documentation updated.

  • 0.9.2 (July 19 2011):
    Bugfixes. New "Settings" screen. Documentation updated and improved.

  • 0.9.1 (July 18 2011):
    Testing totally revamped (and extended). Many, many improvements and bugfixes. Documentation and screenshots updated. EasyPHP for Windows installation explained.

  • 0.9.0 (July 14 2011):
    Frame screen "Edit term" is now more compact to save space. TSV export of terms added, Anki export improved. The multi actions drop-down-list is now disabled when no checkboxes are checked. Testing completely revised and improved. New buttons to jump from test to text and vice versa. It is now possible to create expressions with up to 9 words (previous releases: up to 6 words). Important: Re-parsing is necessary to use this feature in existing texts. New texts have this feature will automatically. Documentation and screenshots updated. Questions and answers added.

  • 0.8.2 (July 13 2011):
    Minor improvements and bug fixes. Term score formula revised. Clicking on a blue (unknown) word opens "New Term" and first dictionary automatically. Documentation (topic: Term scores) added.

  • 0.8.1 (July 12 2011):
    Mac installation and upgrade (see documentation) completely changed.

  • 0.8.0 (July 11 2011):
    Possibility to change term (but only uppercase/lowercase changes allowed). Import terms with overwrite now possible. "Learn/Edit Word/Expression" opens first dictionary automatically. Number of saved words and "To Do" words are now displayed in "My Texts". Backup and Restore of the LWT database. Documentation updated and improved.

  • 0.7.0 (July 09 2011):
    Minor improvements, more documentation, Japanese example added.

  • 0.6.0 (July 08 2011):
    Improvements, bugfixes, more documentation, settings now stored in DB (not in cookies anymore).

  • 0.5.0 (June 30 2011):
    Improvements, bugfixes, text archiving added.

  • 0.4.0 (June 29 2011):
    Improvements, bugfixes, basic documentation completed, two new tests.

  • 0.3.0 (June 27 2011):
    Improvements, bugfixes, more documentation.

  • 0.2.0 (June 25 2011):
    Improvements, bugfixes, more documentation.

  • 0.1.0 (June 24 2011):
    Initial release.

 

Public Domain

"Learning with Texts" (LWT) is released into the Public Domain. This applies worldwide.
In case this is not legally possible, any entity is granted the right to use this work for any purpose,
without any conditions, unless such conditions are required by law.