File paths can contain characters outside of the valid range for XML. When storing an alternative translation in the project TMX, the name of the source file is recorded in a <prop type="file">
element; when the file name contains XML-invalid characters, this would cause the project TMX to fail to load with an error similar to the following:
19768: Error: Failed to load specified project! (TF_LOAD_ERROR) 19768: Error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[33,29] 19768: Error: Message: An invalid XML character (Unicode: 0x7) was found in the element content of the document. 19768: Error: at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:596) 19768: Error: at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83) 19768: Error: at org.omegat.util.TMXReader2.parseProp(TMXReader2.java:321) 19768: Error: at org.omegat.util.TMXReader2.parseTu(TMXReader2.java:236) 19768: Error: at org.omegat.util.TMXReader2.readTMX(TMXReader2.java:159) 19768: Error: at org.omegat.core.data.ProjectTMX.<init>(ProjectTMX.java:95) 19768: Error: at org.omegat.core.data.RealProject.loadTranslations(RealProject.java:1055) 19768: Error: at org.omegat.core.data.RealProject.loadProject(RealProject.java:371) 19768: Error: at org.omegat.core.data.ProjectFactory.loadProject(ProjectFactory.java:68) 19768: Error: at org.omegat.gui.main.ProjectUICommands$6.lambda$0(ProjectUICommands.java:478) 19768: Error: at org.omegat.core.Core.executeExclusively(Core.java:373) 19768: Error: at org.omegat.gui.main.ProjectUICommands$6.doInBackground(ProjectUICommands.java:478) 19768: Error: at javax.swing.SwingWorker$1.call(SwingWorker.java:295) 19768: Error: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 19768: Error: at javax.swing.SwingWorker.run(SwingWorker.java:334) 19768: Error: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 19768: Error: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 19768: Error: at java.lang.Thread.run(Thread.java:745)
Fixed in r9819. The text is normalized (XML-invalid chars are replaced with U+0020 SPACE) both when writing the TMX, and when creating
EntryKey
s for loaded source (thus allowing alternative translations loaded from TMX to match entries as intended).Fixed in the released version 4.1.2 of OmegaT.
Didier