00001 /** 00002 * C-JDBC: Clustered JDBC. 00003 * Copyright (C) 2002-2004 French National Institute For Research In Computer 00004 * Science And Control (INRIA). 00005 * Contact: c-jdbc@objectweb.org 00006 * 00007 * This library is free software; you can redistribute it and/or modify it 00008 * under the terms of the GNU Lesser General Public License as published by the 00009 * Free Software Foundation; either version 2.1 of the License, or any later 00010 * version. 00011 * 00012 * This library is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 00015 * for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public License 00018 * along with this library; if not, write to the Free Software Foundation, 00019 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00020 * 00021 * Initial developer(s): Nicolas Modrzyk 00022 * Contributor(s): ______________________. 00023 */ 00024 00025 package org.objectweb.cjdbc.common.i18n; 00026 00027 import java.text.MessageFormat; 00028 import java.util.ResourceBundle; 00029 00030 /** 00031 * This class defines a I18N 00032 * 00033 * @author <a href="mailto:Nicolas.Modrzyk@inria.fr">Nicolas Modrzyk </a> 00034 * @version 1.0 00035 */ 00036 public abstract class I18N 00037 { 00038 /** 00039 * Returns associated sentence to that key 00040 * 00041 * @param key the key to find in the translation file 00042 * @param bundle then translation bundle to use 00043 * @return the corresponding sentence of the key if not found 00044 */ 00045 public static String get(ResourceBundle bundle, String key) 00046 { 00047 try 00048 { 00049 return bundle.getString(key); 00050 } 00051 catch (Exception e) 00052 { 00053 return key; 00054 } 00055 } 00056 00057 /** 00058 * Returns translated key with instanciated parameters 00059 * 00060 * @param bundle then translation bundle to use 00061 * @param key the key to find in translation file. 00062 * @param parameter the parameter value 00063 * @return the corresponding sentence with key and parameters 00064 */ 00065 public static String get(ResourceBundle bundle, String key, boolean parameter) 00066 { 00067 return MessageFormat.format(get(bundle, key), new Object[]{String 00068 .valueOf(parameter)}); 00069 } 00070 00071 /** 00072 * Returns translated key with instanciated parameters 00073 * 00074 * @param bundle then translation bundle to use 00075 * @param key the key to find in translation file. 00076 * @param parameter the parameter value 00077 * @return the corresponding sentence with key and parameters 00078 */ 00079 public static String get(ResourceBundle bundle, String key, int parameter) 00080 { 00081 return MessageFormat.format(get(bundle, key), new Object[]{String 00082 .valueOf(parameter)}); 00083 } 00084 00085 /** 00086 * Returns translated key with instanciated parameters 00087 * 00088 * @param bundle then translation bundle to use 00089 * @param key the key to find in translation file. 00090 * @param parameter the parameter value 00091 * @return the corresponding sentence with key and parameters 00092 */ 00093 public static String get(ResourceBundle bundle, String key, long parameter) 00094 { 00095 return MessageFormat.format(get(bundle, key), new Object[]{String 00096 .valueOf(parameter)}); 00097 } 00098 00099 /** 00100 * Replace <code>REPLACE_CHAR</code> in the translated message with 00101 * parameters. If you have more parameters than charaters to replace, 00102 * remaining parameters are appended as a comma separated list at the end of 00103 * the message. 00104 * 00105 * @param bundle then translation bundle to use 00106 * @param key the key to find in the translation file 00107 * @param parameters to put inside square braquets 00108 * @return the corresponding sentence of the key if not found 00109 */ 00110 public static String get(ResourceBundle bundle, String key, 00111 Object[] parameters) 00112 { 00113 return MessageFormat.format(get(bundle, key), parameters); 00114 } 00115 00116 /** 00117 * Same as above but implies creation of an array for the parameter 00118 * 00119 * @param bundle then translation bundle to use 00120 * @param key to translate 00121 * @param parameter to put in translation 00122 * @return translated message 00123 */ 00124 public static String get(ResourceBundle bundle, String key, Object parameter) 00125 { 00126 return MessageFormat.format(get(bundle, key), new Object[]{parameter}); 00127 } 00128 00129 }