Skip to content

Commit 8a98952

Browse files
committed
Ollowed generation of XLIFF 2.0, 2.1 and 2.2
1 parent 1f9c611 commit 8a98952

4 files changed

Lines changed: 40 additions & 18 deletions

File tree

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ Running `.\createxliff.cmd` or `./createxliff.sh` without parameters displays he
2121
```text
2222
Usage:
2323
24-
createxliff.cmd [-help] -src sourceFolder -xliff xliffFile -srcLang sourceLanguage [-tgtLang targetLanguage] [-reuse] [-2.0]
24+
createxliff.sh [-help] -src sourceFolder -xliff xliffFile -srcLang sourceLanguage [-enc characterSet]
25+
[-tgtLang targetLanguage] [-reuse] [-2.0] [-2.0] [-2.2]
2526
2627
Where:
2728
@@ -33,6 +34,8 @@ Where:
3334
-tgtLang: (optional) target language code
3435
-reuse: (optional) reuse existing translations
3536
-2.0: (optional) generate XLIFF 2.0
37+
-2.1: (optional) generate XLIFF 2.1
38+
-2.2: (optional) generate XLIFF 2.2
3639
```
3740

3841
## Import translated XLIFF

src/com/maxprograms/javapm/CreateXliff.java

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public static void main(String[] args) {
5151
String srcLang = "";
5252
String tgtLang = "";
5353
String encoding = "ISO-8859-1";
54-
boolean xliff2 = false;
54+
String version = "1.2";
5555
boolean reuse = false;
5656

5757
for (int i = 0; i < arguments.length; i++) {
@@ -76,7 +76,13 @@ public static void main(String[] args) {
7676
encoding = arguments[i + 1];
7777
}
7878
if (arg.equals("-2.0")) {
79-
xliff2 = true;
79+
version = "xliff20";
80+
}
81+
if (arg.equals("-2.1")) {
82+
version = "xliff21";
83+
}
84+
if (arg.equals("-2.2")) {
85+
version = "xliff22";
8086
}
8187
if (arg.equals("-reuse")) {
8288
reuse = true;
@@ -114,14 +120,14 @@ public static void main(String[] args) {
114120
return;
115121
}
116122
try {
117-
generateXliff(srcFolder, xliff, srcLang, tgtLang, encoding, xliff2, reuse);
123+
generateXliff(srcFolder, xliff, srcLang, tgtLang, encoding, version, reuse);
118124
} catch (IOException | SAXException | ParserConfigurationException e) {
119125
logger.log(Level.ERROR, e.getMessage(), e);
120126
}
121127
}
122128

123129
private static void generateXliff(String src, String xliff, String srcLang, String tgtLang, String encoding,
124-
boolean xliff2, boolean reuse) throws IOException, SAXException, ParserConfigurationException {
130+
String version, boolean reuse) throws IOException, SAXException, ParserConfigurationException {
125131
File srcFolder = new File(src);
126132
if (!srcFolder.exists()) {
127133
throw new IOException(Messages.getString("CreateXliff.3"));
@@ -172,7 +178,10 @@ private static void generateXliff(String src, String xliff, String srcLang, Stri
172178
params.put("tgtLang", tgtLang);
173179
}
174180
params.put("embed", "yes");
175-
params.put("xliff20", xliff2 ? "yes" : "no");
181+
if (version.startsWith("xliff2")) {
182+
params.put(version, "yes");
183+
}
184+
params.put("version", version);
176185
List<String> result = Convert.run(params);
177186
if (Constants.ERROR.equals(result.get(0))) {
178187
throw new IOException(result.get(1));
@@ -181,15 +190,15 @@ private static void generateXliff(String src, String xliff, String srcLang, Stri
181190
String name = source.substring(0, source.lastIndexOf('.'));
182191
String translations = name + "_" + tgtLang + ".properties";
183192
if (new File(translations).exists()) {
184-
recoverTranslations(translations, xlf, xliff2, encoding);
193+
recoverTranslations(translations, xlf, version, encoding);
185194
}
186195
}
187196
xliffs.add(xlf);
188197
}
189-
join(xliffs, src, xliff, srcLang, tgtLang, xliff2);
198+
join(xliffs, src, xliff, srcLang, tgtLang, version);
190199
}
191200

192-
private static void recoverTranslations(String translations, String xlf, boolean xliff2, String encoding)
201+
private static void recoverTranslations(String translations, String xlf, String version, String encoding)
193202
throws IOException, SAXException, ParserConfigurationException {
194203
Properties props;
195204
try (FileInputStream is = new FileInputStream(new File(translations))) {
@@ -201,7 +210,7 @@ private static void recoverTranslations(String translations, String xlf, boolean
201210
SAXBuilder builder = new SAXBuilder();
202211
Document doc = builder.build(xlf);
203212
Element root = doc.getRootElement();
204-
if (xliff2) {
213+
if (version.startsWith("xliff2")) {
205214
recoverXliff2(root, props);
206215
} else {
207216
recoverXliff1(root, props);
@@ -259,16 +268,26 @@ private static void recoverXliff2(Element root, Properties props) {
259268
}
260269

261270
private static void join(List<String> xliffs, String src, String xliff, String srcLang, String tgtLang,
262-
boolean xliff2) throws SAXException, IOException, ParserConfigurationException {
271+
String version) throws SAXException, IOException, ParserConfigurationException {
263272
Document doc = new Document(null, "xliff", null, null);
264273
Element root = doc.getRootElement();
265-
if (xliff2) {
266-
root.setAttribute("version", "2.0");
274+
if (version.startsWith("xliff2")) {
275+
switch (version) {
276+
case "xliff20":
277+
root.setAttribute("version", "2.0");
278+
break;
279+
case "xliff21":
280+
root.setAttribute("version", "2.1");
281+
break;
282+
case "xliff22":
283+
root.setAttribute("version", "2.2");
284+
break;
285+
}
267286
root.setAttribute("srcLang", srcLang);
268287
if (!tgtLang.isEmpty()) {
269288
root.setAttribute("trgLang", tgtLang);
270289
}
271-
root.setAttribute("xmlns", "urn:oasis:names:tc:xliff:document:2.0");
290+
root.setAttribute("xmlns", version.equals("xliff22") ? "urn:oasis:names:tc:xliff:document:2.2" : "urn:oasis:names:tc:xliff:document:2.0");
272291
root.setAttribute("xmlns:mtc", "urn:oasis:names:tc:xliff:matches:2.0");
273292
root.setAttribute("xmlns:mda", "urn:oasis:names:tc:xliff:metadata:2.0");
274293
} else {
@@ -286,7 +305,7 @@ private static void join(List<String> xliffs, String src, String xliff, String s
286305
String original = file.getAttributeValue("original");
287306
String relative = Utils.getRelativePath(src, original);
288307
file.setAttribute("original", relative);
289-
if (xliff2) {
308+
if (version.startsWith("xliff2")) {
290309
file.setAttribute("id", "" + i);
291310
}
292311
root.addContent("\n");

src/com/maxprograms/javapm/javapm.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ CreateXliff.5=Catalog file does not exist
77
CreateXliff.6='srx' folder not found
88
CreateXliff.7=SRX file does not exist
99
CreateXliff.8=There are no '.properties' files to process
10-
CreateXliff.9=Usage:\n\n {0} [-help] -src sourceFolder -xliff xliffFile -srcLang sourceLanguage [-enc characterSet] [-tgtLang targetLanguage] [-reuse] [-2.0]\n\nWhere:\n\n -help: (optional) display this help information and exit\n -src: source code folder\n -xliff: XLIFF file to generate\n -srcLang: source language code\n -enc: (optional) character set code for .properties files; default: ISO-8859-1\n -tgtLang: (optional) target language code\n -reuse: (optional) reuse existing translations\n -2.0: (optional) generate XLIFF 2.0\n\n
10+
CreateXliff.9=Usage:\n\n {0} [-help] -src sourceFolder -xliff xliffFile -srcLang sourceLanguage [-enc characterSet] \n [-tgtLang targetLanguage] [-reuse] [-2.0] [-2.0] [-2.2]\n\nWhere:\n\n -help: (optional) display this help information and exit\n -src: source code folder\n -xliff: XLIFF file to generate\n -srcLang: source language code\n -enc: (optional) character set code for .properties files; default: ISO-8859-1\n -tgtLang: (optional) target language code\n -reuse: (optional) reuse existing translations\n -2.0: (optional) generate XLIFF 2.0\n -2.1: (optional) generate XLIFF 2.1\n -2.2: (optional) generate XLIFF 2.2\n\n
1111
CreateXliff.10=Cannot reuse translations if 'tgtLang' is not set
1212
MergeXliff.0=Missing '-src' parameter
1313
MergeXliff.1=Missing '-xliff' parameter

src/com/maxprograms/javapm/javapm_es.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ CreateXliff.5=El archivo de catálogo no existe
77
CreateXliff.6=No se encontró la carpeta 'srx'
88
CreateXliff.7=El archivo SRX no existe
99
CreateXliff.8=No hay archivos '.properties' para procesar
10-
CreateXliff.9=Uso:\n\n {0} [-help] -src carpeta -xliff archivoXliff -srcLang idiomaOrigen [-enc characterSet] [-tgtLang idiomaDestino] [-2.0]\n\nDónde:\n\n -help: (opcional) mostrar esta información de ayuda y salir\n -src: carpeta de código fuente\n -xliff: archivo XLIFF a generar\n -srcLang: código del idioma origen\n -enc: (opcional) código de juego de caracteres para archivos .properties; valor predeterminado: ISO-8859-1\n -tgtLang: (opcional) código de idioma de destino\n -reuse: (opcional) reutilizar traducciones existentes\n -2.0: (opcional) generar XLIFF 2.0\n\n
10+
CreateXliff.9=Uso:\n\n {0} [-help] -src carpeta -xliff archivoXliff -srcLang idiomaOrigen [-enc characterSet] \n [-tgtLang idiomaDestino] [-2.0] [-2.1] [-2.2]\n\nDonde:\n\n -help: (opcional) mostrar esta información de ayuda y salir\n -src: carpeta de código fuente\n -xliff: archivo XLIFF a generar\n -srcLang: código del idioma origen\n -enc: (opcional) código de juego de caracteres para archivos .properties; valor predeterminado: ISO-8859-1\n -tgtLang: (opcional) código de idioma de destino\n -reuse: (opcional) reutilizar traducciones existentes\n -2.0: (opcional) generar XLIFF 2.0\n -2.1: (opcional) generar XLIFF 2.1\n -2.2: (opcional) generar XLIFF 2.2\n\n
1111
CreateXliff.10=No se pueden reutilizar las traducciones si 'tgtLang' no está definido
1212
MergeXliff.0=Falta el parámetro '-src'
1313
MergeXliff.1=Falta el parámetro '-xliff'
@@ -18,4 +18,4 @@ MergeXliff.5=El archivo seleccionado no es un documento XLIFF
1818
MergeXliff.6=Idioma de destino no establecido
1919
MergeXliff.7=Error al exportar TMX: {0}
2020
MergeXliff.8=El archivo no es un paquete .properties de Java
21-
MergeXliff.9=Uso:\n\n{0} [-help] -src carpeta -xliff archivoXliff [-unapproved] [-export]\n\nDónde:\n\n -help: (opcional) mostrar esta información de ayuda y salir\n -src: carpeta de código fuente\n -xliff: archivo XLIFF a importar\n -unapproved: (opcional) aceptar traducciones de segmentos no aprobados\n -export: (opcional) generar archivo TMX a partir de segmentos aprobados\n\n
21+
MergeXliff.9=Uso:\n\n{0} [-help] -src carpeta -xliff archivoXliff [-unapproved] [-export]\n\nDonde:\n\n -help: (opcional) mostrar esta información de ayuda y salir\n -src: carpeta de código fuente\n -xliff: archivo XLIFF a importar\n -unapproved: (opcional) aceptar traducciones de segmentos no aprobados\n -export: (opcional) generar archivo TMX a partir de segmentos aprobados\n\n

0 commit comments

Comments
 (0)