'bridging cultures & improving education through better dictionaries & terminology'
Watch Recording Now! Live AI-Augmented Lexicography in TLex
Sample generative-AI humor dictionary »

The new 'Next-Generation' Version 2023 TLex, tlTerm, tlCorpus, tlDatabase, tlReader now with OpenAI GPT/ChatGPT integration! Augment and super-charge your lexicography, terminology and other work with new AI-augmented language work integration features!
All new licenses purchased now will get the new OpenAI integration functionality.
macOS & Windows downloads » | What's New | Watch tlTerm easily load millions of terms »
Want help setting up an AI-assisted workflow in TLex or tlTerm? Contact us for a quote ...

- What’s New: ChangeLog for TLex, tlTerm, tlDatabase and tlCorpus

Release Videos

㊗️ TLex Suite 2023 - OpenAI Integration

  • OpenAI AI/GPT (ChatGPT) Integration
  • Cool new stats view that gives you a quick full overview of all occurring-parent and occurring-child relations in a document (or specific entry, or specific section)


  • Planned/future: TBX improvements; History?; Right-to-left improvements ('soft' RTL for better handling of mixed Arabic or mixed Hebrew text?); Options to toggle Preview toolbars; Lua WebAPI-client helper functions to make it easier to integrate as client info from live WebAPI servers; explore possible integration (if possible) with translation servers? eg Google/Bing translate? Table stuff

Recent changes, as at

  • Support for Apple M1 and M2 (Apple Silicon) - new releases supporting
  • [Burgermenu] Add Tree View config menu and Attributes and Tools Menu as submenus (this is the menu previously accessible by right-clicking on the "Attributes (F1)" tab)
  • [Burgermenu] Add more Preview Area shortcuts

㊗️ TLex Suite 2022

  • New user interface customization option to make the 'new auto text boxes under Attributes (F1)' feature more easily end-user-customizable per project: Dictionary/Properties: UserInterface/AutoNewEditControls: "[Optional] User interface customization: Newline-separated list of slash-separated parent/child element names for which to add auto new text boxes under Attributes (F1) e.g. Sense/Definition (or F2 list attributes, e.g. Sense/PartOfSpeechElem:PartOfSpeechAttr)"
  • "MORE SEARCHES" submenu on 'General Text Commands Menu': Add more shortcuts to useful sites (forvo.com, youglish.com and more)

㊗️ TLex Suite 2021 Release Candidate 3b (in dev)

  • [Burgermenu] All section windows mode: Try apply commands like stats filters to all section windows if applicable
  • F1 tab right-click menu: New option to enable F7 XML Editor control tab [beta]
  • Table-related improvements and new Table TLex sample

㊗️ TLex Suite 2021 Release Candidate 3 (in dev)

  • New "MORE SEARCHES" submenu on 'General Text Commands Menu' with shortcuts to open the selected text in Google Translate, Bing Translate, EuroTermBank search, Wikipedia and many other sites
  • ㊗️ TLex Suite 2021 Release Candidate 2 (24 Jan 2021)
  • New 'hamburger menu' (near top left, next to 'Save' in toolbar - looks like 3 stripes) with various new settings to control the sizes of toolbars, and toggle toolbars on/off, and for various other general-purpose commands in future. This allows you to show/hide the new blue and green toolbars in the Preview Area. It also allows you to select your preferred size for toolbar icons (e.g. small if you're limited for space, larger for e.g. high-DPI screens). We intend to add many more commands to this menu.
  • More User Guide updates
  • Bugfixes
  • Small power usage improvements for laptops on battery power
  • Support rowspan and colspan attributes for table cell elements (e.g. 'td') [needs Lua smart-style "gCurrentStyle:SetCol(true);" also currently to turn on for an element]
  • ㊗️ TLex Suite 2021 Release Candidate 1 (1 Jan 2021)
  • User Guide updates
  • New 'Window/First' and 'Window/Last' menu commands for multi-section documents
  • [Hebrew] tlCorpus search result and right-click text-command submenus: If matching text contains Niqqud (נִקּוּד), add extra text-command submenu for same text but without Niqqud (e.g. נקוד).
  • [macOS] macOS Retina display support improvements
  • Some high-DPI-display improvements
  • [ODBC / macOS] ODBC fixes for macOS 64-bit
  • [TBX] Some TBX loading fixes (and a few general XML import fixes)
  • [Lua / Advanced / Technical] Basic support for Lua-based lemmasigns. To use this, right-click on LemmaSign attribute in DTD editor to toggle off 'attribute read-only' flag, then set the attribute to e.g. 'fixed' 'Lua' type, then enter a Lua script as one would for any other Lua attribute. Note this requires some fixes in 15 Jan 2021 build.

㊗️ TLex Suite 2020 · tlTerm 2020 · tlCorpus 2020 · tlDatabase 2020! (May 2020)

  • New Tree View right-click command "Add/Edit 'text' child (using dialog)" makes for friendlier editing in some situations than F1
  • New 64-bit versions of TLex and tlTerm and tlDatabase, on both Windows and macOS! (Catalina-ready)
  • [Preview] Popup menu for 'settings' button near top right of Preview Area: Add new user-local toggle option 'Preview masked entries always' that, if enabled [default], shows a preview of 'what a masked-out entry *would* look like IF visible in that styleset' under the "Entry hidden/excluded by styleset mask (edition selection). Use F2 checkboxes (or F1 selection list) to edit edition selection. Use top right of Preview Area to change selected styleset/edition to view" message
  • [Filter (F5)] New filter "match node if 'is-empty'" (element node that has no child elements and no attribute values filled in)
  • New Tools/Options (or Mac Preferences) local user setting "/EditOptions/DisableAutoSortElements" allows you to turn off element auto-sorting
  • [Entry List MRU] (Most-Recently-Used Entries) List: Add double-click to force re-select of clicked entry (if already selected)
  • [Online Publishing Exporter] Four new publish export options in the 'File / Export online publishing' dialog (NB:
    * AudioTag [default 'true'] Indicates to export sounds using the newer HTML5 'audio' tag instead of the old img+JavaScript approach
    * AudioTagControls [default 'true'] Adds the play/pause etc. controls on the HTML5 control
    * AudioTagNoDownload [default 'true'] If 'AudioTag' option on, tries to hide the 'Download' option from the control
    * OverridePathSounds [Optional] This can be either an absolute URL for the path of the sound files, e.g.:
    or a relative path on the Web server, e.g.:
    (There is no real difference between the above two for visitors to the site itself, but if the entries are to be made available via other sites through an API server then the absolute URL https://yourserver.com/sounds/ is better as the sounds will work for API clients - if using a relative URL then the browser will try to locate the sounds on the client website which will not work)
    NOTE: During publish exports, the OverridePathSounds option CAN be different from the OverridePathImages export option, BUT there is still only one single folder setting in Dictionary/Properties (used during editing in TLex or tlTerm). So locally in TLex/tlTerm your sound files and image files should be in the same folder for the Preview Area to work, but they can go to separate folders on the webserver itself now during publishes by using different settings for these two options.
    NB NB If one has existing dictionaries that are set up to use the 'old system' of an 'img' tag with JavaScript on the serverside to handle it, then whoever does a new publish with the new publish will HAVE TO set AudioTag to FALSE/OFF (as it's default to TRUE) during exports or existing sounds will break on those old dictionaries.

㊗️ TLex Suite 2019 (Big August 2019 Update)

  • Big improvements to the TBX loader, including the ability to load huge .tbx files like the European IATE terminology, and the ability to select a subset of languages only to load from the TBX file into tlTerm (or TLex etc.)
  • Numerous performance improvements
  • [Tree View] New right-click commands, e.g. 'Paste after'.
  • [Entry List] Right-click: New entry/ies actions: Manually create temporary local 'original snapshot' of entry; Tag entries where there are edits/differences with the temporary local 'original snapshot' (text compare)
  • [Entry List] Right-click: New entry/ies action: "[advanced] Regular expression search and replace on entry as XML"
  • [Tree View] Right-click: New "Node/Element" command: "Find/Filter all that match parser"
  • [Search (F3)] Fields results breakdown: Add clickable 'Filter' link for individual 'Element->[text]' cases
  • New command-line option --lowpower (disables high-resolution timers on Windows, which may improve laptop battery usage slightly; may be useful also for servers running on CPU-usage-metered platforms like Amazon AWS to reduce idle CPU usage). Not applicable for Mac.
  • [Entry List] Right-click: Save/Load tagsets

㊗️ TLex Suite 2019 Release Candidate 2 (6 Jun 2019)

  • [Snapshots 📷] New Snapshots (and Show Differences) takes a 'snapshot' of how your entry looks the moment you start editing, and displays this in the Preview Area below your current entry while you edit, so you can compare to the original. The Show Differences command helps you review your changes before saving (or use 'Restore' if you want to undo and revert to the last-saved version). The snapshots are presently temporary, i.e. they are not saved anywhere, and are discarded when you close TLex/tlTerm/tlDatabase. You can filter on all entries that currently have 'snapshots' by right-clicking in the Entry List. The Entry List also displays a small camera symbol "📷" next to entries that have snapshots.
  • [Entry List] Entry list right-click menu has many new commands.
  • [Attributes (F1)] New right-click options if right-click on the Attributes tab.

㊗️ TLex Suite 2019 Release Candidate 1 (30 Mar 2019)

  • New Duplicate Finder helper tool
  • [New tlServer Multi-User Client/Server] Open a document normally in TLex, tlTerm, or tlDatabase, then use 'Tools/Start Server' to start that application instance as a 'server', i.e. run it in tlServer server mode (technically speaking, start the "tlServer" integrated http(d) server within the application, on a local TCP/IP port of your choosing) [Please note the server side is Windows-only for now]. You can then run other instances of TLex/tlTerm/tlDatabase as clients that connect to your tlServer server, either on the same computer or more typically on other computers, by using "Open document by connecting to tlServer" [Windows or Mac]. It is recommended you first enable User Management (via the Dictionary or Termbase menu etc.) and add one or more user logins before running your server; each user will then be able to 'log into' your tlServer instance with their own username/password.
  • New document property "References/AllowRefsToAllSections" allows smart-references to be created to all sections in a multi-section (and/or bilingual) document, not just within the same section (side) anymore
  • New document property "References/AllowRefsToAllNodeTypes" allows smart-references to be created to any node within a target entry (not just sense nodes anymore)
  • New document property "AlternativeFieldNames" to show alternative element or attribute names in Tree View and Attributes editing area (e.g. typically user-friendlier or translated names). For example, if you are working with a DTD that has 'unfriendly' element names like "d" for definition, you can use this to display "d (Definition)" in Tree View. This can also be used if you want to show translations of field names in a different language, e.g. "PartOfSpeech (Woordsoort)". This is a multi-line string, where each line has either the format ElementName:AlternativeName for elements, or ElementName:AttributeName:AlternativeName for attributes.
  • SetContentOverride Lua style modifier
  • [Tree View] Right-click Menu: Node 'Add' command: 'Rug' style add: If hold in Ctrl+Shift when clicking to Add a node, can select to automatically move existing children onto the new node (this is the inverse of a 'rug-style' node delete)
  • [Tree View] Right-click Menu: Can now use 'Move Up' and 'Move Down' to manually re-order entries in databases where automatic entry sorting is disabled
  • Entry List right click and Tree View right click: New node commands to show node technical info, or generate XML and copy to clipboard
  • [Stats] New element child value statistics commands: Tree View right-click / Element / Child Values [Left Of], Child Values [Right Of], Child Values [Between Instances of Same]
  • [Stats] Element Stats: Add per-section breakdowns for multi-section documents
  • [DTD Editor] [Advanced] New right-click command for list of child relations: 'Remove duplicate child elements' (e.g. if you have imported XML and the child relation list includes, say, 'b,u,i,b,u,b,i', but you rather want to tick PCDATA option, and just have 'b,u,i' then this will help auto-remove the redundant allowed-child-elements)
  • [DTD Editor] [Advanced] New element right-click commands: "Generate a new element type ID" and "Set the element type ID"
  • [Excel and CSV Importer] Two new options (RescueDiscardedValue and OverflowUnknownListItems) to 'rescue' potentially discarded data after the last mapped column (as well as 'unknown' list attribute items for list type attributes) into a special CSVValue element and attribute, that can then be cleaned up manually in TLex/tlTerm/tlDatabase
  • [Main Entry List] Entry List right-click menu: Add "Load tagged entries" command to force-load just the tagged set of entries, for e.g. ODBC etc.
  • [Tree View] Added new right-click menu commands to 'Collapse all children' and 'Expand all children'
  • [Filter (F5)] [Advanced] New Filter Element Action: 'Delete all matching elements, keeping children', i.e. the so-called 'pull rug' mode of deleting nodes, in which the node's children aren't deleted, but moved to the parent node
  • [Sorting] New configurable sort methods significantly expand the available sort methods available in TLex: ICU local (region, variant) sorting, and ICU custom-rules-based sorting [alpha][Windows-only currently]
  • [alpha][Search Index] New option "/App" "UseBetaSearchIndex": Use new (~Aug 2018) search index functionality to speed up searches (this functionality is in development and still being tested - if you experience problems, please turn this OFF again) [May require restart of application]. This can significantly speed up searches in e.g. the Word/Excel Integration tool (or Multi-Document Smart-Search), but does make opening documents a bit slower as it generates a search index when you open your document. [Currently Windows-only]
  • [Filter (F5)] New filter conditions: Is-not-element (find element type nodes that are any but the selected type); IsFirstChildNode and IsLastChildNode (find nodes with no previous-sibling and no next-sibling respectively ... this is more likely to be useful when combined with other filter types using the 'node intersection'/'All on same node' option, e.g. you could do things like 'find senses with something other than a translation equivalent as the first child', etc.)
  • [Filter (F5)] New (error check) filter conditions: "[Ref-to-sense] Unknown cross-reference target sense ('UNKNOWN')" and "[Ref-to-entry] Unknown cross-reference target entry" (these 'shouldn't happen' under normal circumstances, but may in some cases)
  • New shortcut key Ctrl+Shift+Enter for 'Tag range' in entry list
  • [alpha] Linked-Mode: You can run Tlex or tlTerm and tlCorpus in a special 'linked mode' (launch it from the Tools menu in TLex/tlTerm by selecting 'Launch tlCorpus linked') where they can talk to one another, then you can do things like launch a tlCorpus search straight from TLex/tlTerm (e.g. via right-clicking in the Lemma List or Term List or Tree View, or from the Word/Excel integration popup etc.), or right-click on a word anywhere in the search results in tlCorpus and send it to TLex/tlTerm as a new entry, or right-click on a line in the tlCorpus search results and select to auto-add it to the selected sense or term as a usage example in TLex/tlTerm etc.
  • [Smart References] Add new output/display setting "Show x-ref sense numbers always even if all senses referenced" (from Preview Area toolbar 'config menu'): Show target sense numbers of cross-referenced senses always, even if only one target sense, or all visible target senses are referenced [Setting is saved local to computer, not in document] [Default: ON]
  • New optional 'color renderer' mode for search results. Can change color scheme. Also highlights primary/secondary-level sort words in bold (this can be toggled on/off). Can also toggle display of word before/after number. [beta]
  • Can now right-click on any word in search results (if using new 'renderer'); the right-click menu includes all common standard commands for the right-clicked word, e.g. launch new search, open Web search or Web Image search for the word, auto-insert into Word or Excel, copy to clipboard, etc. [beta/alpha]
  • Pause/Resume Search button
  • New Section Editor via 'Dictionary/Edit sections' menu (or 'Termbase/Edit sections' for tlTerm, or 'Database/Edit sections' for tlDatabase)
  • Small fixes for support for multi-section tlTerm documents
  • Various improvements/fixes to font usage stats, including better ability to find/fix missing fonts
  • New 'File/Compare/Merge as formatted output text' compare/merge based on formatted-output text of entries rather than data [beta]
  • [XSLT] Can now optionally transform XML output with XSLT (for all three of the main XML exporters). Use a file named after the current styleset (but with .xslt extension) in the output folder (2nd or 3rd or further passes can be specified by adding "(2)", "(3)" etc. to the filename).
  • New exporter "File/Export/XML (tree / raw) as one file"
  • [tlCorpus] Web Crawler: New checkbox option to choose whether to download image files encountered while spidering
  • [Filter (F5)] 'Advanced filters' [Depth Filter] and [Nested Depth Filter] find nodes at a given depth/level (or nesting depth relative to same element type) [added ~2015]

Video: What's new in Feb+Mar 2018 Updates

The 2018 updates included many new features - some of them are presented in this video:

🥚 Easter Update 2018 (27 Mar 2018, Build ".2004")

  • New "Tools/Install extensions" and "Tools/Show installed extensions" commands to make it easier/user-friendly to install e.g. additional spellcheckers (and other types of plugins/extensions)
  • [beta] Spellchecking. Can use any LibreOffice spellchecker (uses Hunspell spellchecking system). Before using, you must install the spellchecker. The simplest way to install a spellchecker is using "Tools/Install extension". (There is also a backup manual method: To install a spellchecker, you must currently copy *.dic/*.aff files under your user Documents folder, to either TLex/Plugins/Spell or tlTerm/Plugins/Spell or tlDatabase/Plugins/Spell (depending which application you're using). Toggle on/off using the button in top right of Preview Area. If it doesn't seem to work, make sure you have correct matching language tags/codes set up in your DTD, e.g. your xml:lang attribute should ideally match the one in the *.dic filename. If the spellchecker is e.g. "af_ZA.dic" or "fr-fr.dic" it should still work if you've used just e.g. "af" or "fr" as tag in xml:lang in your data. [Windows-only currently]
  • Add ability to manually edit the 'xml:lang' code for a section under "Tools/Edit section"
  • [TLex/tlTerm][Multi-Doc Smart-Search] New right-click menu on file list with commands "Auto-add all entries from selected document(s)" and "Auto-add all entries from all documents" allow you to bulk "import" entire XLIFF or TMX documents into a tlTerm database
  • [TLex/tlTerm][Multi-Document Smart-Search] New function 'show all' for TMX (Translation Memory eXchange) or XLIFF (XML Localis ation Interchange File Format) documents in Multi-Doc "Search" dialog allows you to 'browse' entire TMX or XLIFF document (and selectively copy/utilize portions thereof, e.g. grab a line and add it as a new entry in tlTerm or TLex). An Add all allows you to grab and auto-add an entire TMX or XLIFF entry as a new tlTerm entry [Also in Word Popup].
  • Under 'Termbase/Properties', add ability to add additional languages to existing termbase (via Termbase/Properties menu) in user-friendly way
  • [beta] Possible big new feature: New "File/Import/Generic XML mode" importer to open/view XML files that can open many more types of XML data than TLex/tlTerm/tlDatabase XML - paving the way for almost more of a sort XML viewer/editor - and laying further foundations of new XLIFF and TMX modes.
  • New "File/Import Excel" (directly import an Excel file - works functionally basically the same as 'Import CSV') [beta][Windows-only; may require Excel to be installed]
  • [TLex/tlTerm][beta] New: Open and view TMX and XLIFF files directly in new experimental 'TMX viewing mode' and 'XLIFF viewing mode'
  • For internal editor notes/comments special type [DTD editor] can now also select PCDATA elements
  • [Right-to-left] Update right-to-left behaviour to start using new three-way DTD direction settings for elements [beta line initially only]
  • [Right-to-left / DTD Editor] Attribute direction is now also a three-way settings (inherit, left-to-right, right-to-left)
  • "File/Import CSV" improvements

❤ Valentine's Day Software Update (14 Feb 2018, Build ".1894")

  • New detailed technical 'document memory usage statistics' (accessible via the 'Full Statistics' command)
  • [TLex/tlTerm] The Word popup tool now also displays and searches for the value of the currently active cell in Excel, in addition to that from Word. It also shows the new 'command popup menus' when clicking on either of these. [Windows only]
  • New: Microsoft Excel Integration: "Insert into Excel (if open)" command on search results right-click menu [Windows only]
  • [Microsoft Word Integration] New "Insert into Word (if open)" command on search results right-click menu [Windows only]
  • Search results right-click menu has new general 'Text Commands' submenu
  • [TLex/tlTerm] New: Microsoft Excel Integration: Add "Insert into Excel (if open)" to the new general 'Text Commands' right-click menu that automatically inserts the text (e.g. term/translation etc.) into the active cell of Microsoft Excel, if open [NB: Windows only, and not the 'Live' (online) Excel, only the installed application]
  • [TLex/tlTerm][New General 'Text Commands' Menu] New Tree View submenu if right-click on a term in a tlTerm document that contains various commands for the right-clicked term, e.g. auto-search in the Multi-Document Smart-Search, insert into Word (if the Word plugin is active), insert into Excel (at the current active cell, if Excel is open), launch web search with DuckDuckGo, launch F6 search, launch F3 search, insert as new entry into TLex/tlTerm, etc. Also add all the same menu commands for TLex lemmasigns when right-clicking on the entry in the Tree View, or in the Entry List at the left, and also for TLex Translation Equivalents when right-clicking on them in the Tree View.
  • [Multi-Document Smart-Search / Microsoft Word Integration] Exciting new feature: [beta] The new 'Multi-Document Manager / Smart-Search' (accessible from the Word popup dialog, from the 'File' menu, the 'Edit' menu and more) allows you to load multiple files in various formats (your own or 3rd-party), and then the Word popup auto-searches in these also, in addition to in your own currently open tlTerm/TLex document; supported file formats currently include tlTerm files, TLex files, TMX (Translation Memory eXchange), TBX (TermBase eXchange), and XLIFF (XML Localisation Interchange File Format). So the Word popup can now search multiple tlTerm files at once, as well as other formats at the same time. (Please note that for .TMX files, you may currently need to copy the TMX DTD file into the folder containing your TMX files.)
  • [Filter (F5)] Added ability to put your own custom Lua filter and Lua element-filter scripts in your own 'Documents' folder, under e.g. a subfolder under the application name 'c:\Users\YourUsername\Documents\tlTerm\Plugins\Filters' or e.g. 'c:\Users\YourUsername\Documents\tlTerm\Plugins\ElementQueries', respectively (for TLex, this would be a TLex subfolder instead of tlTerm). You can either copy your .lua filter script files into this folder manually, or you can use the new menu commands accessible by clicking on the "Advanced" button under "Filter (F5)", "Install custom user Lua filter" and "Install custom user Lua element filter". Note that if you have TLex Suite, these script files are stored separately in different folders for TLex and for tlTerm (so if you have a Lua script you want to use in both, then please install twice). (This new feature is not to be confused with the existing Filter (F5) "user filters" feature, which merely refer to the various special types of filters (e.g. search filters) that appear at the bottom of the F5 filter tree when you create/access them from elsewhere in the application, e.g. from 'Search (F3)' or from the 'Statistics' view, etc.)
  • [Export / Import CSV] New export option "Output entry ID", and corresponding new option in the CSV importer, "{Entry ID}" as a special field that (when used for the first column) merge-matches each imported onto the original entry using its ID (if the entry with that ID still exists). (This should be used if exporting to Excel to allow external editing, e.g. adding translations for tlTerm data, though it's generally still 'best practice' to work in tlTerm as far as possible.)
  • [TLex/tlTerm] [Microsoft Word Integration / Corpus (F6)] New Microsoft Word integration popup command 'F6 Search' launches a Corpus (F6) search for the current word (or selected phrase) that you're standing on in Microsoft Word (presuming, of course, that you have configured your corpus here)
  • [Microsoft Word Integration / Search (F3)] New Microsoft Word integration popup command 'F3 Search' launches a Search (F3) search for the current word (or selected phrase) that you're standing on in Microsoft Word
  • [tlCorpus] New Microsoft Word Integration toolbar button: When turned on, performs auto-corpus-search of the current word (or selected phrase) that you're standing on in Microsoft Word
  • [tlCorpus] New command Window/Always on top
  • New command Window/Always on top
  • [tlReader] New command Window/Always on top
  • [RTF Exporter] New option GenerateParagraphStyles to also generate corresponding RTF paragraph styles (instead of RTF character styles) for paragraph styles in TLex/tlTerm/tlDatabase [beta]
  • New menu command "Tools/Take screenshot" (beta)
  • New menu command "Window/Previous window or tab (Ctrl+Shift+F6)"
  • [Microsoft Word Integration] Auto-insert term into Word document: Terms/translations in entries in the search results are now clickable, displaying a popup menu which contains two new functions: 'Copy to clipboard' and 'Auto-insert into Word document'
  • [Samples / Right to Left] New sample 'RTL (Right to Left) English Arabic (basic bilingual)'
  • [Microsoft Word Integration] New option Include incomplete allows you to toggle whether to search entries marked as 'incomplete' [On by default]
  • [Microsoft Word Integration] New option Use filters allows you to search only entries that pass the current filter. This can be used for, say, restricting the search to a particular subject field in tlTerm, or many other potential uses. [Off by default]
  • [Localisation] Fix: Built-in localisation editor: Unable to save .lang files under Program Files folder - now saves custom or modified localisation .lang files into your own Documents folder, in a subfolder under the application name, e.g. "Documents/tlTerm/LocalisationCatalogs"
  • [Right-to-left] Fix: Document-wide right-to-left flag (under e.g. 'Dictionary/Properties' etc.) was no longer always correctly propagating to Preview Area or HTML export
  • [tlTranslate[beta]] Small bugfixes

Version 2018 (1 Jan 2018, Build ".1780") [Version 10.0]

  • [Import CSV] New option to 'force' 'always-create-children' but for just individual columns (fields) only. This is useful if you have e.g., say, tlTerm data where e.g. additional optional columns are assigned to optional extra synonyms for terms, e.g.:
    cat,Eng definition,hond,Afr synonym of hond,Afr definition
    table,Eng definition,tafel,,Afr definition

Build ".1772" (23 Dec 2017)

  • [Microsoft Word Integration] New option to search sub-entries, e.g. if you're standing on 'draw the line' within a sentence in Word, and have e.g. 'draw the line' as a subentry at either 'draw' or 'line' (still a bit experimental; doesn't yet correctly handle tildes, and may be slow for large databases, so it's off by default)
  • Fixes for overly small fonts on high-DPI screens
  • [Microsoft Word Integration] Now also finds phrase matches (multi-word compounds / sub-entries / terms)
  • [Microsoft Word Integration] Improve tiny font and entry layout, and make font size responsive to user DPI settings
  • [Filter (F5)] New filter "Entries with non-mutually-bidirectional cross-references"
  • [Filter (F5)] Add new Lua Filter F5 plugin "Lua[Entries in current styleset]" that filters/shows only those entries that are visible (i.e. not masked out) in the current styleset
  • [Filter (F5) / Error checks] Add new Lua Filter F5 plugin "Lua[HomNum missing]" to help find cases where the TLex automatic HomNum has somehow gone missing (this doesn't usually happen, but may in some unusual circumstances)

Build ".1765" (3 Dec 2017)

Build ".1758" (27 Jul 2017)

  • [Stats] Add totals for smart cross-reference types for multi-section documents
  • Adding "Tools/[beta] Toggle high DPI user interface fixes" to official (non-beta) builds

Build ".1747" (15 Apr 2017)

  • [Online Publishing Exporter] New option "IndexGen/Replacements" via 'Dictionary/Properties' menu (or Termbase/Properties for tlTerm, or Database/Properties for tlDatabase): [Optional] Common string replacements when generating search index. Comma-Separated-Values multi-line two-column data, with each line being a pair consisting of StringToReplace,StringToReplaceWith. So e.g. if you have entries (or sub-entries) with lemmasigns that include syllable markers (e.g. "Thes·pi·an") you could add a line "·," to remove the mid-dot syllable markers when generating the Online Publishing search index, so that users can find the "thespian" entry. (Standard Comma-Separated-Values syntax applies: If your strings have commas in them, you can surround them with double-quotes etc.)
  • [Online Publishing Exporter] New option "IndexGen/Suffixes" via 'Dictionary/Properties' menu (or Termbase/Properties for tlTerm, or Database/Properties for tlDatabase) - this is an existing Online Publish option that has now also been added as a per-document setting in the Online Publish profiles.
  • [Online Publishing Exporter] New option "IndexGen/Prefixes" via 'Dictionary/Properties' menu (or Termbase/Properties for tlTerm, or Database/Properties for tlDatabase) - this is an existing Online Publish option that has now also been added as a per-document setting in the Online Publish profiles.
  • [Experimental / Internal / Beta] If the Tools/Options "Experimental" flag is on, a new Tools menu command allows to enable experimental support for generating clickable cross-references on export for certain legacy DTDs imported from other formats such as Folio

Build ".1737" (11 Feb 2017)

  • New sample 'Trilingual Dictionary with 3 Sections'
  • [tlCorpus] Web Crawler: Add support for https sites
  • [Advanced][Online Publishing Exporter] Add support for https publish URLs
  • [beta][High-DPI display issues] New Tools menu option "[beta] Toggle high DPI user interface fixes"
  • Fix tabbed view font clipping with large fonts, and use larger toolbar icons on high-resolution displays
  • [Tree View] New setting "MaxDepth": Maximum hierarchy depth for Tree View right-click 'add element' commands. Warning: Setting this too high can make Tree View right-click slow, though this depends entirely on your particular document's structure (DTD) - for many documents, higher values may be perfectly fine or desirable. Range: [1 - 100]. Default: 3. To change this setting, click the config icon in the top right of the Preview Area, select 'Tree View settings', and double-click on the option.
  • [Tools][Advanced/Experimental] Improvements to the (beta) "Tools/Add a new section" and "Tools/Delete selected section" commands (advanced users only), and make these menu commands visible by default now.
    Multi-section Documents: The 'Add a new section' command can be used to create documents with three or more 'sections', to e.g. create trilingual dictionaries, or other multi-section documents (e.g. sections could represent chapters in a text). When there are three or more 'sections' present in a document, they are displayed in a tabbed interface. Strictly speaking, all sections share the same DTD (i.e. fields / elements and attributes), though you may choose to use different subsets of DTD elements/attributes in different sections, if applicable to your document. For example, in a trilingual English - French - Chinese dictionary, say, the first 'section' might use French and Chinese translation elements, the second English and Chinese, and the third English and French. As another example, different sections could represent entirely different dictionaries/texts.
  • [Tools][Advanced/Experimental] New "Tools/Edit section" command allows you to edit section details, e.g. rename the section

Version 2016 (Dec 2016, Build ".1696")

  • [Compare/Merge] Add new setting CompareAttributesByName: Ignore attribute order; compare attributes by name instead of the stricter default that uses attribute order. This can be useful if compared elements don't have the same number of attributes, or if they're in a different order. [beta]
  • [Online Publishing Exporter][Advanced] New option "AlwaysOutputClassNames" [Default: OFF] If enabled, always output class="classname" in generated span tags even when the UseCSS (HTML_CSS) option is off, so you effectively get a classname and the actual styling in a style="" tag (the class names can then be used to do things like toggle visibility of e.g. specific elements within a browser client by JavaScript, and could also be optionally used for styling). Note that if one has 'complex' styles, like smart styles that change contextually, then you may have to still use the style="" span tag output for the 'actual' styling even though you're generating a classname (to do things like visibility toggling).

Version 2016 RC2 (Release Candidate 2): Build ".1674" (10 Oct 2016)

  • [tlCorpus] Web Crawler: Add crawling functionality to try automatically retrieve a hierarchy of pages from a site. Note that this saves a CSV-formatted (Comma Separated Values) log of downloaded pages in your Documents\tlCorpus folder (including information such as page title and description meta tag etc., if available).
  • [tlCorpus] Web Crawler: New setting: SaveFullFolderHierarchy Save downloaded files with full folder hierarchy (i.e. try to locally 'reproduce' server folder hierarchy) [default: ON]
  • [tlCorpus] New search results right-click menu commands: 'Web Search [Google]', 'Web Search [Google Images]', 'Web Search [Bing]' and 'Web Search [Bing Images]' to launch Web search for current search string. (Note that if doing a wildcard search, it will use the first right-clicked result's matching string as the search term.)
  • [Tools / Copy field] New option 'Append if value exists': If the target attribute has a value, append to existing value instead of skipping
  • New setting "/UserInterface/Section" / "ShowDeleteEntryButton": Turn on/off the main 'Delete Entry' button [currently needs document close/re-open to apply] (this button may for some projects be regarded as a bit 'dangerous', and in future releases we may make it off by default)
  • [Preview] New Preview Area setting to display multiple stylesets in columns in the Preview Area instead of one below the other (toggle near top right, in bracketed list of stylesets)
  • [Import CSV] New option: TreatRowNumberAsExtraFirstColumn: [Optional][Advanced] Treat line/row number as special extra first column (so e.g. in tlTerm one could use the line number as an entry import ID, if one e.g. wanted to match that line number on future imports). OFF by default.
  • [Import CSV] New option: RowNumberAsExtraFirstColumnOffset: [Optional][Advanced] If treat line/row number as special extra first column, add this optional offset as a 'base offset' to the line number. Must be used in conjunction with TreatRowNumberAsExtraFirstColumn. 0 by default.

Version 2016 RC1 (Release Candidate 1): Build ".1637" (14 Jul 2016)

  • [Main Entry List] Entry List right-click menu: Add "Quick-filter: Current entry" command that creates and applies a filter that shows only the currently selected entry

Build ".1616" (3 Jun 2016)

  • [Advanced][New TLex/tlTerm Server] Add new application commandline options "--serversetting guestallowentrylist=true(/false)" that determines whether the entry list ('browse' list) may be visible to public/guest users of the server/site
  • [Compare/Merge] New tab "Compare/Merge DTD" with commands to compare and show differences of DTD (elements and attributes) and styles of the two open documents in the 'File / Compare/Merge' tool, and functionality to help automatically 'merge' DTD and styles, as well as to merge usernames (i.e. users in 'Dictionary/User management') from the right document to the left document [initially in 'beta' build only ~2016-03]
  • [Compare/Merge] New option "SkipDuplicateSubtreesDuringMerge": [Advanced] Attempt to smartly skip duplicate sub-trees during merge. If this is true you may occasionally lose 'legitimate' subtree duplicates; if false, you may end up with extra duplicate subtrees during merge (in which case you won't lose data, but it may be an extra inconvenience to remove these) (default: true)
  • 'XML Line by Line' importer: If you hold in Ctrl+Shift when invoking, allows you to import XML text from the current clipboard
  • [Filter (F5) / Stats] New Filter 'matching node action' "[Stats] Generate a list of matching node types and their counts". (An example usage of this might be e.g. in tlTerm, 'show term counts for all languages for a particular part of speech', or to help show breakdowns of created or last-modified terms/elements by a user, etc.)
  • [Filter (F5)] New Filter 'matching node action' "Move matching nodes to end [not ODBC-ready]"
  • [DTD Editor / Styles Editor] Under "[Advanced]" tab, add display of the 'HTMLStyle' of a style (though this is not yet editable)
  • [Advanced][New TLex/tlTerm Server] Add new application commandline options "--serversetting port=portnumber" and "--serversetting serverlogbasefilename=basefilenameminusextension"
  • [ODBC] Performance improvements
  • [Filter / Statistics] Under parent->child 'full statistics', add new 'less than child-count' and 'greater than child-count' filter commands
  • [Filter / Statistics] New filters to find parent->child instances of any child count (and less-than, greater-than, less-than-equal-to or greater-than-equalto)

Build ".1582" (3 Feb 2016)

  • [Video] Extend the 'video' attribute type to also be able to handle embedded videos from sites like YouTube (see the new 'Video' sample under 'Samples' on the Start Page for further explanation). (NB: Documents saved with embedded video will not display correctly in versions of TLex/tlTerm/tlDatabase released 2015 or earlier.)
  • [Online Publishing Exporter] New option: "OverridePathImages": [Optional] URL or absolute path or relative path for image files on the publish server; specify this if the images for this document are stored in a different folder online than the main path specified in the main document properties dialog (e.g. if locally you use "./Images" but on the server it should be e.g. "/data/images/" or even an absolute URL, e.g. "http://mysite.com/data/images/"). Using a URL has the advantage that images would work for e.g. Search API clients.

Build ".1556" (6 Nov 2015)

  • [tlCorpus] File list: Right-click menu: New command "Add texts from filename(s) on clipboard" to add one or more files (separated by newlines) listed on the clipboard
  • [DTD Editor] Lists: "Add new list item" now also allows easy entering of multiple new items at once by using the F12 popup and entering one per line

Build ".1533" (2015-09-08)

  • [tlCorpus] Web Crawler: Add new option '/Spider/DownloadThreads' that allows you to control the maximum number of parallel downloads (under Tools/Options, or Preferences on Mac).
  • [Corpus (F6)] [Optional/Advanced] Ctrl+F7 'Paste Example From Corpus (F6)' feature can now also fill in the example 'Translation' field, by using two new options '/Corpus/RegexExtractExample' and '/Corpus/RegexExtractTranslation' to extract the usage example and translation portions, respectively. You specify a regular expression for each whereby the first bracketed submatch corresponds to the data to extract. For example, if your corpus lines are formatted as follows:
    The man walks -- Monna o a sepela
    then you can specify e.g. "^(.*) -- " and " -- (.*)$" for these two options (respectively) to auto-extract the usage example and its translation.
  • [tlTerm / Compare/Merge] Improvements and bugfixes to 'File / Compare/Merge' tool for tlTerm, e.g. more meaningful sorting and comparison of entries, and also takes into account the currently selected language in the tlTerm language selection dropdown in the toolbar near the top left of the application window
  • [Start page] Add new 'Backups' sub-window to help access and manage backups made with the automatic backups system (and those created with 'File / Create a backup'). You can see a list of backups, open backups, see how much space the backups folder is using, etc.
  • [Advanced] New tool 'Tools / Convert attribute to PCDATA' can help if you want to convert an existing attribute (e.g. TE::TE) to be PCDATA 'text' rather (e.g. TE->[text]) (NB, back up your data before using this, and it is suggested to do careful before/after text export comparisons to ensure no unintended data changes)
  • [tlCorpus] Web Crawler: Add new "Open" button to open the selected output folder in your system's file manager, e.g. Windows Explorer on Windows
  • [tlCorpus] File list: Right-click menu: New command "Command prompt here" opens a Windows command prompt in the folder of the selected text (presently Windows-only)

Build ".1500" (2015-07-05)

  • DTD Editor: Special types editor: Now allows plain element itself to be selected as Translation Equivalent 'special type' for if you are storing the TE in PCDATA instead of an attribute, i.e. TE->[text] (new-DOM only)
  • "TE Fanouts" fix for case of using TE->[text] PCDATA for Translation Equivalents
  • [tlCorpus] New tool "Tools / Select random sentences" allows you to export a selection of random sentences from the corpus
  • [tlCorpus] File list: Right-click menu: New command "Invert selection"
  • [tlCorpus] File list: Right-click menu: New command "Select by wildcard" (can enter e.g. '*.pdf' or 'news*.html' etc.)
  • [tlCorpus] Web Crawler: Add new setting "Automatically add all file types to current corpus? If OFF, then only text file types are added to the corpus; if ON, then files of all types are added."
  • [tlCorpus] Start adding basic support to allow images and other file types (e.g. audio, movies) to be added to the corpus (you can't search them as text, of course, but you can add or right-click/'open' them)
  • Add support for WebP (.webp) image files for image attribute types (may require CEF3 to be selected under 'View / HTML window provider')
  • [tlTerm 'New Entry'] New checkbox option Preserve empty columns in 'New entry' dialog: Specifies whether to preserve or remove empty columns when using multiple columns (i.e. separated by tab or #) to immediately specify multiple terms/translations at once. For example, if you enter 'cat#kat##katse' (or copying and pasting comparable data from Excel), then if this option is ticked, the empty column at '##' will cause 'katse' to be mapped to the 4th language in your tlTerm document; if unticked, 'katse' will be mapped to the 3rd language.
  • [Preview] Popup menu for 'settings' button in top right of Preview Area: Added new menu command 'Print Preview Area contents' that provides a new shortcut to the function to print the Preview Area contents [Note: may require CEF3 or wxWebKit selection under 'View / HTML window provider' menu]
  • [Tools / Database administration] New filter to help find and work through duplicate ID cases (to use this, first click "Analyze" to check if you have duplicate IDs)

Build ".1484" (2015-04-05)

  • [tlTerm] Add "Image" field checkbox to 'File/New' dialog for creating new tlTerm project
  • [Attributes (F1)] New setting "ShowHeadingHierarchy": Show element nesting hierarchy for element headings instead of only the element name itself (e.g. GrandParent/Parent/Element)

Build ".1474" (2014-12-04)

  • [Filter (F5) / Error checks] Added the "Redundant whitespace" error check as a filter under Filter (F5) "Error checks"
  • [Filter (F5) / Error checks] Added the "Incorrectly nested brackets/markup" error check as a filter under Filter (F5) "Error checks"
  • [Online Publishing Exporter] New options:
    "MinScorePercent": Search index keys have a relevance score percentage rating from 0 to 100; use this setting to optionally exclude words from the search index keys below the specified score (typically less relevant material relating to a search).
    "GenerateTableList": This should usually be on, but may be used in some cases to optionally exclude this table if it will be unused.
    "GenerateTableFullText": This should usually be on, but may be used in some cases to optionally exclude this table if it will be unused.
    "GenerateTableReverseIndex": This should usually be on, but may be used in some cases to optionally exclude this table if it will be unused.
    "GenerateTableRefs": This should usually be on, but may be used in some cases to optionally exclude this table if it will be unused.
  • [Tools / Styles] New advanced tool "Tools / Generate a report of before/after/between styling with Lua smart-styling accounted for" [beta]
  • [Stats] Add 'Database / Document element statistics' menu command (condensed version of the 'full' statistics)
  • [Filter (F5) / Stats] New Filter Action "[Stats] Generate a list of child XML values for all matching nodes". (An example usage of this might be something like 'show a list of values of part of speech child nodes of subentries only'.)

Build ".1450" (2014-10-11)

  • [Online Publishing Exporter] New option "AutoIncrementTitleIDForEachSection" via 'Dictionary/Properties' menu (or Termbase/Properties for tlTerm, or Database/Properties for tlDatabase): If ON, the online exporter automatically increments the title ID on each next section for multi-section documents (the default, OFF, indicates to use the same title ID for all sections). (If you have a TitleIDQuery specified then this setting should have no effect.)
  • [Filter (F5)] (Experimental/beta) 'Quick-filter/Show filter visualization graph' [beta]

Build ".1446" (2014-09-24)

  • [Filter (F5)] New F5 Quick-filter / 'Save filter condition selection' and 'Load saved filter' commands allow you to save and re-load the currently ticked Filter (F5) conditions and Show/Hide modes [currently Windows only; also "user filters" not yet supported (e.g. search filters or the more advanced statistics filters)]
  • [JSON] New 'Tools / Copy entry as JSON' command generates JSON version of the selected entry and copies it to the system clipboard
  • [Corpus (F6)] New Tools/Options (or Mac Preferences) option "/CorpusSearch/MaxResults" allows you to more easily set the maximum number of search results to return. (This was previously configurable via registry.)
  • [Corpus (F6)] New Tools/Options (or Mac Preferences) option "/CorpusSearch/SampleEveryNthResult" corresponds to existing spin control for changing the sampling
  • [tlCorpus] New Tools/Options (or Mac Preferences) option "/CorpusSearch/MaxResults" allows you to more easily set the maximum number of search results to return. (This was previously configurable via registry.)
  • [tlCorpus] New Tools/Options (or Mac Preferences) option "/CorpusSearch/SampleEveryNthResult" corresponds to existing spin control for changing the sampling
  • [Word Count] New 'Tools/Word Count (Tagged)' menu command shows ("styled"/"formatted") word counts of currently tagged entries (if any)
  • [Main Entry List] New Entry List right-click menu allows convenient access to commands like 'tag entry' and 'tag range' for the right-clicked entry
  • [ODBC] [Advanced Users] New 'Tools/Options/User Preferences' option 'UserInterface/AutoCheckout': Allows you to turn off the "Would you like to check this entry out now?" warning and automatically try check out the entry as soon as you start editing. NB: If you enable this, be extra careful, as it will be much easier to make accidental changes to the database. This is a convenience option for advanced users who feel they 'know what they are doing'. (Note this still does not allow you to edit the entry if someone else has it checked out i.e. locked.)
  • [Word Count] Add display of word count of current entry in status bar (can disable via "Tools / Options" "/UserInterface"/"ShowWordCount")
  • [Tools / Auto-sort elements] New option 'Dry run only' - if selected, no actual changes are made, it just shows a list of entries that would have been changed
  • [Tools / Auto-sort elements] New option 'Tag entries' - if selected, entries that would be changed by the tool (whether doing 'dry run' or actual change) are tagged
  • [Tools / Auto-sort elements] Now works with ODBC databases (requires "document lock" to be set, e.g. "Lock database" menu command under "Dictionary", "Termbase" or "Database" menu - i.e. requires other users to log off temporarily)
  • [Filter (F5)] New "Quick-filter/Current entry" creates and applies an instant filter containing just the currently selected entry, if any
  • [Tools / Copy field] New option 'Use filters': Apply only to entries that pass the current filter, if any (if no filter, applies to all entries)
  • [Tools / Copy field] New option 'Current section only': If document has multiple 'sections', apply to current section only (otherwise, apply to all sections)

Build ".1412" (2014-09-10)

  • New "View / HTML window provider / CEF3" option for embedded browser windows [Currently Windows-only]. Please try this option and report any problems to us. This fixes bugs such as smallcaps not displaying correctly with wxWebkit, and the "invisible-cursor" Internet Explorer issue, and will become the default HTML window provider in the near future. [This option has been in 'beta' line since Apr 2014]
  • New status bar area in lower right provides information such as how many entries are loaded in the local ODBC cache, etc.
  • [Styles editor] Smart styles: New buttons to jump to next/previous element/attribute style that has a Lua modifier (smart-style) script
  • New 'Document Property' "Preview/CustomPreviewToolbar": [Optional][Advanced] Set a custom Lua script here to return an HTML snippet that will be displayed as a custom toolbar at the top of the Preview Area. (Related to this, there is also a new "TLex URI" tlex://LUA_CMD:some_lua_script/ that allows execution of a Lua script on click.)
  • [tlCorpus] Search results collocate display: New right-click menu option to launch search for right-clicked word
  • [tlCorpus] Search results collocate display: New right-click menu option to launch search for right-clicked collocate 'pair'
  • [Online Publishing Exporter] [Optional][Advanced] New option "IndexGen/HeadwordRegexSplitters": If you have headwords/terms such as "dog/hound" or "World Health Organization (WHO)", this could be used (when generating the search index) to index these as e.g. "dog" and "hound" separately, or e.g. "World Health Organization" and "WHO" also separately in the index (in addition to the full form in the index), by specifying a regular expression to match the relevant component parts of the string. Use the regex syntax for bracketed submatches - each bracketed matching substring will be added to the search index. Stored as a multi-line value, one regular expression splitter per line.
  • [Online Publishing Exporter] [Optional][Advanced] New option "Events/OnExport/LuaScript": Run this Lua script when the export (publish) is complete

Build ".1398" (2014-08-09)

  • [Tree View] New setting "ShowNumberingAsLetters": Show integer attributes in the Tree View using the numbering scheme defined in the current Styles (i.e. numbering that appears in Preview Area, e.g. a,b,c instead of 1,2,3, if configured that way in the Styles)
  • [Tree View] New setting "AttributeSeparator": Display this string between attribute values in Tree View
  • [Attributes (F1)] New setting "EditNumberingAsLetters": Allow display and edit of integer attributes based on numbering scheme (e.g. letters) defined in Styles system instead of underlying numberical value under Attributes (F1)
  • [RTF Exporter / Right-to-left] New option OutputBothDirectionMarkersWithCharStyles that can help display fields or punctuation in correct order for some documents
  • [RTF Exporter / Right-to-left] New option OutputLTRMarkersAtCharStyles that can help display fields or punctuation in correct order for some documents
  • [RTF Exporter / Right-to-left] New option OutputRTLMarkersAtCharStyles that can help display fields or punctuation in correct order for some documents (e.g. consecutive LTR fields within an RTL paragraph)
  • [RTF Exporter / Right-to-left] New option OutputZeroWidthNonJoiner to control whether or not a zero-width non-joiner is automatically output after/between RTL fields
  • [tlTerm 'New Entry'] Insert new entry: Can now immediately specify term translations in other languages for each new entry by separating with tab or "#", e.g. "word#mot" - each new entry will be created with . This can be used to e.g. quickly import thousands of terms from Excel, by copying and pasting into the 'create multiple new entries at once' box of the 'New entry' tlTerm box. Note this currently always assumes the first column of input is 'in' the language selected in the toolbar language selection dropdown, followed by the remaining languages in your termbase, so you should first select the language in the left-most 'column' in your data being entered from the toolbar language selection dropdown.
  • [Tree View] New option Show masked elements in bold [beta]
  • [Find / Replace dialog] New checkbox option "Use masks: Restrict to nodes that pass the current style-set mask" [beta]
  • [Find / Replace dialog] New checkbox option "Restrict to specific nodes that match the current filter" that toggles the new "filter mode" option described below [beta]
  • [Filter (F5)] New filter condition "Current style-set mask visible nodes"
  • [Multi-user/ODBC] New 'Network Update' toolbar icon to right of 'Save' toolbar icon that updates the document status from the network (e.g. processes new entries, entry deletions, modifications). This is not to be confused with a 'load all'.

Build ".1325" (2014-06-03)

  • [Filter (F5)] Add new "Quick-filter/Search quick-sets" sub-menu that allows you to easily instantly set up and apply a quick-filter from any of the F3 'search quick-sets'. (Note that this uses the current 'fields list' restriction from the 'Search (F3)' window, if selected.)
  • [Filter (F5)] Add new 'attribute-is-empty' filter conditions
  • [Filter (F5)] Add 'Parent->[text]' filters for elements that 'allow PCDATA'
  • [Filter (F5)] [Beta] Make the filter condition selection lists hierarchical for more user-friendly use. (Currently, one may switch back to using the old 'flat' list if desired by setting 'Tools/Options/User Preferences' '/Filter' 'TreeSelectionList' to 'OFF'.)
  • [TLex & tlTerm] Corpus (F6): Add support for SRT files (Subtitles Format)
  • [tlCorpus] Add support for SRT files (Subtitles Format)
  • [Find / Replace dialog] [Beta] [Advanced] Add a new search/replace "filter mode" that allows the search and/or replace to be restricted only to the exact nodes/elements that pass the current filter. This effectively allows "conditional replacements" for conditions occurring on the same node (for example, 'replace some-text with some-other-text in "attribute2", but only if (say) "attribute1" on that same node contains a certain value'; or, 'replace, but only if (say) the node has a "Subentry" parent' - any conceivable 'filter' in the software can be used as a condition, provided it matches the desired node(s)).

    This "filter mode" currently applies only in the "Default field search" mode, and only if the "Use filters" checkbox is ticked.

    As an example, assume we want to fill in empty instances of "ElementName::Attribute2" on an element named "ElementName", but only if the value is empty AND only if "ElementName::Attribute1" (on the same element) contains the text "foo" (for this latter check, we'll use an F3 field search applied as a 'search filter', see below). To achieve this, do the following:
    - Make sure to back up your data before trying this, and try it on a test copy of your database first, to make sure it works correctly
    - Open your document
    - Before doing anything else, select the 'Tools/Options' menu command (or Mac 'Preferences' menu), and select the "User Preferences Properties List [Advanced]" tab
    - Find the preference "/Find" "FilterMode", double-click on it, and enter a new value of "2" (without quotes)
    - Click "OK" to close the Options/Preferences window
    - Now, go to 'Search (F3)' (this is not inherently part of using the new "filter mode", but we use it because in this particular case, we are going to use a 'search filter')
    - Click the 'Fields <' button to pop out the F3 fields list, click the 'Clear all' button, and tick "ElementName::Attribute1" (this tells Search (F3) to only search in that attribute)
    - Enter "foo" in the search box under F3 and click the 'Search' button
    - In the F3 search results window, click "Filter+" to apply the search as a filter. We now should have a filter that effectively selects which exact nodes to include in our Search and Replace in the next step (these nodes may be highlighted in the Preview Area).
    - Select the 'Edit/Replace' menu command (shortcut Ctrl+H) to open the Search and Replace dialog (take note that the "Filter+" and "Filter-" buttons at the bottom of the Search and Replace dialog are greyed out, and that the "Search mode" is set to "Default field search"; if "Filter+" and "Filter-" are not greyed out, the "FilterMode" might not be set to "2", or you might not be using the latest "beta" build of the software.)
    - Click the 'Fields' tab in the Search and Replace dialog, click the 'Clear all' button, and tick "ElementName::Attribute2" (this tells the Search and Replace dialog to only search/replace in that attribute ... this is not to be confused with the 'Fields' setting under F3 from the previous steps)
    - Select the 'Search and Replace' tab in the Search and Replace dialog
    - Enter "^$" as the search text (without quotes); this is a regular expression that matches an empty field
    - Enter your replacement text as the replacement text (e.g. "bar") - this will be used to fill in ElementName::Attribute2
    - Make sure 'Regular expression is ticked'
    - Make sure 'Use filters' is ticked (it will not work correctly if it is not)
    - Click 'Replace all' (or use 'Find next' and/or 'Replace' to find/replace one by one)
    - Close the Search and Replace dialog
    - When done, go back to 'Tools/Options' 'User Preferences' tab and change the "/Find" "FilterMode" back to "0" (to turn off the "filter mode" again within Search and Replace, otherwise it may appear to behave strangely next time you try use it)

    You may find it useful at this point to use 'File/Compare merge' to check that the correct changes have been performed.
  • [Filter (F5)] Add new "Quick-filter/'Incomplete' entries" command that instantly applies a 'convenience' filter to show only entries marked 'incomplete'
  • [Filter (F5)] Add new "Quick-filter/'Completed' entries" command that instantly applies a 'convenience' filter to show only entries NOT marked 'incomplete'

Build ".1265" (2014-05-12)

  • [Filter (F5)] Add new "Quick-filter/Hide all entries" command that applies a special 'convenience' filter that hides all entries in the current section
  • [Filter (F5)] Add element filter for main 'Lemma' (or 'Entry') element (in theory every entry has one, so it seems redundant, but it can have uses - e.g. make it easier to 'hide all entries' with a filter, or can have uses when used in conjunction with new 'Node intersection' filter type)
  • [Tags] Add new "Edit/[Current section only] Tag all" command (same as existing command but for selected section/'side'/tab only)
  • [Tags] Add new "Edit/[Current section only] Tag range" command (same as existing command but for selected section/'side'/tab only)
  • [Tags] Add new "Edit/[Current section only] Clear all tags" command (same as existing command but for selected section/'side'/tab only)
  • [Tags] Add new "Edit/[Current section only] Filter tagged" command (same as existing command but for selected section/'side'/tab only)
  • [Tags] Add new "Edit/[All sections] Invert tags" command (same as existing "Invert tags" but for all sections, instead of only selected section/'side'/tab)
  • [Error checks] Add convenience "Filter" links for remaining parent->child element relation violations (e.g. "one or more", "one only" etc.) to quickly jump to the specific violating cases
  • [Filters] New filter type "HasParent:(ElementName)"
  • [Styles] [Numbering schemes] Add new "Lowercase Greek letters" numbering styles scheme
  • "Alt+" shortcuts now working in 'Tools/Options/Keyboard shortcuts'
  • [tlCorpus] Right-click on wordlist: New 'Web Search [Bing]' and 'Web Search [Bing Images]' menu commands
  • [Windows] New 'Tools/Open Windows ODBC Configuration Dialog' menu shortcut (convenience helper)
  • New 'Tools/tlCorpus' menu shortcut (convenience helper to run tlCorpus)
  • Miscellaneous bugfixes and some performance improvements

Build ".1223" (2014-04-30)

  • [Mac] Some bugfixes for 'F12 (AppleKey+F12 / F13) popup (overlay) edit window
  • [Attributes (F1)] Add a 'Tools/Options/Properties' AttrWindow/TextLabelWidth setting (computer-local setting) that allows you to change the width (in pixels) of the (left-side) edit control labels under Attributes (F1)
  • [Tree View / Tools and Attributes Area F1 .. F6] New right-click menu for F1 .. F6 tabs, with easier access to 'Tree View settings' and 'Attribute Editing Window (F1/F2) settings' options
  • [Tree View / Tools and Attributes Area F1 .. F6] Can now drag-resize the height of the Tree View vs 'Tools and Attributes' (F1 .. F6) window
  • [Attributes (F1)] Show attribute labels in bold, and add an AttrWindow/BoldLabels setting (computer-local setting) that allows you to optionally disable this.
  • [Preview] Popup menu for 'settings' button in top right of Preview Area: Add new options 'Tree View settings' and 'Attribute Editing Window (F1/F2) settings'
  • [Attributes (F1)] Add a 'Tools/Options/Properties' AttrWindow/ShowFixedAttributes setting (computer-local setting) that allows you to select whether or not to show 'fixed' (read-only) attribute values under Attributes (F1).
  • [Attributes (F1)] Add a 'Tools/Options/Properties' AttrWindow/ShowFixedScriptAttributes setting (computer-local setting) that allows you to select whether or not to show 'fixed' (read-only) Lua script attribute values under Attributes (F1).
  • [Attributes (F1)] Show element headings in bold. Also add a 'Tools/Options/Properties' AttrWindow/BoldHeadings setting (computer-local setting) that allows you to optionally disable this.
  • [Preview] [wxWebkit] Add right-click 'Copy' menu command to copy Preview Area text selection to clipboard (in addition to existing Ctrl+C keyboard shortcut)
  • Miscellaneous bugfixes and improvements (inter alia: Mac Search F3 text cut-off; old-DOM+wxWebkit 'click to select' fix; 'tagged entries' info display make less subtle; fix possible slow delay on first-entry-clicked after loading a file issue introduced in .1125)

Build ".1125" (2014-03-11)

  • [Search (F3)] If multiple pages of search results, also show the multi-page navigation controls at the bottom of the results page
  • [Reversal] Extend 'lemma reverse' function to handle case of TE->[text] PCDATA (inline translation), in addition to the usual case of TE::TE attribute
  • [Mac] Added additional shortcut keys for 'F12 popup (overlay) edit window': AppleKey+F12 (or Ctrl+F12), and F13
  • [Tree View] Add new right-click command 'Element / Run tQuery expression' that provides a basic method to run a tQuery expression on the selected node and display the result
  • [DTD Editor] List items: New "Copy with IDs" command for copying list items to clipboard along with their IDs
  • [Activation System] Make improvements to the activation dialog to help automatically fix an activation that fails due to having been inadvertently copied from one computer to another (this can occasionally happen e.g. if upgrading Windows, or if the user is transferring their 'documents and settings' from one computer to another). (The previous solution was to use the "Reset key" button, but this was not user-friendly.)
  • [Compare/Merge] New option "EntryListCompareEntriesByNodeID": [Advanced] Compare entries in the entry list by the unique node ID of each entry instead of by headword; this can help to create a 'stable' compare/merge entry list if doing data remodelling work that affects the entry headword. For tlTerm documents this is effectively always ON. (default: OFF)
  • [Online Publishing Exporter] [Advanced] New option "EntryIDQuery" allows a custom tQuery to be specified to generate 'remapped' entry IDs. This can be used, for example, to implement 'stable entry IDs'.
  • [Online Publishing Exporter] [Advanced] New option "TitleIDQuery" allows a custom tQuery to be specified to generate title ID for entry (this can be used indirectly to, e.g., use a list attribute to specify title of entry)
  • New command-line option "--tool (toolname)" allows you to automatically run a 'Tools' plugin when invoking TLex/tlTerm/tlDatabase from the command line
  • [tlCorpus] New corpus search option to enable "Case-sensitive search"
  • [tlCorpus] New corpus search option to disable "Whole word only search (by automatically adding regular expression word boundary tags at front/back of search query)"
  • [tlCorpus] New options to change width or height of the main search box
  • [tlCorpus] Right-click on 'tabs' now pops up a menu with a 'Close' tab option
  • [tlCorpus] New option "Tabs/OnDoubleClick" allows you to enable closing tabs by double-clicking on the tab [disabled by default]
  • [tlCorpus] New option "Tabs/OnIconClick" allows you to enable closing tabs by clicking on the tab's icon [disabled by default]
  • [Tools / Copy field] Add new option to try auto-add (if possible) new 'list attribute' list items to the DTD
  • [Filter (F5) / Real-time error checks] New Filter (F5) option Auto-check basically turns the currently selected filter conditions into a 'real-time error check'
  • [Search and Replace] New "bulk search and replace" option [still 'experimental'/beta]. Use F12 in 'find' and 'replacement text' fields, and enter multiple lines for each find/replacement for both the find and replacement text. [Currently works with normal field search only].

Video: Summary of new features in Version 2013 release

Version 2013 included over 150 new features. Here is a video showing some of the new features:

Build ".1071" (2013-11-18)

  • [Mac] New 'Tools / Launch new instance' command makes it easy to launch a second (or third etc.) instance of tlCorpus
  • [Mac] New 'Tools / Launch new instance' command makes it easy to launch a second (or third etc.) instance of the application (to help work with multiple documents at once). (This is essentially a stopgap workaround until full Multiple-Document-Interface is implemented.)
  • [HTML Exporter] New 'FilenameQuery' option allows you to specify an optional tQuery() to use on the entry to generate the output filename when using the 'Export one file per entry' option
  • [Compare/Merge] New command to execute Lua Script from within Compare/Merge (under Batch Merge) [Advanced]. Use the following function signature, return 0 for success:
    function Compare(DocLeft,DocRight)
  • Miscellaneous bugfixes (including: Replace-as-you-type shortcuts work in 'new entry' dialog again; Ctrl+T shortcut to jump to Tree View working again)

Build ".1048" (2013-11-05) VERSION 2013 (v8.0)

  • New sample file 'Filter Option Explanations' explains the exact operation of the Filter (F5) options 'OR', 'AND' and 'NODE INTERSECTION'
  • New sample file 'Auto-sort Elements' explains the basics of how to use the 'Auto-sort elements' tool [
  • [Tools / Auto-sort elements] Add 'tQuery-based' element comparison option
  • [Tools / Auto-sort elements] Add new setting 'Current section only'
  • [Preview] Can now drag-resize the Preview Area width [Much requested]
  • Miscellaneous bugfixes

Build ".1036" (2013-10-30)

  • [tlTerm] Some TBX importer fixes
  • [tlTerm] Big improvements to Term List at left, now displays second column of information showing other translations of the entry/concept
  • [tlTerm] New Preview setting 'Display second synonym onwards as a cross-reference' (click settings button in top-right corner of Preview Area to toggle). If you have an entry for the concept 'dog', with two synonyms 'dog' and 'hound', then this will automatically show a special cross-reference entry (e.g. 'hound -> dog') at 'hound' in the alphabetic listing, pointing to the main entry at 'dog'.
  • [tlTerm] New Preview setting 'Use synonym auto-references arrow' (click settings button in top-right corner of Preview Area to change)
  • [Preview] Add new Settings button in top right of Preview Area that faciliates access to Preview Area settings
  • [tlTerm] Entry List now shows synonyms with an arrow indicating the primary synonym/entry, e.g. 'hound => dog'
  • [tlCorpus] New 'File / Export word n-grams' options generate and save a list of 'word n-grams'
  • [Filter (F5)] New 'Node intersection' option in which ALL conditions must match on one or more specific individual node(s) for the entry to pass the filter condition test (i.e. 'apply intersection of matching nodes for all conditions'). This major addition to 'Filter (F5)' allows you to find specific elements/nodes that match multiple conditions, e.g. 'Find an Example node that has a translation AND a source/citation', or 'Find a Sense node that has TEs AND has Examples'. This can also be combined with Search filters in interesting ways, e.g. one could construct filter queries such as 'Find cases where an Example has the word "dog" in it AND the Example translation is not filled in'. (Combining these with the new 'custom user filters', one can create much more advanced filter queries.)
  • [Sorting] New 'Tools/Auto-sort elements' tool allows child elements of a given type throughout a document to be automatically sorted according to the value in an attribute, for example you could auto-sort sub-entries alphabetically on the sub-entry lemma sign. (This forms part of a sophisticated new sorting system that will allow far more complex cases of auto-sorting of child elements.)
  • [Online Publishing Exporter] Add configuration options to the 'online export options' user interface to make it easier to configure the common prefixes and suffixes settings for search index generation. These allow you to enter common prefixes/suffixes to strip from the front/end of strings when generating the search index (e.g. if you have many translations with forms such as "to call", "to eat", "a cow", "a dog" etc., then you can configure e.g. "to ", "a " etc. as 'common prefixes', and a term or translation such as "to call" will also be indexed as if it were just "call". You can enter multiple prefixes or suffixes by simply entering one per line.
  • [Online Publishing Exporter] Various improvements, fixes, new options, and speed enhancements.

Build ".995" (2013-10-06)

  • [Filter (F5)] Implement a new 'custom user filter' system. With this system, various 'special' filters that you use during a session (e.g. 'search' or 'stats' filters) will now be temporarily added to the list of filter conditions under Filter (F5) (at the bottom of the list). This allows these filters to be used like other filters under F5, i.e. they can be unticked or re-ticked, be used in combination with other filters and/or with each other, can be selected in the F5 'Hide' column, and be used with features such as F5 'Go to next', 'Tag all' and 'Filter actions'. These 'custom user filters' are added only temporarily and are discarded when you close the document or exit the application, and are denoted with a "*" in the F5 filter list.

    The following 'special' filters have been re-implemented to work as 'custom user filters' (i.e. get added to the F5 list when you activate these):

    * Search (F3) and 'Find' / 'Search and Replace' Filter commands
    * Parent->Child stats filters
    * 'Parse error' stats filters
    * 'Child pattern' stats filters (i.e. via 'Element details' stats)
    * 'Attribute pattern' stats filters
    * 'Sibling pattern' stats filters
    * List 'N-items count' filters
    * List item filters
    * 'Number-of-smart-cross-references on a smart-refs node' filters
  • [Search (F3) / Search and Replace / Filters] The Search (F3) and Search and Replace 'Filter' commands now add these custom search filters to the list of filter conditions under Filter (F5) (temporarily for the session). This allows search filters to be used like other filters under F5, and thus can be used in combination with other filters, as well as making it easier to 'search within search results'.
  • [Stats] Parent->Child stats: Add new Filter "(=0)" option that finds/filters cases of the given parent with ZERO children of this child element specifically
  • [Filter (F5) / Filter Actions] [Advanced] New Filter Action 'Run Lua script on all matching nodes' of the current filter conditions selected under F5 (use gCurrentNode and gCurrentEntry for the matching node and entry respectively)
  • [XML Importer] Added new import XML options dialog that displays before import, allowing you to change XML import options (currently PreferPCDATAToSecondChild, StyleBetween and VisibleLogging)
  • [XML Importer] Add new option VisibleLogging: If true, enables some 'visible logging' from the importer, to help follow what it is doing. This may slow down the importer a little, but can help in investigating problems.

Build ".986" (2013-09-30)

  • [Error checks] Add convenience "Filter" links in the list of missing parent->child element relation violations to quickly view the violating entries
  • [Stats] Parent->Child stats: Display red "(!)" next to parent->child count instances that aren't allowed according to the DTD (e.g. if there are two children but the relation type is "zero or one" allowed)
  • [Stats] New Child<-Parent statistics function (this is similar to the existing Parent->Child statistics, but from the child node's perspective)
  • [Advanced] New 'experimental'/beta command 'Tools/Force re-parse of all 'text' nodes' [NB, for advanced users only!] ... this might typically be useful, say, after an importer, to e.g. convert inline tags in text form like "<i>hello</i>" to actual parsed document tree. (Requires Tools/Options/Properties 'Experimental' property set to true.)
  • [Cross-reference resolver] Add new options to the 'Cross-reference resolver' tool (see "Tools" menu) to help resolve references for cases (e.g. after importing XML from elsewhere) that use source/target ID numbers/strings for cross-references (as opposed to e.g. using the referenced headword).
  • [Filter (F5)] [Advanced] New Filter Element Actions system that allows 'actions' to be performed on all nodes in a document that match the current filter condition(s). These are accessible under 'Filter (F5) via a new "Advanced" button. Current actions are:
    - "Delete all matching elements"
    - "Delete 'text' child nodes from all matching elements"
  • [Stats] Element details: "Occurring Left-Siblings" Add new count/filter option in the 'element details' stats list for occurrences of 'element has no left-siblings' (i.e. element is first child)
  • [Stats] Clicking on 'Count' heading a second time now toggles the sort-elements-by-instance-count off again (and back to sorting by DTD element order)
  • [Stats] Fix element name not visible in some cases if color is white on a white background, or black on a black background
  • [Styles editor] Minor user-friendliness improvement: Add a 'signpost' heading showing what styleset and style you're currently viewing
  • [DTD Editor] Right-click in attribute list: New command to copy attribute list to clipboard
  • [DTD Editor] Right-click in 'allowed child elements' list: New command to copy allowed child element list to clipboard
  • [DTD Editor] Right-click in 'allowed child elements' list: New commands "Synchronize output order in styles" (and "Synchronize output order in styles for ALL elements" to do this for ALL elements in the DTD). This will try set the 'output order' of child elements to be the same as their ordering in the 'allowed child elements' list. Note this won't necessarily work properly for cases where there are 'out of order' children, i.e. multiple instances of the same allowed child element (eg. "A,B,A"). It's also important to remain aware here that in the 'output orders', unlike in the actual DTD, the elements may be intermingled with attributes (due to the output order system that allows transforming the order on generating the output), e.g. "Attr1,ChildElem1,Attr2,ChildElem2" - if so, this function may leave some undesired orderings of child elements relative to attributes; these can only be resolved manually as this function cannot automatically know the correct desired ordering. The function tries to leave attribute ordering intact, but this isn't always possible.
  • [Compare/Merge] New configurable setting "CompareElementTypeIDs" [Advanced]
  • [Compare/Merge] New configurable setting "CompareElementTypesByName" [Advanced]
  • [Compare/Merge] New configurable setting "CompareNodeIDs" [Advanced]

Build ".970" (2013-08-26)

  • [RTF Exporter] Add new option to 'split output entries into N files'
  • [RTF Exporter] Add new option to 'split output entries into files of N entries each'
  • [Tags] Add new "Edit/Invert tags" function that inverts the current tagset (untags tagged entries, and vice versa)
  • [Auto-link Media Files] Add new optional field to use a tQuery() expression to match against the regular expression instead of the headword (so e.g. you could map filenames against a different attribute than the lemma sign by using '@Pronunciation' if you have a Pronunciation attribute on your entry)

Build ".966" (2013-07-28)

  • [Exporters] Add help text to some of the exporters under 'File/Export' (e.g. to the two XML exporters, to help explain the primary differences between them, and when to use which one)
  • [Search (F3)] New Use filter checkbox option allows you to choose not to limit an F3 search to filtered entries only (as was already possible in the Find/Replace dialog)
  • [Search (F3)] Add search icon image next to search text box to make this search function slightly user-friendlier
  • [Right-to-left / DTD editor] Added new "right-to-left" checkbox option for elements (in addition to existing option for individual attributes)
  • [HTML Exporter] New 'GenerateIndex' option allows disabling of generation of alphabetic index when using the 'Export one file per entry' option
  • [HTML Exporter] New 'GenerateHTMLHeader' option allows disabling of generation of HTML header/footer areas (can be useful in certain situations)
  • [Tools] New Tools menu option "Shapecatcher" that opens the external 3rd-party tool http://shapecatcher.com/ (this tools helps you find Unicode characters by allowing you to draw them)
  • Add new commands to help easily convert subentries into main entries (Tree View / right-click on subentry / 'Promote to main entry' - this can be done either as a 'copy' or 'move'). (Note: This requires subentries and main entries to be similar in your DTD - this should be the case if using the default TLex DTD, but may require some DTD changes if using a customized DTD.)
  • Improve documentation of sample "Multiple Editions Sample using Masks.tldict" - added a detailed explanation of how to set up masks
  • You can now optionally immediately create multiple new entries at once from the 'New entry' dialog using a new multi-line text input box (specify one per line)

Build ".947" (2013-05-15)

  • Add new sample "Digraph Sorting.tldict" to help show how to use the configurable table-based auto-sorting with digraph (and Unicode combining character) support (previously added in build ".670")
  • Add new sample "Demote Entry to Subentry.tldict" to help explain how to use the 'convert entry to subentry' functionality
  • [User Guide] Add detailed section explaining paragraph style options ("Indents and Spacing" tab)
  • [tlTerm] Add new "columns output mode". Clicking on the "columns" icon in the top right corner of the Preview Area of tlTerm toggles to/from "columns" mode. This setting currently applies to the Preview Area and to 'Export RTF'.
  • [RTF Exporter] Basic table support.
  • [Stats] 'Full statistics': For smart-references element (e.g. "References"), add a detailed breakdown of reference-type instance counts and num-references instance counts. Also add corresponding filters (available from within this stats view) for finding smart-reference elements where the number of cross-references is greater-than, less-than, equal-to etc. a given count.
  • [Tools / Advanced] Add new 'Tools/Bulk element/attribute rename' tool (for advanced users) that allows you to quickly rename many elements and/or attributes in the DTD at once by specifying the list of renames to perform in a two-column CSV (Comma-Separated Values - e.g. Excel export) text file. This tool prompts you for a CSV/.txt file which contains on each line a field (either element or attribute) to rename, one per line, then performs the DTD renames as appropriate. Attributes should be specified as: ElementName/AttributeName. Note you should try use the old element names in column one 'throughout', and the new element names in column two 'throughout'. The simplest way to create the input file is using spreadsheet software, e.g. Excel, then doing a 'Save as' to CSV format. What may also be helpful here is the DTD editor command to 'copy full element and element/attribute list to clipboard', which can be pasted into column 1. An example input file to the bulk rename tool looks like:
  • [Tools / Advanced] Add new 'Tools/[Advanced] Create dynamic-ref-tree smartref elements'. This tool adds two new 'special' elements (with corresponding special attributes) to the DTD, with names starting with "_autogen_ref". When these are present, then when a "References" node generates its output, it does so 'behind the scenes' using temporary 'created-on-the-fly' instances of these new elements/attributes (note you should not manually add instances of these elements to your data). This system makes several improvements to the smart-references, e.g. the styles can now be configured in the Styles system in a more fine-grained manner for smart-reference fields (e.g. reftype, ref, homnum, sensenum), the visibility and order of the smart-reference output fields can be configured separately, the auto-punctuation between references and groups of reference types is more configurable (e.g. the auto-punctuation in cases like "SEE cat, dog, COMPARE zebra"), and it gives typesetters potentially finer control in typesetting smart-reference fields. It also fixes a limitation whereby the smart-reference homnum would be hidden if the main entry homnum field was hidden (as the old behaviour is to inherit the visibility setting from the main entry's homonym number attribute - though this is not a problem for most databases). Note that if these elements and attributes are not present, then the old behaviour still applies. These elements can easily be deleted at any time in the DTD editor to revert to the old behaviour, or created again to switch to the new behaviour.
  • [tlCorpus] Search results collocate (word N-grams) display: Add new right-click menu option to toggle the display of multi-word collocates at position 1 (B1 and A1)
  • [tlCorpus] Search results collocate (word N-grams) display: Now updates continuously, i.e. can immediately start seeing partial results without having to wait until search has completed
  • [TLex & tlTerm] Corpus (F6): Add support for ODT files (OpenDocument Text) and FictionBook FB2 files (requires calibre to be installed)
  • [tlCorpus] Add support for ODT files (OpenDocument Text) and FictionBook FB2 files (requires calibre to be installed)

Build ".932" (2013-04-22)

  • [TLex & tlTerm] Corpus (F6): Add support for MOBI, EPUB and CHM files (requires calibre to be installed)
  • [tlCorpus] Add support for MOBI, EPUB and CHM files (requires calibre to be installed)
  • [TLex] New Window / Tabbed view option enables new tabbed-view mode for bilingual documents. (In this mode, switching to/from Expanded View should be faster than before, and things like Corpus F6 searches and settings should also be preserved when switching from Expanded View.) Use Ctrl+F6 to cycle tabs.
  • [TLex & tlTerm] Corpus (F6): Add support for Microsoft Word and RTF files [Windows only], PDF files, and HTML files (previously available in tlCorpus only)
  • [tlCorpus] Add support for RTF files [Windows only; requires MS Word installed]
  • [tlCorpus] Right-click on wordlist: New 'Character Tool' menu command displays the selected word in the Character Tool
  • [tlCorpus] Right-click on text(s): New 'Open URL' opens the website(s) from which the selected text(s) was/were originally downloaded, if the URL is available (e.g. if they were downloaded using the integrated Web crawler)
  • [Find / Replace]: Add new 'Compare' tab that allows 'comparison' searches, whereby you can e.g. compare the value of one attribute to the value of another attribute (or to some given text), with options such as 'equal to', 'not equal to', 'less than', 'greater than', 'contains', 'is empty', 'is not empty' and more. E.g. you could find all entries where, say, 'Entry:LemmaSign' is not equal to 'Entry:SortKey'. (If comparing two attributes, they must both be on the same element.)
  • [Filter (F5)] New N-of-each-field filters shows only as many entries as are needed to "see" at least N instances of each element or attribute in the document (could be very helpful for e.g. checking data post-conversion/import, or for helping to review existing DTDs)
  • [Search (F3)] Field breakdown: Add count of occurrences of each parent element for matches inside 'text' nodes
  • [Stats] Under element 'Details', add new 'occurring left-siblings' and 'occurring right-siblings' (and corresponding filters to find specific element pairs)
  • [tlCorpus] Add PDF file support for Mac OS X tlCorpus (was already available on Windows version). Requires first installing this Mac pdftotext app.
  • [tlCorpus] Right-click on text(s): New 'Copy URL' command copies the source URL of the selected text(s) if they were retrieved using the integrated Web Crawler
  • [tlCorpus] Misc small improvements to the Web Crawler (e.g. better handling of several encodings (including big5 and various others), better handling of non-meaningful file extensions, and better automatic extraction of page title from HTML file)
  • [tlCorpus] Improve multi-language support for PDF files
  • New 'experimental'/beta command 'Tools/Delete selected section' [NB, for advanced users only!]
  • Small improvements to 'TLex Online Publishing' exporter

Build ".884" (2013-03-31)

  • [Search (F3)] Can now tag/untag individual entries from within the Search (F3) results window
  • [Search (F3)] Now shows entry tag status in results
  • [Search (F3)] If more results than can be displayed, now shows links to jump to different pages of results
  • New Tree View entry right-click command "Demote to subentry (convert this entry to a subentry)"
  • New Tree View entry right-click command "Demote all tagged entries to subentries"
  • New Tree View entry right-click command "Cut+Paste (move) tagged entries as subentries here"
  • New Tree View entry right-click command "Copy tagged entries as subentries here"
  • [Smart References + Masks] If you are using smart-references as well as "masks", a new real-time error check and a new filter "Cross-reference to masked-out entry" can help you automatically find instances of cross-references to entries that are hidden/excluded by a styleset mask. These cases are also now output in a more sensible way.
  • [DTD Editor] New commands to copy full element and element/attribute list to clipboard
  • New 'Tools' menu commands Open document folder and Open application log folder
  • [tlCorpus] New 'Tools' menu commands Open document folder and Open application log folder
  • The Online Publishing exporter now supports 'instant publishing of updates online straight from TLex/tlTerm/tlDatabase' (File / Export / Online Publishing; requires some configuration - ask us)
  • [tlCorpus] Right-click on text(s): New 'Select all in same folder' command selects all texts in the same folder as currently selected text(s)
  • [tlCorpus] Right-click on text(s): New 'Select all in same folder tree' command selects all texts in same folder as (or subfolders of) the currently selected text(s)
  • [tlCorpus and F6] Search speed improvements (with significant speed improvements when working with encrypted corpora, or corpora stored on a network drive)
  • [Replace as you type] Add more shortcuts for common diacritic characters, and add categories to help ("Tools/Show replace-as-you-type help")
  • [Compare/Merge] "Add" button now works with multiple selected items, as well as allows 'adding' of items already in the left side (as extras) if desired
  • [Compare/Merge] Add Select all button to select all items in the list
  • [Compare/Merge] Minor stats-in-title-bar improvements
  • Important bugfixes and improvements

Build ".787" (2013-02-26)

  • [Styles editor] Minor user-friendliness improvements to 'Output (display) order' and 'Visible' flag editing
  • [Text exporter] New setting to automatically export all sets of styles as separate files (currently must be set via 'Tools / Options' / Properties / "Exporters/Options" "ExportAllStyleSets"). (This is particularly useful for old-DOM new-DOM conversion before/after comparisons.)
  • [DTD Editor] Lists: Add new command "Copy" list items to clipboard
  • [DTD Editor] Lists: Add new command "Copy" labelset items to clipboard
  • [DTD Editor] Lists: Add new commands to "Load" and "Save" labelset lists
  • New command "Edit/Copy entry XML" copies the selected entry's XML to the clipboard
  • Miscellaneous bugfixes and improvements

Build ".747" (2013-01-06)

  • [XML Importer] New 'Tools/Options/Properties' setting /Importers/XML/PreferPCDATAToSecondChild: "If true, prefer to 'turn element into' a PCDATA type instead of adding a second out-of-order child relation for the given element type (e.g. instead of two Child1 relations in a case like 'Parent->Child1,Child2,Child1', favor selecting PCDATA child option on Parent instead)"
  • [XML Importer] New 'Tools/Options/Properties' setting /Importers/XML/StyleBetween: "Default 'between' value for styles"

Build ".736" (2012-12-11)

  • [Tree View] Add new right-click edit command 'Insert after: [text]' that creates and inserts a new 'text' node immediately after the selected node
  • [Stats] Add new 'occurring parents<->children' overview table (via 'Full statistics', Parent->Child 'overview') that displays a table of occurring parent and child nodes for each element
  • [Attributes (F1) / (F2)] Add 'Tools/Options/Properties' AttrWindow/MaxRebuildTime setting that allows you to specify a 'maximum allowed time' for rebuilding F1/F2 attributes, to help improve UI responsiveness in some cases [Milliseconds, default 6000]
  • New "Tool" "Load styles" to assist in transferring styles between documents (with similar DTDs; element and attribute names must match)
  • New "Tool" "Save styles" to assist in transferring styles between documents (with similar DTDs; element and attribute names must match)
  • New "Tool" "Save current styleset" to assist in transferring styles between documents (with similar DTDs; element and attribute names must match)
  • [Compare/Merge] Add new option 'strict attribute types', that if enabled, attempts to disregard attribute type differences and compares by string value (the default "strict" behaviour regards a type difference as a value difference). Use with caution, as there may be particular cases where this is not necessarily reliable (e.g. potentially with F2 multi-lists, as this assumes "," as separator for purposes of comparison, or there may be oddities with Lua or 'user' attributes).
  • Miscellaneous bugfixes and improvements (including an important ODBC bugfix)

Build ".725" (2012-10-24)

  • User Guide updates (mainly to ODBC section)
  • Add the Online Publishing exporter to tlDatabase [works in conjunction with the TLex online publishing system]
  • Add the Online Publishing exporter to tlTerm [works in conjunction with the TLex online publishing system]
  • Improvements to Online Publishing exporter: More settings to control generated entry and title IDs, better support for partial updates on a live database, as well as core changes for new functionality to allow users to publish updates straight to the Web from TLex/tlTerm/tlDatabase (if using the TLex online publishing system)
  • Core changes to more formally support documents with three or more 'sections' (using a 'tabbed interface')
  • Allow disabling of auto-sorting of entries per 'section'
  • Some further right-to-left language support improvements

Build ".699" (2012-09-16)

  • [Preview] Added display of entries-following-selected-entry to tlTerm Preview Area (with option "Format/Preview selection only" to turn it off)
  • [Filter (F5) / Tags] Add new 'Tag matches' and 'Untag matches' commands that tag/untag all entries that match the currently selected filter conditions in 'Filter (F5)' (completely independent of whether any filter is presently 'applied' or not). This adds to (or removes from) any current tags.
  • [Filter (F5)] Add new 'Go to next [match]' command that selects the next entry that matches the currently selected filter conditions in 'Filter (F5)' (completely independent of whether any filter is presently 'applied' or not). This is similar to (and not to be confused with) the current Ctrl+G 'Edit/Next filter match' functionality, but doesn't need a filter *applied*.
  • [Preview / Tags] Add display of current number of tagged (and not tagged) entries to the Preview Area
  • Miscellaneous bugfixes and improvements (including fix for 'Internet Explorer preview control sometimes causes edit cursor invisibility in F1 text boxes')

Build ".687" (2012-09-03)

  • 'Tools/Copy field': Add 'Help' button that opens integrated help explaining in more detail how to use this advanced tool (as well as more information on the tQuery expression syntax)
  • [Tools / Advanced] Add new 'Tools/XML bulk regex replace' tools that allow a bulk regular-expression-based search and replace (somewhat like the "sed" tool) to be performed on each entry's underlying XML. The script syntax is as follows: "#" at the start of a line denotes a comment line; otherwise, "_" separates 'search for' and 'replace with' strings (one per line), e.g. "^<b>([^<>]+)</b>_<LemmaSign>\1</LemmaSign>" would extract bold at the start of the entry and place it into a 'LemmaSign' element. Blank lines are ignored. This tool can be particularly useful for post-import data remodelling and clean-up (although it was possible to do this via export and re-import previously, it can now be done in TLex/tlTerm/tLDatabase directly). Simple example script:
    # Simple sample script for 'XML bulk regex replace' tool.
    # Assume that we are dealing with hypothetical newly-imported entries-to-be-cleaned-up that look as follows:
    # <b>dog</b> (noun) <i>hond, reun</i>

    # Extract part of speech (bracketed phrase immedately after bold lemma sign at start of entry/line) and place into a 'PartOfSpeech' element
    ^<b>([^<>]+)</b> \(([^\(\)]+)\)_<b>\1</b><PartOfSpeech>\2</PartOfSpeech>

    # Extract bold phrase at start of entry and place it into a 'LemmaSign' element

    # Place italicized stuff at end of entry into Sense element

    # After running this, the entry should then be more well-structured, i.e. would look more like as follows
    # (after which additional remodelling can still be performed, possibly with other tools in TLex/tlTerm/tlDatabase,
    # e.g. 'Tools/Split field' to split the translations in the Sense):
    # <LemmaSign>dog</LemmaSign><PartOfSpeech>noun</PartOfSpeech><Sense>hond, reun</Sense>
  • [Search and Replace] New 'Search across entry as XML [Advanced]' option that allows you to search (or replace) in the XML of a full entry (e.g. "(<i>noun</i>)" => "<PartOfSpeech PartOfSpeech="noun" />")
  • [Search and Replace] New 'List all matching values'' command generates a list of all strings that match the (regular expression) search query in the document (e.g. a regular expression search for "l[^ ]+t" would generate a list of all words in the document that start with 'l' and end with 't'. This command can also be used with the new 'Search across entry as XML' option, so you could, for example, generate a list of all characters following a given element by searching for the regular expression "</ElementName>.".
  • [Preview] Add new 'View/Toggle XML view' option that displays a basic XML view of the selected entry in the Preview Area
  • [Tree View] Add new right-click edit command 'Delete node only' that deletes just the given node but not its children, with the children shifting up to occupy the spot occupied by the deleted node
  • [Error checks] Add 'fix in DTD' command for missing parent->child element relations
  • [Stats] Add 'text', 'CDATA' and 'error' child node counts for each element under parent->child stats section
  • [Stats] Fixed: Parent->Child element counts didn't display in normal full stats if that Parent->Child relation wasn't allowed in the DTD (i.e. constituted a DTD violation in the data)
  • New setting (under 'Tools/Options/Properties') 'UserInterface/ExpandedViewDefault' allows you to specify whether Expanded View mode opens by default when you open a document (setting value: 0 = off by default, 1 = on by default, 2 = remember last setting for each document)
  • Miscellaneous bugfixes and improvements

Build ".670" (2012-08-17)

  • 'Tools/Split field': Add new option to add new elements as new child nodes instead of doing a 'replace'
  • [Sorting] The table-based multi-level sort can now properly handle digraphs (and other multiple-Unicode-character character forms such as combining characters)
  • [Importer] [Experimental/Advanced] New Xpressive-based generic importer. This is a new generic, customizable data conversion system for bringing data into TLex/tlTerm/tlDatabase. (As it is not yet stable, you need to first enable the 'Experimental' option under 'Tools/Options/Properties', then after app restart it will be accessible under 'Tools'). It can be used already by advanced users.)
  • [Compare/Merge] Add/enable new 'structured view' feature
  • [Compare/Merge] In some cases (currently text nodes only), now also shows positions of differences within strings
  • [tQuery] Add support for "@id" 'special attribute' to retrieve underlying unique ID of node
  • Important bugfixes and miscellaneous improvements

Build ".624" (2012-07-15)

  • [tlCorpus] New feature 'Add text from clipboard' creates and adds a new text file to the corpus for you, using the contents of the current system clipboard, allowing you to easily copy text and "paste it into" your corpus from other sources (e.g. Web)
  • [tlCorpus] New text meta-data fields (columns): date (of source text), date added to corpus, and source URL (if grabbed using the Web Crawler)
  • [tlCorpus] Add 'new improved' language selector dialog
  • [tlCorpus] You can now add files to the corpus using drag-and-drop onto the corpus configuration window (e.g. by dragging either files or folders from Windows Explorer)
  • [tlCorpus] Right-click on text(s): In addition to 'Select Language/Encoding', also add just a 'Select Language' option (if you'd rather not mess with the encoding)
  • [tlCorpus] Right-click on text(s): New Wordlist for selected text(s) only command
  • [tlCorpus] Right-click on text(s): New separate Open (text file) command opens the actual generated text file(s) for cached-text file types, e.g. PDF and Word (the default 'Open' command opens the original e.g. PDF or Word file)
  • [tlCorpus] Web Crawler: Now attempts to automatically fill in the source text date and name (title), if available in the grabbed HTML file (e.g. as HTML metadata - many news sites, for example, embed such fields within the HTML)
  • [tlCorpus] Web Crawler: Add two separate 'URL' and 'Go' buttons - one for manually entered URLs (or URL patterns/lists), and the other monitors the clipboard at all times (for URLs or URL patterns/lists)
  • [tlCorpus] Web Crawler: Add new option 'Output folder' that allows you to configure the folder to save downloaded files into
  • [tlCorpus] Web Crawler: Add new option 'Don't download any URLs that correspond to files that have previously already been added to the corpus'
  • [tlCorpus] Web Crawler: Add new option 'Automatically add downloaded files to current corpus (if a text file type)' [This was previously always the default behaviour]
  • [tlCorpus] Web Crawler: Add new feature 'Monitor clipboard and automatically download URLs'. This allows you to, for example, sit in your browser, right-click on links and 'copy link to clipboard' on multiple addresses (e.g. documents or images etc.) that you wish to download.
  • [tlCorpus] Add new 'File/Export character list' feature that generates a comma-separated list of all characters that occur in the texts in the corpus, along with their counts
  • [tlCorpus] Add new 'File/Export character bigrams' feature that generates a frequency-sorted comma-separated list of character bigrams of all the texts in the corpus
  • [tlCorpus] Right-click on text(s): Add 'Character Tool' feature that builds a list of occurring characters in the selected text(s), and opens them in the Character Tool
  • [tlCorpus] Add Ctrl+A keyboard shortcut for 'Select all' in both text list and search result windows
  • [TLex] New Tools/Tag shared headwords function tags all entries on each side of (specifically) a bilingual dictionary that 'happen to' share an orthographic form with an entry on the opposite side (regardless of meaning, e.g. English "loop" vs Afrikaans "loop" [walk]). (Note, this is more useful if followed by 'Edit/Filter tagged'.)
  • [Stats] Add 'CDATA' node count
  • [Search (F3)] Add 'Tag all' and 'Untag all' feature to tag or untag entries matching the F3 search query (equivalent to those commands already in the 'Find/Replace' dialog). This is filter-aware.
  • [Full-screen mode] Add 'Don't show this again' checkbox to the 'Press Ctrl+Shift+F to exit full-screen mode' message
  • [DTD Editor] Add 'Don't show this again' checkbox to the 'are you sure' warning dialog
  • [Tags] Add new "Edit/View tagged entries" function that displays all currently tagged in the Preview Area. (This can be useful if, for example, you quickly want to print several particular entries.)

Build ".586" (2012-06-12)

  • [Character Tool] Added copy character to clipboard shortcut at each character
  • [tlCorpus] Right-click on search result(s): Add 'Copy Match(es)' command: Copy to the clipboard a list of all unique matches in the search results for the central matching word/term (note, this is only really useful if using wildcards/regexes, e.g. "c.*t" will return all of "cat", "coat", "cot", "coast" etc.)
  • [tlCorpus] Right-click on search result(s): Add 'Select All' command: Selects all lines
  • Add new 'Edit/Copy entry list' command that copies the entire current contents of the entry list to the clipboard
  • [Find / Replace]: Add "?" button that displays regular expression quick-help (same as already present under 'Search (F3)')
  • [Search (F3)] and [Find / Replace]: Add ">>" search presets button that allows you to select from a menu of various new 'search pre-sets', with user-friendly names, that automatically fill in the corresponding (non-user-friendly) search query expressions and settings. These include:
    (Last-modified/created date:)
    Last 2 days
    Last 3 days
    Last 7 days
    Last 10 days
    Last 14 days
    Last 30 days
    This month (so far)
    Last two months
    Last three months
    Last month
    Empty field
    Non-empty field
    Multi-word field
    Single-word field
    Two-word field
    Three-word field
    Four-word field
    Five-word field
    Two or more words
    Three or more words
    Starts with 'A'
    Starts with uppercase
    Starts with lowercase
    Ends with fullstop
    Ends not with fullstop
    Reset settings
  • Important bugfixes and several miscellaneous improvements
  • Minor User Guide updates

Build ".532" (2012-03-30)

  • New 'Edit/Next filter match' (Ctrl+G) command jumps to the next entry/node/attribute that passes the current filter
  • [tlTerm] User interface improvement: F2 attribute headings now show relevant term
  • [tlCorpus] Add PDF file support (currently Windows-only) [2013-04 Mac PDF support also added]
  • [tlCorpus] Right-click on search result(s): Add 'Copy With Tabs (For Excel)' command (Ctrl+C / Cmd+C shortcut key) which adds hidden 'tab' characters to the clipboard information, allowing the corpus lines to be pasted with column information into a spreadsheet (e.g. Microsoft Excel). (The integrated 'Corpus (F6)' tool in TLex/tlTerm already does this.)
  • [tlCorpus] Character Tool: Add "Unihan" information ("Unified Han"; CJK: Chinese, Japanese, and Korean)
  • [tlCorpus] Wordlist: Add 'number of texts' to summary
  • [ODBC / Preview Area] Add 'Tools/Options/Properties' 'Preview/MaxRefreshTime' setting that allows you to change the 'maximum allowed time' (in milliseconds) that the Preview Area may take to update before 'extras' start being automatically scaled back (this is a trade-off to improve usability under slow conditions, e.g. slow network or slow computer). The default is 1.5 seconds. Set to zero to disable.
  • [Character Tool] Added new online 'info' column for each character, with a hyperlink that opens the fileformat.info information page on that character in your Web browser
  • [Character Tool] Added names for new Unicode 6 blocks
  • TLex: Add new 'View/Linked View (TE)' mode that automatically shows all entries on the other side of the dictionary whose TEs (Translation Equivalents) are the same as the currently selected headword (e.g. if on "table - tafel; tabel" then show any entries on the other side that contain a TE "table", e.g. "tabelleer (v) table"). (Note that this is inherently slower than normal Linked View, and may be impractical to use 'continually', especially for larger dictionaries or on slower computers.)
  • 'Tools/Copy field': Now supports currently applied filter, if any

Build ".484" (2012-02-06)

  • [tlTerm] Import CSV (Comma-Separated Values) into existing document now works [again] for tlTerm
  • Add new 'Tools/Reset cache(s)' command to help clear/reset application cached data, such as the ODBC cache
  • [Statistics] 'Field distribution' statistics: Add modified-by-user and created-by-user distributions (main entry level only presently)
  • [Find / Replace] Improvements (and fixes) related to the remembering of recent searches, e.g. it now also remembers your query strings for tag/filter selections in this dialog
  • [CommandLine / tlCorpus] New Command-line Options for tlCorpus: These allow the application to be driven and controlled via the commandline (note these are the same as those already in place for TLex/tlTerm/tlDatabase).
    • --nouserinteraction : Disables user interaction for the session (e.g. modal message boxes).
    • --runluascript : Automatically runs the specified Lua script as soon as the application has opened (and after opening any documents also specified on the commandline). You can specify multiple --runluascript items, and they will be executed in the order specified.
    • --autoexit : Causes the application to immediately exit after opening. If used in combination with other options, this allows the application to be automated to perform scripted commands, e.g. one could have a batch process that automatically opens some file, peforms some processing (e.g. via Lua script), and then exits.
  • [tlCorpus] Basic Lua scripting is now available in tlCorpus ("Tools/Execute Lua Script"); a.o., this provides a foundation for the potential automation of corpus-related tasks using tlCorpus.
  • You can now execute Lua scripts using drag-and-drop onto the main application window
  • [ODBC] Various speed improvements and important robustness fixes
  • Important bugfixes and several miscellaneous improvements

Build ".446" (2012-01-12)

  • [DTD editor] [Advanced] Allow the user to set or reset attributes to some of the 'special' attribute IDs via right-clicking on the attribute (e.g. the Example::Source special type)
  • [Error checks] Brackets/Markup nesting error: Improved highlighting of the location of the error
  • [Tree View] Add new keyboard shortcut (Enter) in Tree View takes you to the first corresponding F1/F2 edit control for the selected element (same as double-clicking always did)
  • You can now open files using drag-and-drop on the main application window
  • [ODBC] Various speed improvements
  • Important bugfixes and several miscellaneous improvements
  • [tlCorpus / Corpus (F6)] 'Add multiple files' now remembers last-used folder
  • [Statistics] Added 'Field distribution' statistics function that shows an occurrence distribution graph of every field (element/attribute) across all entries
  • 'Tools/Split field': Can now specify multiple split delimiters at once (separate with {|), e.g. ";{|),")
  • 'Tools/Split field': Add an optional "skip if match" regular expression; an attribute value will be left alone by the splitter if it contains a match for this regular expression
  • 'Tools/Split field': Add an optional replace-with element/attribute instead field; if specified, split values will be created in this element/attribute instead of their original element/attribute
  • 'Tools/Split field': Add "don't split if split string is inside brackets" option
  • 'Tools/Split field': Add "don't split if split string is inside quotation marks" option
  • 'Tools/Split field': Now acts only on filtered entries if a filter is applied
  • [tlCorpus] Right-click on search result(s): Add 'Open location' command which opens (e.g. in Windows Explorer) the currently selected search result text file path(s)
  • [tlCorpus] Right-click on search result(s): Add 'Copy path' command which copies the currently selected search result text file name(s) to the clipboard
  • [tlCorpus] Right-click on search result(s): Add 'Copy location path' command which copies the paths (i.e. directories) of the currently selected search result text files to the clipboard

Build ".408" (2011-11-29)

  • [Tree View] Add new keyboard shortcut (Ctrl+T) to jump to the Tree View
  • [Import CSV] Added new CSV import option 'Skip empty values' that improves the import in cases where values are empty in some rows of the spreadsheet data for particular columns
  • The 'Edit/Paste Examples From tlCorpus' (Ctrl+Shift+F7) and Ctrl+F7 corpus commands for grabbing usage examples from corpus lines now also fill in the 'Source' field based on the source filename. NB, this can be disabled via 'Tools/Options/Properties' via the '/Corpus/GrabExampleSource' option.
  • Important bugfixes and several miscellaneous improvements
  • [DTD editor] Entities: Add "Load" and "Save" that allow you load or save the list of entities and their values to/from a .ent or .dtd file (DTD entity declaration syntax)
  • 'Tools/Copy field': Add optional regex 'extract' field, that allows you to use regular expression submatching to potentially modify/extract only a portion of the matching text being copied. For example, say you want to extract a label that's incorrectly part of a translation field (e.g. netwerk [noun] (computers) network) and copy it into a separate 'label' attribute, then you can use the regex "^\((computers)\) ", and only "computers" (the bracketed submatch) will be extracted and copied from the translation field value "(computers) network".
  • 'Tools/Copy field': Add optional 'copy condition' fields (condition 'tQuery' and corresponding condition 'regex' field), that allow you to specify that the field copy only occurs under certain conditions, namely that the results of the tQuery condition expression, contain a match against the condition regular expression. For example, if you only want to copy some particular field on the Lemma attribute when a different field on that element, e.g. PartOfSpeech, is a noun, then you could use "/@PartOfSpeech" as the tQuery, and "^noun$" as the condition regular expression.
  • 'Tools/Copy field': Now remembers settings between sessions
  • [tlCorpus] Add support for HTML files
  • [tlCorpus] Add support for Microsoft Word (.doc) files (requires locally installed Microsoft Word)
  • [tlCorpus] Add support for newer format Microsoft Word (.docx) files (requires locally installed Microsoft Word 2007 or higher)
  • [tlCorpus] Add basic Web Crawler
  • [tlCorpus] Web Crawler: Allow a numerically-incremented range of URLs to be specified, using the syntax '|startnum,endnum|', e.g.: "http://www.newspaper.com/index.php?article&id=|301,400|" (to retrieve 100 articles). The numbers may optionally also be left-zero-padded, if specified in the start number, e.g.: "http://foo.com/IMG|0001,0100|.jpg". Multiple URLs or URL patterns can also be specified at once (when adding from the clipboard), using multiple lines, one URL or URL pattern per line.
  • [tlCorpus] Right-click on text: Add 'Open location' command which opens (e.g. in Windows Explorer) the currently selected text file path(s)
  • [tlCorpus] Right-click on text: Add 'Copy path' command which copies the currently selected text file name(s) to the clipboard
  • [tlCorpus] Right-click on text: Add 'Copy location path' command which copies the paths (i.e. directories) of the currently selected text files to the clipboard

(Build ".369" 2011-08-12)

  • [Error checks] For 'parent-child' and 'missing required attribute' validation errors, now shows a breakdown/summary, with instance counts, of all particular occurring cases (e.g. '23 cases of Sense->Example validation error')
  • [Statistics] 'Full statistics' and 'Element statistics': Show total number of element types defined in DTD in 'Element' heading
  • [Styles editor, usability improvement] Now remembers and re-selects the currently selected style when toggling between stylesets
  • [Improvement Program] Implement new opt-in 'User Experience Improvement Program'. If enabled, allows a small amount of anonymous application usage and performance information (e.g. menu clicks or speed/performance of ODBC operations) to be automatically logged and sent to our servers. Configured via a single global setting, to ensure that if a user turns it off, it is off for all application versions or applications within a Suite for that user on that computer. You will initially be asked only once whether you would like to participate, upon running any of our applications that support the Improvement Program; thereafter, the setting can be turned on or off under Tools/Options. Enabling this will assist us in improving our software; participation would thus be much appreciated.
  • Tools/Glyph check tool Help find and list missing character glyphs in fonts used [Still slightly experimental, but should work for most cases]
  • Important bugfixes and many miscellaneous improvements
  • [tlTerm] Improvements to Compare/Merge to make it more useful with terminology data
  • Improvements to 'Tools/Split field' to allow potential splitting of multiple attributes of the given element at once

(Build ".355" 2011-08-03)

  • [TLex] File/New (and Dictionary/Properties): Add Language "Select" button(s) that allows you to select the language name(s) for your project from our new comprehensive language registry, with language name search functionality
  • [Tree View] Right-click "Modify styles" sub-menu becomes "Element" sub-menu with convenience access to additional element commands such as various types of statistics for that element, and running an element Filter, in addition to the Styles-related commands
  • [Mostly internal/developer use] Add Tools/Options option '/App/DeveloperTools' that, if enabled, enables additional mostly internal-use tools in the application, e.g. a 'Tools/Generate GUID' option.
  • [Mostly internal/advanced use] Add Tools/Options option '/App/Experimental' that, if enabled, enables currently incomplete new functionality that may still be unstable. Use with caution! Advanced users only. Current functionality includes a 'Tools/Cross-reference resolver', which can potentially be used to convert plain text cross-references into "smart references" (most typically this would be after importing data into the application).
  • Important bugfixes and many miscellaneous improvements
  • 'Tools/Copy field' tool allows you to fill in all instances of a selected attribute by retrieving the new value using one or more tQuery expressions on the current node or entry (if the first fails, then it tries the next, and so on)

(Build ".331" 2011-07-03)

  • [tlTerm] File/New: Vastly improved the "Add Language" window, making it much easier to find and select languages from the language registry. Also added aliases for several major language names, and extended the right-to-left detection to cover more languages.
  • [tlTerm] File/New: Improvements to the layout of this window, with some slightly more explanatory headings
  • Miscellaneous bugfixes/improvements

(Build ".326" 2011-06-20)

  • [Search (F3)] Can now cancel searches midstream (e.g. if accidentally launched a long search)
  • [Smart References] New 'Document Property' (Format/ReferencesDisplayChildren) changes smart references output generation to use the child elements of the reference node AS the cross-reference display text / content.
  • [Smart References] New 'Document Property' (Format/CollateReferencedHomonyms) changes smart references output so that destination homonym number lists of homonyms are collated, e.g. "2-3".
  • [Main Entry List] Double-click or 'enter' forces re-select of entry (can be useful if e.g. you've done a 'view statistics' and selecting the already-selected entry is not refreshing the preview)
  • Miscellaneous bugfixes/improvements
  • Some new icons
  • 'Entry/Delete all tagged entries' command allows you to delete a tagged selection of entries in one go (cf. the 'Edit' menu 'Tagging' options)
  • [tlDatabase] 'New database' dialog: Add 'Preview' window showing samples of selected template
  • [tlDatabase] Minor improvements to default templates/samples
  • [tlDatabase] Add ODBC support in tlDatabase

(Build ".306" 2011-04-10)

  • [RTF Exporter] Border styles: Correct unintuitive default RTF behaviour of "Consecutive paragraphs with identical border formatting are considered part of a single group with the border information applying to the entire group", and add a new user-selectable RTF export option "GroupConsecutiveParagraphBorders" available under 'Tools/Options' if users want this behaviour. (This fixes 'border styles for entry not applied at every entry'.)
  • [Exporters] 'Fields': Improve intuitiveness of user interface with respect to attribute selection 'inheriting' or being 'shadowed by' the selection for the element of that attribute in the same list.

(Build ".305" 2011-03-23)

  • Miscellaneous small bugfixes/improvements

(Build ".295" 2011-01-05)

  • [Network] Add 'Tools/Options/Properties' 'Network/UseProxy' setting that allows you to set a preferred override proxy for Web connectivity (in form servername:port)
  • [Localization] New Lingála interface for TLex
  • tlEditors: Allow file passed by command line to also specify optional username and/or password, using the syntax "username:password?filename"
  • [Online Publishing Exporter] You can do a multi-title export by specifying a semi-colon separated list of additional title files to be exported in [Tools/Options / Properties, "/Exporters/OnlinePublishingDB" "Titles"]
  • [ODBC] Open/Save: Dialog now remembers last-selected ODBC datasource and prefix
  • [User management] More fine-grained privileges allow you to control whether individual users may edit particular attributes

(Build ".248" 2010-12-02)

  • Add new 'Document Property' Format/ShowFileNameForSounds allowing you to disable the display of sound filenames next to the speaker icon used for sounds
  • [Search (F3)] Add 'Tools/Options/Properties' 'SectionSearch/MaxResultsToDisplay' setting that allows the maximum number of search results displayed at once in the search results window to be changed (in fact this setting was always present, but is now overtly visible and configurable)
  • Miscellaneous bugfixes/improvements
  • Add new 'XML Line by Line' importer:
    • The new 'XML Line by Line' importer can be helpful for importing XML or XML-ish data that may be imperfect; the importer will continue to the next line in the file even if a line (each line corresponds to an entry) contains invalid XML. Lines containing invalid XML can be partially correctly processed up until the point where an error appears; these can be easily located directly afterwards using the 'Parse error' filter under 'Filter (F5)' (and thus either corrected after import, or in the original source document and then re-imported). This importer can also perform automatic corrections of some cases of SGML-like incorrectly nested XML tags, e.g. "<i>1<b>2</i></b>". See the relevant sample under the 'Samples' heading on the 'start page' for an example, and more detailed documentation.
  • [TLex(NewDOM)/tlDatabase] Added new samples for XML importers (see Projects\Samples\XMLImport in the application install folder)
  • [tlCorpus] Add 'File/Open recent' menu item with list of recently opened corpora
  • [ODBC] Open/Save: One single dialog for entering datasource name and table prefix instead of two separate dialogs
  • [Auto-link Media Files] The filename can now also specify a "variant", in order to be able to link multiple files to the same entry (for example, if one entry has multiple valid variant pronunciations). Also fixed a bug whereby files might not be linked to attributes on sub-elements of the main entry element.
  • [Exporters] Last-used 'format options' will now be remembered
  • [Watch Folders] New Watch Folders functionality:
    • New Watch Folders functionality allows you to configure one or more folders in which any XML files saved to that folder, will automatically be imported into the currently open document. There are numerous settings that control the watch folder behaviour; these can be configured, and are documented in more detail, under 'Database/Properties'/'Properties [Advanced]'
  • [DTD Editor] Change DTD editor to prompt user if it should automatically add children within existing entries when changing parent->child relationship constraint to "One or more" or "One"
  • [Lua] New Lua/OnMergeImport 'document property' allows a custom Lua script to be automatically run after data has been merged in using an importer (tFrameWindow()::MergeDatasource())
  • [CommandLine] Can now open any XML file via the commandline (will be run through XML importer)
  • [CommandLine] New Command-line Options: These allow the application to be driven and controlled via the commandline.
    • --nouserinteraction : Disables user interaction for the session (e.g. modal message boxes).
    • --runluascript : Automatically runs the specified Lua script as soon as the application has opened (and after opening any documents also specified on the commandline). You can specify multiple --runluascript items, and they will be executed in the order specified.
    • --autoexit : Causes the application to immediately exit after opening. If used in combination with other options, this allows the application to be automated to perform scripted commands, e.g. one could have a batch process that automatically opens some file, peforms some processing (e.g. via Lua script), and then exits.

(Build ".212" 2010-11-15)

  • Add automatic checking if new version of software is available and notify user accordingly. By default, checks every 30 days.
  • [Tools/Options] Add new 'Properties' panel that allows editing of various application options
  • [Tools/Options/Properties] Add options to control or disable automatic checking if new version of software is available
  • [Tools/Options/Properties] Add option to set 'entry list' width [pixels]
  • [Tools/Options/Properties] Add (actually reveal option that was there already) option to turn off splash screen on application startup
  • Miscellaneous bugfixes/improvements
  • [Exporters] Rename 'Data export options' to slightly more explanatory 'Entry exclude options'
  • [Tools/Options/Properties] Add (actually reveal option that was there already) option to turn off real-time error checks in the Preview Area
  • [RTF Exporter] RTF exporter will now remember last-used RTF-specific settings
  • [Exporters] Last-used 'Entry exclude options' will now be remembered
  • [tlCorpus],[TLex] Send Usage Example Directly From tlCorpus to TLex: In tlCorpus, add right-click 'Copy Example Sentence for TLex' option in the search results window. In TLex, you can then select the desired parent node (e.g. 'Sense') in the Tree View to receive the example(s), and select 'Edit/Paste Examples From tlCorpus' (or press Ctrl+Shift+F7) to automatically generate and fill in usage examples in the current entry's tree structure. (Technically, this tlCorpus/TLex interchange functionality uses a simple XML-based structure on the clipboard to store usage examples, e.g. "<tlCorpus><sentence>Gregor soon had the opportunity to test the strength of his decisions</sentence><sentence>For a test load of 120 tons the tractive force is 70 lb per ton</sentence></tlCorpus>" - this allows other applications to easily write functionality to 'send' usage examples to TLex in this way.)
  • [tlCorpus] File/Open: Add 'Cancel' to load progress dialog. This can be useful if you're inadvertently loading an unwanted very large corpus (i.e. lots of texts).
  • [tlCorpus] Add 'Tools/Options' dialog for editing various global options
  • [TLex/tlDatabase/tlTerm etc.] Left panel resize sash (i.e. resize Entry List width using mouse)
  • [Filter] New 'Missing file' 'error check' filter (and Preview real-time error check) finds invalid image file, audio file, or video file references, i.e. to files that don't exist
  • [Character Tool] Added display of each character's decimal value in addition to hex value

Version 5 (2010) Major Release (Build ".125" 2010-10-14)

  • [RTF Export] Added progress dialog with 'cancel' button.
  • Added document 'property' (under 'Dictionary/Properties') that allows you to configure the text that appears in front of cross-referenced sense numbers (default is ":").
  • [Tree View] Drag-and-drop: Add auto-scroll up/down when you move the mouse above or below the Tree View during a 'drag'.
  • [Tree View] Cut and Paste: Pasting into a different language/section now at least copies the sub-tree
  • [Search (F3)] Added regular expression 'quick-help' button that shows regex basics
  • [Dictionary/Properties] You can now upgrade a monolingual database to a bilingual database in 'Dictionary/Properties'
  • [Start page] Add 'Samples' section to make sample databases more clearly visible and accessible
  • [Styles] Implement separate 'inherit', 'off' and 'on' options for bold, italics, underline etc. (was previously only 'inherit' and 'on')
  • Numerous miscellaneous bugfixes/improvements
  • [Statistics] 'Character statistics': Added display of character name (as given in Unicode database).
  • [Statistics] Font statistics now also shows occurrence count
  • [Character Information Tool] Added display of character name (as given in Unicode database).
  • [Tilde expansion] (Advanced - see FAQ) In addition to TildeMethod setting, added a new TildeLuaScript setting that allows the tilde replacement behaviour to be defined using a Lua script.
  • [Tree View] New document 'property' TreeView/AlwaysAddLast - when true, adding child elements via the right-click menu to an element that allows PCDATA will cause the new child elements to always be added at the end
  • [Reversal] The "ReverseScript.lua" functionality that allows Lemma/Reverse to be extended in ways particular to a given project has been improved; in place of the ReverseScript.lua file, there is now a "Lua/OnReverse" document property (under 'Dictionary/Properties/Properties [Advanced]'). This property allows you to embed a Lua script directly into the relevant document for which you are extending the Lemma/Reverse behaviour. The Lua/OnReverse script must contain a function with the signature 'function OnReverse(DOC, TARGETENTRY, TARGETTE, SOURCEENTRY, SOURCETE)'.
  • [Online Publishing] Add 'File/Export/TLex Online Dictionary/Termbase' for generating a database ready for Web publishing [Advanced]
  • [Auto-link Media Files] 'Tools/Auto-link sound/image/media files' tool allows automatic linking of sound, image or video files to entries, if the files are named according to a consistent convention that includes the headword and possibly the homonym number, e.g. "table_2.mp3". The file naming convention may be customised per project (using a regular expression).
  • [Video] New data type in the DTD allows linking of video files to documents
  • [Word Count] New 'Tools/Word Count' tool shows word counts in data, in styled i.e. transformed output, and broken down on a per-attribute basis
  • [Character Information Tool] Added 'search by name' field
  • [RTF Export] Added 'Split into alphabetic sections' option
  • [DTD Editor] New 'Move in document' checkbox option specifies whether or not element child relation 'move up' and 'move down' buttons affect only the DTD, or also the data in the document itself
  • [Filter] New "Child order" "DTD validation error" sub-filter
  • [Filter] New "Parse error" "DTD validation error" sub-filter
  • [Statistics] Under element 'Details', added breakdown of occurring attribute 'value patterns' and their counts (i.e. which attributes of the element have values filled in)
  • [Statistics] Added 'Lua' statistics function that shows all Lua Styles and ('fixed') Lua Attributes used in the document
  • [Statistics] Added 'Entities' statistics function, showing instance counts for all entities in the document, including undefined entities, which are shown in red
  • [Statistics] Can now sort list of elements by element count (descending), by clicking on the title "Count"
  • [Filter / Statistics] Under 'full statistics', all parent->child element child count statistics now have extra 'less than or equal to' and 'greater than or equal to' filters, allowing you to search for cases such as "entries with 3 or more senses"
  • [Filter / Statistics] Under element 'Details', added filters for breakdowns of occurring attribute 'value patterns' (allowing you to search for e.g. 'Usage examples that have an example and a translation')
  • [Filter / Statistics] Under element 'Details', added filters for occurring element 'child patterns'
  • [Filter / Statistics] Add breakdown of specific parse error types encountered, plus a 'Filter' command allowing you to find all cases of particular parse error types
  • Bold/Italics/Underline toolbar buttons for F1 edit controls
  • 'Tools/Split field' tool allows you to split elements at a certain text string within a certain attribute
  • [Corpus (F6)] Add 'Save wordlist' command that generates and saves a wordlist from the corpus, sorted by word count
  • [tlTerm / TBX] Added basic support for importing TBX documents
  • [tlTerm] 'File/New': Implement BCP47 language list / encodings and xml:lang attribute (more up-to-date standards-based awareness of language).
  • [tlCorpus] Add support for Greek sentence boundary rules
  • [tlCorpus] You can now launch multiple searches simultaneously from the search box by separating them with "#", e.g. "dog#cat"
  • [tlCorpus] Search results right-click menu: Add 'Open' command to launch text file(s) of selected result(s)
  • [tlCorpus] Search results right-click menu: Add 'Sorting' shortcut to the global search result sorting settings
{LOCALISATION}: Add GENERIC_APPLY_TO_ALL ("Apply to all matching entries"), currently used in CSV import
{LOCALISATION}: Added DATASOURCE_ODBC_WITH_CACHE,ODBC database (with local cache)
Important TshwaneLua API Changes:
{Name Change} tcReference -> tcReferences
{Name Change} tcCombination -> tcSubentry

4.0.0 (2009-07-27)

  • [Tags] Add "Edit/Select next tagged" function.
  • [Tags] Add "Edit/Tag range" function that tags all entries from the closest previous tagged entry up to (and including) the currently selected entry in the Entry List.
  • [Tags / Compare/Merge] Add "Tag all" button that tags all main-database (left side) entries currently in the Compare/Merge entry list.
  • [Lua Scripting] Added "Tools/Execute Lua Entry Script" that lets you run a Lua script 'on' all entries currently in the Entry List of the current document (e.g. those that pass the filter). gCurrentEntry points to the current entry during execution.
  • [Styles] Add paragraph alignment style (left/center/right/justify)
  • [Compare/Merge] Add comparison highlights to saved reports
  • [Lua Scripting] Can now link shortcut key Ctrl+Shift+F8 to an "Entry.lua" script that runs on the currently selected entry (gCurrentEntry) and selected Tree View node (gCurrentNode).
  • [Lua Scripting / Shortcut keys] Added "$LUA$:" shortcut key syntax under 'Tools/Options' that lets you link any available shortcut to a Lua script. gCurrentEntry points to the current entry during execution, and gCurrentNode to the currently selected node in the Tree View.
  • [Preview] New "Show whitespace" toolbar button (paragraph/pilcrow symbol ¶) enables visible displaying of spaces, paragraph beginnings and newlines.
  • [Exporters] Added 'Fields' tab that lets you select at export-time which fields (text nodes / elements / attributes) to include in the export; unselected field are "masked out".

2.0.16 / 3.0.11 / 3.99.14 (2009-06-25)

  • [Statistics] Now shows number of 'error' nodes (parse errors)
  • [Search / Find] Add option to Search (F3) and Find tools to choose whether or not to search in 'text' nodes
  • Update tilde expansion to correctly handle multi-level cascading/recursive subentry replacements (e.g. "dog" -> "~ days" -> "the ~ of summer") . New 'LemmaSign' special type in the DTD editor allows you to select which attributes will be used as headwords for the tilde replacement.
  • [RTF Export / Right-to-left] Some right-to-left language fixes in the RTF exporter and elsewhere
  • [ODBC] Performance improvements and Bugfixes
  • New functionality allows a 'sort key override' to be defined for individual entries for specific cases (for example, to sort "@" under "at"). See the FAQ for details.
  • [Statistics] New 'sibling patterns' statistics function for an element shows counts for text values or elements before, after, between and 'two-consecutive-after'.
  • [Statistics] New 'child values' statistics function for an element shows generated XML text values for all children; for the new PCDATA model, this replaces the old 'values' function for the 'PCDATA attribute', but is more sophisticated.
  • [Statistics] New 'Chars' statistics function shows all occurring characters and their occurrence counts for an attribute.
  • [DTD Editor] New 'Optimize DTD' function can automatically simplify aspects of the DTD (e.g. element child relations) based on occurrence patterns in the *actual* data.

2.0.15 / 3.0.10 / 3.99.12 (2009-05-10)

  • [Search and Replace] Added "Ctrl+H" keyboard shortcut
  • [Markup] Added new markup character for small caps (%s)
  • [Zoom] Increased the Preview zoom in / out granularity (many more 'inbetweens')
  • Updated TshwaneLua API documentation.
  • Updated User Guide.
  • [Toolbar] Nice new toolbar
  • [Find] Added functions to 'tag all', 'untag all', 'filter (reveal)' and 'filter (hide)' all entries matching the search criteria.
  • [Find / Replace] Added options that allow you to suppress the updating of the last-modified timestamp and last-modified-by-user fields during a replace
  • [Find / Replace] Added "Find next" and "Replace" buttons that allow you to do replacements one at a time, with a preview highlighting the text to be replaced
  • [Find / Replace] Added "Use filters" option
  • [Find / Replace] Improved searches and replacements in multi-list (F2) attributes (e.g. you can do things like search for combinations like "noun,verb" and replace with e.g. "adjective,adverb" - use a comma, without space, as separator).
  • [Find / Replace] Created separate "Edit/Find" and "Edit/Replace" menu commands, with Ctrl+F and Ctrl+H keyboard shortcuts respectively
  • [Find / Replace] Now remembers your most recent searches, and allows you to select a recent search using the down arrow key
  • [Compare/Merge] Improved the ability of the 'merge' function to detect if a sub-tree is already present in the main entry and not merge it in if it is.
  • Entry 'first', 'previous', 'next' and 'last' commands (and corresponding shortcut keys Alt+Home, Alt+Left, Alt+Right, Alt+End).
  • [Samples] New sample: 'Thesaurus'
  • [Filters] New filter 'Empty references' for smart cross-reference nodes with no smart cross-reference entries
  • [Filters] New filter 'Sense references' for smart cross-reference nodes with references to particular senses
  • [Filters] New filter "x->y: -" for smart cross-references with 'nil' type (unspecified cross-reference type)
  • [Filters] New filter "[text]" for entries that contain 'text' nodes in the new, improved document model
  • [Error checks] New 'error check' for occurrences of undefined entities (in addition to existing real-time check)
  • [RTF Exporter] New option to automatically open file(s) immediately after exporting
  • [Filter / Statistics] New 'Filter' option for per-attribute list item counts
  • [Statistics] Now shows number of 'text' nodes
  • [Statistics] New 'Values' attribute statistics function calculates and displays the attribute 'Values' stats for *all* attributes in the dictionary. Also sped this function up, and added a progress dialog that allows the user to cancel this operation, as it can take a long time.
  • [Statistics] 'Element details': Add extended breakdown of child pattern instance counts (taking PCDATA and new more flexible ordering into account), with and without 'text' nodes
  • [DTD editor] Added function to alphabetically sort the list of elements in the DTD
{LOCALISATION}: LICENSE_MESSAGE_NOTFOUND adjusted to not require "\n" - line breaks are now automatic. Also updated message to more closely reflect latest changes to activation system.
{LOCALISATION}: Remove HELP_SUPPORT_INFO (now launches website support address)

2.0.14 / 3.0.9 / 3.99.11 (2009-03-10)

  • [Search and Replace] Now works with 'list' attributes (though it won't yet allow creation of new list items - one can 'replace' only with existing list item values); caution is also required with multi-item (F2) list attributes
  • [Format (F4)] Removed 'Show hyperlinks' option that no longer made too much sense (use "Format/Underline hyperlinks" to enable or disable Preview Area hyperlink underlining)
  • [Inline elements] Improved auto-numbering support within inline elements
  • [Preview] "Format/Underline hyperlinks" option is now applied more consistently across various types of links/hyperlinks
  • [Real-time error checks / TshwaneLex Markup '%'] 'Invalid markup' errors are now no longer generated *within* the text of entries, but displayed only in the Preview Area in an 'error check' box below the currently selected entry. These cases can still also be found using the usual 'Dictionary/Error check' or 'Termbase/Error check' commands. The behaviour has also been modified such that 'unrecognised markup' errors (e.g. "He scored 90% on his test") are at least output as if the percent symbol was ordinary non-markup, which is almost certainly more likely to be what the user intended to have in the output. Incorrectly nested brackets (e.g. forgotten close-bracket) are now also displayed as real-time warnings along with the markup errors.
  • [Real-time error checks] Now displays 'Unknown entity' error for the current entry if an entity is output that is not defined in the DTD
  • [General] The "Combination" element has been renamed "Subentry", and its "Term" attribute has been renamed "LemmaSign"
  • [Rulers] Fixed: "Dictionary/Save Ruler Data" exports data incorrectly
  • [Preview] "Format/Click to select attribute" now also scrolls to F2 attributes when clicked
  • Fixed: User Guide does not open on some systems
  • Fixed: Cursor may in some situations 'jump out' of a '(NEW)' edit box when you start typing
  • [Samples] New samples: 'Sounds' and 'Trilingual Dictionary'
  • [Format (F4)] Fixed: "Sort by" doesn't sort correctly for 'modified by user' and 'created by user' attributes
  • [RTF Exporter] Fixed: Running header not visible for TshwaneTerm documents
  • [HTML, RTF, and Formatted XML exporters] Entries are now sorted in the output according to the selected language in TshwaneTerm
  • [Export word list] Fixed: Export list of terms not working in TshwaneTerm
  • [Fanouts] "View/Show fanouts" now works in TshwaneTerm
  • [tlReader (was: TshwaneReader)] Added highlighting of matching attribute for Ctrl+F 'Edit/Find' tool
  • [Statistics] New 'Details' link at header of element statistics shows the element 'Details' stats for ALL elements in the DTD
  • [Tags] Add new functionality that allows you to "tag" entries (see "Edit" menu). You can apply the currently tagged entries as a filter. (Terminology not to be confused with XML/markup 'tags'.)
  • [Styles] Fix: 'Lua modifier script' doesn't work correctly for element/group styles
  • [Filter (F5)] Lua-based filters system now also allows you to create 'element query' filters which match individual elements (instead of entries) (Plugins/ElementQueries folder)
  • [Microsoft Word Integration] New "Microsoft Word Integration" feature for both TshwaneTerm and TshwaneLex. Can be enabled or disabled via the "Tools" menu.
  • [Attributes] [EXPERIMENTAL] Allow lists to be attached to normal free-edit text attributes, allowing either selection from list or entering a value (text box under F1 with dropdown)
  • [Search (F3)] Results by field breakdown: Added 'filter' links to do a search filter on particular fields
  • [Search As Filter] Now highlights matching attributes/elements in the Preview Area
  • [Localisation] Added BETA French, Spanish and Ciluba interfaces for TshwaneLex
  • [Samples] New sample: 'Error Checks' (demonstrating real-time error checks)
  • [Filter (F5)] New '[Referenced]' filter finds entries that have incoming smart cross-references
  • [Tags] Added "Edit/Show tagged always" function which 'pins' i.e. shows the tagged entries in the Preview always
  • [Compare/Merge] Under "Merge restrictions", added a list of elements and attributes allowing you to select which fields (of the main database') will be merged in
  • [Tree View] 'Replace with' function for advanced users allows an element to be replaced in-place with another
{LOCALISATION Fixed behaviour of the ABOUT_COPYRIGHT string so that the copyright year range is filled in by the application in place of a "%s", instead of (incorrectly) being part of the string.}
{LOCALISATION ADD: OVERLAY_EDIT for F12 overlay edit window}

2.0.12 / 3.0.8 / 3.99.10

  • [RTF Exporter] Fixed: Not exporting styles correctly
  • [Samples] New 'Images' sample TshwaneLex file, and added a sample file for TshwaneTerm
  • [DTD editor] Elements that may be parents of the currently selected element (according to the DTD) are now highlighted

2.0.11 / 3.0.7 / 3.99.9

  • [ODBC] Bugfixes relating to ODBC
  • [Styles] Conditional Styles: 'Lua modifier script' (under "Format/Styles"/"Advanced") allows a Lua script to dynamically and intelligently modify the styles at real-time during the generation of the output/preview. See the "Lua Conditional Styles" samples.
  • [Filter / Statistics] Element 'Details' statistics function now has a 'Filter' for finding instances of particular occurring 'child patterns' (e.g. 'a Sense with a TE and Example as child'). You can either filter for an exact child pattern match, or a 'subset' match.
  • [Filter / Statistics] Element 'Details' statistics function now has a 'Filter' for finding instances of particular occurring 'sibling pairs' on an element
  • [Filter / Statistics] Added new filter for occurrences of particular total numbers of children under an element (e.g. 'find all Sense elements with three child elements')
  • [Filter / Preview] Added 'Unapply' command at top of Preview Area when filter is applied
  • [Statistics] For single-selection list attribute item counts, now also shows counts for number of occurrences where no value is selected
  • [Statistics] For multiple-selection list attribute item counts, new statistic (and corresponding filter) shows a breakdown of number of occurrences of particular numbers of items (e.g. 'see how many senses have three parts of speech selected')
NB: The file format changes in this release. If you interchange .tldict/.tterm files with other users, then if one user installs the latest update, the other users may all have to also update in order to be able to load files saved with this version.

2.0.10 / 3.0.6 / 3.99.8

  • [Compare/merge] Fixed: For single-selection lists, blank values may get added to the list in the DTD during a merge
  • [ODBC] Fixed: It attempts to 'check out' an entry if you press navigation keys, selection keys or "Ctrl+C" (for 'copy') under "Attributes (F1)"
  • [ODBC] Database compatibility fixes/improvements
  • New "Unicode Database" 'reference' TshwaneLex file
  • [Search (F3)] Results window now displays the total number of occurrences found of the search string in addition to the number of entries containing matches
  • Add 'tif/tiff' to supported image file extensions (although this format is currently not necessarily supported in Preview and Word etc.)
  • [Localisation] The 'Incomplete' checkbox under F1 now gets its name directly from the 'Incomplete' attribute in the DTD
  • [Compare/merge] Fixed: Doesn't require password to open document
  • [Statistics] Dramatically sped up 'statistics' functions
  • [Statistics] Improved 'Element child counts' statistics
  • [Statistics / Inline elements] Statistics functions now take (well-formed) inline elements into account
  • [Statistics] List item counts for specific attributes now also include the total for the entire document (for that attribute)
  • [Filter / Inline elements] Filters now work with inline elements
  • [XML Exporter] Fixed: 'Fixed' Lua script attributes aren't exported correctly, and ampersand not escaped correctly as entity
  • Tree View drag-and-drop fixes and improvements
  • Fixed: Markup shortcut key (e.g. Ctrl+i) now clears markup from selected text if already marked up with that style
  • [Formatted XML Export] Fixed: 'Format' export options (e.g. expand tildes) are disabled
  • [Formatted XML Export] Various improvements and bugfixes
  • [Corpus (F6)] Dramatic speed improvements and bugfixes
  • Preview Area now displays a 'real-time' list of DTD validation errors on the currently selected entry
  • [Statistics] New sub-section of 'full statistics' shows total list item counts for entire document
  • [Statistics] New sub-section of 'full statistics' lists all fonts referenced (across all sets of styles)
  • [Statistics] Parent->Child statistics now also shows counts for total number of children
  • [Statistics] New 'Values' attribute statistic function displays a list (with counts) of all the occurring values for that attribute
  • [Statistics] New 'Details' element statistic function displays additional statistical information about occurrences of that element
  • [tlReader] Fixed: By default only lists TshwaneTerm files to open
  • [Import CSV] Added new option 'Apply to all matching entries', allowing a single row to be imported onto multiple matching homonyms
  • [Error checks] Added new "parse error" error check that lists entries with XML syntax errors within inline content (PCDATA)
  • [Search (F3)] New 'attribute match count breakdown' shows number of occurrences found in each attribute (displayed if click on total number of matches)
  • [Search (F3)] Now searches within list attributes as well
  • [Search As Filter] New 'subtract' version of 'Search (F3) as filter' allows matching entries to be hidden by filter instead of revealed (inverse of ordinary 'search as filter')
  • [Corpus (F6)] 'Sampling'
  • New option 'Format/Show all fields' reveals all hidden fields in the Preview Area

2.0.9 / 3.0.5

  • Fix attribute value parsing problem (introduced in 3.0.4) for attribute values with spaces in them
  • Fix corpus hanging problem (introduced in 3.0.4)
  • Fix "F6_CORPUS" tab title in TshwaneTerm

1.0.X -> 2.0.8 / 2.0.8 / 3.0.4 / 3.99.X

  • Fixed: When editing cross-reference types, didn't always set document dirty (or update filter list for higher versions of TshwaneLex)
  • [Import CSV] Fixed: Fail to fill in 'Notes' field if the original notes attribute ID from the default DTD has changed, even if 'special type' is correctly set
  • [Compare/merge] Fixed: When merging 'list' items, doesn't create a new list item if the item doesn't already exist in the main database, thus 'unknown' list item values fail to merge
  • [Compare/merge] Fixed an obscure problem whereby multiple cross-references might be added multiple times during a 'replace'
  • For new projects, TE and Definition attributes are now set as 'required' fields in the DTD
  • Fixed some minor bugs relating to using different additional Translation Equivalent 'special types'
  • Error check: Fix problem that empty senses not picked up due to autonumbering attributes
  • [XML Exporter] Changed PCDATA to be output at end of 'Tree View' element instead of at beginning
  • [Search and Replace] Fixed: Integer attribute values of zero specifically aren't found if searching for "0"
  • [User management] Fixed: Users marked as deleted no longer marked as deleted after reload (affects tldict/tterm files only)
  • [DTD editor] Fixed: Load/save list items: Additional columns for labelset values not always handled correctly (and caused crash in some cases)
  • [DTD editor] Fixed: Load/save list items: Shouldn't create duplicates if given item already exists
  • [Start page] Added "Help" section
  • [XML Importer] Improved handling of mixed PCDATA/non-PCDATA nodes
  • [TshwaneTerm] Fixed: "Edit/Copy term" menu command
  • [User statistics] Fixed: Stats not displayed correctly if there is only one entry in a database section
  • [Corpus] Added: Ctrl-C shortcut to copy selected examples (corpus lines) to the clipboard
  • Ctrl+Alt+Shift+Right / Ctrl+Alt+Shift+Left : Adjust Lemma List width
  • EXPERIMENTAL: 'ReverseScript.lua'
  • [DTD Editor] Added "Move up" and "Move down" commands for changing the order of lists
  • [Compare/merge] Now shows all fields in compare/merge, even those normally set to invisible
  • [Error checks] Entries now optionally clickable (i.e. use 'format/click to select attribute' setting)
  • [ODBC] (BETA) New "cached ODBC" for much faster ODBC use, enabling more general use over the Internet
TshwaneLua API Changes:
tcFilter::TestCondition() => tcFilter::Pass()
CSection::GetFilter() => CSection::GetCurrentFilter() [Semantics also change: Can return NULL]
Miscellaneous small changes and improvements.

1.0.14 / 2.0.7 / 3.0.3 / 3.99.1

  • Fixed: Inline element with empty attribute unnecessarily highlighted red in Preview
  • Fixed: Single lemma reverse crashes TshwaneLex if creating new reversed lemma [recently introduced issue]
  • Fixed: Regular expression search for empty field ("^$") not working
  • Fixed: Extra commas being output in "Comma Separated Values" exporter [recently introduced issue]
  • [TshwaneTerm] Now remembers the 'Index By' setting (language to index and sort by in Lemma List).
  • [TshwaneTerm] Fixed: 'Web search' and 'Web image search' for entry don't work while 'index by' is enabled
  • [User statistics] Fixed: Might not incorporate most recent work in the charts ('work done after noon on last day work was done')
  • [Attributes (F2)] Attributes colours now also used in list headings, as with "Attributes (F1)"
  • [Lua] Added new 'script repository' web page for sample scripts: http://tshwanedje.com/tshwanelua/
  • [Filter (F5)] New filter for 'entries with empty cross-reference nodes' [Lua-based]
  • [Lua] New standalone Lua script to automatically delete all empty cross-reference nodes
TshwaneLua API Changes:
- TshwaneLua API:
Miscellaneous small changes and improvements, as well as:
tcLanguage::FindLemmaByID => tcLanguage::FindEntryByID
HasHomNumAttribute => tcEntry::HasHomNumAttribute (removed global, added member)
teExpandTilde => tExpandTilde
RequestModify => tRequestModify
RequestLoad => tRequestLoad
RequestLoadAll => tRequestLoadAll
tcReference stuff

2.0.6 / 3.0.2

  • Fixed: While editing in F12 window, cursor jumps to end of text

1.0.13 / 2.0.5 / 3.0.1 / 3.99.1

  • [Filter (F5)] Fixed: Problem with "(?)" appearing in Lemma List when applying a filter (versions 1 and 2 only)
  • Fixed: libcurl.dll not included in installation
  • Fixed: If F12 window was open, may act as if attempting to modify the entry even though no changes are being made
  • Fixed: After a save, the focus shifts from the currently selected "Attributes (F1)" box
  • [Search and Replace] Now searches and replaces in 'number' attributes too (e.g. 'incomplete', 'frequency' etc.)
  • Can now specify a 'default' value for list attributes
  • Can now specify a 'default' value for the incomplete flag (1 or 0)
  • Can now specify a 'default' value for integer attributes
  • [TshwaneTerm] Fix problem with default styles (homonyms bunching together)
  • [Filter (F5)] (EXPERIMENTAL) Extendible Lua-based filters system
  • [Filter (F5)] New filter for 'modified' entries, i.e. those with unsaved changes [Lua-based]
  • [Search and Replace] Added "whole word only" option
  • [Search and Replace] Added "case sensitive" option
TshwaneLua API Changes:
tLuaLog (to help with debugging Lua scripts)
tcDictionary::IsMonolingual ALTERNATIVE: tcDictionary::GetNumSections()==1
tcDictionary::IsBilingual ALTERNATIVE: tcDictionary::GetNumSections()==2
tcNode::AddChild ALTERNATIVE: tcNode::AddChildOrdered
tcDictionary::GetTarget ALTERNATIVE: tcDictionary::GetLanguage(1)
tcDictionary::GetMain ALTERNATIVE: tcDictionary::GetLanguage(0)
tcLanguage::FindLemmaIndex(tcEntry *pEntry) ALTERNATIVE: pEntry->FindOurIndex
CSection::UpdateTextBoxes => CSection::RebuildAttributes
tcDictionary::GetNumLanguages => tcDictionary::GetNumSections
tcLanguage::ResortLemmas => tcLanguage::ResortEntries
tcLanguage::GetNumLemmas => tcLanguage::GetNumEntries
tcLanguage::GetLemma => tcLanguage::GetEntry
tSetAttributeByString => tcNode::SetAttributeByString
IsArticleNode => tIsEntryNode
GetNodeArticle => tGetNodeEntry
GetNodeLanguage => tGetNodeSection
GetNodeDictionary => tGetNodeDictionary
GetNodeDoc => tGetNodeDoc
teIsSpecialElement => tIsSpecialElement
tLemmaFindReferred => tEntryFindReferred
RequestModify => tRequestModify
CreateElementType => tCreateElementType
CreateAttribute => tCreateAttribute2
SetChildRelation => tSetChildRelation
InsertParentBetweenEach => tInsertParentBetweenEach
InsertParentBetweenAll => tInsertParentBetweenAll
InsertParentBetweenAll => tInsertParentBetweenAll
RenameElementType => tRenameElementType
MoveAllToGrandparent => tMoveAllToGrandparent
SortElementsByAttribute => tSortElementsByAttribute
MergeAttributes => tMergeAttributes
DeleteEntry => tDeleteEntry
EscapeHTMLChars => tEscapeHTMLChars8
EscapeHTMLCharsU => tEscapeHTMLCharsU

1.0.12 / 2.0.4 / 3.0.0

  • [Search (F3)] Regular expression searching has been upgraded to a newer, more standard and more advanced regular expression library (Boost.Regex with Perl regular expressions)
  • Sound/images path can now be a relative path (if left blank, sound/image files will be searched for in the same folder as the .tldict file)
  • [Replace as you type] Added shortcuts for many more phonetic symbols, and improved the "Tools/Show replace-as-you-type help" contents
  • FAQ (Frequently Asked Questions) site (http://tshwanedje.com/support/faq) is now linked from the "Help" menu
  • [Inline elements] Closed list attributes entered inline are now validated against the closed list and will highlight as an error in the Preview if there is no such list item.
  • Fixed: Doesn't remember a user interface font size setting if a font is not selected for that item
  • Fixed: Error message if user interface settings keyboard shortcuts / macros changed and do not have write rights to the application folder
  • [Inline elements] Fixed: Obscure case where closing tag not parsed correctly if an outer enclosing element's name is the same as the beginning of an inner element's name, e.g. "<e><el>test</el></e>"
  • [Inline elements] Fixed: Before/after styles for PCDATA not always output correctly
  • [Search (F3)] Fixed some bugs pertaining to regular expression searching, such as possibly hanging if a matching string has zero length (e.g. for word boundary searches)
  • [Inline elements] Special new "$TAG$:tagname" shortcut key type allows more convenient tagging of data (see FAQ)
  • [ODBC] Added 'cancel' button in most cases where database must be fully loaded
  • [ODBC] Now remembers last-used username, as well as ODBC username/password for drivers that do not
  • TshwaneLex/TshwaneTerm can now be launched with an ODBC database specified as command-line parameter (e.g. "odbc|datasourcename|tl_"), allowing Windows shortcuts to be created directly for ODBC databases
  • [User management] Exporters now have an additional option whether or not to export (last-modified-by and created-by) usernames
  • [DTD editor] Fixed: If you use "Move up" or "Move down" to change the order of elements in the main element list, the order change doesn't immediately reflect in the list of elements under "Allowed child elements"
  • [RTF Exporter] Fixed: Paragraph styles not applied
  • [XML Exporter / Importer] Fixed: An XML export and re-import doesn't correctly restore 'special types' if default element/attribute names have changed for these
  • [ODBC] Fixed: Font sizes in styles may not be saved
  • [ODBC] Fixed: F12 POPUP: Doesn't prompt to check out entry when start editing
  • [Search and Replace] Fixed: "Tab" key to switch the focus to the next control doesn't work in this dialog
  • [Styles] Added new border styles (see "Border styles" page in the Styles dialog)
  • [Styles] Style sets: Added functions to change the order of sets of styles
  • [DTD editor] Attribute list now displays the name of the list associated with a list attribute
  • [RTF Exporter] Added option to include colours in RTF document
  • [Error checks] Added "FIX ALL" function for 'redundant whitespace' error type
  • [Error checks] Added DTD validation check for child element order violations
  • Experimental: "Format/Highlight/Highlight undefined words in examples"
  • [Format (F4) / User management] New option to toggle display of (last-modified-by and created-by) usernames in the Preview Area
  • [User management / Export] New privilege type controls whether or not a user may 'export' the dictionary contents (e.g. File/Export/RTF)
  • [Tree View] Double-clicking on an element will now set the editing focus to the 'Attributes' window
  • [Search and Replace] Added "regular expression" option. This also includes support for backreferences.
  • [Search and Replace] Minor optimisations, and added a progress dialog which also allows you to abort the process
  • [Corpus (F6)] Fixed: Potential lock-up problem when running multiple 'auto' searches concurrently
  • [Corpus (F6)] Fixed: After an auto-search has completed, cached results aren't displayed when you return to an entry after viewing another
  • [Corpus (F6)] Fixed: Not sorting correctly

1.0.11 / 2.0.3 / 2.99.3

  • [Compare/Merge] Improved comparison behaviour if number of attributes on element differs (i.e. if new attributes have been added in the DTD)
  • Fixed: Extra space sometimes appears in cross-reference styles
  • New tilde expansion settings (see FAQ)
  • [Multi-user support] Fixed a few cases where 'last-modified-by' didn't update correctly
  • ODBC-related bugfixes
  • [Filter] Attribute filter now highlights matching attribute in Preview

1.0.10 / 2.0.2 / 2.99.2

  • [Reverse] Fixed: If there is a sibling sub-element of Sense, it may be added in reversed article as parent of reversed Sense
  • [Tree View] Improved the right-click menu behaviour
  • [Wide view] The shortcut key for 'View/Wide Tools window layout' has changed from Ctrl+Shift+L to Ctrl+Alt+L
  • [Search (F3)] Fixed: Assertion failure if click in search results window while no article is selected
  • [Import wordlist/CSV] Added the ability to import cross-references
  • ODBC-related bugfixes (MySQL logon issue; possible duplicate attribute ID problem; possible problems after editing the DTD if lemmasigns or usernames have apostrophes in them)
  • [Compare/Merge] Added new setting to automatically jump to selected entry in main window
  • [Compare/Merge] Added new setting to display 'difference counts' of entries (allowing one to quickly see if an entry has e.g. 'additions only')
  • [Filter] New filter type allows filtering on individual cross-reference types
  • New function "View/Show TE fanouts" displays other entries in the same section which have any of the same translation equivalents as those in the currently selected entry
  • Inline cross-references (in DTD editor, "XRef target" (and optionally "XRef display") may be selected for attributes; both must be on the same element)
  • [Format (F4)] "Sort by" option (experimental)
  • "Dictionary/User Statistics"

1.0.9 / 2.0.1 / 2.99.1

  • Optimisations: Sped up application startup time and significantly sped up file loading, particularly for files with many cross-references
  • [Compare/merge] Fixed: TshwaneLex may crash in some cases if same attribute has different type in either dictionary
  • [Compare/merge] Fixed some cases where cross-references to particular senses may not be copied during a 'replace'
  • [Masks] Fixed: Homonym numbers aren't correctly recalculated when entire entries are 'masked out'
  • [Masks] Fixed: Masks don't work correctly with single-selection lists
  • [Error checks] Fixed: Clicking on a link in the 'error check' results window launches external browser
  • [Reverse] Fixed: Automatically created reversed entries no longer immediately appear in recently-used entry list
  • [Reverse] Improvements in creating reversed element tree when there are multiple possible element sub-trees that could be generated
  • [Compare/merge] Added new option "Replace all 'different' entries with one on right" that replaces during 'Batch merge' regardless of which timestamp is newer
  • XML and XSLT fixes
  • ODBC-related fixes
  • New attribute type "Lua script"
  • Lua script tool ("Tools/Execute Lua Script")
  • Experimental Lua "search script" option in Dictionary/Properties
  • Experimental: Formatted XML exporter

2.0 (1.0.8)

  • [Network / ODBC] Rewritten ODBC interface with proper network, entry locking and multi-user support
  • [User management] Basic user privileges system has been implemented
  • [Styles] Added new "Indents and Spacing" paragraph styles
  • [Import wordlist/CSV] Added "Ignore first row" option
  • Added new "hyperlink" attribute data type that allows e.g. e-mail and website addresses to be included in the data

1.99.5 (

  • [Preview area] Fixed: Clicking in the Preview Area does not cause the Preview window to get the focus
  • [Right-to-left support] Fixed: 'Right-to-left' option greyed out for LemmaSign attribute in DTD editor
  • [Localisation] New built-in localisation editor accessible under Tools/Options ("Edit" and "New" buttons next to language selection)
  • [Localisation] Partial immediate apply when selected language is changed
  • [Compare/merge] Under the "Show articles that ..." options in the settings, it is now possible to show or hide older/newer (red/purple) "different" articles independently
  • [Compare/merge] A new "Merge restrictions" tab has been added. If attribute list values have been ticked here, then during a merge it will only add/replace sub-elements that have the selected list value (or values) present in the other (right side) database.
  • [Attributes (F1)] Added a new text edit 'overlay' window that can be activated or hidden by pressing F12, to assist with editing of fields containing lengthy text
  • [Attributes (F1)] It is now possible to configure different fonts to be used for different fields in the "Attributes (F1)" boxes using a special configuration text file
  • [Preview] Added new option "Format/Preview selected sub-tree only" that collapses in the Preview all but the sub-tree selected in the Tree View (useful when working on large entries that don't fit in the Preview)
  • [Sorting] Added new sort method for Welsh
  • [RTF Exporter] Added new export option to include the first/last lemma sign of each page in the page header
  • [Import wordlist/CSV] Fields can now be added more than once to the list of fields corresponding to columns
  • [Styles] Added new option "Format/Save colour scheme" that saves the colour configuration of the current styles to a text file that can be opened again with "Format/Load colour scheme"

1.99.4 (1.0.7)

  • [Localisation] Switched over to new localisation system
  • "Last modified date/time" of entries is now just an attribute. This allows the style of the timestamp to be modified, and can be added to any element in the DTD, hence this also allows you to potentially keep track of the 'last modified time' at sub-element level, e.g. individual senses.
  • [Preview area] Fixed: 'Clicking' sound plays each time the Preview Area updates if using Internet Explorer for the Preview Area
  • [Attributes (F1)] Various improvements have been made to the scrolling behaviour in the Attributes (F1) window
  • [XML Importer] A new XML importer has been added ("File/Import/XML (BETA)")
  • [XML Exporter] New XML export option to generate XSLT stylesheet file based on selected set of styles
  • [Preview] Added 'Zoom in', 'Zoom out' and 'Zoom 100%' options under "View" menu
  • New special attribute type keeps track of the "created date" of entries or elements.
  • New option "Format/Click to select attribute" allows you to click on an attribute of the selected entry in the Preview Area (or in the search results) to select it in the Tree View and under 'Attributes (F1)' (requires Internet Explorer as the 'HTML provider')
  • [Tree view] Added shortcut keys "Ctrl+Shift+Left" and "Ctrl+Shift+Right" to collapse/expand sub-elements respectively
  • [Sorting] New sorting method "Windows built-in" allows you to select any of the built-in Windows sorting methods for any of many languages
  • [Filter / Statistics] Under "Full statistics", filters can be created for entries with specific Parent->Child child counts by clicking on the "Filter" link next to the child count
  • Experimental: "Format/Highlight/Highlight undefined TEs" and "Format/Highlight/Highlight duplicates"
  • Experimental: Filter (F5): "Duplicate attributes"

1.99.3 (1.0.6)

  • [Compare/merge] Added new option "'Replace' sub-elements during merge if sub-element IDs are the same"
  • Miscellaneous bugfixes
  • [Tree view] Right-click menu now includes a "Copy" option (Ctrl+C) that allows you to make a copy of a sub-element between different entries or within the same entry
  • [Compare/merge] Fixed: 'Different' attribute values output twice
  • [DTD editor] New "Move up" and "Move down" buttons allow the order of elements to be modified
  • [Preview] Added option ("Format/Preview selection only") to preview only the currently selected entry (useful if entries are long)
  • [Preview] Added option ("Format/Underline hyperlinks") to toggle the underlining of hyperlinks in the Preview Area. This retains the hyperlinks while removing only the underlining.

1.99.2 (1.0.5)

  • [Search and Replace] Fixed: If a replace causes the lemma sign to change, the homonym number and sorting are not updated correctly
  • [Inline elements] Fixed: Group styles not applied to inline elements
  • [Inline elements] Fixed: Fixed output problem when PCDATA of inline elements contain further inline elements themselves
  • [Search (F3)] It is now possible to search in certain attributes only, using the "Fields" option
  • [Search (F3)] Fixed: If there are multiple matches within a single attribute string, only the first is highlighted
  • [Search (F3)] Fixed: Parsing of PCDATA attributes with inline elements causes problems with highlighting of results
  • [Search and Replace] It is now possible to search and replace in certain attributes only, using the "Fields" list
  • [Masks] Added new "masks" system ("Format/Styles/Masks"), allowing individual elements to be selected to be shown or hidden using from an 'Attributes (F2)' list, on a per-styleset basis (see new sample "Multiple Editions Sample using Masks.tldict")
  • [User management] Basic user management has been implemented ("Dictionary/User management"). When enabled this allows you to e.g. keep track of which user created or last modified an entry (or child element within an entry).
  • [User management / Filter] New filter allows one to filter on entries/elements created or edited by specific users
  • [Styles] Added option ("Format/Preview all sets of styles") allowing immediate preview in all sets of styles of the currently selected entry
  • [Preview] 'Newly added' entries are now marked a bit differently to 'modified' entries (with "!")
  • [Preview] Added option ("Format/Highlight selected element") which, when enabled, highlights the currently selected child element of the current entry in the Tree View
  • Now remembers the last selected entry and list of recently viewed entries when you open a database again
  • Added function to automatically open Google Image search for headword of currently selected entry ("Lemma/Image search")
  • {NOTE: The ODBC interface is in beta and the schema will likely be changing - use with caution}
  • [ODBC] Basic styles and stylesets are now loaded and saved with the database
  • [ODBC] Database schema change: Removed row lemmas::freq
  • [ODBC] Database schema change: Table 'lemmas' renamed to 'entries'
  • [ODBC] Database schema change: Renamed 'entries::lang' to 'entries::section'
  • [ODBC] Database schema change: Added table 'styles'
  • [ODBC] Database schema change: Added table 'stylesets'
  • [ODBC] Database schema change: Added row 'styles_order::id_styleset' in order to support more than one 'styleset' for output order

1.99.1 (1.0.4)

  • Added a "Help/Check for updates" menu option that allows you to check online if a new version of TshwaneLex is available
  • [Search] 'Whole word only' detection has been improved, and now also works in conjunction with regular expression searches
  • [Import wordlist/CSV] Added new option that allows user to specify whether or not to always create new child elements while importing
  • [Compare/merge] Fixed: If a particular sense within a lemma being "replaced" is the target of a 'sense cross-reference', the reference may become invalid. Files that have been saved with any such cross-references will now give a warning when opened, and will be automatically repaired.
  • [Preview area] Fixed: "Database last modified" shows only the last modified date, and not the time
  • [User interface] The behaviour of "View/Wide Tools window layout" when the Tree View is hidden now makes more sense
  • Improved application memory usage and .tldict file load time by +/- 5 to 10%
  • {INTERNAL} The localisation system has been overhauled/improved
  • [Start page] Added a basic "start page" that is displayed when no document is open
  • [Search] Search string is now highlighted in search results
  • [Filter] New "DTD validation error" filter, with "Child relation constraint" or "Required attribute" sub-filters
  • [Search As Filter] Search results can now be applied as a filter
  • [Compare/merge] It is now possible to select multiple entries and apply 'batch merge' only to the selection
  • [Compare/merge] Differences are now highlighted
  • Added a status bar to the main window; this can be toggled via the "View/Status bar" menu option
  • [Statistics] Added list attribute item usage statistics to 'full statistics'
  • [Export CSV] Added a basic CSV exporter ("File/Export/Comma Separated Values")
  • [DTD editor] Added function to sort items in a list according to a configured sort method
  • [DTD editor] Load/save list items from/to text files or Comma Separated Values files (column 1 is the list item, while any further columns generate sets of alternate labels for list items)


  • [Statistics] 'Full statistics' now shows element child (Parent->Child) count statistics
  • [Filter] New element child filters can be used to filter any entry in which a particular Parent->Child element combination exists. (Note these supercede the old "From lemma" and "From sense" "References" filters.)
  • [Import wordlist/CSV] When re-using existing lemmas, changed to always create new sub-elements rather than overriding existing element/attributes
  • [Compare/merge] The "Merge" command has been made a bit smarter; it will now only merge child elements of the entry if they are not already (identically) present in the main (left) document
  • [Compare/merge] "Batch merge" now includes an option to automatically apply the 'merge' command to all 'different' entries
  • [DTD dialog / Mixed content] (ADVANCED) Added "Use as PCDATA" option for attributes allowing one to regard and use that field as the PCDATA of the owner element, thus allowing some basic support for inline tags / 'mixed content'. A new sample ("English - French Inline Element Sample.tldict") has been included, demonstrating the use of inline elements as an alternate solution to that presented in the "English - French Entity Sample.tldict" sample.
  • [XML Exporter] Fixed a few problems whereby invalid XML may have been generated


  • [Localisation] TshwaneLex is now 'localisable', i.e. the interface can be translated into other languages. If additional languages have been installed, they can now be selected under "Tools/Options".
  • [Cross-references] Fixed: Sense numbers not displayed correctly when the cross-reference is to multiple senses
  • [Cross-reference editor dialog] Fixed: When adding a sense to an existing cross-reference, the cross-reference type may change back to the default
  • [Automatic backups] Fixed: Automatic backup interval may reset to 0


  • [DTD dialog] Fixed: Performance issues if converting an attribute to a list type if there are many new items for the list
  • [Search (F3)] After entering a search term, pressing the 'Enter' key will now immediately start the search


  • User Guide has been finalised
  • [Search] Fixed: Search results sometimes display all in bold
  • [Sorting] Fixed: Problem in some cases when adding new entries to a table in the table-based sorting configuration


  • [Styles] Added user-friendly colour display/selection in Styles dialog
  • [Styles] It is now possible to set up multiple sets of styles and toggle between them (Ctrl+P, or "Format/Toggle current style set"). This allows one to create multiple different 'views' of the same dictionary database (e.g. 'pocket edition' vs. 'full edition' views, or 'compact' vs. 'electronic' views). These can be configured by clicking "Edit sets of styles" under "Format/Styles".
  • [Styles] The old "View/Colour schemes" menu options have been removed, and replaced by a new "Format/Load colour scheme" option, which loads a colour scheme from a text file
  • [Output/Preview] Fixed: If list item label is blank, should not apply start/end/seperator styles text, e.g. "( , verb)"
  • [Tree View] Added option to toggle the display of the Tree View ("View/Toggle Tree View" Ctrl+Alt+T)
  • [Tree View] The "Ctrl+Up" and "Ctrl+Down" shortcut keys now also work correctly for the "Move homonym up" and "Move homonym down" commands on Lemma nodes
  • [Tree View] Added new "Add" options to the right-click menu to automatically add entire new "sub-trees" to an element, e.g. "Sense::Definition"
  • [Tree View] If you "drag and drop" an element onto another of the same type, it now assumes you want to insert the dragged element at that position
  • [Tree View] Fixed: Crash if delete a combination and there is a cross-reference to a sense under that combination elsewhere (not deleting cross-reference to sense)
  • [Tree View] Fixed: Auto-numbering not always recalculated correctly during cut/paste operations
  • [Compare/merge] Added "Batch merge" functionality to automatically add updates 'in bulk' from the compared-against dictionary
  • [Compare/merge] Fixed: Overall stats of number of differences in the title bar does not update when changes are made
  • [Compare/merge] Fixed: Saving compare "report" with a large dictionary database may become extremely slow
  • [Markup] If text is selected in an 'Attributes (F1)' box, the keyboard shortcuts Ctrl+B,I,U will now generate a pair of markup characters around the selected text, rather than replacing the selected text
  • [Markup] If the text surrounding a %i/%b section is italics/bold (due to the styles), then the marked-up text will now revert to non-italics/non-bold. New uppercase versions of these two markup tags (%I and %B) can be used if the desired behaviour is to always retain the italics/bold formatting.
  • [DTD] Cross-reference types and labelsets are now correctly saved in the DTD template file
  • [Import wordlist/CSV] Added option that allows you to specify whether or not to mark imported entries as incomplete
  • [Import wordlist/CSV] For the field separator, "\t" can now be specified to indicate a 'tab' character as separator
  • [HTML Exporter] "HTML Options": Added new option allowing the output to be split into one HTML file per entry
  • [XML Exporter] Style information is now exported to the XML document
  • [Lemma sign web search] Fixed: Does not correctly generate search query when there are Unicode characters in the filename
  • [Automatic backups] Added "automatic backup" options that automatically save a backup copy of the current dictionary into the configured backups folder at a configurable interval (by default, this is set to one hour)
  • [ODBC] Database schema change: Table 'attr_b' dropped
  • [ODBC] Database schema change: Table 'users': Row 'username' renamed to 'logon'
  • [DTD dialog] (ADVANCED) Added "Special types" section, where it is now possible to configure which elements/attributes of your DTD have "special meaning" in TshwaneLex, for example which attributes to use as "translation equivalents" when doing an automatic lemma reversal
  • [Linked view] Fixed several Linked view "refresh" problems, where the linked information was not updated after editing changes were made to the current article
  • [Right-to-left support] Specific attributes can now be marked in the DTD editor as being right-to-left
  • Numerous miscellaneous bugfixes/improvements


  • Added new "Character Information Tool" under the "Tools" menu
  • [Sorting] Fixed: TshwaneLex may give "assertion failure" error message when using "Chinese - Radical / stroke count" sort method
  • [Compare/merge]: Fixed: Compare/merge crashes on cross-references with no cross-reference type specified
  • [HTML Exporter] "HTML Options": Added option to choose to export either as one large HTML file, or to split the output up into alphabetic sections
  • [HTML Exporter] "HTML Options": Added option to choose a "template HTML file" to use when generating the output file(s)
  • [HTML Exporter] "HTML Options": Added option to choose whether or not to use stylesheets (CSS); this completely replaces the old separate "Export: HTML (CSS)" option that was on the File menu
  • [HTML Exporter] "HTML Options": Added option to allow you to override the path specified for image files in the HTML output
  • [XML Exporter] "XML Options": Added option that allows cross-references to be resolved and converted to text attribute during export (mimicking more closely the formatted output), rather than exporting cross-references by internal target lemma/sense ID
  • [XML Exporter] "XML Options": Added option that allows list attributes to be exported as text (mimicking more closely the formatted output), rather than by internal list item ID
  • [XML Exporter] Fixed: XML entities are not exported correctly
  • [Images] Added basic support for linking images to dictionary articles using new "Image file" text attribute type which can be selected in the DTD editor. Image files should be located in the 'sound/images path' (this used to be just the "sound path"), which can be specified in the "Dictionary/Properties" dialog.
  • [Tree view] Cut/Paste right-click menu options (Ctrl+X and Ctrl+V) now allow cut/paste between different articles
  • [Tree view] Added basic drag-and-drop editing support, allowing you to move elements around in the Tree View. This is disabled by default, and can be enabled using the "View/Tree View drag-and-drop" menu item.
  • [Search and Replace] Added basic "Search and Replace" tool ("Edit/Search and replace")
  • [Replace as you type] Added replace-as-you-type entries for a number of common phonetic symbols, as well as Unicode superscript/subscript digits.


  • [Sorting] Added "Chinese - Radical / stroke count" sort method
  • [DTD] Added "auto-numbering" attribute type, allowing automatically assigned numbering (e.g. sense numbering) to be performed for any element
  • [Styles] Added "Numbering" style options that allow the numbering scheme of any integer attribute (e.g. homonym numbers or auto-numbering attributes such as sense numbers) to be changed
  • [User interface] Added "View/Wide Tools window layout" option (Ctrl+Shift+L). When enabled, and in Expanded View mode, the Tools Window (F1 to F5) is widened to cover most of the width of the TshwaneLex window.
  • [Sounds] Sounds implementation has changed completely; sound files are now just a new attribute type specified in the DTD. Sound path (i.e. location of sound files) is now configured in the "Dictionary/Properties" dialog.
  • [Filter] Remove redundant "cross-references" filter item
  • [Compare/merge] Fixed: Cross-reference types are not compared
  • [Compare/merge] Fixed: Homonym number is cleared when doing a "Replace"
  • [ODBC] Database schema change: Removed 'sounds' table .. sound files are now just text attributes in the DTD
  • [ODBC] Database schema change: 'info::soundpath' moves to 'dictionary::soundpath'


  • [Markup] Added markup characters for superscript, subscript and strikeout (%r, %l and %k respectively)
  • [Cross-references] It is now possible to remove cross-reference types (Dictionary/Edit cross-reference types)
  • [Cross-references] It is now possible to rename sets of display labels for cross-reference types
  • [Cross-references] It is now possible to remove sets of display labels for cross-reference types
  • [Cross-references] Added command to create new set of cross-reference type labels by cloning an existing set of labels
  • [HTML Exporter] CSS: Fixed problem with output of styles section
  • [HTML Exporter] CSS: Fixed output not using styles correctly
  • [HTML Exporter] CSS: Fixed invalid style names for user-defined DTD elements/attributes
  • [Compare/merge] Fixed problems with comparison of cross-references
  • [Compare/merge] Cross-references are now merged when using Add/Merge/Replace
  • [Compare/merge] Fixed: "Merge" does not merge any attributes of the top-level Lemma node
  • [Format (F4)] Fixed: "Show frequency" not working anymore
  • [Filter] Fixed: Tests for attributes that have values only tests first node of given type within a lemma
  • [ODBC] Fixed: "Assertion failed (m_pSort)" error when loading database
  • [Import wordlist/CSV] Fixed: Quotes within quoted fields escaped as double-quotes not handled properly
  • [Import wordlist/CSV] Fixed: Import blank column value to a list attribute creates and uses a blank list item instead of no list item
  • [Import wordlist/CSV] Fixed: Does not honour "zero or one" or "one" child constraints in the DTD when creating elements
  • Fixed: "Duplicate article" does not handle list attributes correctly
  • Fixed: 'Integer' type attributes set as 'fixed' type are not shown in the language window under F1 or in the output/preview
  • Fixed: Roman numeral numbering does not handle values greater than 60
  • Fixed: Colour schemes under View menu not working properly
  • [XML Exporter] Fixed: "FIXED" type attribute not handled correctly
  • [XML Exporter] Fixed: Export cross-references and cross-reference type information
  • [Error checks] Fixed: Clicking on heading links gives error message when using Internet Explorer as the HTML window provider
  • [Error checks] Fixed: Check for incorrectly nested brackets or markup characters not working for all text attributes
  • [Error checks] Added DTD validation check for child relation constraint errors, e.g. 'one or more'
  • [Error checks] Added DTD validation check for missing 'required' attribute values
  • [Preview area] Fixed: Internet Explorer sometimes renders HTML as text in the preview area
  • [Reverse] Fixed: Full language reversal does not calculate homonym numbers on created/modified lemmas
  • [Reverse] Fixed: Does not correctly handle special HTML characters in TE or lemma sign fields
  • [Reverse] Fixed: Homonym numbers on reversed lemmas are not correctly calculated with individual lemma reversal if in "Expanded View" mode
  • [Attributes (F1)] Fixed: "TE (NEW)" and "Definition (NEW)" boxes do not honour "zero or one" or "one" child constraints in the DTD
  • [Attributes (F1)] Fixed: Linked view and "bilingual references" do not update when a translation equivalent is edited
  • [License key system] Fixed: Possibly fails if Unicode characters appear in TshwaneLex installation path
  • [Tree View] Fixed: "Move homonym up" and "Move homonym down" commands don't work properly if some of the homonyms are filtered
  • [Cross-reference editor dialog] Dialog can now be resized, and is now larger by default
  • [DTD] It is now possible to edit or remove almost all of the elements, attributes and element child relations created in the default DTD


  • [Import wordlist/CSV] FIXED: Problem when importing Unicode text files (now correctly handles both little and big endian Unicode files)
  • [Import wordlist/CSV] Added option to specify whether or not to handle TshwaneLex markup characters (e.g. %i) if these have been used in the source data
  • [DTD dialog] FIXED: Crash when deleting list items used on "select one of" list attributes
  • [DTD dialog] FIXED: Severe bug when converting existing attributes to list types based on existing lists that have labelsets
  • [Sorting] Sorting configurations may now be saved to and loaded from TshwaneLex Sort Configuration files (.tlsort) from the sorting configuration dialog
  • [Sorting] FIXED: Sorting is incorrect if markup (e.g. %i) appears in the lemma sign
  • [Format (F4)] Removed "Long" view mode
  • [Compare/merge] FIXED: Crash in some cases if perform action such as "Replace" after changing the "Settings"
  • [Compare/merge] FIXED: Some merge functions may not work correctly if in "Expanded View" mode
  • {MINOR} FIXED: Ruler tool does not clean up temporary files
  • {MINOR} Fixed several problems in the language window where the user interface would not correctly update when the lemma or lemma sign had changed, e.g. in the most recently viewed lemmas list
  • {MINOR} Fixed problems in text file importer where final character or line is ignored if the last line does not have an end of line character


  • [Styles] Added new styles "Small caps" and "All caps" (NOTE: Currently requires the use of Internet Explorer as the "HTML window provider" (see "View" menu) to work in the Preview area. Internet Explorer 6 or higher is strongly recommended.)
  • OPTIMIZATION: [.tldict loader] Sped up file loading by +/- 10 to 30%
  • [ODBC] Fixed export to Microsoft SQL Server
  • [DTD] Added support for DTD templates. The DTD of the current dictionary may be saved to a ".tldtd" (TshwaneLex DTD) file using the "Dictionary/Save DTD template" menu option. When creating a new dictionary using "File/New dictionary", a .tldtd file may be specified as a template to use for the DTD for the new dictionary. Styles, Entities, Lists and label sets are saved together with the file.
  • [Restore] Added lemma "Restore" function ("Edit/Restore"), which allows you to revert to the last saved version of a lemma
  • [Reverse] Fixed problem of interface being slow to update after reversing a single lemma if language has many lemmas
  • [Sorting] Added sorting configuration dialog ("Dictionary/Configure sorting") which allows sorting method plugins to be selected or configured


  • FIXED: Doesn't 'escape' the & character properly in menus for e.g. the File menu MRU list, element names, I/O names and so on, so & incorrectly causes the next character to be underlined as a menu shortcut
  • [Statistics] Added option to show extended statistics, which shows attribute statistics in addition to element statistics
  • FIXED: Crash if element type is deleted in DTD editor dialog, if currently selected node in Tree View is of that element type
  • Numerous miscellaneous bugfixes/improvements


  • [Right-to-left support] Added "right-to-left" language option in "Dictionary properties" dialog. Currently requires the use of Internet Explorer as the "HTML window provider" (see View menu). Internet Explorer 6 or higher is strongly recommended.
  • [Import wordlist/CSV] Rewrote Comma Separated Values (multi-field) importer to be more generic and to allow importing any attribute defined in the DTD
  • [Import wordlist/CSV] There is now an infinite supply of "Nothing" available in the column-to-attribute assignment list
  • [Import wordlist/CSV] FIXED: Doesn't import last line/word in text file if there is no carriage return after it
  • FIXED: '"Edit/Copy article text" crashes TshwaneLex if lemma on right side language of bilingual is currently selected. This same problem was also present under most conditions in the Ruler Tool if viewing the "Graph" view for the right side language.'
  • [Output/preview] FIXED: 'Expand tildes' not working (currently only works for default attributes, should work for all unless otherwise specified)
  • [Output/preview] FIXED: 'Expand tildes' doesn't work correctly if multiple ~ characters follow one another, only every second one is expanded


  • [DTD dialog] It is now possible to delete attribute types. (It is now also a bit safer to delete many, but not yet all, of the attributes defined by the default DTD.)
  • [Filter] Added "attribute" filter. All attributes are shown (in the format "Element::Attribute") in the filter list, and one can filter for all lemmas in which the given attribute has a value. This supercedes the old "Deriv", "Pronunciation", "Etymology", "Homonyms", "Incomplete" and "Lexicographer notes" filters.
  • [Sorting] Added more diacritic characters to default sorting table.
  • [Markup] Added "%n" markup character (outputs newline)
  • [Expanded view] Fixed a longstanding bug where if you come out of expanded view, the two language windows in a bilingual dictionary may be in the wrong order
  • [User interface] Added "View/Use colours in Attributes window" option. When enabled, uses attribute colours for the attribute labels in "Attributes (F1)".
  • [Replace as you type] Added new "replace as you type" feature that allows certain strings entered in text edit boxes e.g. those under "Attributes (F1)" to automatically be converted to another string or character, e.g. typing "(c)" will cause a "©" to be generated, typing "..." will cause an ellipsis character "?" to be generated, typing ":e" will cause "ë" to be generated, and so on. This can be enabled/disabled at any time using the menu option "Tools/Enable replace-as-you-type" (use "Tools/Show replace-as-you-type help" to show a list of all configured replacement strings). New replace-as-you-type strings can be added by the user by creating or copying a text file with the extension ".rayt" in the TshwaneLex application folder (e.g. "c:\Program Files\TshwaneLex Pre-release") or Data folder. This can be a normal text file (i.e. 8-bit) or a Unicode text file. Each replace-as-you-type entry is specified on a new line in the text file with format "STRING1,STRING2", e.g. "(c),©" (without quotes). This can be used to create a system to e.g. enter phonetic symbols which are not straight-forward to enter with a normal keyboard.
  • {INTERNAL} Added basic framework for supporting multiple sets of styles / 'output orders'


  • [Rulers] Added "Graph" view


  • [Rulers] Fixed some bugs, and can now configure coefficients for each alphabetic character
  • [Rulers] Added "Import CSV" and "Export CSV" options to load/save coefficients from/to Commas Separated Values file
  • [Rulers] Added basic alphabet key


  • [Filter] One can now filter on frequency information if this information is available (can specify min/max range limits for frequency index/rank for both "Include" and "Subtract" filters)
  • [Rulers] "Dictionary/Save Ruler data" now uses filter if one is applied. This function also now saves coefficients, and handles a wider range of diacritic characters.
  • [Rulers] Added preliminary, highly experimental Ruler tool ("Dictionary/Ruler tool")


  • [HTML Exporter] Fixed background colour not correct
  • [HTML Exporter] CSS: Fixed style tag names not exporting correctly
  • [Preview area] If using Internet Explorer in preview area, articles now display with a hanging indent
  • [Tree View] Added "Ctrl+Up" and "Ctrl+Down" shortcut keys for "Move up" and "Move down" right-click commands
  • [Bilingual references] Improved this function with respect to 'knowing about' more types of diacritics for inexact matches
  • {INTERNAL} [DTD] Added basic 'free order' DTD option to allow order of nodes in Tree View to be changed freely without being constrained by the order defined in the DTD


  • [Styles] It is now possible to configure the separator character that appears between multiple selected items in a "list" type attribute
  • [XML Exporter] "Use filters" option is now correctly used when generating XML
  • [XML Exporter] "Include incomplete articles" option is now correctly applied
  • [DTD lists] FIXED: If you add a new list item to a list, it doesn't correctly add new labelset labels. This causes a crash while saving, corrupting the dictionary file.
  • [ODBC] Custom nodes and attributes now saved and loaded correctly
  • [ODBC] More database schema changes
    NEW TABLE: dtd_elements
    el_id		- Unique ID for element type
    el_classid	- TshwaneLex class type (C++ class)
    name		- Element name
    flags		- Flags (ELEMENTFLAG_NOCHILD etc)
    sortorder	- Index (sort order i.e. Nth element)
    NEW TABLE: dtd_attributes
    at_id		- Unique ID for attribute
    el_id		- ID of element to which this attribute belongs
    name		- Attribute name
    datatype	- Data type (e.g. integer, text, list1, listn, listnsorted)
    attrtype	- Attribute type (value, required, optional, fixed)
    defvalue	- Default attribute value
    list		- Optional list ID (if datatype is a list type and attribute is attached to a list)
    flags		- Flags
    sortorder	- Index (sort order i.e. Nth attribute)
    NEW TABLE: dtd_relations
    el_id		- Parent element ID
    child_id	- Child element ID
    type		- Relation type (one, zero or more, one or more, zero or more)
    flags		- Flags
    sortorder	- Relation index (sort order)
    NEW TABLE: dtd_entities
    entity		- Entity, e.g. 'amp'
    value		- Entity value e.g. '&' for '&'
    sortorder	- Index (sort order i.e. Nth entity)
    NEW TABLE: styles_order
    el_id		- Element ID
    type		- Element or attribute?
    item_id		- Element ID or attribute ID, depending on type
    visible		- 'Visible' status
    sortorder	- Index (sort order i.e. Nth output order item)
    CHANGED: lists
    sortorder	- Index (sort order i.e. Nth list)
    attr_s : type : TINYINT => INTEGER
    attr_i : type : TINYINT => INTEGER
    attr_b : type : TINYINT => INTEGER
    tree : type : TINYINT => INTEGER
    lists => dtd_lists
    list_items => dtd_listitems


  • [Edit label sets dialog] This dialog is now only used to edit cross-reference types ("Dictionary/Edit label sets" is now "Dictionary/Edit cross-reference types")
  • [DTD dialog] Editing of part of speech types and usage labels (and the labelsets thereof) is now done under "Attribute lists" in the "Dictionary/Customise DTD" dialog. Part of speech tags and usage labels can now also be deleted, as part of the new generic "list attribute" functionality. Users may now define any custom list types. Any DTD attribute may be configured to use any of the defined lists. There are three types of list attributes: 'select one item from a list', 'select multiple items from a list', and 'select multiple items from a list (sorted)' (multiple list items appear in their defined order regardless of the order in which they are selected by the user). Attributes of the currently selected lemma in the Tree View that are of a "select multiple from a list" type can be edited under "Attributes (F2)". Single-selection list type attributes are edited under "Attributes (F1)".
  • [Tree view] Cut/Paste right-click menu options now work with all node types, and use the DTD to determine when elements may or may not be pasted.
  • Added an introductory "Getting Started in TshwaneLex" guide, accessible from the 'Start/Programs/TshwaneLex' menu
  • Miscellaneous bugfixes and optimizations
  • [ODBC] Database schema changes:
    CHANGED TABLE: labelsets => ref_labelsets (Previously POS, Usage Label and cross-reference labelsets => now just cross-reference labelsets)
    	Rows: (type,id,language,name) => (id,name)
    	id			- Unique cross-reference type ID (currently is the index, i.e. Nth cross-reference type in the list)
    	name		- Cross-reference type name, e.g. "See"
    NEW TABLE: lists (Lists defined in the DTD, e.g. "Part of speech")
    	list_id		- Unique list ID
    	name		- List name
    NEW TABLE: list_items (Items of lists defined in the DTD, e.g. "noun")
    	item_id		- Unique item ID
    	list_id		- ID of list that this item belongs to
    	name		- Item name
    	sortorder	- Index of item in the list
    NEW TABLE: attr_list (Node attribute selected list items for "list" type attributes)
    	n_id		- ID of node/element in the document tree
    	attr_id		- DTD: Attribute type ID
    	item_id		- DTD: List item ID
    	sortorder	- Index of selected item, if more than one item is selected on this node attribute
    NEW TABLE: labelsets (Labelsets for lists defined in the DTD)
    	ls_index	- Labelset number (i.e. index of labelset in list of labelsets for list that this labelset belongs to)
    	list_id		- ID of list that this labelset belongs to
    	name		- Labelset name
    NEW TABLE: labels (Labels for labelsets of lists defined in the DTD)
    	ls_index	- Labelset number (i.e. index of labelset in list of labelsets for list that this labelset belongs to)
    	list_id		- ID of list that this label belongs to
    	item_id		- ID of list item that this label corresponds to
    	name		- The label itself


  • [Filter] The filter now works with all DTD element types, i.e. you can now create a filter to select lemmas that contain any specific element type
  • Changed noun class selection behaviour: no longer automatically selects 'noun' or 'pl noun' if you select a noun class
  • [Compare/merge] FIXED: When comparing a dictionary saved in a newer version of TshwaneLex against one saved in an older version (pre-DTD changes), almost all lemmas are shown as 'different' even if they're the same
  • [Cross-references] FIXED: In version 0.39, cross-references are displayed as hyperlinks in the preview area of the cross-reference editor
  • [Cross-references] FIXED: In version 0.39, the cross-reference cache is not always updated properly when a new cross-reference is created, which may under some circumstances lead to invalid cross-references being created


  • [DTD] Various fixes related to customisable DTDs, e.g. "Edit/Copy article text" works again
  • [DTD] Can now delete element (field) types in the DTD editor dialog
  • [Attributes (F1)] Fixed tab order problem of text edit boxes when using "TE (NEW)" or "Definition (NEW)"
  • [Statistics] Dictionary statistics ("Dictionary/Show statistics") now shows counts for all element types defined in the DTD
  • [Tree view] Added right-click menu shortcuts to open style dialog at selected element type
  • [Tree view] Added right-click menu shortcuts to toggle style 'visible' flag for selected element type
  • Fixed problem where incomplete markers disappeared
  • [Entities] Added support for (HTML/XML style) "entities" (e.g. &hellip; &trade; etc.). These can be configured either from "Format/Styles" or "Dictionary/Customise fields (DTD)"
  • [DTD / Styles dialog] Added "Help" section with basic general overview and introduction to DTDs and Styles in TshwaneLex


  • [Customisable DTD] Comprehensive and extensive changes to TshwaneLex's DTD (Document Type Definition / Schema) system now allow users to create custom field (node/element) and attribute types ("Dictionary/Customise fields (DTD)"). The corresponding styles system has also been rewritten, and a system has been added to configure the output order of fields and attributes ("Format/Styles").
  • [ODBC Schema change] Removed field "alphabet" from "languages" table
  • [DTD] Removed limit in default DTD whereby you could have only one definition per sense
  • [DTD] Removed limit in default DTD whereby you could have only one cross-reference node per sense
  • [License key system] Fixed problem with license not correctly installing for users without Administrator rights
  • [Preview area] (experimental:) The preview area (and several other places in TshwaneLex) can now use the Internet Explorer control for generating the preview. This has a number of benefits (e.g. superscript/subscript styles working) but still has some issues, and thus is disabled by default. Use "View/HTML window provider" to try out the still experimental Internet Explorer control. If you have problems, set it back to "wxWidgets".
  • Numerous miscellaneous bugfixes/improvements


  • [Formatted output] Fixed two spaces when translation equivalents separated by comma, before some combination terms, and in some cases after cross-references
  • [Formatted output] Fixed combination term outputted in RTF in tiny 1pt font
  • [Search] Fixed: Results window no longer has scroll bar
  • [ODBC] Fixed lemma timestamps loading one month too far in future
  • [ODBC] Fixed quote characters becoming double-quotes
  • [Import wordlist] Added new options (import 'notes' field from CSV file, can set text qualifier, and can add frequency values for homonyms)
  • [Styles] Added 'superscript' and 'subscript' styles. These are not yet active in the lemma preview area, but do work in the RTF and HTML exporters.


  • [Windows 98] Unicode characters now work in the text controls (F1)
  • [Compare/merge] Fixed crash if attempt to compare if current dictionary has never been saved yet
  • [Compare/merge] Can now select source and target languages to be compared (under "Settings")
  • [Compare/merge] Now shows overall statistics of comparison
  • [Error checks] 'Invalid bracket syntax' check now also checks that markup tags (%b %i %u) are correctly nested with respect to brackets (e.g. finds problems like (%isomething)%i
  • [Styles] Added lemma homonym number as a separate style
  • Numerous miscellaneous bugfixes/improvements


  • [Tools/Options] Keyboard shortcuts / 'macros' are now configurable via Tools/Options under the "Keyboard" tab. Keyboard shortcut configurations can also be saved to .tlkeys file or loaded from .tlkeys file. A shortcut key configuration file for Sotho and Venda characters with diacritics is now included with TshwaneLex
  • [Attributes (F1)] Fixed overly severe limit to number of text boxes (from about 50 to 1024)
  • [Automatic web search for currently selected lemma sign] Now works correctly with Unicode text (e.g. Chinese characters)
  • [Tools/Options] Font settings for various elements within TshwaneLex, such as the language window tree view, are now configurable via Tools/Options under the "Fonts" tab
  • [Cross-references] Fixed display problem with cross-references to subsenses displaying incorrectly. Also displays cross-references to senses under combinations more correctly now.
  • [Cross-reference editor dialog] No longer sets the document as dirty (i.e. 'unsaved changes') if no changes were made to the cross-reference
  • [Cross-reference editor dialog] When opened, now automatically selects first cross-referenced lemma
  • [Unicode] Fixed numerous problems loading and saving files with Unicode characters in filenames, as well as various other Unicode-related problems
  • [File menu] Fixed problem where MRU (Most Recently Used) filenames on "File" menu are garbled on Win98
  • [Import wordlist] One may now optionally enter a value for the 'notes' field of all newly created lemmas when importing words from a wordlist
  • [Import wordlist] One may now optionally force new lemmas to always be created for each word in the wordlist
  • [Import wordlist] Comma Separated Values support: One may now import more complex multi-field data sources, such as comma separated value files, assigning different columns/fields to different lemma components, e.g. "field 1 is lemma sign, ignore field 2, field 3 is part of speech"
  • [Edit label sets dialog] Fixed various dialog and control size/layout problems ("Dictionary/Edit label sets" dialog)
  • [Edit label sets dialog] Fixed problem of TshwaneLex hanging if a menu shortcut (e.g. "Alt+F") is pressed while this dialog is open
  • Fixed: Another problem of 'Tilde expansion hangs TshwaneLex if there is a tilde in the lemma sign and in a combination or usage example' (also in online dictionary)
  • Numerous miscellaneous bugfixes/improvements


  • [Sounds] Display small click-able loudspeaker image next to sounds in the preview area.
  • BUGFIX: Fixed: 'Tilde expansion hangs TshwaneLex if there is a tilde in the lemma sign and in a combination or usage example'
  • Function to automatically open Google search for currently selected lemma sign (Ctrl+Shift+W or "Lemma/Lemma sign web search")
  • [Debug] Added "Debug/Auto add sounds" tool (in development) to help automate process of mapping sound files to lemmas
  • [Tree view] Can now cut/paste usage example nodes to/from sense nodes (within same lemma)
  • [Tree view] Can now cut/paste translation equivalent nodes to/from sense nodes (within same lemma)
  • [Tree view] Can now cut/paste definition nodes to/from sense nodes (within same lemma)
  • BUGFIX: [Tree view] Fixed: 'Cutting and pasting nodes may result in incorrectly ordered nodes in certain cases for certain node types'
  • BUGFIX: [Tools/Options] Fixed: 'If one sets the default project folder, the default backup folder setting is cleared (and vice versa); both settings are also cleared if one "OKs" the dialog without changing anything'
  • BUGFIX: [Window resizing]: Fixed a problem where the language windows were not correctly resized when the main window was resized or maximized (usually most obviously resulting in the bottom of the language window being "cut off" or hidden behind the Windows taskbar)
  • BUGFIX: [ODBC]: Cross-reference descriptors not loading/saving correctly


  • BUGFIX: [Tree view] Sense nodes under combination nodes were not being automatically expanded
  • BUGFIX: [Filter (F5)] Filter "Reset" did not reset selected sub-filters (e.g. specific parts of speech, usage labels etc.)
  • BUGFIX: [Linked view] lemma sign on other side not using appropriate font from styles system (so e.g. Chinese lemma sign shows as hollow squares)
  • Shortcut key for "toggle incomplete" status of currently selected lemma (Ctrl+Shift+I)
  • [Cross-references] Can now customise the list of cross-reference types (add or rename types in "Dictionary/Edit label sets" dialog)
  • [Cross-references] Can now customise the output order for cross-reference types (e.g. "root" before "see") (use "Move up" and "Move down" in "Dictionary/Edit label sets" dialog)
  • BUGFIX: "Lemma/Duplicate article". If more than one POS or usage label had the same name, the wrong one would in some cases appear in the dupliated article of an article using such a POS or usage label
  • The usage of "~" as a substitute for the lemma sign in combinations and usage examples now allows the text substitution for the "Expand tildes" (Format (F4)) option to be overridden by the lexicographer in cases where the form of the lemma sign is different in the usage example or combination. This is done by adding the desired substitution in square brackets after the ~, e.g. "~[Kimataifa]"


  • BUGFIX: [Formatted output] Fixed bug where a combination attached to a sense caused all sense numbers on the lemma to be displayed
  • BUGFIX: [Compare/merge] Misc compare/merge fixes, including fixed crash in certain cases when using "delete left"
  • BUGFIX: [Exporters] "File/Export lemma signs" now fixed, and now correctly supports Unicode (exports as UTF8 format)
  • [Exporters] "File/export lemma signs" now uses the currently applied filter
  • OPTIMIZATION: [.tldict loader] Sped up file loading by 10 to 20%
  • [Search (F3)] Added support for regular expressions
  • BUGFIX: [Format (F4)] "Show frequency count" was not working


  • [Shoebox importer] Created a basic Shoebox database importer
  • Added shortcut keys for Tshivenda diacritics
  • [Sorting] Sorting table now configurable via a Unicode text file (not yet friendly, but is usable).
  • [Sorting] Added Tshivenda diacritics to default sorting table.
  • Added 'noun class gender' part of speech type.
  • [Sounds] Added sound dialog (menu item "Dictionary/Sounds"). Sounds (currently only .wav (wave) files) can be associated with nodes.
  • [Sounds] Tree view: right click on a node: can invoke sound dialog using new menu option 'Edit sounds'
  • [Sounds] Tree view: right click on a node: if a node has sounds, menu now includes a submenu from which sounds can be selected to be played.
  • [Sounds] Added sound play links in HTML preview (currently always on, but in future will have to be optional)
  • Added 'database last modified time'. Displayed in statistics window (i.e. when dictionary database is opened, or "Dictionary/Show statistics" menu option is used).
  • [Filter (F5)] Added a filter option to filter on whether or not a lemma has any sounds.
  • [Exporters] Added new text file exporter ("File/Export: Text"). (This is based on the new generic formatted exporter system)
  • [Unicode] "Edit / Copy article text" now works correctly for articles with Unicode characters.
  • [Exporters] "Export source language elements" and "Export target language elements" now export to text file instead of RTF. These also now support Unicode (text file is UTF8 encoded).
  • Removed limit on maximum word sense depth

Release Videos

Video: Presentation 20th CODH seminar: 'On how ChatGPT can take over all of the dictionary maker's tasks' - Watch the Video of the Presentation showing automated generative-AI-augmented lexicography in action:

Video: What's new in Feb+Mar 2018 Updates

The 2018 updates included many new features - some of them are presented in this video:

Video: Summary of new features in Version 2013 release

Over 150 new features were added in Version 2013. Here is a video showing some of them: