summaryrefslogtreecommitdiffstats
path: root/include/i18nlangtag/languagetagicu.hxx
blob: e2c9f7ce2b0e29b89f955daf354019d32481255d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * 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/.
 */

#ifndef INCLUDED_I18NLANGTAG_LANGUAGETAGICU_HXX
#define INCLUDED_I18NLANGTAG_LANGUAGETAGICU_HXX

#include <sal/config.h>
#include <i18nlangtag/i18nlangtagdllapi.h>
#include <rtl/ustring.hxx>
#include <unicode/locid.h>

class LanguageTag;


/** Interface LanguageTag to ICU's icu::Locale

    Separated from LanguageTag to not pollute the entire code base (and thus
    makefiles) with ICU header file inclusion, only the few code actually using
    this needs to know about ICU, which it did anyway.
*/
class SAL_WARN_UNUSED I18NLANGTAG_DLLPUBLIC LanguageTagIcu
{
public:

    /** Obtain language tag as ICU icu::Locale.

        If the language tag is a "pure" ISO locale (see
        LanguageTag::getLocale()) that is directly constructed, otherwise it is
        converted using the available ICU mechanisms.

        Always resolves an empty tag to the system locale.
     */
    static  icu::Locale     getIcuLocale( const LanguageTag & rLanguageTag );

    /** Obtain language tag as ICU icu::Locale, adding variant data.

        From the LanguageTag only language and country are used to construct
        the icu:Locale, the variant field is copied from rVariant.
        The 4th arg of icu::Locale "keywords" (eg: for collation)

        Always resolves an empty tag to the system locale.
     */
    static  icu::Locale     getIcuLocale( const LanguageTag & rLanguageTag, const OUString & rVariant, const OUString & rKeywords);
};

#endif  // INCLUDED_I18NLANGTAG_LANGUAGETAGICU_HXX

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */