Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #include "i18nlangtag/languagetagicu.hxx"
11 : #include "i18nlangtag/languagetag.hxx"
12 :
13 :
14 : // static
15 1090 : icu::Locale LanguageTagIcu::getIcuLocale( const LanguageTag & rLanguageTag )
16 : {
17 1090 : if (rLanguageTag.isIsoLocale())
18 : {
19 : // The simple case.
20 1090 : const com::sun::star::lang::Locale& rLocale = rLanguageTag.getLocale();
21 1090 : if (rLocale.Country.isEmpty())
22 1 : return icu::Locale( OUStringToOString( rLocale.Language, RTL_TEXTENCODING_ASCII_US).getStr());
23 : return icu::Locale(
24 : OUStringToOString( rLocale.Language, RTL_TEXTENCODING_ASCII_US).getStr(),
25 1089 : OUStringToOString( rLocale.Country, RTL_TEXTENCODING_ASCII_US).getStr());
26 : }
27 :
28 : /* TODO: could we optimize this for the isIsoODF() case where only a script
29 : * is added? */
30 :
31 : // Let ICU decide how it wants a BCP47 string stuffed into its Locale.
32 : return icu::Locale::createFromName(
33 0 : OUStringToOString( rLanguageTag.getBcp47(), RTL_TEXTENCODING_ASCII_US).getStr());
34 : }
35 :
36 :
37 : // static
38 374 : icu::Locale LanguageTagIcu::getIcuLocale( const LanguageTag & rLanguageTag, const OUString & rVariant )
39 : {
40 : /* FIXME: how should this work with any BCP47? */
41 : return icu::Locale(
42 : OUStringToOString( rLanguageTag.getLanguage(), RTL_TEXTENCODING_ASCII_US).getStr(),
43 : OUStringToOString( rLanguageTag.getCountry(), RTL_TEXTENCODING_ASCII_US).getStr(),
44 374 : OUStringToOString( rVariant, RTL_TEXTENCODING_ASCII_US).getStr());
45 : }
46 :
47 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|