package com.xenoage.zong.tools.voc; import java.io.IOException; import java.io.PrintStream; import com.xenoage.utils.jse.JsePlatformUtils; import com.xenoage.utils.jse.lang.LangManager; import com.xenoage.utils.jse.lang.LanguageReader; import com.xenoage.utils.lang.Language; import com.xenoage.utils.lang.VocID; import com.xenoage.zong.Voc; import com.xenoage.zong.Zong; /** * Creates a PO file (GNU gettext) with all vocab from {@link Voc} * for the language "de". * * {@link JsePlatformUtils} is used. * * @author Andreas Wenger */ public class POCreator { public static void main(String... args) throws IOException { JsePlatformUtils.init(POCreator.class.getName()); Language lang = LanguageReader.read(LangManager.defaultLangPath, "de"); POCreator.write(Voc.values(), lang, "de", "de.po"); } public static void write(VocID[] voc, Language lang, String langID, String filename) throws IOException { PrintStream out = new PrintStream(filename, "UTF-8"); //header out.println("# " + Zong.getNameAndVersion("Vocabulary")); out.println("# " + Zong.copyright); out.println("msgid \"\""); out.println("msgstr \"\""); out.println("\"Project-Id-Version: " + Zong.getNameAndVersion("Vocabulary") + "\\n\""); out.println("\"POT-Creation-Date: \\n\""); out.println("\"PO-Revision-Date: \\n\""); out.println("\"Last-Translator: Andreas Wenger <andi@xenoage.com>\\n\""); out.println("\"Language-Team: Xenoage Software <info@xenoage.com>\\n\""); out.println("\"MIME-Version: 1.0\\n\""); out.println("\"Content-Type: text/plain; charset=utf-8\\n\""); out.println("\"Content-Transfer-Encoding: 8bit\\n\""); if (langID != null) out.println("\"Language: " + langID + "\\n\""); //entries for (VocID v : voc) { out.println(); out.println("msgctxt \"" + e(v.toString()) + "\""); out.println("msgid \"" + e(v.getDefaultValue()) + "\""); out.println("msgstr \"" + e(lang != null ? lang.get(v) : "") + "\""); } out.close(); } private static String e(String s) { return s.replace("\"", "\\\"").replace("\n", "\\n"); } }