This project's changelog. Versions marked with "-fork" come from the community, other versions come from the canonical LWT ("official" branch on Git). For git tags, official releases are marked like "v1.0.0", while unofficial ones are marked like "v1.0.0-fork".
- Support for Japanese with MeCab on Mac! This was added thanks to quopquai on #135.
- New globals (#163):
- On
inc/kernel_utility.php
:LWT_APP_VERSION
andLWT_RELEASE_DATE
. - On
api.php
:LWT_API_VERSION
andLWT_API_RELEASE_DATE
. src/js/jq_pgm.js
:LWT_DATA
.unloadformcheck.js
now declares a new objectlwtFormCheck
that contains all the functions needed.
- On
- Important additions to Text-To-Speech (TTS):
- Word can be read on hover or on click. Pull request #147 by @ProgramComputer.
- You can add a custom text reader with the new voice API feature! A courtesy of @ProgramComputer on pull request #153. A feature first requested on #143. Discussion in open on #174.
- New JS functions:
readTextWithExternal
to read a text with an external application andspeechDispatcher
that can choose a text reader (browser or third party).
- Starts a cleaner database management. Database schema is defined in
db/schema/baseline.sql
and no longer in PHP code. - You can choose to add romanization for languages that don't need it in the language settings (#119).
- Docker images are now built for multiple platforms, see PR #169, closing discussion #141. Many thanks to @ProgramComputer!
- On word review:
- The "Read words aloud" setting is now saved, PR #185.
- UX change: You can click on "Read words aloud" text to check the checkbox.
- Adds missing documentation in the Docker image:
- Multi-word creation was reviewed to use a simpler JS code.
- Word review:
- Status + 1 can be set only after word display. Before, you could press key up at any time to increase term status, but keydown was effective only after solution display (#159).
- When testing sentences, sentences are always displayed, even when less than 70% of words in the sentence are known. See #194.
- New files:
inc/feeds.php
andinc/tags.php
, stemmed frominc/session_utility.php
. It should not lead to any code or behaviour change.src/js/overlib_interface.js
, stemmed fromsrc/js/pgm.js
. It contains all the overlib interactions.src/js/src/js/text_events.js
, stemmed fromsrc/js/jq_pgm.js
. It defines interactions with a text on reading.
- For audio URI, raises the characters length limit from 200 to 2048 (#144).
- Database:
- For Linux users, the official database RDBMS recommended is now MariaDB as a drop-in replacement of MySQL.
- Database creation and migration is now handled directly in SQL, for a safer behavior.
- You do no longer need to give to LWT SYSTEM_VARIABLES_ADMIN for text reparsing.
(new function
checkExpressions
) (#167). It is still necessary for words import.
- Docker changes:
- By default, the images now runs at localhot/lwt and no longer in the root folder (installer #4 and #169).
- Image updated from
apache-buster
toapache-bullseye
.
- Composer dependencies up to date 2024-03-24.
- The database wizard was broken since 2.9.0.
- Word status:
- It was impossible to change a word status on hover since 2.9.1.
- Having wrong dictionary link and error reporting enabled prevented word status from being changed.
- Avoids JavaScript error on editing a language when the dictionary field is empty.
- For some feeds, feed wizard session was not working due to ill-configured session. Solves #129, thanks to the help of PR #168.
- Text reading position was not working consistently when adding several known words.
- Multi-words:
- Tooltip was not properly saved (#170).
- Translation may be escaped two times (#170).
- Fixes #170: on creation, multi-word was always displayed before the text it encompasses, without removing this text.
- Tootltip title was not properly saved, normally without incidence on user display.
- Fixes #69: having the same multi-word on multiple texts was displaying it at many positions on creation.
- Japanese:
- On word review (test):
- An explicit dependency to php-dom was
missing in
INSTALL.sh
(andcomposer.json
), as stated in #178. - API: the REST API was not accessible for users running LWT in a root folder.
- On audio, the replay button is fixed: issue #138 and PR #191.
- The field
SeFirstPos
was missing in tablesentences
of demo database, resulting in failed installation the first time. - Editing test annotation would not display since 2.9.1 #193.
- Using any function from
unloadformcheck.js
without usinglwtFormCheck
is deprecated. get_database_prefixes
is deprecated, superseded bygetDatabasePrefix
which is much cleaner.- Globals defined in
jq_pgm.js
are going into a single globalLWT_DATA
. - New text creation workflow simplified in
inc/database_connect.php
:update_default_values
replaced byregisterSentencesTextItems
andcheck_text
bydisplayTextStatistics
.
- New tools for documentation:
- New JavaScript documentation with JSDoc! You will find it under
docs/js/
. - Better PHP documentation using phpDocumentor. The new documentation is at
docs/php/
.
- New JavaScript documentation with JSDoc! You will find it under
- New constant
LWT_LANGUAGES_ARRAY
, that replaces$langDefs
(ininc/langdefs.php
). Part of #163.
- PHP files header docblocks are expanded, notably with a PHP version, package and category name.
- Japanese number are now parsed by MeCab. Big thanks to @ProgramComputer for his pull request #149!
- Removes dead feeds from the demo database, as signaled in #148.
- Patch update to the REST API to 0.1.1: requests on GET with empty payload were resulting in error.
- Fixes #113: changing a language name was making text-to-speech unusable and may prompt a warning.
- Since 2.9.0, tests may be unable to run due to a missing key in an AJAX request ("type").
- Since 2.9.0, audio position was not saved properly.
- On
upload_words.php
, "update only empty fields" was broken. - Translation were not set by default properly when editing terms translations table.
- The field MeCab was set for Japanese even when not asked for. Signaled on PR #155, thanks to @ProgramComputer.
- Since 2.8.1, Japanese word romanization was not displayed any more. Thanks to 아르노 for signalling the bug on Discord!
- The go slower/faster feature on audio was broken
(#138), as functions
click_slower
andclick_faster
were declared two times insrc/js/audio_controller.js
. - When opening a text, text position was not saved and a
text_id is unknown
error was triggered. - Do not display an error on step 2 of feed wizard at first initialization (#129).
- It was impossible to install the demo database if they was more or less than one instruction a line. This is fixed, and the SQL file was made more readable.
- Changes
WoStatusChange
default value to '1970-01-01 01:00:01', it was impossible to install the demo DB out of LWT (related to #78). - Deleting a language deletes the language (#151). Before it was setting the language to empty values.
- On media select, the lwt folder name was prepended to the media folder, resulting in broken path (#161).
- With the REST API, requests with an empty query were resulting in an error.
no-minify
composer command was fixed, suggested as a part of PR #154 by @ProgramComputer.
- PHP documentation using Doxygen (under
docs/html
) is now deprecated and will be removed in 3.0.0. - Using
$langDefs
is deprecated in favor ofLWT_LANGUAGES_ARRAY
(#163). - Calling the global function
new_pos
to set audio position is deprecated. Please uselwt_audio_controller.setPosition
.
langFromDict
andtargetLangFromDict
are now officially going to the kernel utility functions.- Text and title boxes change language according to the text's language for short text creation/edition, long text creation and text check (#111).
- Refactored texts with OOP:
- New class:
Text
(ininc/classes/Text.php
). - New function:
edit_texts_form
(inedit_texts.php
) that takes a Text object as input.
- New class:
- Tests (checking if you know words) now use AJAX (#112), it has several advantages:
- Musics play fully
- Page do not need to reload.
- The timer continues instead of resetting.
- REST API, the new
api.php
is intended to continue developing itself as a REST API. It features the following interaction:- On GET, the endpoints are:
/media-files
: the list of audio and video files in the media folder./sentences-with-term
: sentences containing a new term./sentences-with-term/{term-id}
: sentences containing a registered term./similar-terms
: terms similar to a given one./theme-path
: the path for a media using theme./terms
/imported
: imported terms./{term-id}/translations
: translations for a term.
/review
/next-word
: next word to review./tomorrow-count
: number of reviews for the next day.
/phonetic-reading
: phonetic reading for a term or sentence./texts/statistics
: word statistics on texts./version
: REST API version.
- On POST, the endpoints are:
/settings
: save a setting./terms
followed by:/{term-id}
for any term update, in particular:/status
, to change the status, followed by either:/down
: decrement status of a term by one unit./up
: increment status of a term by one unit./set/{new-status}
: set the status of a term.
/translations
: add a translation for an existing word.
/new
: add a translation for a new word.
/texts/{text-id}
followed by:/annotation
: change the text annotation/audio-position
: changeaudio
position./reading-position
: change the reading position.
- On GET, the endpoints are:
- Similar terms mark the word edit form as edited only if something was actually changed.
- You can now specify a socket for your database through
$socket
inconnect.inc.php
. This feature was brought to you by @hangug-eo in his PR #132. - You can now change the voice of the TTT feature through
text_to_speech_settings.php
. server_data.php
was reorganized and is more informative with details about the REST API.
- User Interface Improvements:
- Prettier UI to navigate between text creation/edition/archive pages.
flex-spaced
now sets the property oftext-align: center;
. This property was inherited before.- The long text import page looks a bit nicer.
- User Experience:
- When reading text, you can click on "Show All" and "Translations" to click the checkbox.
- When changing a word status, the displayed messaged is now more informative: before database change, success message, now: waiting screen, tentative database change, result message (error or success). Under the hood, we are transitioning from pure PHP to AJAX.
- It is faster to exit a text page: audio and reading position saves are now asynchronous.
- Annotations "order" are now identical to
Ti2Order
(intextitems2
). It makes management easier, but users may need to reload the annotations once. - Updated composer dependencies (up-to-date 2023-11-23).
- When editing an existing text, surrounding spaces are no longer inserted (#92).
- Language code is better detected from translator URL when editing an existing language.
- The field "Short Text Import" on long text import and was not redirecting to the intended page. Same goes for "New Text" on "Archived Texts" page.
- It was impossible to archive more than one text (#118).
- Testing a word was not changing it's color.
- A warning was sent 'Undefined array key "query"' when creating a new word (#121).
- A warning when savings settings in
settings.php
was sometimes displayed (#121). - Test header was different when testing languages or terms since 2.1.0-fork.
- Wrong link to documentation (
info.php
instead ofdocs/info.html
). Signaled by Mooncake on Discord. - Text reading:
- The reading button is usable at last! Clicking the button a second time stops the reading process (#108).
- Text language code was often not recognized in TTT settings (
text_to_speech_settings.php
). - Clicking the "Read" button in TTT Settings was refreshing the page.
- It was impossible to copy a similar term that had apostrophes (#127).
- A deprecation warning for
trim
was sent in simterms when no similar term was found. - During a text creation, the
media_uri
property ofText
was used instead ofsource
. Thanks to @hangug-eo for his PR #133! - When looking for an audio file on file edit/creation, the displayed path may have been wrong for characters between 0x80 and 0x9F.
- Multi-words were not properly highlighted for languages separating each character as a word (e. g.: Chinese). Big thanks to @hangug-eo for signaling the issue and solving it in his PR #140!
- The database wizard was not correctly saving the password. This is fixed by @hangug-eo in #132.
- The list of translations of a term was sometimes not found on text annotation edition.
- Legacy AJAX API. The following AJAX interactions are now deprecated in favor to the new REST API (at
api.php
):inc/ajax_show_similar_terms.php
, use/similar-terms
on GET,simterms_lgid
becomeslg_id
andsimterms_word
term
.inc/ajax_add_term_transl.php
- For a new term, use
/terms/new
.lang
becomeslg_id
,text
isterm_text
. - To update an existing term, use
/terms/{term-id}/translations
. Same arguments.
- For a new term, use
inc/ajax_check_regexp.php
should no longer be used and will be removed.inc/ajax_chg_term_status.php
should be accessed through/terms/{term-id}/status
. Argumentdata
is now part of the URL, on post only.inc/ajax_get_phonetic.php
should be accessed through/phonetic-reading
, same arguments.inc/ajax_get_theme.php
should be accessed through/settings/theme-path
. Argumentfilepath
is nowpath
.inc/ajax_save_setting.php
should be accessed through/settings
,k
becomeskey
andv
value
.inc/ajax_save_text_position.php
should be accessed through/texts/{text-id}/reading-position
,tposition
is nowposition
.inc/ajax_word_counts.php
should be accessed through/texts/statistics
, on GET. Argumentid
is nowtexts_id
.inc/ajax_update_media_select.php
should be accessed through/media-files
.inc/ajax_show_sentences.php
should be accessed through/sentences-with-term
, on GET. Argumentlang
is nowlg_id
,word
isword_lc
andwoid
isword_id
,ctl
is no longer required.inc/ajax_show_imported_terms.php
should be accessed through/terms/imported
, same arguments.inc/ajax_save_impr_text.php
should be accessed through/texts/{text-id}/annotation
,id
is now optional.inc/ajax_edit_impr_text.php
:- On display, using
word=""
is now deprecated as the page loads in pure PHP. - On term edition, should be accessed through
/terms/{term-id}/translations
,id
is nowtext_id
andword
becomestext_lc
.
- On display, using
- During a word review (test), a "free" test where the user design there own test SQL is now deprecated and will be removed.
- During tests (word review), test data is no longer be send as raw SQL string, except for "free" test.
- Updated some documentation screenshots: home screen, language edition and terms upload.
- Since 2.8.0-fork, PHP installations with ext-dom absent or disabled could not display text.
- Using the import terms feature, it is better detected if local infile is enabled.
- Since 2.2.2-fork, many multi-words were not displayed, as explained in #70. Issues may remain.
- Auto-translation of all words (bulk translate) could not open dictionaries starting with '*'.
- Since 2.7.0-fork, using a dictionary starting with "ggl.php" was creating a fatal error on opening text.
- Responsive design: LWT gets easier to visualize on phone!
- The language settings wizard is now open by default on new language creation.
- Potential breaking change in the way words are displayed while reading. The target was to make the code more robust.
item_parser
andecho_term
indo_text_text.php
now both takes an optional$expr
argument.- Terms import form changed for a simpler presentation. It becomes easier to use to use on your phone.
- Many tables are now displayed larger (when your screen has the available space).
- Updated composer dependencies.
- Removed warnings: dictionaries url without query do no longer raise warnings.
- Feeds:
- Click "New Text" on the first page of
do_feeds.php
had no effect. Changed to "New Feed". - Step 2 of feed wizard was sometimes failing because
$_SESSION['wizard']['host']
was a string an not an array. - Type error in
get_links_from_new_feed
was breaking step 2 of feed wizard. - Loading feeds could result in malformed SQL, see #100. Thanks @maanh96 for the hint!
- Click "New Text" on the first page of
- Docker:
media/
was neither accessible nor saved to a container (#106). Thanks to @parradam for signaling and solving the issue! - On creating a language, the Glosbe dictionary comes with a "?lwt_popup=1" to open in new window by default.
- Japanese pronunciation: works even if the language is not exactly called "Japanese", see #103.
- Expressions containing word feature repaired! #90.
- On text-to-speech settings, the region was often not displayed.
- The translation and romanization of new words can now be automatic.
- Supported automatic translation is achieved using LibreTranslate.
- Romanization using MeCab (Japanese only) toward katakana only.
- A lot of improvements for language creation/edition:
- More intuitive fields, better interactions with the user, etc...
- A "Pop-Up" checkbox helps you choose if the website should be displayed in a pop-up.
- LWT becomes easier to install and maintain for users:
- An installer for Linux users at
INSTALL.sh
helps installing requirements and configuration. - Database creation wizard (
database_wizard.php
) to help setting the connection with the database. - A server data page at
server_data.php
showing all relevant information.
- An installer for Linux users at
- In
index.php
:get_server_data_table
replacesget_server_data
as a better designed function.index_do_main_page
now renders the page to avoid global variables.- You get warnings if the PHP version is too low, or if a newer version of LWT is released.
pagestart_kernel_nobody
ininc/kernel.php
that displays the minimal HTML formatting.inc/classes/
folder for a better incorporation of OOP.inc/classes/Term
defines theTerm
class representing a word or multi-word.inc/classes/Language
defines theLanguage
class representing a language.
- Post-Install Documentation added:
- MeCab without and with Docker, Thanks to @99MengXin for the link (#94).
- LibreTranslate integration.
- TTS issues, as suggested by @asdrubalivan in #85.
- Graphic review:
- Headers reviewed. Most h4 headers became div.bigger, and h3 became h1 level headers.
- We now use responsive design instead of fixed-size.
- All themes updated accordingly, so themes were modified.
do_text_page
(do_text.php
) anddo_test_page
(do_test.php
) now enlarge the body.
echo_lwt_logo
ininc/session_utility.php
echoes a logo, without information on the table set used because it was useless. This information is now displayed on the welcome page.- Access to the database prefix edition at
start.php
was reviewed and simplified. It is still considered a legacy feature. - Language creation reviewed:
- When creating a new language, the language wizard do no longer display in a pop-up but in the main window.
- Select option boxes replaced by checkboxes (better accessibility).
- Updated hoverIntent jQuery Plug-in from 1.8.0 to 1.10.2. This brings some bug fixes.
- "TO DO" changed to a more explicit "Unknown words" in text header.
- Refactored
bulk_translate_word.php
. It has a better visual aspect and works better. - Updated composer dependencies.
- vimeo/psalm updated from ^4.12 to ^5.6.
- phpunit/phpunit updated from ^9.5 to ^10.0.
- Changed to the text from YouTube feature (
text_from_yt.php
):- Refactored.
- Moved from root folder to
inc/
. - This is still an experimental feature!
- Moved Google API files:
- Moved
googleTimeToken.php
from root folder toinc/google_time_token.php
. - Moved
googleTranslateClass.php
from root folder toinc/classes/GoogleTranslate.php
.
- Moved
- Updates in demo database:
- Faster to install.
install_demo_db_sql.gz
uncompressed toinstall_demo_db.sql
. Functions adapted. - Dict links changed: ### replaced by lwt_term, * replaced by lwt_popup=1, some dict url protocol changed to https.
- Faster to install.
- Markdown: enforced consistency with official style recommendations. The documentation display got improved.
- The default date for new words was note accepted depending on the SQL configuration, causing issues with Docker installation. See #78.
- Bulk translate words:
- Translating with bulk translate was not updating word rendering.
- All broom icons icon were display in the screen top-right corner, and not at the right if text field.
- Main page (
index.php
) was not rendered properly on non-default theme. - Changing language name was breaking this, this is fixed:
- Text header was sometimes not available.
- It was breaking full text-to-speech dispatcher. Issue signaled with issue #80
- Support for PHP 7.4 restored, wrappers for
str_starts_with
,str_ends_with
,str_contains
. - The encoding of
docs/info.html
is finally fixed! ggl.php
feature fixed!- Multi-words:
- Wrong link to documentation (
docs/info.php
instead ofdocs/info.html
) on the help button (main page). Signaled by babaeali on Discord. - Depending on browser, clicking on deletion button for active texts had no effect.
- Dictionary and translator URIs changed:
- They should always be proper URLs.
- Replacing
###
bylwt_term
is strongly recommended! - "*" At the beginning of an URI should be replaced by
lwt_popup=1
as an argument. ggl.php
should be replaced by the file full URL, for instance "http://localhost/lwt/ggl.php".
- Frames resizing is back! The text reading and test interfaces updated in several ways. Based on several suggestions such as #60.
- The desktop interface is now much similar to what it was before 2.2.1-fork.
- The mobile interface for texts unchanged (2.2.1-fork to 2.5.3-fork).
- You can resize frames on desktop.
- Many new functions officially introduced in PHP and JS. Some of these function were already present in the code but undocumented.
- UX: Faster testing: you do no longer need to enter "Space" first for speed testing, except for status down and change. Related to #71.
- UI:
- Do no longer show "[]" near words when they are no tags.
getWordTagList
behavior changed (inc/session_utility.php
). - Tests have a better general aspect thanks to CSS cleanning.
- Do no longer show "[]" near words when they are no tags.
- PHP:
do_test.php
,edit_texts.php
,edit_words.php
andset_test_status.php
now explicitly require a running session. They were silently failing before this release.save_setting_redirect.php
moved toinc/save_setting_redirect.php
.- Psalm static code analysis of all PHP files.
- We use "EOP" for end-of-paragraph markers instead of misleading "EOS" (MeCab).
- Slightly changed how a connection is established with SQL. It makes messages more relevant when SQL is not running.
- Not Japanese texts now always use the PHP parser. The SQL parser is no longer used.
- JS: Some deprecated functions
escape
andunescape
were replaced by modern equivalentsencodeURIcomponent
anddecodeURIcomponent
. This may lead to changes in cookies, notably making them work better. - DB: the NO_ZERO_DATE mode is no longer required, see #78.
- In the
words
table, replaced the default timestamp0000-00-00 00:00:00
by0000-00-00 00:00:01
. - The demo database underwent the same change.
- In the
- Updated
composer.lock
. - Docker: more default options, documentation updated.
do_test_test_css
indo_test_test.php
is deprecated since it was causing display issues. Its CSS rules were trimmed.
- The ability to use a dictionary with a specific encoding, introduced in 1.0.2, is being removed. It was making things overwhelmingly complex and caused issues, as signaled in #58. Adapted from PR #59.
- Docker:
- Docker integration repaired (#37)! Huge thanks to @hakuro-jp for the initial help and @darkone23 for the final solution. Without you two I would have long given up with Docker.
- Docker continuous integration is back as well due to a rewrite of the workflow.
- Texts:
- The audio player was no longer working since 2.1.0-fork since the play button was hidden.
- Save text position (
inc/ajax_save_text_position.php
) was broken for all texts. This is fixed. - Right frames should hide automatically but they often don't (#61). Merged PR #62.
- Japanese parsing is now better, and uses PHP only (the local_infile SQL functionality is no longer used). Related to PR #43.
- One-word not Japanese texts do no longer result in a crash (#80), whoever uses them.
- Tests:
- JS:
- You should no longer see annoying console messages of "cClick" crashing on "obj is null".
- PHP:
- Type fixes thanks to psalm:
get_first_value
documentation updated since it was also returningfloat
andint
.get_similar_terms
insimterms.php
officially returns int.
- Inconsistent option in
inc/ajax_save_setting.php
.
- Type fixes thanks to psalm:
- UI
- Audio in
edit_texts.php
was never shown. - When adding text, the user was ask to create a
media
folder in...
, corrected to..
.
- Audio in
- DB:
- For some users it was impossible to install the default database due to the use of a ZERO date (#78).
- Deleted wrong database instructions
ADD DROP INDEX TiTextLC
alteringtemptextitems
inupdate_database
ofdatabase_connect.php
.
- Links to the Discord community (
README.md
andinc/kernel_utility.php
).
- Renamed
connect_mamp.php
toconnect_mamp.inc.php
for consistency with documentation. - "I KNOW ALL" button becomes "Set All to Known" and "IGNORE ALL" becomes "Ignore All".
- Changed the messages when clicking "Set All to Known" or "Ignore All".
- Uncomplete code linting in
bulk_translate_words.php
. For phone users, it now properly focuses on the main screen after use. - Only sentences containing more than 70% of known words are shown were testing sentences. Based on an idea from #53, with contribution of PR #65.
- Left-to-right languages where displayed as right-to-left when checking them, as signaled in pull request #42, thanks @Heliozoa!
- People who didn't fill the URL for Google Translate were seeing deprecation warnings while using using the
bulk_translate
functionality (clicking in "TO DO" for editing multiple new words). Bulk translate itself is not fixed, but warnings are no longer displayed. Merged pull request #44, from @Heliozoa. - Multiple fixes to the "I Known All Words" feature. Great thanks to @jzohrab!
- Setting all words to well-known was resulting in a crash when no words were added as well-known (
all_words_wellknown.php
). - Setting all words to well-known was resulting in a crash when multiple words had the same lowercase value. See issue #46!
- Words were not updated in the view unless reparsing the text (#48). Merged pull request #49.
- Setting all words to well-known was resulting in a crash when no words were added as well-known (
- In the main dropdown menu, the option "Text-to-Speech Settings" was still leading to
tts.php
(nowtext_to_speech_settings.php
). Merged pull request #51, thanks @jzohrab. - Database backup/restoration:
- Sentences with unknown words were showed in test when it was not supposed to be the case (#52 and #64).
- Refactored
upload_words.php
.
- Multi-words insertion for languages using no space is now repaired! Thanks to @gaoxiangluke for signaling it (#38).
- Terms import (
upload_words.php
) can now be used with@@GLOBAL.local_infile
(MySQL) set to 0. - Deleted a parasite ";" that was displayed after importing terms.
- Having
@@GLOBAL.local_infile
(MySQL) set to 0, or any configuration disablingLOAD DATA LOCAL INFILE
, was causing a fatal error on adding a new text. This is fixing by a slower method. - The WordPress binding scripts had multiple issues as reported in #41, thanks @Redmattski!
- Compatibility with PHP 8+!
- Updated with LWT 2.0.3, solving incompatibilities with PHP 8.1 throwing MySQLI errors.
- Introducing the new class
Term
inedit_mword.php
. This class is yet to be considered experimental, so expect important changes, but should gradually get used everywhere. insert_expression_from_mecab
insession_utility.php
. Better name and behavior forinsertExpressionFromMeCab
(see deprecations).
- Composer dependencies updated.
- The Docker container now uses PHP 8.1 (instead of 7.4).
- For some user, the --secure-priv-file option was still required to be on. This was due to a conflict between PHP and MySQLI authorizations.
- When deleting a word, it was previously necessary to reload the page to see a visual change.
- Multi-words insertion fixed.
- "Show Sentences" button during words edition was broken since 2.3.0-fork.
set_word_count
indatabase_connect.php
had a misleading name. It was changed toinit_word_count
.insertExpressionFromMeCab
deprecated forinsert_expression_from_mecab
insession_utility.php
.- PHP <8 won't be tested anymore. You are highly encouraged to update to PHP 8+!
- An incompatibility with PHP 8.1+ (changed mysqli_report default setting in PHP 8.1+) has been fixed.
- Some function signature were not logical in
edit_texts.php
. These signatures remain untouched for backward compatibility, but the internals were changed. - Texts without tag do no longer display a "[]" string next to the title. Applies to both archived and active texts.
- A typo was breaking the feeds count in
edit_languages.php
, creating annoying notices as illustrated at #35. - The error "[1290] The MySQL server is running with the --secure-file-priv option" should no longer appear when trying to save Japanese texts. It was referenced here in issue #34.
- The "Undefined index: trans in .../bulk_translate_word.php" notice fixed.
- The "Undefined index: WoText in .../delete_word.php" notice fixed.
- Repaired
long_text_import.php
for non-Japanese texts, it was broken since 2.4.0. Thanks to @rc-ops for this issue #33. - Text statistics were not displayed when there was more than one text since 2.2.2-fork.
- The external dependency for Japanese parsing, MeCab, is now more easily detected on Windows and Linux.
- Better integration of Docker.
- You must not only include
pgm.js
to ask the user before exiting but also the new functionask_before_exiting
. splitCheckText
was split into smaller functions.- Refactored
edit_languages.php
with functional paradigm.
- Many pages were asking before exiting while it was unnecessary.
- Made bigger buttons and unified the presentation of
edit_texts.php
,edit_archivedtexts.php
,long_text_import.php
anddo_feeds.php
. It solves issue #29. - Japanese texts were ill parsed on Windows. The issue #23 is now solved! @rc-ops, arigatou!
- The number of texts, expressions and so on was always 0 in
edit_languages.php
. - On Windows, annoying notices were often displayed in
edit_languages.php
.
- The HTML code documentation is no longer included in the dev branch.
- The unnecessary JS files were removed since they were all merged in
js/
.
- Commands included in
Makefile
where transcripted incomposer.json
. - Docker integration! It is done through
Dockerfile
,docker-compose.yml
,.dockerignore
and.env
files. - You can click on a read icon in order to read a word.
- Text-To-Speech (TTS) Settings!
- Change the language rate, pitch, or local region for text-to-speech.
- Early support of local videos, discussed in #9 with @chaosarium.
- mbstring and mysqli extensions are now clearly asked for by Composer.
- The "database update" part of
check_update_db
ininc/database_connect.php
was moved toupdate_database
. - Almost all JS goes in one file when minified. This has several reasons:
- Better browser caching: JS code is downloaded once for all.
- Easier maintaining: it was difficult to manage which php file was needing which JS script.
- Consistency: scripts were calling functions that should be imported from other files, making the debugging difficult.
- Feed wizard changes
- The feed wizard got a little broken: the "next" button is always active, even if you did not select text and click "Get".
- It's style was uniformized with your current theme.
tts.php
becomestext_to_speech_settings.php
. As this file was unused, it is not considered as a breaking change.- Refactored
all_words_wellknown.php
,edit_texts.php
. Those pages should load a bit faster. - We do no longer load pages in Almost Standards Mode. Unless you use some Netscape browser, it should not impact you.
- Use
clean-doc
install ofclean
inMakefile
because it was ambiguous with composer commands.
- Creating the database was sometimes impossible.
- Database names containing special characters (hyphens, carets, etc...) was not possible.
- The "I KNOW ALL" button calling
all_words_wellknown.php
created errors. This file was fixed. Thanks @nghiaphamtm (issue #26). - In
edit_texts.php
, it was not displayed in the barchart when knowing 1 word. Thanks @chaosarium for signaling it (issue #11). - Tags were breaking text modification. Issue #12, thanks @chaosarium.
- In edit_texts.php, unknown words (with status 0), had no abbreviation display between parentheses. It was showing "Unknown ()".
- A contribution guide at
docs/contribute.md
.
- Updated the jQuery deprecated events. It should have no consequence.
- Slightly changed the behavior of the CSS/JS minifiers. The relative paths in the return string were different from the ones in the saved file.
- Regenerated documentation.
- Some AJAX files could not work properly since 2.0.3-fork.
- Refreshing the list of audio files in
edit_texts.php
works again. - Theme in
info.html
works now. - Some other problems may have been fixed.
- Refreshing the list of audio files in
- With
do_test?text=
, the language name displayed instead of "[L2]" was often wrong. $fixed_tbpref
was never declared at global scope.- Fixed an incompatibility in
database_connect.php
,splitCheckText
with PHP <7.4. - Impossible to start bulk_translate_new_words from
do_text.php
. - The audio player does no longer show at the end of the page (DOM node was not closed).
- Relative paths in themes were often broken. For instance: no images in audio player.
- An explanation was also added on how to add custom images in your theme.
- Very small errors corrected in some themes.
- Deprecated a lot of camelCase functions in
do_text_text.php
to their snake_case counterpart. The behavior of the deprecated functions did not change.- camelCase to snake_case:
getTextData
toget_text_data
,sentenceParser
tosentence_parser
,wordParser
toword_parser
andmainWordLoop
tomain_word_loop
- Typo fixing:
getLanguagesSettings
toget_language_settings
(use singular) - Signature changed:
echoTerm
toecho_term
(no return value, no$hideuntil
parameter) - Name uniformisation:
prepareStyle
todo_text_text_style
anddo_text_javascript
todo_text_text_javascript
.
- camelCase to snake_case:
- Composer in no longer required for standard users (but is still required for contributing).
- Updated
README.md
. - league/commonmark becomes a dev requirement (no longer required for everyone).
- Re-minified
jquery.tagit.css
, it may have visual consequences. - Replaced some jQuery functions by their equivalents. It should not have consequences.
- Calling
do_text.php?text=
created a database error, it does no longer. - Long text were laggy in
do_text_text.php
since 2.0.3-fork. Some other issues may have been fixed at the same time. - Possible insecure PHP string to JS string conversion in
do_text_header.php
, functionbrowser_tts
.
- The
is_mobile
function now always returns false. - The
wordProcessor
(do_text_text.php
) function was incorrect.- It now always return 0.
- Please use
wordParser
,sentenceParser
and some more code instead.
- Removed unnecessary dependencies:
- components/jquery version ^3.6 was required, but only 1.12.4 was in use.
- flesler/jquery.scrollto already bundled by git.
- mobiledetect/mobiledetectlib was unused. It is now removed.
- happyworm/jplayer is no longer integrated by composer (no update since 2014), but it still in use.
- The
components/
folder was also deleted. It was bundling JS code from composer.- It should have been git ignored at least.
- Its content was unused. The files it was trying to use are duplicated.
- Sounds while testing terms!
- New minifier for themes: it is now very easy to create new themes.
- JS files added to documentation.
info_export_template.md
was imported and adapted from official documentation.
- All the do_test*.php part do no longer use frames.
- All the display_impr_text*.php part do no longer use frames.
- It means LWT is now mobile-friendly!
- Regenerated themes.
- "do_text.php?text=..." is the official way to call texts. The "start" argument is still supported.
- New and enhanced design for the welcome page (
index.php
) - Enhanced semantic for
docs/info.html
, and fordocs/*.md
files. - The Doxygen-generated content now uses LWT default style.
- Several database flaws fixed. Now the database should stop rotting with time.
- It is easier to close the right frames in do_text.php.
- When viewing the maximum number of results per page (edit_text.php for instance), the maximum value was shown as a floating point value.
- Floating Menu from JTricks.com was unused since 2.0.4-fork. It is now deleted.
- Badges in the README providing up-to-date information on the state of the project.
- When reading, right frames are hidden and will slide into screen when needed.
- PHP >=7.4 is now the official PHP version.
- Refactored the do_test* pages.
- Better CSS minification.
- Code base inconsistencies and security issues fixed (level 5 and above psalm errors fixed).
- Code is much more strongly typed (~80% of the code base). Level 4 psalm errors partially fixed.
- GitHub continuous integration reviewed.
- Regenerated documentation.
composer.json
is now working! Thanks chaosarium for signaling this issue #4!- Since 2.0.3-fork, it was difficult to get annotations. This is no longer the case.
- tag-it, jquery-hoverintent, and jquery-xpath are now copied from raw code, and no longer integrated by composer.
- Effectively dropped support for PHP <=7.
This version brings a better composer compatibility, and starts revamping mobile compatibility.
- Starting to refactor for 2021 HTML!
- Much less iframes for reading texts.
- Now you can read texts on mobile without the experimental mobile LWT.
- Texts can be read using "focus mode" on most browsers.
- Updated documentation (expanded and refactored).
- Composer is now the recommended way to download lwt.
- PHP_codesniffer is now recommended, and no longer dev-required.
- Refactored many parts of the code, that gets easier to read.
composer.phar
andcomposer.lock
are now git ignored.
Serious maintaining is back!
This version should be the stable merge between official v2.0.2 and community maintained 1.6.31-fork.
- Show Learning translation setting.
- README.md created
- Code documentation.
- Automatic text-to-speech.
- Integrating Composer to manage dependencies.
- Issue templates for GitHub.
- Markdown integration in PHP.
- Video player for texts.
- Makefile to simplify workflows.
- MeCab is now the default way to learn Japanese.
- JS and CSS are now minified.
- Code linting.
- Important code refactors.
- An incompatibility with PHP 8+ (removed function "get_magic_quotes_gpc()" in PHP 8+) has been fixed. Thanks to Lucas L. for the hint.
- A bug when visiting terms/expressions with key strokes LEFT or RIGHT after a previous status change and with a set status filtering has been fixed.
- No code changes. Sourceforge links corrected.
- The old links [lwt.sf.net], [lwt.sourceforge.net] or [sourceforge.net/projects/lwt] are no longer valid!
- The new links are now learning-with-texts.sourceforge.io (documentation and demo database) and sourceforge.net/projects/learning-with-texts (project home and downloads).
- Some missing confirmation dialogues (when deleting a single text, text tag, term, term tag, or language) added.
- Audio playback speed can now be set between 0.5x and 1.5x.
- Waiting wheel (to indicate saving data to database in the background) added in "Edit Improved Annotated Text".
- Checking for characters in the Unicode Supplementary Multilingual Planes (> U+FFFF) like emojis or very rare characters improved/added. Such characters are currently not supported.
- jQuery library updated to v1.12.4.
"Mobile_Detect.php" updated to v2.8.30. - LWT demo database updated.
- Documentation updated.
- Some minor glitches fixed.
- Glosbe API calls via "glosbe_api.php" in demo database and language settings wizard removed - they often did not work due to API restrictions. The file "glosbe_api.php" is still supplied as an example of a close integration of a dictionary API into LWT.
- Link to Chinese text segmentation "Jieba" added in documentation (Important Links - Additional Resources - For learners of Chinese).
- The jQuery and jPlayer libraries have been updated to v1.12.0 and v2.9.2, respectively.
- The jQuery.ScrollTo package has been updated to v2.1.2.
- Multibyte character parsing fixed (i.e. Chinese).
- MeCab support (in development).
- Google translate API updated.
- In abbreviations like 'Mr.' the dot is now part of the term. A reparse of texts is needed to take effect.
- Wizard Language: Arabic 'RegExp Word Characters' changed.
- ggl.php API doesn't work (Token generation fixed).
- Dictionary doesn't open.
- Negative/uncorrect WordCount in 'edit_texts_php'.
- DB collation check added.
- Wizard Language Defaults changed.
- Access denied, LOAD DATA INFILE error (text parsing on a server).
- 'remove spaces' not working.
- Bugfix: DB backup/import errors.
- RegExp Word Characters are checked for correct syntax when creating/updating language.
- thumbnail/image support removed.
- Demo Database updated.
- mysqli changes from orig. LWT.
- php-mobile-detect updated.
- Some bugfixes: errors when emptying database and installing Demo database, added 'follow redirect' to feed.
- Added German Feed NachDenkSeiten to DemoDatabase.
- Added saved expressions to CheckText.
- SplitCheckText rewritten.
- Database changes (table 'temptextitems'): added: TiCount, dropped: TiLgID, TiTxID, TiTextLC and index TiTextLC
- Database changes : dropped: index WtWoID, index TtTxID, index AgAtID
- Bugfix: No Word Counts displayed when text has no saved words.
- As mysql_* database calls are deprecated and are no longer supported by PHP, they have been changed to the corresponding mysqli_* calls. If you run a server with PHP version 7.0.0 or higher, you MUST use LWT 1.6.0 or higher. Thanks to Laurens Vercaigne for his work!
- Debugging updated.
- Status information on start page improved.
- Documentation updated.
- Soft hyphens (U+00AD, UTF-8: 0xC2 0xAD) are now automatically removed during text import.
- "Mobile_Detect.php" updated to v2.8.19.
- Added possibility to switch between 'unique' and 'total' word count by clicking on 'u'/'t'-button.
- HTML lang attribute added in testing frame.
- Speed improvements in 'My Texts' screen.
- Replaced percentage of 'unknown words' by 'word charts' in 'My Texts' screen.
- Deleted Setting: Show Word Counts of Texts immediately
- HTML lang attribute added in reading frame.
- Jplayer, Jquery, JqueryUI updated.
- Google Translate API changes: random google domain access added (domain can be changed in googleTranslateClass.php), updated generateToken.
- Google Translate API(ggl.php): added headers and corrected token.
- Google Translate API(ggl.php): added token to URL.
- Jquery Changes in the reading frame for hover_over/highlight words.
- Google TextToSpeech callback fixed.
- New default settings: 'Tooltips' (new Default: 'JqueryUI') and 'Position of translations' (new Default: 'below').
- Mysql login process changed.
- JPlayer CSS and Skin changes. Skin are now integrated into 'Themes'.
- New Setting: Position of translation
- Translations can now be displayed 'behind', 'in front of', 'above' or 'below' the term in the reading frame.
- Improved encoding detection in 'newsfeed import'.
- Words that are created by 'bulk import' are not updated in the reading frame (i.e. when new translations are added afterwards).
- mysql error 'duplicate entry' in 'newsfeed import'.
- Newsfeed Import doesn't load new links if WordPress is used for multiple users.
- Improved Sentence Bondary Detection when parsing texts.
- User ID is saved in the PHP Session Variable (instead of a Cookie) if wordpress is used to log in.
- Switch to mysqli extension for database connection.
- Minified CSS and Javascript files; the uncompressed files can be found in the directory 'src'.
- Some CSS changes.
- Ggl API retrieval error fixed.
- Glosbe API now uses javascript (browser based) instead of php(server based) to prevent possible retrieval errors when LWT is installed on a webhoster for multiple users.
- New Setting: Tooltips (JQueryUI will show images in Tooltips in the Read Text Screen)
- New Feature: You can now add thumbnail images to your terms. If you click on the icon at the left of the translation field in the new_term/edit_term frame/window you can select an thumbnail from 'google image search'. In order to display the images in the Read Text Screen you must set 'Tooltips' to 'JQueryUI'. The thumbnail images are not included in the backup at the moment.
- New Feature: Key binding J for edit term with Google Image Search added
- 'error when making backup' fixed
- Jquery, JqueryUI updated
- CSS/jquery fixes when selecting multiple word expressions in text frame
- Bugfix: new or imported multiple word expressions are not show in the text with 'remove Spaces' is 1 and 'split Each Char' is 0
- Bugfix: 'Show term sentences' and 'Create term sentences' fixed
- CSS changes for firefox (version >= 35) in dark themes
- Bugfixes in bulk import terms
- Getting article from feed even if there is no link
- Google API can now do a requery
- Dict Lookup from bulk import terms frame is now possible
- Database error in newsfeeds
- Ability to change audio playback speed (doesn't work when using the flash plugin)
- Combine translation field option when importing words ('Merge translation fields' or 'Update existing translations')
- Error in 'upload_words.php'
- Wrong dict links for sentence translate
- Key binding G for edit term with Google Translate added
- Google api rewritten (works on webhoster with cURL-plugin)
- Key binding T for translating sentence added
- New Backup Option: official LWT backup added
- Database Changes: indexes changed in table words
- Translations of terms can now be display in the reading frame
- Key bindings when hovering over words in the reading frame
- Bulk translate new words in the reading frame
Changes from official LWT version 1.5.20 imported:
- 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.
-
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).
-
"Mobile_Detect.php" updated to v2.8.3.
-
Documentation updated.
- "Mobile_Detect.php" updated to v2.8.3.
- Missing volume controls in audio player (only on mobile devices) fixed.
- 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.
- 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.
- New sort option for texts, terms or tags: "Oldest first".
- The Catalan language has been added to the Language Settings Wizard.
- "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.
- Some error messages (term/tag already exists) have been improved.
- Documentation updated.
- Some minor bugs fixed: media selection in archived texts, tag import errors, adding existing tag errors, etc.
- The audio player skin selection has been removed; the "Blue Monday Small" skin is the standard skin beginning with this release.
- Longer (>9) expressions can now be saved
- TextToSpeech support for words added
- Experimental google api (use 'ggl.php' instead of '*http://translate.google.com' for google translate)
- New word select mode in read texts (hold down mouse button)
- Database Changes: table textitems replaced by textitems2, temporary tables added, global table tts added
- statistics.php, upload_words.php rewritten
- New Feature: Selecting terms according to a text tag
- New Feature: Start a document where you left off (only "Read Text Screen")
- New Feature: Improved Search/Query for Words/Texts
- New Feature: Automatically import texts from RSS feeds (for more info see: Newsfeed Import)
- New Setting: Button(s) for "words to do" "IGNORE ALL"/"I KNOW ALL"
- New Setting: Theme
- New Setting: term/word query with standard/regexp/regexp CS
- New Sort option "Oldest First"
- New option "Set Active Term(1-5) Sentences" in My Texts
- JQuery, JQuery UI, JPlayer, jQuery.ScrollTo, Tag-it, Sorttable and Floating Menu updated
- Database table optimization: first check, only optimize if (Overhead >10% of table and > 100KB) or (Overhead > 1,0MB)
- Database table optimization: data types changed.
- Documentation updated.
- Importing multiple words with the same tag causes an error
- Can't select media in Archived Texts
- Confirmation-popup when leaving via selectbutton in Settings/Preferences even if there are no changes (chrome-browser)
- Bottom page select doesn't work in firefox (edit_texts.php, edit_words.php, edit_archivedtexts.php, edit_texttags.php, edit_tags.php)
- Setting a tag where tag already exists causes an error
- New tag isn't saved in SESSION VAR (when adding a new text with a new tag / may cause an error when editing that text)
- 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.
- Minor bug in Utilities fixed.
- Documentation updated.
- Paging (via page select, and only at the bottom of a page) did not work correctly in all cases, has been corrected.
- Documentation updated.
- Corrected wrong language code (French) within the language wizard definitions.
- Documentation updated on October 30 2013.
- Wrong text display in Print Screen corrected. Special handling of word breaks (if "Remove spaces" = Yes) removed.
- License texts updated according to text on unlicense.org.
- Documentation updated.
- Removed an erroneous extra space in "wp_logincheck.inc.php". Thanks to a post in the help forum for pointing this out!
- Minor bug fixes.
- 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.
- 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.
- Documentation updated.
- Some minor bug fixes.
- New alerts in some forms when there are unsaved changes during unload event.
- Improved database error checking and reporting, better error messages when fatal errors occur, both with traceback information.
- Some improvements in Glosbe-LWT integration.
- Documentation updated.
- Default values corrected in new language form.
- SQL query optimizations in 1.5.8/1.5.9 caused problems, old versions restored.
- 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.
- Documentation and some screenshots updated.
- Missing code in tag management stylesheet restored.
- 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.
- 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.
- 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!
- Two SQL statements (Anki/TSV export of marked terms) corrected. Thanks to a poster in the help forum for pointing this out!
- Integration of the Glosbe API into LWT via a "special" dictionary link. Read more here.
- 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).
- Some minor improvements: Window width of dictionary popups changed from 600 to 800 Pixel. No "_lwtgeneral" operations if table prefix is fixed.
- Documentation updated.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Anki and TSV export bug fixed (in some cases the term tags were not exported).
- 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.
- 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.
- Correction of some minor mistakes and glitches in the code.
- 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.
- 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.
- Changed the handling of backslash removal in posted data on servers with magic_quotes_gpc = Off. Documentation updated.
- Changed some unintentionally written short PHP open tags "<?" to "<?php". Thanks to a poster in the help forum for pointing this out.
- Removed PGUP/PGDN key bindings (mark first/last non-blue term, use HOME/END keys). Some minor changes in the documentation.
- Anki Export changed. The full sentence doesn't have brackets anymore.
- Data in Anki template updated.
- 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.
- New multi actions for marked/all terms: Set Terms to Lowercase, Capitalize Terms, Delete Sentences of Terms.
- Screenshots updated.
- 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.
- Added column "Percentage Unknown Words" in Texts table.
- 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.
- 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.
- Removed language column in Texts/Terms tables if language filter is set.
- 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.
- 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.
- 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.
- Documentation and screenshots updated.
- Fixed problems with non-ASCII characters in media file names (hopefully).
- New status display during tests: "Elapsed Time / Total = Not yet tested + Wrong + Correct", plus a small bar graph.
- 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.
- 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.
- 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.
- Testing algorithm revised, simplified and optimized.
- Terms due today and tomorrow are marked in score column (red/yellow) in terms table.
- Documentation and screenshots updated, new floating menu.
- EasyPHP installation corrected.
- Checking maximum text length in text input/edit/check screens.
- Code cleanup and optimization, better code documentation.
- 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.
- 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.
- 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.
- 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.
- 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.
- Documentation and screenshots updated.
- 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!
- 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.
- 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.
- 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.
- 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.
- 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.
- "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).
- Some minor bug fixes. Documentation updated.
- 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.
- New "Settings" screen. Documentation updated and improved.
- Testing totally revamped (and extended). Many, many improvements and bugfixes. Documentation and screenshots updated. EasyPHP for Windows installation explained.
- Many, many improvements and bugfixes.
- TSV export of terms added.
- New buttons to jump from test to text and vice versa.
- Questions and answers added
- Frame screen "Edit term" is now more compact to save space.
- Anki export improved.
- The multi actions drop-down-list is now disabled when no checkboxes are checked.
- Testing completely revised and improved.
- 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.
- Minor improvements.
- Term score formula revised.
- Clicking on a blue (unknown) word opens "New Term" and first dictionary automatically.
- Documentation (topic: Term scores) added.
- Minor bug fixes.
- Mac installation and upgrade (see documentation) completely changed.
- Possibility to change term (but only uppercase/lowercase changes allowed).
- Import terms with overwrite now possible.
- Number of saved words and "To Do" words are now displayed in "My Texts".
- Backup and Restore of the LWT database.
- "Learn/Edit Word/Expression" opens first dictionary automatically.
- Documentation updated and improved.
- Minor improvements, more documentation.
- Japanese example added.
- Improvements, more documentation.
- Settings now stored in DB (not in cookies anymore).
- Bugfixes.
- Text archiving.
- Improvements.
- Bugfixes.
- Basic documentation completed
- Two new tests.
- Improvements.
- Bugfixes.
- More documentation.
- Improvements.
- Bugfixes.
- More documentation.
- Improvements.
- Bugfixes.
- Initial release.