Commits

Sebastian Sdorra committed 5e29039

improve i18n support

Comments (0)

Files changed (5)

scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/App.java

       System.exit(1);
     }
 
+    I18n i18n = new I18n();
+
     if ((args.length == 0) || (subcommand == null) || help)
     {
-      parser.printUsage(output, I18n.getBundle());
+      parser.printUsage(output, i18n.getBundle());
     }
     else
     {
         session = createSession();
       }
 
-      subcommand.init(input, output, session);
+      subcommand.init(input, output, i18n, session);
       subcommand.run(arguments);
     }
   }

scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/Command.java

 @Retention(RetentionPolicy.RUNTIME)
 public @interface Command
 {
-  String value()           default "";
-  String usage()           default "";
+  String value()            default "";
+  String usage()            default "";
   boolean sessionRequired() default true;
 }

scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/I18n.java

 /**
  * Copyright (c) 2010, Sebastian Sdorra
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  * 3. Neither the name of SCM-Manager; nor the names of its
  *    contributors may be used to endorse or promote products derived from this
  *    software without specific prior written permission.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  * http://bitbucket.org/sdorra/scm-manager
- * 
+ *
  */
+
+
+
 package sonia.scm.cli;
 
+//~--- non-JDK imports --------------------------------------------------------
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+//~--- JDK imports ------------------------------------------------------------
+
+import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
 /**
  */
 public class I18n
 {
- 
-  public static ResourceBundle getBundle(){
-    return null;
-  };
-  
+
+  /** Field description */
+  public static final String RESOURCE_BUNDLE = "sonia.resources.i18n";
+
+  /** the logger for I18n */
+  private static final Logger logger = LoggerFactory.getLogger(I18n.class);
+
+  //~--- constructors ---------------------------------------------------------
+
+  /**
+   * Constructs ...
+   *
+   */
+  public I18n()
+  {
+    bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE);
+  }
+
+  //~--- get methods ----------------------------------------------------------
+
+  /**
+   * Method description
+   *
+   *
+   * @return
+   */
+  public ResourceBundle getBundle()
+  {
+    return bundle;
+  }
+
+  /**
+   * Method description
+   *
+   *
+   * @param key
+   *
+   * @return
+   */
+  public String getMessage(String key)
+  {
+    String value = key;
+
+    try
+    {
+      key = bundle.getString(key);
+    }
+    catch (MissingResourceException ex)
+    {
+      logger.warn("could not find resource for key {}", key);
+    }
+
+    return value;
+  }
+
+  //~--- fields ---------------------------------------------------------------
+
+  /** Field description */
+  private ResourceBundle bundle;
 }

scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/SubCommand.java

    *
    * @param input
    * @param output
+   * @param i18n
    * @param session
    */
-  public void init(BufferedReader input, PrintWriter output,
+  public void init(BufferedReader input, PrintWriter output, I18n i18n,
                    ScmClientSession session)
   {
     this.input = input;
     this.output = output;
+    this.i18n = i18n;
     this.session = session;
   }
 
 
       if (help)
       {
-        parser.printUsage(output, I18n.getBundle());
+        parser.printUsage(output, i18n.getBundle());
         System.exit(1);
       }
       else
   //~--- fields ---------------------------------------------------------------
 
   /** Field description */
+  protected I18n i18n;
+
+  /** Field description */
   protected BufferedReader input;
 
   /** Field description */

scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/SubCommandHandler.java

    * Method description
    *
    *
-   * @param prmtrs
+   *
+   * @param parameters
    *
    * @return
    *
   {
     String name = parameters.getParameter(0);
     CommandDescriptor desc = subCommands.get(name);
-    if ( desc != null )
+
+    if (desc != null)
     {
+
       // owner.stopOptionParsing();
-      setter.addValue( desc.createSubCommand() );
-    } 
-    else 
+      setter.addValue(desc.createSubCommand());
+    }
+    else
     {
-      throw new CmdLineException(owner, "command ".concat(name).concat(" not found"));
+      throw new CmdLineException(owner,
+                                 "command ".concat(name).concat(" not found"));
     }
+
     return 1;
   }