At this point, I'm prepared to say there are no good tools for writing a dictionary. There are tools out there, but they tend to be very tricky to use well, assuming the hobbyist conlanger can even afford the cash or the time to invest in such tools. And for tools to let people collaborate on a lexicon? Forget it.
So, I just write my dictionaries as text. Here's an example lemma for Kahtsaai,
No spreadsheet is going to produce anything that looks like this without a great deal of programming. It might be nice to have a nifty tool to manage a dictionary entry like this, but a general tool to do that would be so complex that I'm not sure it would be worth the effort.
Because I want my grammars and dictionaries to look good, I had to pick something nicer than a plain text file or even HTML. I went with LaTeX, a very sophisticated typesetting system that started out in the world of mathematics and the sciences, but which humanities folks are starting to learn to appreciate. Unlike a word processor, which is WYSIWYG, "what you see is what you get," LaTeX takes a different approach. You type up your document in a special typesetting language, and then you feed that to a LaTeX program which spits out your document after making all the typesetting decisions and formatting for you. Paraphrasing, you tell LaTeX what you intend, and it produces the nicest possible output matching your intent.
In LaTeX simple things are simple. You could typeset a printed letter in it, and except for some messing about at the start of the file, what you had to type wouldn't look much different from an email (though the output would be far nicer). But, LaTeX is programmable, and is thus capable of very sophisticated things. Here, for example, is a semantic map which was described entirely in TikZ, a graphics language that exists for LaTeX,
It is this ability to do sophisticated things when you need to that makes LaTeX such a powerful tool.
Due to an early encounter with old Latin grammars, I prefer to typeset my grammars with bold face for text in the language, italics for translations, and just the normal font for English explanations. But, rather than tell LaTeX to bold everything in my conlang, I write a macro which I enclose all my conlang in. That way, if one day I decide to format everything differently, I just have to change the macro, run the LaTeX program again, and voilà! out comes a new version of my grammar with everything changed to the new way. I wrote a set of macros to typeset my dictionary entries in the way I prefer.
Reasons a conlanger might want to use LaTeX:
- It's programmable, and thus easy to make sweeping formatting changes with minimal effort.
- Modern versions speak UNICODE natively, so it's good for fun character sets and accents galore.
- Modern versions can also use almost any font you want.
- The output is gorgeous.
- Conlangers love tables, and LaTeX has very powerful table capabilities.
- Cross-references are useful in grammars, and LaTeX has a powerful reference system, which can produce clickable citations in a PDF.