001package org.hl7.fhir.utilities.i18n; 002 003import java.io.IOException; 004 005import org.hl7.fhir.utilities.TextFile; 006import org.hl7.fhir.utilities.Utilities; 007 008public class XLIFFProducer extends LanguageFileProducer { 009 010 011 public XLIFFProducer(String folder) { 012 super(folder); 013 } 014 015 private String fileName; 016 private StringBuilder xml; 017 int i = 0; 018 019 @Override 020 public void start(String fileName, String contextId, String contextDesc, String baseLang, String targetLang) { 021 this.fileName = fileName; 022 xml = new StringBuilder(); 023 ln("<?xml version=\"1.0\" ?>\r\n"); 024 ln("<xliff xmlns=\"urn:oasis:names:tc:xliff:document:2.0\" version=\"2.0\">"); 025 ln(" <file source-language=\""+baseLang+"\" target-language=\""+targetLang+"\" id=\""+contextId+"\" original=\""+contextDesc+"\" datatype=\"KEYVALUEJSON\">"); 026 ln(" <body>"); 027 } 028 029 @Override 030 public void makeEntry(String id, String ref, String context, String source, String target) { 031 i++; 032 ln(" <trans-unit id=\""+id+"\" resname=\""+ref+"\">"); 033 if (context != null) { 034 ln(" <notes>"); 035 ln(" <note id=\"n"+i+"\">"+Utilities.escapeXml(context)+"</note>"); 036 ln(" </notes>"); 037 } 038 ln(" <source>"+Utilities.escapeXml(source)+"</source>"); 039 ln(" <target>"+Utilities.escapeXml(target)+"</target>"); 040 ln(" </trans-unit>"); 041 } 042 043 @Override 044 public void finish() throws IOException { 045 ln(" </body>"); 046 ln(" </file>"); 047 ln("</xliff>"); 048 TextFile.stringToFile(xml.toString(), Utilities.path(getFolder(), fileName+".xliff")); 049 } 050 051 protected void ln(String line) { 052 xml.append(line+"\r\n"); 053 } 054}