Here's a tool I think we've needed for a while.
In order to translate the game into other languages it would be very useful if we had a program that was capable of parsing all the tables and missions used in a mod and generating a tstrings.tbl from them. While this might sound difficult I did once create a very simple of these in Java in a couple of hours (what I did with the code has proved to be more of a mystery).
Generating a table is actually pretty easy. Translatable strings are present in both the tables and the mission files in this format.
XSTR("Text", Index)
In the case of most of our mods and games the index will be -1 (or an invalid number resulting from a cut and paste) as keeping track of the indexes during development is a pain in the arse. In the case of FS2 each of those indexes correctly correspond to an entry in tstrings.tbl. The FS2 table looks like this.
#default
0, "The main FreeSpace 2 campaign."
1, "Special Operations Command has selected you for a dangerous covert assignment. Will you accept?"
2, "Special Operations Command requests your participation in a high-risk rescue mission. Will you volunteer?"
3, "Act 3"
4, "Shivan Gauntlet"
5, "A gauntlet module in which you face waves of Shivan fighters and warships."
<<etc>>
3419, "So where's the Iceni, Command? Let’s end this now."
3420, "Protect Tatenen"
#end
At a rudimentary level (which is what I coded previously) all a program has to do in order to generate a table is parse in each table and mission in sequence, look for XSTR, append the text to Tstrings.tbl and change the index in the table/mission to correspond to the one it just wrote to Tstrings.tbl.
The problem with this approach is that you end up with a Tstrings.tbl with lots of duplicate entries. A better solution (and one

obviously used since their table doesn't have so many duplicates) is to check that each entry to Tstrings.tbl is unique.
In addition any generator should have the ability to run in two modes, the first where it simply generates a completely new table is easy. The second however should be able to take an existing Tstrings.tbl and append any new entries to it (and preferably discard any that are no longer used too). This second mode would be the one that was useful when dealing with patches to existing campaigns etc.
From what I can see there are two ways this could work.
1) An independent stand alone program - This would be a very good project for any prospective coder looking to join the team as it doesn't even require looking at the FS2_Open codebase. All they need after all is a few example missions and tables. It has the advantage of being much simpler to code too.
2) An integral part of FRED. - This would be a lot more complicated. It would allow the user to add new messages or remove old ones and have the tables automatically updated to feature them.
On the other hand while the stand alone is something that is only run a few times during the dev cycle this feature would run constantly and therefore has much more of a chance of causing problems when different developers have different versions of the tables or missions.
Personally I'd rather see the standalone.
Anyway, I wanted to get this proposal written down. If everyone agrees with me on a standalone program then we have something we can turn over to the next prospective SCP coder we get.

Comments and crits welcome.