diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /intl/locale/mozIOSPreferences.idl | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'intl/locale/mozIOSPreferences.idl')
-rw-r--r-- | intl/locale/mozIOSPreferences.idl | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/intl/locale/mozIOSPreferences.idl b/intl/locale/mozIOSPreferences.idl new file mode 100644 index 0000000000..f3e1c12440 --- /dev/null +++ b/intl/locale/mozIOSPreferences.idl @@ -0,0 +1,95 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +%{C++ +// Define Contractid and CID +#define MOZ_OSPREFERENCES_CID \ + { 0x65944815, 0xe9ae, 0x48bd, { 0xa2, 0xbf, 0xf1, 0x10, 0x87, 0x20, 0x95, 0x0c } } + +#define MOZ_OSPREFERENCES_CONTRACTID "@mozilla.org/intl/ospreferences;1" +%} + +[scriptable, uuid(65944815-e9ae-48bd-a2bf-f1108720950c)] +interface mozIOSPreferences : nsISupports +{ + const long dateTimeFormatStyleNone = 0; + const long dateTimeFormatStyleShort = 1; + const long dateTimeFormatStyleMedium = 2; + const long dateTimeFormatStyleLong = 3; + const long dateTimeFormatStyleFull = 4; + + /** + * Returns a list of locales used by the host environment for UI + * localization. + * + * The result is a sorted list and we expect that the OS attempts to + * use the top locale from the list for which it has data. + * + * Each element of the list is a valid locale ID that can be passed to ICU + * and ECMA402 Intl APIs, + * At the same time each element is a valid BCP47 language tag that can be + * used for language negotiation. + * + * Example: ["en-US", "de", "pl", "sr-Cyrl", "zh-Hans-HK"] + */ + readonly attribute Array<ACString> systemLocales; + + /** + * Returns a list of locales used by host environment for regional + * preferences internationalization. + * + * The result is a sorted list and we expect that the OS attempts to + * use the top locale from the list for which it has data. + * + * Each element of the list is a valid locale ID that can be passed to ICU + * and ECMA402 Intl APIs, + * + * Example: ["en-US", "de", "pl", "sr-Cyrl", "zh-Hans-HK"] + */ + readonly attribute Array<ACString> regionalPrefsLocales; + + /** + * Returns the best locale that the host environment is localized to. + * + * The result is a valid locale ID and it should be + * used for all APIs that do not handle language negotiation. + * + * In any scenario involving language negotiation, systemLocales should + * be preferred over the single value. + * + * Example: "zh-Hans-HK" + */ + readonly attribute ACString systemLocale; + + /** + * Returns the best possible date/time pattern for the host environment + * taking into account date/time regional settings user defined in the OS + * preferences. + * + * Notice, that depending on the OS it may take into account those settings + * for all locales, or only if the locale matches the OS locale. + * + * It takes two integer arguments that must be valid `dateTimeFormatStyle*` + * values (see constants defined above), and a string representing a + * BCP47 locale. + * + * It returns a string with a LDML date/time pattern. + * + * If no pattern can be retrieved from the host environment, it will + * lookup the best available pattern from ICU. + * + * Notice, this is a pretty unique method in this API in that it does + * more than look up into host environment. + * The reason for that is that constructing the right date/time pattern + * requires a lot of OS-specific logic and it ends up being easier to just + * handle all scenarios, including with cases where we fail to retrieve + * anything from the OS, here. + */ + AUTF8String getDateTimePattern(in long timeFormatStyle, + in long dateFormatStyle, + [optional] in ACString locale); +}; |