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}