I ran into an awesome program the other day, The Hebrew Interlinear Bible. It lets you create your own translation of the bible by assigning the appropriate word to each hebrew word. When you make an association, every instance of that word in the entire old testament is "translated" as such. So, that was really cool and everything, but there are a few problems. As an individual issue, I seem to get a whole lot of I/O errors when doing simple things like scrolling through the pages or searching for a word. My husband (who runs linux) has no troubles at all, and neither do a lot of other people. But, even I/O errors aside, there are still some key features missing. The ability to export - at all. you can print the file, but there is no print dialog, it just sends the print command to your printer. I would like to have more than one translation going at a time, and the programs says you can, but I couldn't get it to work - mostly because of all the errors. I'd also like to add a new set of "strong's numbers", because, I feel that they are fundamentally flawed being based on the King James translation of the bible. This *is* possible, but then you loose the ability to use the real strong's numbers! The last actual problem with the program is that the creator hasn't released a new version since 2003, so I know none of these complaints will ever be taken care of. I didn't know I even wanted this program a few days ago, and now I can't do without it!
I looked online for a program that does a similar thing and found Paratext, but it was more like a gated community than a piece of software. I decided to make a list of what my ideal translation program would do...
Languages and Fonts:
Ability to translate texts from more than one language. Hebrew, Greek or any custom language the user could think up. Basically, you would name the language, pick a font and character mapping (unicode would be default but custom maps would be available for custom true type fonts) and then you would be able to assign new numbers and words to it. You would also be able to start out with a new blank language or base it off of an already existing one.
You would be able to apply a language or more than one language at the same time to a book and see what the differences are. An example would be Modern and Middle English. There are words that are the same, and there are words that have a completely different meaning today. This applies to all languages! not just English, and you should be able to use different sets of translation data for them.
One of the coolest things about the HIB was the built-in Hebrew word database. It knows which words are related to which other words, the only problem being that it was based on strong's numbering system which seriously needs updating. The creator of the program should not be expected to create a word and roots database for every language, so, there should be quick and easy ways for the user to do so. Everyone likes to use their own interpretation anyhow. The way this would work is by letting the user create base and root words, variations and assign "numbers". The numbers may only be for internal consistency for the actual program and the user wouldn't even have to see them. They would serve the same function as the base word data. Every word has a base and a root. Most of the time, they are the same word, but not always, and in the case of compounded words, they can have more than one of each. It would be nice to allow some way to include compound words into the system.
The first time the user opens a new language file and a book in that language, they can edit the options for any particular word. They would be able to denote a base word, if it is the base word, a root word, an etymology or notes section, if they like, about that word and create new translations of anticipated word combinations. For instance, if the first word they opened was Ran, they could set the root and base word as run, and then edit that base word and add runs, running, runner or any other word they liked as 'children' of the base of run. The, as they go through the book they are translating, and they come upon a new variation of run that they had forgotten, no big deal, they just type run in as the base word and it is automatically added in as a child of run. Why is this useful at all? Mostly for future reference, especially useful if you don't know a language well. Think of all the ways people have used the strong's reference numbers - now imagine they were words that meant something to you instead of numbers - you would be able to create word indexes, or create super-intelligent search algorithms. It would also be possible for someone to create a word relation index and then share it with another user but let them actually translate the word. This would be great for language students who are still struggling to know where words end and conjugations begin. This would also help anyone understand the original meaning of a text, since any translation is approximate - you could click on any word and see where it came from and view all the various translations possible for that word in various circumstances.
This base and root word function is nice, but the program would still 'work' without it. The functionality would just be limited, but someone could just manually enter the translation for each word individually and not worry about whether they are translating one instance of eretz as earth and when an and is added to it translate it as land.
The actual translation of the words would involve picking a translation for a specific word that will work for most circumstances, and then, when needed, choosing a separate translation for a single word instance. You could also denote if it is really the same word, but it needs to be translated a little differently in order to make sense in the language it is being translated in, or if it's actually a separate word that happens to be spelt alike. We can use our run example again. Run as in run a race could be denoted as having the base word of run1 and run as in I have a run in my pants could be denoted as having the base word of run2. In this case, they would share the same root word, because they really do mean the same thing in a twisted sort of way.
Note, I think it might be useful to have a tool specifically designed to create root/base relationship files for languages without having to open a text for that language.
Interlinear and Comparative:
One main function of this program would be to create interlinear texts. To one side you could have an accepted translation of the text, loaded in by yourself with markers added for chapters and an automatic parser for paragraphs, sentences or verses. These markers would have to be matched with your original source text file - and this would also be able to be done with a parser if possible, or a point and click system if necessary. The main section of the screen would be taken up with the main text to be edited. Underneath each word would be your own personal translation of the text, root words, base words, some other person's word for word translation of the same text and a place to create a more flowing version of the text with corrected word order, connecting words and grammar (or in some people's cases, theological manipulation). the order these appear, or if the appear at all would be up to each user, if you double click any of these rows, the edit screen pops up with whatever you selected in the focus. For instance, if you double click the root word spot, your cursor will be set in the root word edit box on the edit screen. You will still be able to click on any of these if they are empty (except the source text, obviously). Another, quicker, way to enter text would be to use the tab key - just click once in the appropriate row, a cursor would appear, and then type the word. Pressing tab would move you on to the next word. If you wanted to choose a separate meaning for the word, you would either double click the space or hit an F key, I think to automatically set it to the corresponding meaning.
The only thing that would work differently is the new 'flowing' version of the translation, each sentence/verse/paragraph should be visibly separate in the flowing version - this tool is for literal translations, after all. As above, these marks could be added all at once, or as you create the flowing part of the text.
You should also be able to change the source text - I think of instances where you have more then one version of the text you are translating, and you would need to choose the most likely version to trust in certain cases - these should be marked somehow when you do, however!
Output is a necessary step! You should be able to output the text as a PDF, plain text, xml, LaTex, html, odt, and others... this would be hard to do though .. I thin k that if the text always lives as xml, the export wouldn't be that bad.
It would be best if the output wasn't strictly for interlinear translations. You should be able to switch between pure interlinear, interlinear with a side translation, side by side comparisons, just the plain translation and so on. It could be / would be formatted in a two column format, with the mormon-style footnotes or commentary style footnotes, depending on the amount of footnote data involved. Just like in the mormon footnotes, these would be denoted in the footnote area by what type of footnote it is - for instance, a cross reference, a topical reference, a language note, commentary and so on. These types and their abbreviations would be set by the user.
This sort of works in with my idea for a lulu book generator, and if I could get that produced, I would certainly have this tool able to interface with it so you could go straight from translator to published book with only a few simple steps in between. But that, is really dreaming.