diff --git a/intl/locale/idl/nsILanguageAtom.idl b/intl/locale/idl/nsILanguageAtom.idl new file mode 100644 index 00000000000..4919d2ca132 --- /dev/null +++ b/intl/locale/idl/nsILanguageAtom.idl @@ -0,0 +1,47 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Mozilla Public + * 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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corp. Portions created by Netscape are Copyright (C) 2000 Netscape + * Communications Corp. All Rights Reserved. + * + * Contributor(s): + * Erik van der Poel + */ + +#include "nsISupports.idl" +#include "nsIAtom.idl" + +/* + * The nsILanguageAtom interface encapsulates a language code (as used in + * HTML LANG attributes, for example). This interface also provides access + * to the corresponding "language group" atom, to be used in the font + * engine with preferences, for example. + * + * The nsILanguageAtom interface is similar to nsIAtom, in the sense that + * one can compare 2 pointers for equality. The nsILanguageAtomService + * creates nsILanguageAtoms by first lower-casing the language (since it's + * case-insensitive according to RFC 1766), and then looking up that + * language in a set of existing nsILanguageAtom objects. If it already + * exists, that object is returned. If not, a new one is created and added + * to the set for future retrieval. + */ +[scriptable, uuid(a6cf911e-15b3-11d2-932e-00805f8add32)] +interface nsILanguageAtom : nsISupports +{ + readonly attribute wstring language; + readonly attribute nsIAtom languageGroup; + + boolean LanguageIs(in wstring aLanguage); +}; diff --git a/intl/locale/idl/nsILanguageAtomService.idl b/intl/locale/idl/nsILanguageAtomService.idl new file mode 100644 index 00000000000..bffc0183754 --- /dev/null +++ b/intl/locale/idl/nsILanguageAtomService.idl @@ -0,0 +1,47 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Mozilla Public + * 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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corp. Portions created by Netscape are Copyright (C) 2000 Netscape + * Communications Corp. All Rights Reserved. + * + * Contributor(s): + * Erik van der Poel + */ + +#include "nsISupports.idl" +#include "nsILanguageAtom.idl" + +/* + * The nsILanguageAtomService creates nsILanguageAtoms based on a given + * language or charset. See the nsILanguageAtom documentation for further + * info. When a charset is looked up, the resulting nsILanguageAtom does + * not contain a language (since the language cannot be known in the general + * case), but the language group is set appropriately. + */ +[scriptable, uuid(a6cf911f-15b3-11d2-932e-00805f8add32)] +interface nsILanguageAtomService : nsISupports +{ + nsILanguageAtom LookupLanguage(in wstring aLanguage); + nsILanguageAtom LookupCharSet(in wstring aCharSet); +}; + +%{C++ + +#define NS_LANGUAGEATOMSERVICE_CID \ + {0xa6cf9120, 0x15b3, 0x11d2, {0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32}} +#define NS_LANGUAGEATOMSERVICE_PROGID \ + "component://netscape/intl/nslanguageatomservice" + +%}