22#include <rtl/ustring.hxx>
23#include <rtl/string.hxx>
37 return nOverride ? ((nOverride ==
kSAME) ? nLang : nOverride) : nLang;
111struct IsoLangEngEntry
117struct IsoLangNoneStdEntry
124struct IsoLangOtherEntry
127 const char* mpLanguage;
812 return OUString( OUString::createFromAscii(
maLanguage) +
"-" + OUString::createFromAscii(
maCountry));
814 return OUString::createFromAscii(
maLanguage);
819 return lang::Locale( OUString::createFromAscii(
maLanguage), OUString::createFromAscii(
maCountry), OUString());
842 return OUString::createFromAscii(
mpBcp47);
969 css::lang::Locale & rLocale,
bool bIgnoreOverride )
975 rLocale.Language =
"en";
976 rLocale.Country =
"US";
977 rLocale.Variant.clear();
985Label_Override_Lang_Locale:
990 if (rBcp47Entry.mnLang == nLang)
992 if (bIgnoreOverride || !rBcp47Entry.mnOverride)
995 rLocale.Country = OUString::createFromAscii(rBcp47Entry.maCountry);
996 rLocale.Variant = rBcp47Entry.getTagString();
999 else if (rBcp47Entry.mnOverride && pBcp47EntryOverride != &rBcp47Entry)
1001 pBcp47EntryOverride = &rBcp47Entry;
1002 nLang = getOverrideLang(rBcp47Entry.mnLang, rBcp47Entry.mnOverride);
1003 goto Label_Override_Lang_Locale;
1011 if (rScriptEntry.mnLang == nLang)
1013 if (bIgnoreOverride || !rScriptEntry.mnOverride)
1016 rLocale.Country = OUString::createFromAscii(rScriptEntry.maCountry);
1017 rLocale.Variant = rScriptEntry.getTagString();
1020 else if (rScriptEntry.mnOverride && pScriptEntryOverride != &rScriptEntry)
1022 pScriptEntryOverride = &rScriptEntry;
1023 nLang = getOverrideLang(rScriptEntry.mnLang, rScriptEntry.mnOverride);
1024 goto Label_Override_Lang_Locale;
1032 if (rEntry.mnLang == nLang)
1034 if (bIgnoreOverride || !rEntry.mnOverride)
1036 rLocale.Language = OUString::createFromAscii(rEntry.maLanguage);
1037 rLocale.Country = OUString::createFromAscii(rEntry.maCountry);
1038 rLocale.Variant.clear();
1041 else if (rEntry.mnOverride && pEntryOverride != &rEntry)
1043 pEntryOverride = &rEntry;
1044 nLang = getOverrideLang(rEntry.mnLang, rEntry.mnOverride);
1045 goto Label_Override_Lang_Locale;
1054 if (pPrivateEntry->mnLang == nLang)
1057 rLocale.Country.clear();
1058 rLocale.Variant = OUString::createFromAscii( pPrivateEntry->mpLanguage );
1072 lang::Locale aLocale;
1073 convertLanguageToLocaleImpl( getOverrideLang( pEntry->
mnLang, pEntry->
mnOverride), aLocale,
false);
1085 lang::Locale aLocale;
1086 convertLanguageToLocaleImpl( getOverrideLang( pEntry->
mnLang, pEntry->
mnOverride), aLocale,
false);
1098 lang::Locale aLocale;
1099 convertLanguageToLocaleImpl( getOverrideLang( pEntry->
mnLang, pEntry->
mnOverride), aLocale,
false);
1108 const css::lang::Locale & rLocale )
1111 OUString aLowerLang = rLocale.Language.toAsciiLowerCase();
1113 OUString aUpperCountry = rLocale.Country.toAsciiUpperCase();
1114 sal_Int32 nCountryLen = aUpperCountry.getLength();
1122 if ( rLocale.Variant.equalsIgnoreAsciiCase(rBcp47Entry.getTagString()) ||
1123 rLocale.Variant.equalsIgnoreAsciiCaseAscii(rBcp47Entry.mpFallback))
1131 if (rScriptEntry.startsInIgnoreAsciiCase(rLocale.Variant))
1133 if (rLocale.Variant.equalsIgnoreAsciiCase(rScriptEntry.getTagString()))
1136 pFirstScript = &rScriptEntry;
1145 if (!aUpperCountry.isEmpty() && rLocale.Variant.getLength() > 11)
1150 if (aUpperCountry.equalsAscii( pScriptEntry->maCountry) &&
1151 pScriptEntry->startsInIgnoreAsciiCase( rLocale.Variant))
1162 aLowerLang = rLocale.Variant.getToken(0,
'-').toAsciiLowerCase();
1165 if (aLowerLang.getLength() == 1)
1173 if (aLowerLang.equalsAscii(rEntry.maLanguage))
1175 if (*rEntry.maCountry)
1177 if (nCountryLen && aUpperCountry.equalsAscii(rEntry.maCountry))
1182 if (rEntry.mnLang.anyOf(
1201 pFirstLang = &rEntry;
1219 return pPrivateEntry->mnLang;
1227 const css::lang::Locale& rLocale )
1232 if (rLocale.Variant.startsWithIgnoreAsciiCase(
"x-") || (rLocale.Variant ==
"*"))
1233 return convertPrivateUseToLanguage( rLocale.Variant);
1238 if (rLocale.Variant.equalsIgnoreAsciiCase(rBcp47Entry.getTagString()))
1239 return getOverrideLang(rBcp47Entry.mnLang, rBcp47Entry.mnOverride);
1245 if (rScriptEntry.startsInIgnoreAsciiCase(rLocale.Variant))
1247 if (rLocale.Variant.equalsIgnoreAsciiCase(rScriptEntry.getTagString()))
1248 return getOverrideLang(rScriptEntry.mnLang, rScriptEntry.mnOverride);
1255 OUString aLowerLang = rLocale.Language.toAsciiLowerCase();
1257 OUString aUpperCountry = rLocale.Country.toAsciiUpperCase();
1262 if (aLowerLang.equalsAscii(rEntry.maLanguage) && aUpperCountry.equalsAscii(rEntry.maCountry))
1263 return getOverrideLang(rEntry.mnLang, rEntry.mnOverride);
1276 if (rLocale.Variant.startsWithIgnoreAsciiCase(
"x-") || (rLocale.Variant ==
"*"))
1282 if (rLocale.Variant.equalsIgnoreAsciiCase(rBcp47Entry.getTagString()))
1289 if (rScriptEntry.startsInIgnoreAsciiCase(rLocale.Variant))
1291 if (rLocale.Variant.equalsIgnoreAsciiCase(rScriptEntry.getTagString()))
1299 OUString aLowerLang = rLocale.Language.toAsciiLowerCase();
1301 OUString aUpperCountry = rLocale.Country.toAsciiUpperCase();
1306 if (aLowerLang.equalsAscii(rEntry.maLanguage) && aUpperCountry.equalsAscii(rEntry.maCountry))
1310 return lang::Locale();
1316 const OUString& rCountry,
bool bSkipIsoTable )
1319 OUString aLowerLang = rLang.toAsciiLowerCase();
1321 OUString aUpperCountry = rCountry.toAsciiUpperCase();
1328 if ( aLowerLang.equalsAscii(rEntry.maLanguage) )
1330 if ( aUpperCountry.isEmpty() ||
1331 aUpperCountry.equalsAscii(rEntry.maCountry) )
1332 return rEntry.mnLang;
1337 if ( aLowerLang ==
"en" )
1342 if ( aUpperCountry.equalsAscii( pEngEntry->maCountry ) )
1343 return pEngEntry->mnLang;
1352 if ( aLowerLang.equalsAscii( pNoneStdEntry->maLanguage ) )
1355 if ( aUpperCountry.equalsIgnoreAsciiCaseAscii( pNoneStdEntry->maCountry ) )
1356 return pNoneStdEntry->mnLang;
1362 if ( aLowerLang.equalsAscii( pNoneStdEntry2->maLanguage ) )
1365 if ( aUpperCountry.equalsIgnoreAsciiCaseAscii( pNoneStdEntry2->maCountry ) )
1366 return pNoneStdEntry2->mnLang;
1374 if ( !rCountry.isEmpty() && rLang.isEmpty() )
1378 if ( aUpperCountry.equalsAscii(rEntry2.maCountry) )
1379 return rEntry2.mnLang;
1382 aLowerLang = aUpperCountry.toAsciiLowerCase();
1387 LanguageType nLang = convertPrivateUseToLanguage( aLowerLang);
1395 if ( aLowerLang.equalsAscii( pOtherEntry->mpLanguage ) )
1396 return pOtherEntry->mnLang;
1405 std::string_view rCountry )
1407 OUString aLang = OStringToOUString( rLang, RTL_TEXTENCODING_ASCII_US);
1408 OUString aCountry = OStringToOUString( rCountry, RTL_TEXTENCODING_ASCII_US);
1409 LanguageType nLang = convertIsoNamesToLanguage( aLang, aCountry,
false);
1415 OUString aTag( aCountry.isEmpty() ? aLang : aLang +
"-" + aCountry );
1417 SAL_WARN(
"i18nlangtag",
"convertIsoNamesToLanguage(string_view): on-the-fly for {"
1418 << aTag <<
"} " << nLang);
1422 SAL_WARN(
"i18nlangtag",
"convertIsoNamesToLanguage(string_view): on-the-fly bad, using {en-US}");
1431struct IsoLangGLIBCModifiersEntry
1459 std::string_view rString )
1465 size_t nLangSepPos = rString.find(
'_' );
1466 size_t nCountrySepPos = rString.find(
'.' );
1467 size_t nAtPos = rString.find(
'@' );
1469 if (nCountrySepPos == std::string_view::npos)
1470 nCountrySepPos = nAtPos;
1471 if (nCountrySepPos == std::string_view::npos)
1472 nCountrySepPos = rString.size();
1474 if (nAtPos != std::string_view::npos)
1475 aAtString = OString(rString.substr( nAtPos+1 ));
1477 if (((nLangSepPos != std::string_view::npos) && (nLangSepPos > nCountrySepPos)) || (nLangSepPos == std::string_view::npos))
1480 aLang = OString(rString.substr( 0, nCountrySepPos ));
1482 else if ( nLangSepPos != std::string_view::npos )
1485 aLang = OString(rString.substr( 0, nLangSepPos ));
1486 aCountry = OString(rString.substr( nLangSepPos+1, nCountrySepPos - nLangSepPos - 1));
1490 if (!aAtString.isEmpty())
1493 OString aLowerLang = aLang.toAsciiLowerCase();
1495 OString aUpperCountry = aCountry.toAsciiUpperCase();
1499 if (aLowerLang == pGLIBCModifiersEntry->maLanguage &&
1500 aAtString == pGLIBCModifiersEntry->maAtString )
1502 if (aUpperCountry.isEmpty() ||
1503 aUpperCountry == pGLIBCModifiersEntry->maCountry )
1505 return pGLIBCModifiersEntry->mnLang;
1518 ::std::vector< LanguagetagMapping > aVec;
1523 aVec.emplace_back(rEntry.getTagString(), rEntry.mnLang);
1526 aVec.emplace_back(rEntry.getTagString(), rEntry.mnLang);
1529 aVec.emplace_back(rEntry.getTagString(), rEntry.mnLang);
Wrapper for liblangtag BCP 47 language tags, MS-LangIDs, locales and conversions in between.
LanguageType getLanguageType(bool bResolveSystem=true) const
Obtain mapping to MS-LangID.
static I18NLANGTAG_DLLPRIVATE LanguageType convertPrivateUseToLanguage(std::u16string_view rPriv)
Convert x-... privateuse, used by convertLocaleToLanguageImpl(Locale)
static I18NLANGTAG_DLLPRIVATE void convertLanguageToLocaleImpl(LanguageType nLang, css::lang::Locale &rLocale, bool bIgnoreOverride)
Used by convertLanguageToLocale(LanguageType,bool) and getLocale(IsoLanguageCountryEntry*) and getLoc...
static I18NLANGTAG_DLLPRIVATE LanguageType convertLocaleToLanguageImpl(const css::lang::Locale &rLocale)
Used by convertLocaleToLanguage(Locale)
static I18NLANGTAG_DLLPRIVATE css::lang::Locale lookupFallbackLocale(const css::lang::Locale &rLocale)
static I18NLANGTAG_DLLPRIVATE css::lang::Locale getOverride(const css::lang::Locale &rLocale)
Used by LanguageTag::canonicalize()
static I18NLANGTAG_DLLPRIVATE css::lang::Locale getLocale(const IsoLanguageCountryEntry *pEntry)
Used by lookupFallbackLocale(Locale)
static I18NLANGTAG_DLLPRIVATE LanguageType convertIsoNamesToLanguage(const OUString &rLang, const OUString &rCountry, bool bSkipIsoTable)
Used by convertLocaleToLanguageImpl(Locale) and LanguageTagImpl::convertLocaleToLang()
static ::std::vector< LanguagetagMapping > getDefinedLanguagetags()
static LanguageType convertUnxByteStringToLanguage(std::string_view rString)
IsoLangEngEntry const aImplIsoLangEngEntries[]
constexpr LanguageType k0(0)
IsoLanguageCountryEntry const aImplIsoLangEntries[]
IsoLanguageScriptCountryEntry const aImplIsoLangScriptEntries[]
IsoLangNoneStdEntry const aImplIsoNoneStdLangEntries2[]
IsoLangOtherEntry const aImplPrivateUseEntries[]
IsoLangOtherEntry const aImplOtherEntries[]
Bcp47CountryEntry const aImplBcp47CountryEntries[]
const IsoLanguageCountryEntry aLastResortFallbackEntry
constexpr LanguageType kSAME(0xffff)
IsoLangNoneStdEntry const aImplIsoNoneStdLangEntries[]
IsoLangGLIBCModifiersEntry const aImplIsoLangGLIBCModifiersEntries[]
#define LANGUAGE_HAUSA_LATIN_LSO
#define LANGUAGE_USER_KURDISH_TURKEY
#define LANGUAGE_OBSOLETE_USER_OCCITAN
#define LANGUAGE_USER_OCCITAN_ARANESE
#define LANGUAGE_ARMENIAN
#define LANGUAGE_GERMAN_AUSTRIAN
#define LANGUAGE_USER_FRENCH_BURKINA_FASO
#define LANGUAGE_NEPALI_INDIA
#define LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA
#define LANGUAGE_SANSKRIT
#define LANGUAGE_SPANISH_PARAGUAY
#define LANGUAGE_OBSOLETE_USER_KALAALLISUT
#define LANGUAGE_UIGHUR_CHINA
#define LANGUAGE_MANIPURI
#define LANGUAGE_USER_ENGLISH_UK_OED
#define LANGUAGE_TIGRIGNA_ERITREA
#define LANGUAGE_KINYARWANDA_RWANDA
#define LANGUAGE_FRENCH_HAITI
#define LANGUAGE_GERMAN_SWISS
#define LANGUAGE_SERBIAN_LATIN_SERBIA
#define LANGUAGE_KURDISH_ARABIC_IRAQ
#define LANGUAGE_SPANISH_BOLIVIA
#define LANGUAGE_KAZAKH_LATIN
#define LANGUAGE_USER_PUINAVE
#define LANGUAGE_ARABIC_PRIMARY_ONLY
#define LANGUAGE_QUECHUA_BOLIVIA
#define LANGUAGE_CHINESE_LSO
#define LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA
#define LANGUAGE_TAMAZIGHT_LATIN_ALGERIA
#define LANGUAGE_MALAY_MALAYSIA
#define LANGUAGE_LITHUANIAN
#define LANGUAGE_USER_BRIBRI
#define LANGUAGE_MOHAWK_CANADA
#define LANGUAGE_USER_ARABIC_DJIBOUTI
#define LANGUAGE_TAMAZIGHT_ARABIC_MOROCCO
#define LANGUAGE_USER_PAPIAMENTU_ARUBA
#define LANGUAGE_USER_MALAY_ARABIC_BRUNEI
#define LANGUAGE_ENGLISH_BAHRAIN
#define LANGUAGE_USER_SARDINIAN_CAMPIDANESE
#define LANGUAGE_USER_ENGLISH_ISRAEL
#define LANGUAGE_USER_FRENCH_TOGO
#define LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA
#define LANGUAGE_MONGOLIAN_CYRILLIC_LSO
#define LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO
#define LANGUAGE_USER_ENGLISH_SRI_LANKA
#define LANGUAGE_PUNJABI_PAKISTAN
#define LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA
#define LANGUAGE_UZBEK_LATIN_LSO
#define LANGUAGE_LOWER_SORBIAN_LSO
#define LANGUAGE_USER_NGAEBERE
#define LANGUAGE_ENGLISH_KUWAIT
#define LANGUAGE_USER_SARDINIAN_LOGUDORESE
#define LANGUAGE_OBSOLETE_USER_LATIN_VATICAN
#define LANGUAGE_HAUSA_NIGERIA
#define LANGUAGE_USER_AVAR
#define LANGUAGE_ROMANIAN
#define LANGUAGE_ENGLISH_AUS
#define LANGUAGE_CHINESE_TRADITIONAL
#define LANGUAGE_SPANISH_ECUADOR
#define LANGUAGE_ENGLISH_MALAYSIA
#define LANGUAGE_FRENCH_LUXEMBOURG
#define LANGUAGE_OBSOLETE_USER_KABYLE
#define LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA
#define LANGUAGE_SERBIAN_CYRILLIC_SAM
#define LANGUAGE_USER_KAAMBA
#define LANGUAGE_USER_ERZYA
#define LANGUAGE_USER_FRIULIAN
#define LANGUAGE_PORTUGUESE
#define LANGUAGE_USER_GUADELOUPEAN_CREOLE_FRENCH
#define LANGUAGE_GAELIC_IRELAND
#define LANGUAGE_USER_SPANISH_EQUATORIAL_GUINEA
#define LANGUAGE_HUNGARIAN
#define LANGUAGE_ARABIC_MOROCCO
#define LANGUAGE_KANURI_NIGERIA
#define LANGUAGE_USER_ARABIC_COMOROS
#define LANGUAGE_FRENCH_CAMEROON
#define LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA
#define LANGUAGE_USER_PLAUTDIETSCH
#define LANGUAGE_ENGLISH_EGYPT
#define LANGUAGE_ENGLISH_BELIZE
#define LANGUAGE_SWEDISH_FINLAND
#define LANGUAGE_USER_SANTALI_INDIA
#define LANGUAGE_FRENCH_SENEGAL
#define LANGUAGE_BELARUSIAN
#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO
#define LANGUAGE_USER_OLONETS
#define LANGUAGE_ENGLISH_HONG_KONG_SAR
#define LANGUAGE_USER_CREE_PLAINS_SYLLABICS
#define LANGUAGE_GERMAN_LUXEMBOURG
#define LANGUAGE_GAELIC_SCOTLAND_LEGACY
#define LANGUAGE_USER_ARABIC_PALESTINE
#define LANGUAGE_USER_ROHINGYA_HANIFI
#define LANGUAGE_USER_MORISYEN
#define LANGUAGE_TAMAZIGHT_MOROCCO
#define LANGUAGE_AZERI_CYRILLIC
#define LANGUAGE_USER_SUNDANESE
#define LANGUAGE_MACEDONIAN
#define LANGUAGE_INUKTITUT_SYLLABICS_CANADA
#define LANGUAGE_USER_CATALAN_FRANCE
#define LANGUAGE_SERBIAN_CYRILLIC_SERBIA
#define LANGUAGE_USER_ARABIC_SOMALIA
#define LANGUAGE_USER_PRIV_DEFAULT
#define LANGUAGE_ENGLISH_CAN
#define LANGUAGE_SAMI_NORTHERN_NORWAY
#define LANGUAGE_USER_GANDA
#define LANGUAGE_USER_KURDISH_IRAN
#define LANGUAGE_USER_LADIN
#define LANGUAGE_USER_BUSHI
#define LANGUAGE_USER_TEKE_TYEE
#define LANGUAGE_USER_SWAHILI_TANZANIA
#define LANGUAGE_ALSATIAN_FRANCE
#define LANGUAGE_USER_BEEMBE
#define LANGUAGE_ITALIAN_SWISS
#define LANGUAGE_LOWER_SORBIAN_GERMANY
#define LANGUAGE_OBSOLETE_USER_BRETON
#define LANGUAGE_USER_XIBE
#define LANGUAGE_USER_ARABIC_MAURITANIA
#define LANGUAGE_SPANISH_VENEZUELA
#define LANGUAGE_USER_MBOCHI
#define LANGUAGE_SAMI_LULE_SWEDEN
#define LANGUAGE_USER_PRIV_COMMENT
#define LANGUAGE_USER_AKA_CONGO
#define LANGUAGE_USER_ARABIC_CHAD
#define LANGUAGE_USER_YIDDISH_ISRAEL
#define LANGUAGE_BOSNIAN_CYRILLIC_LSO
#define LANGUAGE_FRENCH_SWISS
#define LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA
#define LANGUAGE_USER_ENGLISH_DENMARK
#define LANGUAGE_TAMAZIGHT_TIFINAGH_LSO
#define LANGUAGE_DZONGKHA_BHUTAN
#define LANGUAGE_BASHKIR_RUSSIA
#define LANGUAGE_INUKTITUT_LATIN_LSO
#define LANGUAGE_USER_FRENCH_NIGER
#define LANGUAGE_USER_ARPITAN_SWITZERLAND
#define LANGUAGE_USER_BEKWEL
#define LANGUAGE_USER_YAKA
#define LANGUAGE_MAPUDUNGUN_CHILE
#define LANGUAGE_PAPIAMENTU
#define LANGUAGE_USER_MALAY_ARABIC_MALAYSIA
#define LANGUAGE_USER_KVEN_FINNISH
#define LANGUAGE_USER_MANCHU
#define LANGUAGE_USER_PUNU
#define LANGUAGE_ARABIC_UAE
#define LANGUAGE_UNDETERMINED
#define LANGUAGE_KOREAN_JOHAB
#define LANGUAGE_KALAALLISUT_GREENLAND
#define LANGUAGE_FRENCH_MALI
#define LANGUAGE_USER_CHURCH_SLAVIC
#define LANGUAGE_USER_HAITIAN
#define LANGUAGE_ENGLISH_INDIA
#define LANGUAGE_AZERI_LATIN_LSO
#define LANGUAGE_USER_INTERLINGUA
#define LANGUAGE_USER_LINGALA_DRCONGO
#define LANGUAGE_TAJIK_LSO
#define LANGUAGE_SAMI_NORTHERN_FINLAND
#define LANGUAGE_USER_HILIGAYNON
#define LANGUAGE_GALICIAN
#define LANGUAGE_USER_AKAN
#define LANGUAGE_SINDHI_ARABIC_LSO
#define LANGUAGE_USER_SAMI_KILDIN_RUSSIA
#define LANGUAGE_USER_SUUNDI
#define LANGUAGE_USER_KITUBA
#define LANGUAGE_SAMI_SOUTHERN_SWEDEN
#define LANGUAGE_ENGLISH_JAMAICA
#define LANGUAGE_BOSNIAN_LSO
#define LANGUAGE_USER_JUHOAN
#define LANGUAGE_USER_KHANTY
#define LANGUAGE_USER_PORTUGUESE_ANGOLA
#define LANGUAGE_ARABIC_TUNISIA
#define LANGUAGE_USER_PALI_THAI
#define LANGUAGE_GUARANI_PARAGUAY
#define LANGUAGE_USER_KOMI_PERMYAK
#define LANGUAGE_ICELANDIC
#define LANGUAGE_USER_ARPITAN_ITALY
#define LANGUAGE_SERBIAN_LATIN_MONTENEGRO
#define LANGUAGE_ARABIC_ALGERIA
#define LANGUAGE_USER_TIBETAN_BHUTAN
#define LANGUAGE_USER_MARI_MEADOW
#define LANGUAGE_USER_KUNYI
#define LANGUAGE_FRENCH_COTE_D_IVOIRE
#define LANGUAGE_USER_PORTUGUESE_MOZAMBIQUE
#define LANGUAGE_USER_ASTURIAN
#define LANGUAGE_USER_PALI_LATIN
#define LANGUAGE_USER_KURDISH_SYRIA
#define LANGUAGE_USER_YOMBE
#define LANGUAGE_SPANISH_COLOMBIA
#define LANGUAGE_IBIBIO_NIGERIA
#define LANGUAGE_USER_MOORE
#define LANGUAGE_USER_NJYEM
#define LANGUAGE_OBSOLETE_USER_LATIN
#define LANGUAGE_TSWANA_BOTSWANA
#define LANGUAGE_CHINESE_SIMPLIFIED
#define LANGUAGE_SPANISH_PANAMA
#define LANGUAGE_ARABIC_JORDAN
#define LANGUAGE_USER_SANGO
#define LANGUAGE_USER_FIJIAN
#define LANGUAGE_SPANISH_NICARAGUA
#define LANGUAGE_QUECHUA_PERU
#define LANGUAGE_USER_FRENCH_MAURITIUS
#define LANGUAGE_KAZAKH_LATIN_LSO
#define LANGUAGE_WOLOF_SENEGAL
#define LANGUAGE_LITHUANIAN_CLASSIC
#define LANGUAGE_ARABIC_IRAQ
#define LANGUAGE_USER_TOK_PISIN
#define LANGUAGE_USER_AKA
#define LANGUAGE_USER_SARDINIAN_SASSARESE
#define LANGUAGE_SPANISH_GUATEMALA
#define LANGUAGE_UZBEK_CYRILLIC_LSO
#define LANGUAGE_USER_LARI
#define LANGUAGE_SPANISH_COSTARICA
#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA
#define LANGUAGE_USER_LIMBU
#define LANGUAGE_JAPANESE
#define LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU
#define LANGUAGE_FULFULDE_LATIN_LSO
#define LANGUAGE_USER_LIGURIAN
#define LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN
#define LANGUAGE_SPANISH_UNITED_STATES
#define LANGUAGE_SINHALESE_SRI_LANKA
#define LANGUAGE_SAMI_SOUTHERN_NORWAY
#define LANGUAGE_USER_INTERSLAVIC_CYRILLIC
#define LANGUAGE_USER_GERMAN_BELGIUM
#define LANGUAGE_SPANISH_LATIN_AMERICA
#define LANGUAGE_ENGLISH_CARIBBEAN
#define LANGUAGE_SPANISH_PERU
#define LANGUAGE_USER_NYANJA
#define LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO
#define LANGUAGE_GAELIC_SCOTLAND
#define LANGUAGE_SAMI_LULE_NORWAY
#define LANGUAGE_SINDHI_PAKISTAN
#define LANGUAGE_CHINESE_SINGAPORE
#define LANGUAGE_USER_WALLOON
#define LANGUAGE_USER_CATALAN_ITALY
#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAN
#define LANGUAGE_USER_SWAZI
#define LANGUAGE_ARABIC_EGYPT
#define LANGUAGE_FULFULDE_NIGERIA
#define LANGUAGE_USER_NOGAI
#define LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN
#define LANGUAGE_FULFULDE_SENEGAL
#define LANGUAGE_FAEROESE
#define LANGUAGE_FRENCH_MONACO
#define LANGUAGE_USER_KEYID
#define LANGUAGE_CHINESE_MACAU
#define LANGUAGE_USER_MOKSHA
#define LANGUAGE_USER_BODO_INDIA
#define LANGUAGE_ENGLISH_EIRE
#define LANGUAGE_ARABIC_KUWAIT
#define LANGUAGE_MAORI_NEW_ZEALAND
#define LANGUAGE_RHAETO_ROMAN
#define LANGUAGE_USER_SHUSWAP
#define LANGUAGE_USER_PENNSYLVANIA_DUTCH
#define LANGUAGE_SPANISH_CHILE
#define LANGUAGE_SPANISH_MODERN
#define LANGUAGE_USER_SERBIAN_LATIN_SERBIA
#define LANGUAGE_USER_YOMBE_CONGO
#define LANGUAGE_SAMI_SKOLT_LSO
#define LANGUAGE_USER_ARMENIAN_IRAN
#define LANGUAGE_BENGALI_BANGLADESH
#define LANGUAGE_USER_ILOKO
#define LANGUAGE_USER_PRIV_JOKER
#define LANGUAGE_ARABIC_LIBYA
#define LANGUAGE_USER_BAFIA
#define LANGUAGE_SPANISH_EL_SALVADOR
#define LANGUAGE_KICHE_GUATEMALA
#define LANGUAGE_SERBIAN_CYRILLIC_LSO
#define LANGUAGE_CHEROKEE_CHEROKEE_LSO
#define LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA
#define LANGUAGE_UZBEK_CYRILLIC
#define LANGUAGE_USER_TAGALOG
#define LANGUAGE_SAMI_LULE_LSO
#define LANGUAGE_USER_ENGLISH_KENYA
#define LANGUAGE_OBSOLETE_USER_SPANISH_LATIN_AMERICA
#define LANGUAGE_ALBANIAN
#define LANGUAGE_ARABIC_LEBANON
#define LANGUAGE_OBSOLETE_USER_KINYARWANDA
#define LANGUAGE_CHINESE_TRADITIONAL_LSO
#define LANGUAGE_USER_SILESIAN
#define LANGUAGE_USER_KABARDIAN
#define LANGUAGE_INUKTITUT_SYLLABICS_LSO
#define LANGUAGE_USER_KYRGYZ_CHINA
#define LANGUAGE_USER_SPANISH_PHILIPPINES
#define LANGUAGE_USER_PUNU_CONGO
#define LANGUAGE_PUNJABI_ARABIC_LSO
#define LANGUAGE_USER_ARPITAN_FRANCE
#define LANGUAGE_OCCITAN_FRANCE
#define LANGUAGE_BRETON_FRANCE
#define LANGUAGE_USER_TSAANGI
#define LANGUAGE_USER_PRIV_NOTRANSLATE
#define LANGUAGE_INUKTITUT_LATIN_CANADA
#define LANGUAGE_USER_ENGLISH_BOTSWANA
#define LANGUAGE_ENGLISH_INDONESIA
#define LANGUAGE_USER_ENGLISH_MALAWI
#define LANGUAGE_TAMAZIGHT_LATIN_LSO
#define LANGUAGE_OBSOLETE_USER_SPANISH_CUBA
#define LANGUAGE_ROMANIAN_MOLDOVA
#define LANGUAGE_USER_CABECAR
#define LANGUAGE_HAWAIIAN_UNITED_STATES
#define LANGUAGE_ENGLISH_UK
#define LANGUAGE_USER_ARMENIAN_WESTERN
#define LANGUAGE_USER_LOW_GERMAN
#define LANGUAGE_USER_INTERLINGUE
#define LANGUAGE_SERBIAN_LATIN_LSO
#define LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA
#define LANGUAGE_SAMI_SOUTHERN_LSO
#define LANGUAGE_USER_NJYEM_CONGO
#define LANGUAGE_USER_DZONGKHA_MAP_LONLY
#define LANGUAGE_UPPER_SORBIAN_GERMANY
#define LANGUAGE_FRENCH_MOROCCO
#define LANGUAGE_ENGLISH_NZ
#define LANGUAGE_USER_SERBIAN_LATIN_MONTENEGRO
#define LANGUAGE_USER_MARI_HILL
#define LANGUAGE_FRENCH_WEST_INDIES
#define LANGUAGE_CORSICAN_FRANCE
#define LANGUAGE_ASSAMESE
#define LANGUAGE_ENGLISH_ZIMBABWE
#define LANGUAGE_FRENCH_CANADIAN
#define LANGUAGE_ENGLISH_JORDAN
#define LANGUAGE_LUXEMBOURGISH_LUXEMBOURG
#define LANGUAGE_UKRAINIAN
#define LANGUAGE_TAI_NUA_CHINA
#define LANGUAGE_USER_ENGLISH_GAMBIA
#define LANGUAGE_USER_RUSYN_SLOVAKIA
#define LANGUAGE_USER_MANX
#define LANGUAGE_ENGLISH_ARAB_EMIRATES
#define LANGUAGE_USER_MAITHILI_INDIA
#define LANGUAGE_SPANISH_DATED
#define LANGUAGE_USER_GIKUYU
#define LANGUAGE_USER_ENGLISH_NIGERIA
#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ
#define LANGUAGE_USER_FRENCH_BENIN
#define LANGUAGE_SPANISH_PUERTO_RICO
#define LANGUAGE_SAMI_NORTHERN_SWEDEN
#define LANGUAGE_FRISIAN_NETHERLANDS
#define LANGUAGE_USER_ENGLISH_MAURITIUS
#define LANGUAGE_USER_RUSYN_UKRAINE
#define LANGUAGE_USER_CREE_PLAINS_LATIN
#define LANGUAGE_USER_LIVONIAN
#define LANGUAGE_VIETNAMESE
#define LANGUAGE_USER_PAPIAMENTU_BONAIRE
#define LANGUAGE_USER_TEKE_EBOO
#define LANGUAGE_LU_CHINA
#define LANGUAGE_CHINESE_HONGKONG
#define LANGUAGE_USER_KLINGON
#define LANGUAGE_KAZAKH_CYRILLIC_LSO
#define LANGUAGE_USER_PRIV_NONE
#define LANGUAGE_USER_TETUN_TIMOR_LESTE
#define LANGUAGE_USER_SAMI_PITE_SWEDEN
#define LANGUAGE_USER_KITUBA_DRCONGO
#define LANGUAGE_USER_EWE_GHANA
#define LANGUAGE_USER_ENGLISH_NAMIBIA
#define LANGUAGE_USER_CATALAN_ANDORRA
#define LANGUAGE_ARABIC_QATAR
#define LANGUAGE_FRENCH_BELGIAN
#define LANGUAGE_USER_YIDDISH_US
#define LANGUAGE_USER_LENGO
#define LANGUAGE_ARABIC_SAUDI_ARABIA
#define LANGUAGE_YAKUT_RUSSIA
#define LANGUAGE_USER_KOREAN_NORTH
#define LANGUAGE_USER_NDEBELE_SOUTH
#define LANGUAGE_USER_KASHUBIAN
#define LANGUAGE_USER_MINANGKABAU
#define LANGUAGE_DONTKNOW
#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA
#define LANGUAGE_USER_MAORE
#define LANGUAGE_USER_COPTIC
#define LANGUAGE_USER_TETUN
#define LANGUAGE_USER_KOMI_ZYRIAN
#define LANGUAGE_QUECHUA_ECUADOR
#define LANGUAGE_USER_ANCIENT_GREEK
#define LANGUAGE_USER_SARAIKI
#define LANGUAGE_USER_APATANI
#define LANGUAGE_NORWEGIAN_NYNORSK_LSO
#define LANGUAGE_SPANISH_DOMINICAN_REPUBLIC
#define LANGUAGE_USER_UDMURT
#define LANGUAGE_SAMI_SKOLT
#define LANGUAGE_AFRIKAANS
#define LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH
#define LANGUAGE_NORWEGIAN
#define LANGUAGE_USER_TEKE_KUKUYA
#define LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN
#define LANGUAGE_USER_VILI
#define LANGUAGE_USER_CORNISH
#define LANGUAGE_USER_VEPS
#define LANGUAGE_USER_AFRIKAANS_NAMIBIA
#define LANGUAGE_USER_CHUVASH
#define LANGUAGE_NORWEGIAN_NYNORSK
#define LANGUAGE_USER_TIBETAN_INDIA
#define LANGUAGE_USER_DOONDO
#define LANGUAGE_USER_ENGLISH_ANTIGUA_BARBUDA
#define LANGUAGE_CHEROKEE_UNITED_STATES
#define LANGUAGE_NORWEGIAN_BOKMAL
#define LANGUAGE_USER_TEKE_IBALI
#define LANGUAGE_SPANISH_HONDURAS
#define LANGUAGE_USER_ARAGONESE
#define LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN
#define LANGUAGE_ENGLISH_TRINIDAD
#define LANGUAGE_USER_ENGLISH_ZAMBIA
#define LANGUAGE_SERBIAN_LATIN_NEUTRAL
#define LANGUAGE_USER_DOGRI_INDIA
#define LANGUAGE_USER_SESOTHO_LESOTHO
#define LANGUAGE_DARI_AFGHANISTAN
#define LANGUAGE_USER_ARMENIAN_RUSSIA
#define LANGUAGE_USER_NGUNGWEL
#define LANGUAGE_AZERI_LATIN
#define LANGUAGE_ENGLISH_SAFRICA
#define LANGUAGE_MALAY_BRUNEI_DARUSSALAM
#define LANGUAGE_USER_NKO
#define LANGUAGE_IGBO_NIGERIA
#define LANGUAGE_YUE_CHINESE_HONGKONG
#define LANGUAGE_USER_FON
#define LANGUAGE_ARABIC_OMAN
#define LANGUAGE_CHINESE_SIMPLIFIED_LEGACY
#define LANGUAGE_USER_VORO
#define LANGUAGE_USER_DIBOLE
#define LANGUAGE_CROATIAN
#define LANGUAGE_GERMAN_LIECHTENSTEIN
#define LANGUAGE_USER_LATGALIAN
#define LANGUAGE_SPANISH_ARGENTINA
#define LANGUAGE_USER_SARDINIAN
#define LANGUAGE_USER_KUMYK
#define LANGUAGE_USER_BAMBARA
#define LANGUAGE_USER_GASCON
#define LANGUAGE_USER_VENETIAN
#define LANGUAGE_USER_SARDINIAN_GALLURESE
#define LANGUAGE_MALAYALAM
#define LANGUAGE_ENGLISH_YEMEN
#define LANGUAGE_FRENCH_REUNION
#define LANGUAGE_USER_ARABIC_ISRAEL
#define LANGUAGE_ARABIC_YEMEN
#define LANGUAGE_SAMI_INARI
#define LANGUAGE_USER_LOJBAN
#define LANGUAGE_SPANISH_MEXICAN
#define LANGUAGE_ENGLISH_PHILIPPINES
#define LANGUAGE_GEORGIAN
#define LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ
#define LANGUAGE_UZBEK_LATIN
#define LANGUAGE_PORTUGUESE_BRAZILIAN
#define LANGUAGE_URDU_INDIA
#define LANGUAGE_CATALAN_VALENCIAN
#define LANGUAGE_BULGARIAN
#define LANGUAGE_URDU_PAKISTAN
#define LANGUAGE_KASHMIRI
#define LANGUAGE_AMHARIC_ETHIOPIA
#define LANGUAGE_USER_ENGLISH_GHANA
#define LANGUAGE_FILIPINO
#define LANGUAGE_DUTCH_BELGIAN
#define LANGUAGE_TAMIL_SRI_LANKA
#define LANGUAGE_USER_ENGLISH_UK_OXENDICT
#define LANGUAGE_USER_HAUSA_GHANA
#define LANGUAGE_ESTONIAN
#define LANGUAGE_GUJARATI
#define LANGUAGE_USER_YAKA_DRCONGO
#define LANGUAGE_USER_ARMENIAN_CLASSICAL
#define LANGUAGE_SLOVENIAN
#define LANGUAGE_USER_KARAKALPAK_LATIN
#define LANGUAGE_SPANISH_URUGUAY
#define LANGUAGE_SERBIAN_LATIN_SAM
#define LANGUAGE_ARABIC_SYRIA
#define LANGUAGE_SPANISH_CUBA
#define LANGUAGE_BOSNIAN_LATIN_LSO
#define LANGUAGE_ENGLISH_SINGAPORE
#define LANGUAGE_USER_ARABIC_ERITREA
#define LANGUAGE_USER_TAHITIAN
#define LANGUAGE_MALAGASY_PLATEAU
#define LANGUAGE_RUSSIAN_MOLDOVA
#define LANGUAGE_ARABIC_BAHRAIN
#define LANGUAGE_USER_ESPERANTO
#define LANGUAGE_KURDISH_ARABIC_LSO
#define LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA
#define LANGUAGE_ENGLISH_US
#define LANGUAGE_USER_PAPIAMENTU_CURACAO
#define LANGUAGE_NORWEGIAN_BOKMAL_LSO
#define LANGUAGE_MULTIPLE
#define LANGUAGE_TIGRIGNA_ETHIOPIA
#define LANGUAGE_KASHMIRI_INDIA
#define LANGUAGE_USER_NARO
#define LANGUAGE_USER_NGANASAN
#define LANGUAGE_USER_ARABIC_SUDAN
#define LANGUAGE_USER_KOONGO_CONGO
#define LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA
#define LANGUAGE_SAMI_INARI_LSO
#define LANGUAGE_OBSOLETE_USER_MAORI
#define LANGUAGE_MONGOLIAN_MONGOLIAN_LSO
#define LANGUAGE_USER_KOONGO
#define LANGUAGE_FRENCH_ZAIRE
#define LANGUAGE_USER_INTERSLAVIC_LATIN
#define LANGUAGE_USER_SIDAMA
#define LANGUAGE_TIBETAN_BHUTAN
#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO
#define LANGUAGE_INDONESIAN
#define LANGUAGE_USER_HUNGARIAN_ROVAS
#define LANGUAGE_USER_PITJANTJATJARA
#define LANGUAGE_AZERI_CYRILLIC_LSO
#define LANGUAGE_USER_NENETS
#define LANGUAGE_ENGLISH_TURKEY
constexpr OUStringLiteral I18NLANGTAG_QLT
#define SAL_WARN(area, stream)
const LanguageTag & getLocale()
bool equalsIgnoreAsciiCase(std::u16string_view s1, std::u16string_view s2)
bool matchIgnoreAsciiCase(std::u16string_view s1, std::u16string_view s2, sal_Int32 fromIndex=0)
OUString getTagString() const
Obtain a language tag string with '-' separator.
css::lang::Locale getLocale() const
Obtain a locale.
css::lang::Locale getLocale() const
Obtain a locale.
OUString getTagString() const
Obtain a language tag string with '-' separator.
char maLanguageScript[9]
"ll-Ssss" or "lll-Ssss"
OUString getTagString() const
Obtain a language tag string with '-' separator.
bool startsInIgnoreAsciiCase(std::u16string_view aStr) const
If rStr starts with maLanguageScript ignoring case.
css::lang::Locale getLocale() const
Obtain a locale.