Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Purpose: Export source and translation segments of user selected
- * files into TMX-file
- * #Files: Writes 'selected_files_<date_time>.tmx' in the current project's root
- * #File format: TMX v.1.4
- * #Details: http://wp.me/p3fHEs-6g
- *
- * @author Kos Ivantsov
- * @date 2013-08-12
- * @version 0.3
- */
- import javax.swing.JFileChooser
- import org.omegat.util.StaticUtils
- import org.omegat.util.TMXReader
- import static javax.swing.JOptionPane.*
- import static org.omegat.util.Platform.*
- def prop = project.projectProperties
- if (!prop) {
- final def title = 'Export TMX from selected files'
- final def msg = 'Please try again after you open a project.'
- showMessageDialog null, msg, title, INFORMATION_MESSAGE
- return
- }
- def curtime = new Date().format("MMM-dd-yyyy_HH.mm")
- srcroot = new File(prop.getSourceRoot())
- def fileloc = prop.projectRoot+'selected_files_'+curtime+'.tmx'
- exportfile = new File(fileloc)
- def sourceroot = prop.getSourceRoot().toString() as String
- JFileChooser fc = new JFileChooser(
- currentDirectory: srcroot,
- dialogTitle: "Choose files to export",
- fileSelectionMode: JFileChooser.FILES_ONLY,
- //the file filter must show also directories, in order to be able to look into them
- multiSelectionEnabled: true)
- if(fc.showOpenDialog() != JFileChooser.APPROVE_OPTION) {
- console.println "Canceled"
- return
- }
- if (!(fc.selectedFiles =~ sourceroot.replaceAll(/\\+/, '\\\\\\\\'))) {
- console.println "Selection outside of ${prop.getSourceRoot()} folder"
- final def title = 'Wrong file(s) selected'
- final def msg = "Files must be in ${prop.getSourceRoot()} folder."
- showMessageDialog null, msg, title, INFORMATION_MESSAGE
- return
- }
- if (prop.isSentenceSegmentingEnabled())
- segmenting = TMXReader.SEG_SENTENCE
- else
- segmenting = TMXReader.SEG_PARAGRAPH
- def sourceLocale = prop.getSourceLanguage().toString()
- def targetLocale = prop.getTargetLanguage().toString()
- exportfile.write("", 'UTF-8')
- exportfile.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", 'UTF-8')
- exportfile.append("<!DOCTYPE tmx SYSTEM \"tmx11.dtd\">\n", 'UTF-8')
- exportfile.append("<tmx version=\"1.4\">\n", 'UTF-8')
- exportfile.append(" <header\n", 'UTF-8')
- exportfile.append(" creationtool=\"OmegaTScripting\"\n", 'UTF-8')
- exportfile.append(" segtype=\"" + segmenting + "\"\n", 'UTF-8')
- exportfile.append(" o-tmf=\"OmegaT TMX\"\n", 'UTF-8')
- exportfile.append(" adminlang=\"EN-US\"\n", 'UTF-8')
- exportfile.append(" srclang=\"" + sourceLocale + "\"\n", 'UTF-8')
- exportfile.append(" datatype=\"plaintext\"\n", 'UTF-8')
- exportfile.append(" >\n", 'UTF-8')
- fc.selectedFiles.each{
- fl = "${it.toString()}" - "$sourceroot"
- exportfile.append(" <prop type=\"Filename\">" + fl + "</prop>\n", 'UTF-8')
- }
- exportfile.append(" </header>\n", 'UTF-8')
- exportfile.append(" <body>\n", 'UTF-8')
- def count = 0
- fc.selectedFiles.each{
- fl = "${it.toString()}" - "$sourceroot"
- files = project.projectFiles
- files.each{
- if ( "${it.filePath}" != "$fl" ) {
- println "Skipping to the next file"
- }else{
- it.entries.each {
- def info = project.getTranslationInfo(it)
- def changeId = info.changer
- def changeDate = info.changeDate
- def creationId = info.creator
- def creationDate = info.creationDate
- def alt = 'unknown'
- if (info.isTranslated()) {
- source = StaticUtils.makeValidXML(it.srcText)
- target = StaticUtils.makeValidXML(info.translation)
- exportfile.append(" <tu>\n", 'UTF-8')
- exportfile.append(" <tuv xml:lang=\"" + sourceLocale + "\">\n", 'UTF-8')
- exportfile.append(" <seg>" + "$source" + "</seg>\n", 'UTF-8')
- exportfile.append(" </tuv>\n", 'UTF-8')
- exportfile.append(" <tuv xml:lang=\"" + targetLocale + "\"", 'UTF-8')
- exportfile.append(" changeid=\"${changeId ?: alt }\"", 'UTF-8')
- exportfile.append(" changedate=\"${ changeDate > 0 ? new Date(changeDate).format("yyyyMMdd'T'HHmmss'Z'") : alt }\"", 'UTF-8')
- exportfile.append(" creationid=\"${creationId ?: alt }\"", 'UTF-8')
- exportfile.append(" creationdate=\"${ creationDate > 0 ? new Date(creationDate).format("yyyyMMdd'T'HHmmss'Z'") : alt }\"", 'UTF-8')
- exportfile.append(">\n", 'UTF-8')
- exportfile.append(" <seg>" + "$target" + "</seg>\n", 'UTF-8')
- exportfile.append(" </tuv>\n", 'UTF-8')
- exportfile.append(" </tu>\n", 'UTF-8')
- count++;
- }
- }
- }
- }
- }
- exportfile.append(" </body>\n", 'UTF-8')
- exportfile.append("</tmx>", 'UTF-8')
- final def title = 'TMX file written'
- final def msg = "$count TU's written to " + exportfile.toString()
- console.println msg
- showMessageDialog null, msg, title, INFORMATION_MESSAGE
- return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement