Many people rightly fear and loathe the MultiTerm Convert program from SDL and despite many well-written tutorials for its use, intelligent, competent adult translators have become all too frequent callers on the suicide hotline in Maidenhead, UK.
Thus I've cast my lot with members of an Open Source rescue team dedicated to squeezing a little gain for the victims of all this pain and prescribing appropriate remedies for what ails so many of us by developing the Sodrat Software Suite. The solutions here are quick, but they aren't half as dirty as what some pay good money for.
The script below is deliberately unoptimized. It represents less work than drinking a cup of strong, hot coffee on a cold and clammy autumn morning. Anyone who feels like improving on this thing and making it more robust and useful is encouraged to do so. It was written quickly to cover what I believe is the most common case for this type of data conversion. An 80 or 90% solution is 100% satisfactory in most cases. Copy the script from below, put it in a text file and change the extension to VBS, or get the tool, a readme file and a bit of test data by clicking the icon link above.
To run the conversion, just put your tab delimited text file in the folder with the VBS script and then drag it onto the script's icon. The MultiTerm XML import file will be created in the same folder and use the name of the original file with terms as the basis of its name.
Drag & Drop Script for Converting Tab-delimited
Bilingual Data to MultiTerm XML
ForReading = 1
Set objArgs = WScript.Arguments
inFile = objArgs(0) ' name of the file dropped on the script
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(inFile, ForReading)
' read first line for language field names
strLine = objFile.ReadLine
arrFields = Split(strLine, chr(9))
outText = " "UTF-16" & chr(34) & "?>" & chr(13) & "" & chr(13) "
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
if StrLine <> "" then
arrTerms = Split(strLine, vbTab)
outText = outText & "" & chr(13) " & chr(13)
for i = 0 to (UBound(arrTerms) )
outText = outText & chr(9) & "" & chr(13) & chr(9) & chr (9) _ " & chr(13)
& "" & chr(13)
' write the term
outText = outText & chr(9) & chr (9) & chr (9) & "" & chr(13) & chr(9) & " " & _
arrTerms(i) & "
next
outText = outText & "
end if
Loop
outText = outText & "
objFile.Close
outFile = inFile & "-MultiTerm.xml"
' second param is overwrite, third is unicode
Set objFile = objFSO.CreateTextFile(outFile,1,1)
objFile.Write outText
objFile.Close