001: package org.tigris.scarab.tools.localization;
002:
003: /* ================================================================
004: * Copyright (c) 2000 CollabNet. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions are
008: * met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in the
015: * documentation and/or other materials provided with the distribution.
016: *
017: * 3. The end-user documentation included with the redistribution, if
018: * any, must include the following acknowlegement: "This product includes
019: * software developed by CollabNet (http://www.collab.net/)."
020: * Alternately, this acknowlegement may appear in the software itself, if
021: * and wherever such third-party acknowlegements normally appear.
022: *
023: * 4. The hosted project names must not be used to endorse or promote
024: * products derived from this software without prior written
025: * permission. For written permission, please contact info@collab.net.
026: *
027: * 5. Products derived from this software may not use the "Tigris" name
028: * nor may "Tigris" appear in their names without prior written
029: * permission of CollabNet.
030: *
031: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
032: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
033: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
034: * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
035: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
036: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
037: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
038: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
039: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
040: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
041: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
042: *
043: * ====================================================================
044: *
045: * This software consists of voluntary contributions made by many
046: * individuals on behalf of CollabNet.
047: */
048:
049: import org.tigris.scarab.tools.ScarabLocalizationTool;
050:
051: /**
052: * Interface identifying instances capable of being localized
053: * using a <code>ScarabLocalizationTool</code> instance.
054: * <p>
055: * In order to localize throwables, one could reuse the following pattern:
056: * <code>
057: * public class MyLocalizedThrowable extends MyThrowableClass implements Localizable
058: * {
059: * // may be null
060: * private ScarabLocalizationTool localizer;
061: *
062: * // Set the localizer to be used in later calls to {@link #getLocalizedMessage()}
063: * // @param theLocalizer the localizer (may be <code>null</code>)
064: * public void setLocalizer(final ScarabLocalizationTool theLocalizer)
065: * {
066: * localizer = theLocalizer;
067: * }
068: *
069: * // Return the localized message for that throwable, if a localizer
070: * // was defined using {@link #setLocalizer(ScarabLocalizationTool)}
071: * // @return the localized message.
072: * public String getLocalizedMessage()
073: * {
074: * // we effectively implement an IoC pattern, made necessary by
075: * // the design of the Throwable base class
076: * if (localizer != null)
077: * {
078: * return toString(localizer);
079: * }
080: * else
081: * {
082: * return super.getLocalizedMessage();
083: * }
084: * }
085: * }
086: * </code>
087: * This should be particularly thought when one subclasses instances from a
088: * different framework, because that framework may be or may become localized
089: * one day.
090: *
091: * @version $Id: Localizable.java 9104 2004-05-10 21:04:51Z dabbous $
092: * @author <a href="mailto:dabbous@saxess.com">Hussayn Dabbous</a>
093: */
094:
095: public interface Localizable {
096: /**
097: * resolve the instance to the ScarabLocalizationTool.DEFAULT_LOCALE
098: * Note: This method should return english messages independent of
099: * any l10n settings. If a ScarabLocalizationTool instance is
100: * available, it is preferreable to use
101: * {@link resolve(ScarabLocalizationTool) } instead.
102: * @return the resolved String
103: */
104: public String getMessage();
105:
106: /**
107: * resolve the message according to the parameters of the
108: * given ScarabLocalizationTool instance. It may contain L10NMessage
109: * instances and Exceptions. The parameters should be resolved
110: * recursively if necessary.
111: * @return
112: */
113: public String getMessage(ScarabLocalizationTool l10n);
114:
115: }
|