summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/resource/XResourceBundle.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/resource/XResourceBundle.idl')
-rw-r--r--offapi/com/sun/star/resource/XResourceBundle.idl276
1 files changed, 276 insertions, 0 deletions
diff --git a/offapi/com/sun/star/resource/XResourceBundle.idl b/offapi/com/sun/star/resource/XResourceBundle.idl
new file mode 100644
index 000000000000..1bdd7cf562cb
--- /dev/null
+++ b/offapi/com/sun/star/resource/XResourceBundle.idl
@@ -0,0 +1,276 @@
+/*************************************************************************
+ *
+ * $RCSfile: XResourceBundle.idl,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: mi $ $Date: 2000-11-06 09:21:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef __com_sun_star_resource_XResourceBundle_idl__
+#define __com_sun_star_resource_XResourceBundle_idl__
+
+#ifndef __com_sun_star_container_XNameAccess_idl__
+#include <com/sun/star/container/XNameAccess.idl>
+#endif
+
+#ifndef __com_sun_star_lang_Locale_idl__
+#include <com/sun/star/lang/Locale.idl>
+#endif
+
+
+//=============================================================================
+
+module com { module sun { module star { module resource {
+
+//=============================================================================
+/** Resource bundles contain locale-specific objects.
+
+ <p>When your program needs a locale-specific resource, such as
+ <code>String</code> for example, your program can load it from the
+ resource bundle that is appropriate for the current user's locale. In
+ this way, you can write program code that is largely independent of
+ the user's locale, which isolates most, if not all, of the
+ locale-specific information in resource bundles.
+
+ <p>This allows you to write programs that can:
+
+ <UL type=SQUARE>
+
+ <LI> be easily localized, or translated, into different
+ languages.
+
+ <LI> handle multiple locales at once.
+
+ <LI> be easily modified later to support even more locales.
+
+ </UL>
+
+ <P> One resource bundle is, conceptually, a set of related services
+ that supports <code>XResourceBundle</code>. Each related service of
+ <code>XResourceBundle</code> has the same base name plus an
+ additional component that identifies its locale. For example, suppose
+ your resource bundle is named <code>MyResources</code>. The first
+ service you are likely to implement is the default resource bundle,
+ which has the same name as its family--<code>MyResources</code>. You
+ can also provide as many related locale-specific services as you need.
+
+ For example, perhaps you would provide a German one named
+ <code>MyResources_de</code>.
+
+ <P>
+ Each related implementation of <code>XResourceBundle</code> contains
+ the same items, but the items have been translated for the locale
+ represented by that <code>XResourceBundle</code> implementation. For
+ example, both <code>MyResources</code> and <code>MyResources_de</code>
+ may have a <code>String</code> that is used on a button for
+ confirming operations. In <code>MyResources</code> the
+ <code>String</code> may contain <code>OK</code> and in
+ <code>MyResources_de</code> it may contain <code>Gut</code>.
+
+ <P>
+ If there are different resources for different countries, you
+ can make specializations: for example, <code>MyResources_de_CH</code>
+ is the German language (de) in Switzerland (CH). If you only want to
+ modify some of the resources in the specialization, you can do so.
+
+ <P>
+ When your program needs a locale-specific object, it loads
+
+ the <code>XResourceBundle</code> implementation using the
+ <code>com.sun.star.resource.XResourceBundleLoader</code> service:
+
+ <listing>
+ XResourceBundle myResources =
+ xLoader->getBundle("MyResources", currentLocale);
+ </listing>
+
+ <p>The first argument specifies the family name of the resource
+ bundle that contains the object in question. The second argument
+ indicates the desired locale. <code>getBundle</code> uses these two
+ arguments to construct the name of the <code>ResourceBundle</code>
+ subclass it should load according to the following specifications.
+
+ <P>The resource bundle lookup searches for services with various
+ suffixes on the basis of (1) the desired locale and (2) the current
+ default locale as returned by Locale.getDefault(), and (3) the root
+ resource bundle (baseclass), in the following order from lower-level
+ (more specific) to parent-level (less specific):
+ <p> baseclass + "_" + language1 + "_" + country1 + "_" + variant1
+ <BR> baseclass + "_" + language1 + "_" + country1
+ <BR> baseclass + "_" + language1
+ <BR> baseclass + "_" + language2 + "_" + country2 + "_" + variant2
+ <BR> baseclass + "_" + language2 + "_" + country2
+ <BR> baseclass + "_" + language2
+ <BR> baseclass
+
+ <P> For example, if the current default locale is <TT>en_US</TT>, the
+ locale that the caller is interested in is <TT>fr_CH</TT>, and the
+ resource bundle name is <TT>MyResources</TT>; resource bundle lookup
+ will search for the following services, in order:
+ <BR> <TT>MyResources_fr_CH
+ <BR> MyResources_fr
+ <BR> MyResources_en_US
+ <BR> MyResources_en
+ <BR> MyResources</TT>
+
+ <P> The result of the lookup is a service, but that service may be
+ backed by a property file on disk. If a lookup fails,
+ <code>getBundle()</code> throws a
+ <code>MissingResourceException</code>.
+
+ <P> The base service <strong>must</strong> be fully qualified (for
+ example, <code>myPackage::MyResources</code>, not just
+ <code>MyResources</code>).
+
+ <P> Resource bundles contain key/value pairs. The keys uniquely
+ identify a locale-specific object in the bundle. Here is an
+ example of a <code>XResourceBundle</code> implementation that contains
+ two key/value pairs:
+
+ <listing>
+ class MyResource extends com.sun.star.resource.XResourceBundle
+ {
+ // some queryInterface stuff
+ // ...
+ public final Object getDirectElement(String key)
+ {
+ if (key.equals("okKey")) return "Ok";
+ if (key.equals("cancelKey")) return "Cancel";
+ return null;
+ }
+ }
+ </listing>
+
+ <p>Keys are always <code>String</code>s. In this example, the keys
+ are <code>OkKey</code> and <code>CancelKey</code>. In the above
+ example, the values are also <code>String</code>s--<code>OK</code>
+ and <code>Cancel</code>--but they do not have to be. The values can
+ be any type of object.
+
+ <P> You retrieve an object from resource bundle using the appropriate
+ get method. Because <code>OkKey</code> and <code>CancelKey</code>
+ are both strings, you use <code>getByName</code> to retrieve them:
+
+ <listing>
+ button1 = new Button(myResourceBundle.getByName("OkKey").getString());
+ button2 = new Button(myResourceBundle.getByName("CancelKey").getString());
+ </listing>
+
+ <p>The get methods all require the key as an argument and return
+ the object if found. If the object is not found, the get methods
+ throw a <code>NoSuchElementException</code>.
+
+ <P> <STRONG>NOTE:</STRONG> You should always supply a base service
+ with no suffixes. This will be the class of "last resort" if a
+ locale is requested that does not exist. In fact, you must provide
+ <I>all</I> of the services in any given inheritance chain for which
+ you provide a resource. For example, if you provide
+ <TT>MyResources_fr_BE</TT>, you must provide <I>both</I>
+ <TT>MyResources</TT> <I>and</I> <TT>MyResources_fr</TT>, or the
+ resource bundle lookup will not work right.
+
+ <P>You do not have to restrict yourself to using a single family of
+ <code>ResourceBundle</code>s. For example, you could have a set of
+ bundles for exception messages, <code>ExceptionResources</code>
+ (<code>ExceptionResources_fr</code>, <code>ExceptionResources_de</code>, ...),
+ and one for widgets, <code>WidgetResource</code> (<code>WidgetResources_fr</code>,
+ <code>WidgetResources_de</code>, ...); breaking up the resources however you like.
+
+ @see MissingResourceException
+ @see Locale
+ @version 0.1 26 May 1999
+ @author Mark Davis
+ @author Markus Meyer
+ @deprecated draft
+*/
+[ uik(3C1F4FA0-1358-11D3-ABBB00A0-249D5590), ident( "XResourceBundle", 1.0 ) ]
+interface XResourceBundle: com::sun::star::container::XNameAccess
+{
+ //-------------------------------------------------------------------------
+ /** contains the parent bundle of this bundle.
+
+ <p>The parent bundle is searched by the method
+ <method>XNameAccess::getByName</method> when this bundle does not
+ contain a particular resource.
+ */
+ [attribute] XResourceBundle Parent;
+
+ //-------------------------------------------------------------------------
+ /** @returns
+ the locale for this resource bundle.
+
+ <p>This function can be used to determine whether the
+ resource bundle that is returned really corresponds to the
+ requested locale or is a fallback.
+
+ */
+ com::sun::star::lang::Locale getLocale();
+
+ //-------------------------------------------------------------------------
+ /** @returns
+ an object from a resource bundle or NULL if no resource
+ exists.
+
+ <p>It does not look in the parents.
+ */
+ any getDirectElement( [in] string key );
+
+};
+
+//=============================================================================
+
+}; }; }; };
+
+#endif