Translation: update system to support arguments, add some translations
[jvcard.git] / src / be / nikiroo / jvcard / launcher / Main.java
index 997cdecc4842b0759b183bbdc243c32137c3a0fa..1a77291c28903120079f430661ca181f7ac4a6dd 100644 (file)
@@ -9,6 +9,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import be.nikiroo.jvcard.Card;
+import be.nikiroo.jvcard.launcher.CardResult.MergeCallback;
 import be.nikiroo.jvcard.parsers.Format;
 import be.nikiroo.jvcard.remote.Command;
 import be.nikiroo.jvcard.remote.SimpleSocket;
@@ -27,7 +28,7 @@ import be.nikiroo.jvcard.resources.Trans.StringId;
  */
 public class Main {
        static public final String APPLICATION_TITLE = "jVcard";
-       static public final String APPLICATION_VERSION = "1.0-beta2-dev";
+       static public final String APPLICATION_VERSION = "1.0-beta3-dev";
 
        static private final int ERR_NO_FILE = 1;
        static private final int ERR_SYNTAX = 2;
@@ -35,15 +36,18 @@ public class Main {
        static private Trans transService;
 
        /**
-        * Translate the given {@link StringId}.
+        * Translate the given {@link StringId} into user text.
         * 
-        * @param id
+        * @param stringId
         *            the ID to translate
+        * @param values
+        *            the values to insert instead of the place holders in the
+        *            translation
         * 
-        * @return the translation
+        * @return the translated text with the given value where required
         */
-       static public String trans(StringId id) {
-               return transService.trans(id);
+       static public String trans(StringId id, String... values) {
+               return transService.trans(id, (String[]) values);
        }
 
        /**
@@ -167,6 +171,12 @@ public class Main {
                        }
                }
 
+               // Force headless mode if we run in forced-text mode
+               if (textMode != null && textMode) {
+                       // same as -Djava.awt.headless=true
+                       System.setProperty("java.awt.headless", "true");
+               }
+
                if (unicode) {
                        utf8();
                }
@@ -243,13 +253,18 @@ public class Main {
         * @param input
         *            a filename or a remote jvcard url with named resource (e.g.:
         *            <tt>jvcard://localhost:4444/coworkers.vcf</tt>)
+        * @param callback
+        *            the {@link MergeCallback} to call in case of conflict, or NULL
+        *            to disallow conflict management (the {@link Card} will not be
+        *            allowed to synchronise in case of conflicts)
         * 
         * @return the {@link Card}
         * 
         * @throws IOException
         *             in case of IO error or remoting not available
         */
-       static public Card getCard(String input) throws IOException {
+       static public CardResult getCard(String input, MergeCallback callback)
+                       throws IOException {
                boolean remote = false;
                Format format = Format.Abook;
                String ext = input;
@@ -265,12 +280,13 @@ public class Main {
                        remote = true;
                }
 
-               Card card = null;
+               CardResult card = null;
                try {
                        if (remote) {
-                               card = Optional.syncCard(input);
+                               card = Optional.syncCard(input, callback);
                        } else {
-                               card = new Card(new File(input), format);
+                               card = new CardResult(new Card(new File(input), format), false,
+                                               false, false);
                        }
                } catch (IOException ioe) {
                        throw ioe;