|
10 | 10 | package com.maxprograms.javapm; |
11 | 11 |
|
12 | 12 | import java.io.File; |
| 13 | +import java.io.FileOutputStream; |
13 | 14 | import java.io.IOException; |
14 | 15 | import java.lang.System.Logger; |
15 | 16 | import java.lang.System.Logger.Level; |
16 | 17 | import java.nio.charset.Charset; |
17 | | -import java.nio.file.Files; |
18 | 18 | import java.text.MessageFormat; |
19 | 19 | import java.util.ArrayList; |
20 | 20 | import java.util.HashMap; |
|
29 | 29 | import com.maxprograms.converters.Convert; |
30 | 30 | import com.maxprograms.converters.EncodingResolver; |
31 | 31 | import com.maxprograms.converters.FileFormats; |
32 | | -import com.maxprograms.converters.Join; |
33 | 32 | import com.maxprograms.converters.Utils; |
34 | 33 | import com.maxprograms.languages.LanguageUtils; |
| 34 | +import com.maxprograms.xml.Document; |
| 35 | +import com.maxprograms.xml.Element; |
| 36 | +import com.maxprograms.xml.SAXBuilder; |
| 37 | +import com.maxprograms.xml.XMLOutputter; |
35 | 38 |
|
36 | 39 | public class CreateXliff { |
37 | 40 |
|
@@ -147,9 +150,44 @@ private static void generateXliff(String src, String xliff, String srcLang, Stri |
147 | 150 | } |
148 | 151 | xliffs.add(xlf); |
149 | 152 | } |
150 | | - Join.join(xliffs, xliff); |
151 | | - for (String xlf : xliffs) { |
152 | | - Files.delete(new File(xlf).toPath()); |
| 153 | + join(xliffs, src, xliff, srcLang, tgtLang, xliff2); |
| 154 | + } |
| 155 | + |
| 156 | + private static void join(List<String> xliffs, String src, String xliff, String srcLang, String tgtLang, |
| 157 | + boolean xliff2) throws SAXException, IOException, ParserConfigurationException { |
| 158 | + Document doc = new Document(null, "xliff", null, null); |
| 159 | + Element root = doc.getRootElement(); |
| 160 | + if (xliff2) { |
| 161 | + root.setAttribute("version", "2.0"); |
| 162 | + root.setAttribute("srcLang", srcLang); |
| 163 | + if (!tgtLang.isEmpty()) { |
| 164 | + root.setAttribute("trgLang", tgtLang); |
| 165 | + } |
| 166 | + root.setAttribute("xmlns", "urn:oasis:names:tc:xliff:document:2.0"); |
| 167 | + root.setAttribute("xmlns:mtc", "urn:oasis:names:tc:xliff:matches:2.0"); |
| 168 | + root.setAttribute("xmlns:mda", "urn:oasis:names:tc:xliff:metadata:2.0"); |
| 169 | + } else { |
| 170 | + root.setAttribute("version", "1.2"); |
| 171 | + root.setAttribute("xmlns", "urn:oasis:names:tc:xliff:document:1.2"); |
| 172 | + root.setAttribute("xsi:schemaLocation", |
| 173 | + "urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd"); |
| 174 | + root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); |
| 175 | + } |
| 176 | + SAXBuilder builder = new SAXBuilder(); |
| 177 | + for (int i = 0; i < xliffs.size(); i++) { |
| 178 | + Document d = builder.build(xliffs.get(i)); |
| 179 | + Element r = d.getRootElement(); |
| 180 | + Element file = r.getChild("file"); |
| 181 | + String original = file.getAttributeValue("original"); |
| 182 | + String relative = Utils.getRelativePath(src, original); |
| 183 | + file.setAttribute("original", relative); |
| 184 | + root.addContent("\n"); |
| 185 | + root.addContent(file); |
| 186 | + } |
| 187 | + XMLOutputter outputter = new XMLOutputter(); |
| 188 | + outputter.preserveSpace(true); |
| 189 | + try (FileOutputStream out = new FileOutputStream(xliff)) { |
| 190 | + outputter.output(doc, out); |
153 | 191 | } |
154 | 192 | } |
155 | 193 |
|
|
0 commit comments