diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2017-04-17 21:35:35 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-04-26 08:50:54 +0200 |
commit | c70d49c7c888da8cfd73db8585e7be1f37fc398a (patch) | |
tree | c0e540401850018464ca76300536faf9aa7e27d2 | |
parent | cd4344d3bdef631b3e64ac12a9e64bc9670c1b7c (diff) |
use strong_int for LanguageType
Change-Id: If99a944f7032180355da291ad283b4cfcea4f448
Reviewed-on: https://gerrit.libreoffice.org/36629
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
184 files changed, 2537 insertions, 2689 deletions
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index bc0da7541f4e..a8468a61b908 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -4251,7 +4251,7 @@ RTLFUNC(StrConv) OUString aOldStr = rPar.Get(1)->GetOUString(); sal_Int32 nConversion = rPar.Get(2)->GetLong(); - sal_uInt16 nLanguage = LANGUAGE_SYSTEM; + LanguageType nLanguage = LANGUAGE_SYSTEM; sal_Int32 nOldLen = aOldStr.getLength(); if( nOldLen == 0 ) diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx index 773aa61017e9..5fa6aeee1760 100644 --- a/cui/source/dialogs/SpellDialog.cxx +++ b/cui/source/dialogs/SpellDialog.cxx @@ -590,7 +590,7 @@ IMPL_LINK_NOARG(SpellDialog, ChangeAllHdl, Button*, void) Reference<XDictionary> aXDictionary( LinguMgr::GetChangeAllList(), UNO_QUERY ); DictionaryError nAdded = AddEntryToDic( aXDictionary, aOldWord, true, - aString, eLang ); + aString ); if(nAdded == DictionaryError::NONE) { @@ -638,7 +638,7 @@ IMPL_LINK( SpellDialog, IgnoreAllHdl, Button *, pButton, void ) OUString sErrorText(m_pSentenceED->GetErrorText()); DictionaryError nAdded = AddEntryToDic( aXDictionary, sErrorText, false, - OUString(), LANGUAGE_NONE ); + OUString() ); if(nAdded == DictionaryError::NONE) { SpellUndoAction_Impl* pAction = new SpellUndoAction_Impl( @@ -753,7 +753,7 @@ bool SpellDialog::Close() LanguageType SpellDialog::GetSelectedLang_Impl() const { - sal_Int16 nLang = m_pLanguageLB->GetSelectLanguage(); + LanguageType nLang = m_pLanguageLB->GetSelectLanguage(); return nLang; } @@ -771,7 +771,7 @@ IMPL_LINK(SpellDialog, LanguageSelectHdl, ListBox&, rBox, void) if(!sError.isEmpty()) { LanguageType eLanguage = static_cast<SvxLanguageBox*>(&rBox)->GetSelectLanguage(); - Reference <XSpellAlternatives> xAlt = xSpell->spell( sError, eLanguage, + Reference <XSpellAlternatives> xAlt = xSpell->spell( sError, (sal_uInt16)eLanguage, Sequence< PropertyValue >() ); if( xAlt.is() ) m_pSentenceED->SetAlternatives( xAlt ); @@ -898,7 +898,7 @@ void SpellDialog::AddToDictionaryExecute( sal_uInt16 nItemId, PopupMenu *pMenu ) DictionaryError nAddRes = DictionaryError::UNKNOWN; if (xDic.is()) { - nAddRes = AddEntryToDic( xDic, aNewWord, false, OUString(), LANGUAGE_NONE ); + nAddRes = AddEntryToDic( xDic, aNewWord, false, OUString() ); // save modified user-dictionary if it is persistent uno::Reference< frame::XStorable > xSavDic( xDic, uno::UNO_QUERY ); if (xSavDic.is()) @@ -1605,7 +1605,7 @@ bool SentenceEditWindow_Impl::MarkNextError( bool bIgnoreCurrentError, const css aCursor.GetIndex() += xEntry->getReplacementText().getLength(); // maybe the error found here is already added to the dictionary and has to be ignored - } else if(pSpellErrorDescription && !bGrammarError && xSpell->isValid( GetErrorText(), LanguageTag::convertToLanguageType( pSpellErrorDescription->aLocale ), Sequence< PropertyValue >() )) { + } else if(pSpellErrorDescription && !bGrammarError && xSpell->isValid( GetErrorText(), (sal_uInt16)LanguageTag::convertToLanguageType( pSpellErrorDescription->aLocale ), Sequence< PropertyValue >() )) { ++aCursor.GetIndex(); } else diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index f09b5b0fa318..1b956fb8855f 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -917,7 +917,7 @@ VclPtr<AbstractHangulHanjaConversionDialog> AbstractDialogFactory_Impl::CreateHa VclPtr<AbstractThesaurusDialog> AbstractDialogFactory_Impl::CreateThesaurusDialog( vcl::Window* pParent, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, - const OUString &rWord, sal_Int16 nLanguage ) + const OUString &rWord, LanguageType nLanguage ) { VclPtrInstance<SvxThesaurusDialog> pDlg( pParent, xThesaurus, rWord, nLanguage ); return VclPtr<AbstractThesaurusDialog_Impl>::Create( pDlg ); diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx index 9c1b19725d90..69ec922558aa 100644 --- a/cui/source/factory/dlgfact.hxx +++ b/cui/source/factory/dlgfact.hxx @@ -495,7 +495,7 @@ public: virtual VclPtr<AbstractHangulHanjaConversionDialog> CreateHangulHanjaConversionDialog( vcl::Window* _pParent, editeng::HangulHanjaConversion::ConversionDirection _ePrimaryDirection ) override; virtual VclPtr<AbstractThesaurusDialog> CreateThesaurusDialog( vcl::Window*, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, - const OUString &rWord, sal_Int16 nLanguage ) override; + const OUString &rWord, LanguageType nLanguage ) override; virtual VclPtr<AbstractHyphenWordDialog> CreateHyphenWordDialog( vcl::Window*, const OUString &rWord, LanguageType nLang, diff --git a/cui/source/inc/optdict.hxx b/cui/source/inc/optdict.hxx index 4cfa42b73913..d0858b52da4f 100644 --- a/cui/source/inc/optdict.hxx +++ b/cui/source/inc/optdict.hxx @@ -130,7 +130,7 @@ private: void ShowWords_Impl( sal_uInt16 nId ); - void SetLanguage_Impl( css::util::Language nLanguage ); + void SetLanguage_Impl( LanguageType nLanguage ); bool IsDicReadonly_Impl() const { return bDicIsReadonly; } void SetDicReadonly_Impl( css::uno::Reference< css::linguistic2::XDictionary > &xDic ); diff --git a/cui/source/options/optasian.cxx b/cui/source/options/optasian.cxx index 018c14169b5b..f814ad27e3b7 100644 --- a/cui/source/options/optasian.cxx +++ b/cui/source/options/optasian.cxx @@ -113,7 +113,7 @@ void SvxAsianLayoutPage_Impl::addForbiddenCharacters( } } -static LanguageType eLastUsedLanguageTypeForForbiddenCharacters = USHRT_MAX; +static LanguageType eLastUsedLanguageTypeForForbiddenCharacters(USHRT_MAX); SvxAsianLayoutPage::SvxAsianLayoutPage( vcl::Window* pParent, const SfxItemSet& rSet ) : SfxTabPage(pParent, "OptAsianPage", "cui/ui/optasianpage.ui", &rSet), @@ -291,7 +291,7 @@ void SvxAsianLayoutPage::Reset( const SfxItemSet* ) m_pLanguageLB->SelectEntryPos(0); //preselect the system language in the box - if available - if(USHRT_MAX == eLastUsedLanguageTypeForForbiddenCharacters) + if(LanguageType(USHRT_MAX) == eLastUsedLanguageTypeForForbiddenCharacters) { eLastUsedLanguageTypeForForbiddenCharacters = Application::GetSettings().GetLanguageTag().getLanguageType(); diff --git a/cui/source/options/optdict.cxx b/cui/source/options/optdict.cxx index a8541b98f1d5..6ecbce35b8fe 100644 --- a/cui/source/options/optdict.cxx +++ b/cui/source/options/optdict.cxx @@ -158,7 +158,7 @@ IMPL_LINK_NOARG(SvxNewDictionaryDialog, OKHdl_Impl, Button*, void) } // create and add - sal_uInt16 nLang = pLanguageLB->GetSelectLanguage(); + LanguageType nLang = pLanguageLB->GetSelectLanguage(); try { // create new dictionary @@ -375,7 +375,7 @@ void SvxEditDictionaryDialog::SetDicReadonly_Impl( } -void SvxEditDictionaryDialog::SetLanguage_Impl( util::Language nLanguage ) +void SvxEditDictionaryDialog::SetLanguage_Impl( LanguageType nLanguage ) { // select language pLangLB->SelectLanguage( nLanguage ); @@ -447,9 +447,9 @@ IMPL_LINK_NOARG(SvxEditDictionaryDialog, SelectBookHdl_Impl, ListBox&, void) IMPL_LINK_NOARG(SvxEditDictionaryDialog, SelectLangHdl_Impl, ListBox&, void) { sal_Int32 nDicPos = pAllDictsLB->GetSelectEntryPos(); - sal_Int32 nLang = pLangLB->GetSelectLanguage(); + LanguageType nLang = pLangLB->GetSelectLanguage(); Reference< XDictionary > xDic( aDics.getConstArray()[ nDicPos ], UNO_QUERY ); - sal_Int16 nOldLang = LanguageTag( xDic->getLocale() ).getLanguageType(); + LanguageType nOldLang = LanguageTag( xDic->getLocale() ).getLanguageType(); if ( nLang != nOldLang ) { @@ -627,7 +627,7 @@ bool SvxEditDictionaryDialog::NewDelHdl(void* pBtn) nAddRes = linguistic::AddEntryToDic( xDic, aNewWord, bIsNegEntry, - aRplcText, LanguageTag( xDic->getLocale() ).getLanguageType(), false ); + aRplcText, false ); } } if (DictionaryError::NONE != nAddRes) diff --git a/cui/source/options/optgenrl.cxx b/cui/source/options/optgenrl.cxx index 1b110fd30963..0dd5e7f0e05a 100644 --- a/cui/source/options/optgenrl.cxx +++ b/cui/source/options/optgenrl.cxx @@ -211,17 +211,14 @@ void SvxGeneralTabPage::InitControls () { // which language bit do we use? (see Lang and vRowInfo[] above) unsigned LangBit; - switch (Application::GetSettings().GetUILanguageTag().getLanguageType()) + LanguageType l = Application::GetSettings().GetUILanguageTag().getLanguageType(); + if (l == LANGUAGE_ENGLISH_US) + LangBit = Lang::US; + else if (l == LANGUAGE_RUSSIAN) + LangBit = Lang::Russian; + else { - case LANGUAGE_ENGLISH_US: - LangBit = Lang::US; - break; - case LANGUAGE_RUSSIAN: - LangBit = Lang::Russian; - break; - default: - LangBit = Lang::Others; - break; + LangBit = Lang::Others; } // creating rows diff --git a/cui/source/options/optlingu.cxx b/cui/source/options/optlingu.cxx index 0d5638979904..148cbc025b50 100644 --- a/cui/source/options/optlingu.cxx +++ b/cui/source/options/optlingu.cxx @@ -85,31 +85,26 @@ static const sal_Char cThes[] = SN_THESAURUS; // static ---------------------------------------------------------------- -static Sequence< sal_Int16 > lcl_LocaleSeqToLangSeq( const Sequence< Locale > &rSeq ) +static std::vector< LanguageType > lcl_LocaleSeqToLangSeq( const Sequence< Locale > &rSeq ) { sal_Int32 nLen = rSeq.getLength(); - Sequence< sal_Int16 > aRes( nLen ); - sal_Int16 *pRes = aRes.getArray(); + std::vector<LanguageType> aRes; + aRes.reserve(nLen); const Locale *pSeq = rSeq.getConstArray(); for (sal_Int32 i = 0; i < nLen; ++i) { - pRes[i] = LanguageTag::convertToLanguageType( pSeq[i] ); + aRes.push_back( LanguageTag::convertToLanguageType( pSeq[i] ) ); } return aRes; } -static bool lcl_SeqHasLang( const Sequence< sal_Int16 > &rSeq, sal_Int16 nLang ) +static bool lcl_SeqHasLang( const std::vector< LanguageType > &rSeq, LanguageType nLang ) { - sal_Int32 nLen = rSeq.getLength(); - const sal_Int16 *pLang = rSeq.getConstArray(); - sal_Int32 nPos = -1; - for (sal_Int32 i = 0; i < nLen && nPos < 0; ++i) - { - if (nLang == pLang[i]) - nPos = i; - } - return nPos >= 0; + for (auto const & i : rSeq) + if (i == nLang) + return true; + return false; } @@ -458,8 +453,8 @@ struct ServiceInfo_Impl ServiceInfo_Impl() : bConfigured(false) {} }; -typedef std::vector< ServiceInfo_Impl > ServiceInfoArr; -typedef std::map< sal_Int16 /*LanguageType*/, Sequence< OUString > > LangImplNameTable; +typedef std::vector< ServiceInfo_Impl > ServiceInfoArr; +typedef std::map< LanguageType, Sequence< OUString > > LangImplNameTable; // SvxLinguData_Impl ---------------------------------------------------- @@ -511,7 +506,7 @@ public: // I.e. the ones available but not configured in arbitrary order). // They available ones may contain names that do not(!) support that // language. - Sequence< OUString > GetSortedImplNames( sal_Int16 nLang, sal_uInt8 nType ); + Sequence< OUString > GetSortedImplNames( LanguageType nLang, sal_uInt8 nType ); ServiceInfo_Impl * GetInfoByImplName( const OUString &rSvcImplName ); }; @@ -531,7 +526,7 @@ static sal_Int32 lcl_SeqGetIndex( const Sequence< OUString > &rSeq, const OUStri } -Sequence< OUString > SvxLinguData_Impl::GetSortedImplNames( sal_Int16 nLang, sal_uInt8 nType ) +Sequence< OUString > SvxLinguData_Impl::GetSortedImplNames( LanguageType nLang, sal_uInt8 nType ) { LangImplNameTable *pTable = nullptr; switch (nType) @@ -792,7 +787,7 @@ SvxLinguData_Impl::SvxLinguData_Impl() : const Locale* pAllLocales = aAllServiceLocales.getConstArray(); for(sal_Int32 nLocale = 0; nLocale < aAllServiceLocales.getLength(); nLocale++) { - sal_Int16 nLang = LanguageTag::convertToLanguageType( pAllLocales[nLocale] ); + LanguageType nLang = LanguageTag::convertToLanguageType( pAllLocales[nLocale] ); aCfgSvcs = xLinguSrvcMgr->getConfiguredServices(cSpell, pAllLocales[nLocale]); SetChecked( aCfgSvcs ); @@ -927,7 +922,7 @@ void SvxLinguData_Impl::Reconfigure( const OUString &rDisplayName, bool bEnable nLocales = aLocales.getLength(); for (i = 0; i < nLocales; ++i) { - sal_Int16 nLang = LanguageTag::convertToLanguageType( pLocale[i] ); + LanguageType nLang = LanguageTag::convertToLanguageType( pLocale[i] ); if (!aCfgSpellTable.count( nLang ) && bEnable) aCfgSpellTable[ nLang ] = Sequence< OUString >(); if (aCfgSpellTable.count( nLang )) @@ -943,7 +938,7 @@ void SvxLinguData_Impl::Reconfigure( const OUString &rDisplayName, bool bEnable nLocales = aLocales.getLength(); for (i = 0; i < nLocales; ++i) { - sal_Int16 nLang = LanguageTag::convertToLanguageType( pLocale[i] ); + LanguageType nLang = LanguageTag::convertToLanguageType( pLocale[i] ); if (!aCfgGrammarTable.count( nLang ) && bEnable) aCfgGrammarTable[ nLang ] = Sequence< OUString >(); if (aCfgGrammarTable.count( nLang )) @@ -959,7 +954,7 @@ void SvxLinguData_Impl::Reconfigure( const OUString &rDisplayName, bool bEnable nLocales = aLocales.getLength(); for (i = 0; i < nLocales; ++i) { - sal_Int16 nLang = LanguageTag::convertToLanguageType( pLocale[i] ); + LanguageType nLang = LanguageTag::convertToLanguageType( pLocale[i] ); if (!aCfgHyphTable.count( nLang ) && bEnable) aCfgHyphTable[ nLang ] = Sequence< OUString >(); if (aCfgHyphTable.count( nLang )) @@ -975,7 +970,7 @@ void SvxLinguData_Impl::Reconfigure( const OUString &rDisplayName, bool bEnable nLocales = aLocales.getLength(); for (i = 0; i < nLocales; ++i) { - sal_Int16 nLang = LanguageTag::convertToLanguageType( pLocale[i] ); + LanguageType nLang = LanguageTag::convertToLanguageType( pLocale[i] ); if (!aCfgThesTable.count( nLang ) && bEnable) aCfgThesTable[ nLang ] = Sequence< OUString >(); if (aCfgThesTable.count( nLang )) @@ -1120,7 +1115,7 @@ bool SvxLinguTabPage::FillItemSet( SfxItemSet* rCoreSet ) const LangImplNameTable *pTable = &pLinguData->GetSpellTable(); for (aIt = pTable->begin(); aIt != pTable->end(); ++aIt) { - sal_Int16 nLang = aIt->first; + LanguageType nLang = aIt->first; const Sequence< OUString > aImplNames( aIt->second ); uno::Reference< XLinguServiceManager2 > xMgr( pLinguData->GetManager() ); Locale aLocale( LanguageTag::convertToLocale(nLang) ); @@ -1132,7 +1127,7 @@ bool SvxLinguTabPage::FillItemSet( SfxItemSet* rCoreSet ) pTable = &pLinguData->GetGrammarTable(); for (aIt = pTable->begin(); aIt != pTable->end(); ++aIt) { - sal_Int16 nLang = aIt->first; + LanguageType nLang = aIt->first; const Sequence< OUString > aImplNames( aIt->second ); uno::Reference< XLinguServiceManager2 > xMgr( pLinguData->GetManager() ); Locale aLocale( LanguageTag::convertToLocale(nLang) ); @@ -1144,7 +1139,7 @@ bool SvxLinguTabPage::FillItemSet( SfxItemSet* rCoreSet ) pTable = &pLinguData->GetHyphTable(); for (aIt = pTable->begin(); aIt != pTable->end(); ++aIt) { - sal_Int16 nLang = aIt->first; + LanguageType nLang = aIt->first; const Sequence< OUString > aImplNames( aIt->second ); uno::Reference< XLinguServiceManager2 > xMgr( pLinguData->GetManager() ); Locale aLocale( LanguageTag::convertToLocale(nLang) ); @@ -1156,7 +1151,7 @@ bool SvxLinguTabPage::FillItemSet( SfxItemSet* rCoreSet ) pTable = &pLinguData->GetThesTable(); for (aIt = pTable->begin(); aIt != pTable->end(); ++aIt) { - sal_Int16 nLang = aIt->first; + LanguageType nLang = aIt->first; const Sequence< OUString > aImplNames( aIt->second ); uno::Reference< XLinguServiceManager2 > xMgr( pLinguData->GetManager() ); Locale aLocale( LanguageTag::convertToLocale(nLang) ); @@ -1529,7 +1524,7 @@ IMPL_LINK( SvxLinguTabPage, ClickHdl_Impl, Button *, pBtn, void ) sal_Int32 nLocales = pLinguData->GetAllSupportedLocales().getLength(); for (sal_Int32 k = 0; k < nLocales; ++k) { - sal_Int16 nLang = LanguageTag::convertToLanguageType( pAllLocales[k] ); + LanguageType nLang = LanguageTag::convertToLanguageType( pAllLocales[k] ); if (pLinguData->GetSpellTable().count( nLang )) pLinguData->SetChecked( pLinguData->GetSpellTable()[ nLang ] ); if (pLinguData->GetGrammarTable().count( nLang )) @@ -1796,7 +1791,7 @@ SvxEditModulesDlg::SvxEditModulesDlg(vcl::Window* pParent, SvxLinguData_Impl& rD m_pMoreDictsLink->Hide(); //fill language box - Sequence< sal_Int16 > aAvailLang; + std::vector< LanguageType > aAvailLang; uno::Reference< XAvailableLocales > xAvail( rLinguData.GetManager(), UNO_QUERY ); if (xAvail.is()) { @@ -1808,7 +1803,7 @@ SvxEditModulesDlg::SvxEditModulesDlg(vcl::Window* pParent, SvxLinguData_Impl& rD m_pLanguageLB->Clear(); for(long i = 0; i < rLoc.getLength(); i++) { - sal_Int16 nLang = LanguageTag::convertToLanguageType( pLocales[i] ); + LanguageType nLang = LanguageTag::convertToLanguageType( pLocales[i] ); m_pLanguageLB->InsertLanguage( nLang, lcl_SeqHasLang( aAvailLang, nLang ) ); } LanguageType eSysLang = MsLangId::getSystemLanguage(); @@ -1942,7 +1937,7 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox* pBox) // save old probably changed settings // before switching to new language entries - sal_Int16 nLang = LanguageTag::convertToLanguageType( aLastLocale ); + LanguageType nLang = LanguageTag::convertToLanguageType( aLastLocale ); sal_Int32 nStart = 0, nLocalIndex = 0; Sequence< OUString > aChange; diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx index 1c17f37ea850..23f4dfa77834 100644 --- a/cui/source/tabpages/autocdlg.cxx +++ b/cui/source/tabpages/autocdlg.cxx @@ -121,14 +121,14 @@ OfaAutoCorrDlg::OfaAutoCorrDlg(vcl::Window* pParent, const SfxItemSet* _pSet ) m_pLanguageLB->SelectLanguage( LANGUAGE_NONE ); sal_Int32 nPos = m_pLanguageLB->GetSelectEntryPos(); DBG_ASSERT( LISTBOX_ENTRY_NOTFOUND != nPos, "listbox entry missing" ); - m_pLanguageLB->SetEntryData( nPos, reinterpret_cast<void*>(LANGUAGE_UNDETERMINED) ); + m_pLanguageLB->SetEntryData( nPos, reinterpret_cast<void*>((sal_uInt16)LANGUAGE_UNDETERMINED) ); // Initializing doesn't work for static on linux - therefore here if( LANGUAGE_SYSTEM == eLastDialogLanguage ) eLastDialogLanguage = Application::GetSettings().GetLanguageTag().getLanguageType(); LanguageType nSelectLang = LANGUAGE_UNDETERMINED; - nPos = m_pLanguageLB->GetEntryPos( reinterpret_cast<void*>(eLastDialogLanguage) ); + nPos = m_pLanguageLB->GetEntryPos( reinterpret_cast<void*>((sal_uInt16)eLastDialogLanguage) ); if (LISTBOX_ENTRY_NOTFOUND != nPos) nSelectLang = eLastDialogLanguage; m_pLanguageLB->SelectLanguage( nSelectLang ); @@ -179,7 +179,7 @@ IMPL_LINK(OfaAutoCorrDlg, SelectLanguageHdl, ListBox&, rBox, void) { sal_Int32 nPos = rBox.GetSelectEntryPos(); void* pVoid = rBox.GetEntryData(nPos); - LanguageType eNewLang = (LanguageType)reinterpret_cast<sal_IntPtr>(pVoid); + LanguageType eNewLang = LanguageType(reinterpret_cast<sal_IntPtr>(pVoid)); // save old settings and fill anew if(eNewLang != eLastDialogLanguage) { diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx index b34670d2f681..10221e1de052 100644 --- a/cui/source/tabpages/chardlg.cxx +++ b/cui/source/tabpages/chardlg.cxx @@ -825,7 +825,7 @@ void SvxCharNamePage::Reset_Impl( const SfxItemSet& rSet, LanguageGroup eLangGrp case SfxItemState::SET: { const SvxLanguageItem& rItem = static_cast<const SvxLanguageItem&>(rSet.Get( nWhich )); - LanguageType eLangType = (LanguageType)rItem.GetValue(); + LanguageType eLangType = rItem.GetValue(); DBG_ASSERT( eLangType != LANGUAGE_SYSTEM, "LANGUAGE_SYSTEM not allowed" ); if ( eLangType != LANGUAGE_DONTKNOW ) pLangBox->SelectLanguage( eLangType ); @@ -1130,13 +1130,13 @@ bool SvxCharNamePage::FillItemSet_Impl( SfxItemSet& rSet, LanguageGroup eLangGrp } sal_Int32 nLangPos = pLangBox->GetSelectEntryPosLBB(); - LanguageType eLangType = (LanguageType)reinterpret_cast<sal_uLong>(pLangBox->GetEntryDataLBB( nLangPos )); + LanguageType eLangType = LanguageType(reinterpret_cast<sal_uLong>(pLangBox->GetEntryDataLBB( nLangPos ))); if ( pOld ) { const SvxLanguageItem& rItem = *static_cast<const SvxLanguageItem*>(pOld); - if ( nLangPos == LISTBOX_ENTRY_NOTFOUND || eLangType == (LanguageType)rItem.GetValue() ) + if ( nLangPos == LISTBOX_ENTRY_NOTFOUND || eLangType == rItem.GetValue() ) bChanged = false; } diff --git a/cui/source/tabpages/numfmt.cxx b/cui/source/tabpages/numfmt.cxx index 73be739ebdfc..1e9bc43aa912 100644 --- a/cui/source/tabpages/numfmt.cxx +++ b/cui/source/tabpages/numfmt.cxx @@ -1813,7 +1813,7 @@ void SvxNumberFormatTabPage::AddAutomaticLanguage_Impl(LanguageType eAutoLang, b { m_pLbLanguage->RemoveLanguage(LANGUAGE_SYSTEM); const sal_Int32 nPos = m_pLbLanguage->InsertEntry(sAutomaticEntry); - m_pLbLanguage->SetEntryData(nPos, reinterpret_cast<void*>((sal_uLong)eAutoLang)); + m_pLbLanguage->SetEntryData(nPos, reinterpret_cast<void*>((sal_uInt16)eAutoLang)); if(bSelect) m_pLbLanguage->SelectEntryPos(nPos); } diff --git a/editeng/source/editeng/editdbg.cxx b/editeng/source/editeng/editdbg.cxx index df8f248ff5f6..6c2d0c58770c 100644 --- a/editeng/source/editeng/editdbg.cxx +++ b/editeng/source/editeng/editdbg.cxx @@ -165,7 +165,7 @@ OString DbgOutItem(const SfxItemPool& rPool, const SfxPoolItem& rItem) case EE_CHAR_LANGUAGE_CJK: case EE_CHAR_LANGUAGE_CTL: aDebStr.append("Language="); - aDebStr.append(static_cast<sal_Int32>(static_cast<const SvxLanguageItem&>(rItem).GetLanguage())); + aDebStr.append((sal_Int32)static_cast<sal_uInt16>(static_cast<const SvxLanguageItem&>(rItem).GetLanguage())); break; case EE_CHAR_COLOR: { diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx index ecc78b89d071..5ce07a2f7680 100644 --- a/editeng/source/editeng/editview.cxx +++ b/editeng/source/editeng/editview.cxx @@ -136,11 +136,11 @@ LanguageType EditView::CheckLanguage( sal_Int32 nCount = SAL_N_ELEMENTS(aLangList); for (sal_Int32 i = 0; i < nCount; i++) { - sal_Int16 nTmpLang = aLangList[i]; + LanguageType nTmpLang = aLangList[i]; if (nTmpLang != LANGUAGE_NONE && nTmpLang != LANGUAGE_DONTKNOW) { - if (xSpell->hasLanguage( nTmpLang ) && - xSpell->isValid( rText, nTmpLang, Sequence< PropertyValue >() )) + if (xSpell->hasLanguage( (sal_uInt16)nTmpLang ) && + xSpell->isValid( rText, (sal_uInt16)nTmpLang, Sequence< PropertyValue >() )) { nLang = nTmpLang; break; @@ -853,7 +853,7 @@ void EditView::ExecuteSpellPopup( const Point& rPosPixel, Link<SpellCallbackInfo // Are there any replace suggestions? Reference< linguistic2::XSpellAlternatives > xSpellAlt = - xSpeller->spell( aSelected, pImpEditView->pEditEngine->pImpEditEngine->GetLanguage( aPaM2 ), aPropVals ); + xSpeller->spell( aSelected, (sal_uInt16)pImpEditView->pEditEngine->pImpEditEngine->GetLanguage( aPaM2 ), aPropVals ); Reference< linguistic2::XLanguageGuessing > xLangGuesser( EditDLL::Get().GetGlobalData()->GetLanguageGuesser() ); @@ -936,7 +936,7 @@ void EditView::ExecuteSpellPopup( const Point& rPosPixel, Link<SpellCallbackInfo aDics = xDicList->getDictionaries(); pDic = aDics.getConstArray(); - sal_uInt16 nCheckedLanguage = pImpEditView->pEditEngine->pImpEditEngine->GetLanguage( aPaM2 ); + LanguageType nCheckedLanguage = pImpEditView->pEditEngine->pImpEditEngine->GetLanguage( aPaM2 ); sal_uInt16 nDicCount = (sal_uInt16)aDics.getLength(); for (sal_uInt16 i = 0; i < nDicCount; i++) { diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index ab1db9862c79..217b190e2786 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -1890,7 +1890,7 @@ Reference< XSpellAlternatives > ImpEditEngine::ImpSpell( EditView* pEditView ) { LanguageType eLang = GetLanguage( aCurSel.Max() ); SvxSpellWrapper::CheckSpellLang( xSpeller, eLang ); - xSpellAlt = xSpeller->spell( aWord, eLang, aEmptySeq ); + xSpellAlt = xSpeller->spell( aWord, (sal_uInt16)eLang, aEmptySeq ); } if ( !xSpellAlt.is() ) @@ -1938,7 +1938,7 @@ Reference< XSpellAlternatives > ImpEditEngine::ImpFindNextError(EditSelection& r } if ( !aWord.isEmpty() ) - xSpellAlt = xSpeller->spell( aWord, GetLanguage( aCurSel.Max() ), aEmptySeq ); + xSpellAlt = xSpeller->spell( aWord, (sal_uInt16)GetLanguage( aCurSel.Max() ), aEmptySeq ); if ( !xSpellAlt.is() ) aCurSel = WordRight( aCurSel.Min(), css::i18n::WordType::DICTIONARY_WORD ); @@ -2315,7 +2315,7 @@ void ImpEditEngine::DoOnlineSpelling( ContentNode* pThisNodeOnly, bool bSpellAtC { const sal_Int32 nWStart = aSel.Min().GetIndex(); const sal_Int32 nWEnd = aSel.Max().GetIndex(); - if ( !xSpeller->isValid( aWord, GetLanguage( EditPaM( aSel.Min().GetNode(), nWStart+1 ) ), aEmptySeq ) ) + if ( !xSpeller->isValid( aWord, (sal_uInt16)GetLanguage( EditPaM( aSel.Min().GetNode(), nWStart+1 ) ), aEmptySeq ) ) { // Check if already marked correctly... const sal_Int32 nXEnd = bDottAdded ? nWEnd -1 : nWEnd; @@ -2463,7 +2463,7 @@ EESpellState ImpEditEngine::HasSpellErrors() { LanguageType eLang = GetLanguage( aCurSel.Max() ); SvxSpellWrapper::CheckSpellLang( xSpeller, eLang ); - xSpellAlt = xSpeller->spell( aWord, eLang, aEmptySeq ); + xSpellAlt = xSpeller->spell( aWord, (sal_uInt16)eLang, aEmptySeq ); } aCurSel = WordRight( aCurSel.Max(), css::i18n::WordType::DICTIONARY_WORD ); } @@ -2741,7 +2741,7 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection, sal_Int32 nCurrentStart = nStartPos; sal_Int32 nCurrentEnd = nEndPos; - sal_uInt16 nLanguage = LANGUAGE_SYSTEM; + LanguageType nLanguage = LANGUAGE_SYSTEM; // since we don't use Hiragana/Katakana or half-width/full-width transliterations here // it is fine to use ANYWORD_IGNOREWHITESPACES. (ANY_WORD btw is broken and will diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx index 3b4ef530d88a..72de8968f410 100644 --- a/editeng/source/items/textitem.cxx +++ b/editeng/source/items/textitem.cxx @@ -2366,7 +2366,7 @@ SfxPoolItem* SvxLanguageItem::Clone( SfxItemPool * ) const SvStream& SvxLanguageItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const { - rStrm.WriteUInt16( GetValue() ); + rStrm.WriteUInt16( (sal_uInt16)GetValue() ); return rStrm; } @@ -2375,7 +2375,7 @@ SfxPoolItem* SvxLanguageItem::Create(SvStream& rStrm, sal_uInt16) const { sal_uInt16 nValue; rStrm.ReadUInt16( nValue ); - return new SvxLanguageItem( (LanguageType)nValue, Which() ); + return new SvxLanguageItem( LanguageType(nValue), Which() ); } @@ -2387,7 +2387,7 @@ bool SvxLanguageItem::GetPresentation OUString& rText, const IntlWrapper * /*pIntl*/ ) const { - rText = SvtLanguageTable::GetLanguageString( (LanguageType)GetValue() ); + rText = SvtLanguageTable::GetLanguageString( GetValue() ); return true; } @@ -2397,7 +2397,7 @@ bool SvxLanguageItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const switch(nMemberId) { case MID_LANG_INT: // for basic conversions! - rVal <<= (sal_Int16)(GetValue()); + rVal <<= (sal_Int16)(sal_uInt16)GetValue(); break; case MID_LANG_LOCALE: lang::Locale aRet( LanguageTag::convertToLocale( GetValue(), false)); @@ -2418,7 +2418,7 @@ bool SvxLanguageItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) if(!(rVal >>= nValue)) return false; - SetValue((sal_Int16)nValue); + SetValue(LanguageType(nValue)); } break; case MID_LANG_LOCALE: @@ -3434,7 +3434,7 @@ void GetDefaultFonts( SvxFontItem& rLatin, SvxFontItem& rAsian, SvxFontItem& rCo static struct { DefaultFontType nFontType; - sal_uInt16 nLanguage; + LanguageType nLanguage; } aOutTypeArr[ nItemCnt ] = { diff --git a/editeng/source/misc/forbiddencharacterstable.cxx b/editeng/source/misc/forbiddencharacterstable.cxx index 1391d993316a..f52c90eb2b86 100644 --- a/editeng/source/misc/forbiddencharacterstable.cxx +++ b/editeng/source/misc/forbiddencharacterstable.cxx @@ -30,7 +30,7 @@ SvxForbiddenCharactersTable::SvxForbiddenCharactersTable( const css::uno::Refere m_xContext = rxContext; } -const css::i18n::ForbiddenCharacters* SvxForbiddenCharactersTable::GetForbiddenCharacters( sal_uInt16 nLanguage, bool bGetDefault ) +const css::i18n::ForbiddenCharacters* SvxForbiddenCharactersTable::GetForbiddenCharacters( LanguageType nLanguage, bool bGetDefault ) { css::i18n::ForbiddenCharacters* pForbiddenCharacters = nullptr; Map::iterator it = maMap.find( nLanguage ); @@ -45,12 +45,12 @@ const css::i18n::ForbiddenCharacters* SvxForbiddenCharactersTable::GetForbiddenC return pForbiddenCharacters; } -void SvxForbiddenCharactersTable::SetForbiddenCharacters( sal_uInt16 nLanguage, const css::i18n::ForbiddenCharacters& rForbiddenChars ) +void SvxForbiddenCharactersTable::SetForbiddenCharacters( LanguageType nLanguage, const css::i18n::ForbiddenCharacters& rForbiddenChars ) { maMap[ nLanguage ] = rForbiddenChars; } -void SvxForbiddenCharactersTable::ClearForbiddenCharacters( sal_uInt16 nLanguage ) +void SvxForbiddenCharactersTable::ClearForbiddenCharacters( LanguageType nLanguage ) { maMap.erase( nLanguage ); } diff --git a/editeng/source/misc/splwrap.cxx b/editeng/source/misc/splwrap.cxx index 56024f280610..5e227a6bfd06 100644 --- a/editeng/source/misc/splwrap.cxx +++ b/editeng/source/misc/splwrap.cxx @@ -175,7 +175,7 @@ SvxSpellWrapper::SvxSpellWrapper( vcl::Window* pWn, sal_Int16 SvxSpellWrapper::CheckSpellLang( - Reference< XSpellChecker1 > const & xSpell, sal_Int16 nLang) + Reference< XSpellChecker1 > const & xSpell, LanguageType nLang) { LangCheckState_map_t &rLCS = GetLangCheckState(); @@ -188,7 +188,7 @@ sal_Int16 SvxSpellWrapper::CheckSpellLang( if (SVX_LANG_NEED_CHECK == (nVal & 0x00FF)) { sal_uInt16 nTmpVal = SVX_LANG_MISSING_DO_WARN; - if (xSpell.is() && xSpell->hasLanguage( nLang )) + if (xSpell.is() && xSpell->hasLanguage( (sal_uInt16)nLang )) nTmpVal = SVX_LANG_OK; nVal &= 0xFF00; nVal |= nTmpVal; @@ -200,7 +200,7 @@ sal_Int16 SvxSpellWrapper::CheckSpellLang( } sal_Int16 SvxSpellWrapper::CheckHyphLang( - Reference< XHyphenator > const & xHyph, sal_Int16 nLang) + Reference< XHyphenator > const & xHyph, LanguageType nLang) { LangCheckState_map_t &rLCS = GetLangCheckState(); diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index f6fd40376a34..720a23bda34a 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -203,7 +203,7 @@ static const LanguageTag& GetAppLang() { return Application::GetSettings().GetLanguageTag(); } -static LocaleDataWrapper& GetLocaleDataWrapper( sal_uInt16 nLang ) +static LocaleDataWrapper& GetLocaleDataWrapper( LanguageType nLang ) { static LocaleDataWrapper aLclDtWrp( GetAppLang() ); LanguageTag aLcl( nLang ); @@ -276,21 +276,18 @@ long SvxAutoCorrect::GetDefaultFlags() | SaveWordWrdSttLst | CorrectCapsLock; LanguageType eLang = GetAppLang().getLanguageType(); - switch( eLang ) - { - case LANGUAGE_ENGLISH: - case LANGUAGE_ENGLISH_US: - case LANGUAGE_ENGLISH_UK: - case LANGUAGE_ENGLISH_AUS: - case LANGUAGE_ENGLISH_CAN: - case LANGUAGE_ENGLISH_NZ: - case LANGUAGE_ENGLISH_EIRE: - case LANGUAGE_ENGLISH_SAFRICA: - case LANGUAGE_ENGLISH_JAMAICA: - case LANGUAGE_ENGLISH_CARRIBEAN: + if( eLang.anyOf( + LANGUAGE_ENGLISH, + LANGUAGE_ENGLISH_US, + LANGUAGE_ENGLISH_UK, + LANGUAGE_ENGLISH_AUS, + LANGUAGE_ENGLISH_CAN, + LANGUAGE_ENGLISH_NZ, + LANGUAGE_ENGLISH_EIRE, + LANGUAGE_ENGLISH_SAFRICA, + LANGUAGE_ENGLISH_JAMAICA, + LANGUAGE_ENGLISH_CARRIBEAN)) nRet &= ~(ChgQuotes|ChgSglQuotes); - break; - } return nRet; } @@ -421,10 +418,10 @@ bool SvxAutoCorrect::FnCapitalStartWord( SvxAutoCorrDoc& rDoc, const OUString& r // Check that word isn't correctly spelled before correcting: css::uno::Reference< css::linguistic2::XSpellChecker1 > xSpeller = LinguMgr::GetSpellChecker(); - if( xSpeller->hasLanguage(eLang) ) + if( xSpeller->hasLanguage((sal_uInt16)eLang) ) { Sequence< css::beans::PropertyValue > aEmptySeq; - if (xSpeller->isValid(sWord, eLang, aEmptySeq)) + if (xSpeller->isValid(sWord, (sal_uInt16)eLang, aEmptySeq)) { return false; } @@ -457,12 +454,10 @@ bool SvxAutoCorrect::FnChgOrdinalNumber( // In some languages ordinal suffixes should never be // changed to superscript. Let's break for those languages. - switch (eLang) + if (!eLang.anyOf( + LANGUAGE_SWEDISH, + LANGUAGE_SWEDISH_FINLAND)) { - case LANGUAGE_SWEDISH: - case LANGUAGE_SWEDISH_FINLAND: - break; - default: CharClass& rCC = GetCharClass(eLang); for (; nSttPos < nEndPos; ++nSttPos) @@ -1187,13 +1182,13 @@ void SvxAutoCorrect::InsertQuote( SvxAutoCorrDoc& rDoc, sal_Int32 nInsPos, { if( LANGUAGE_SYSTEM == eLang ) eLang = GetAppLang().getLanguageType(); - switch( eLang ) + if( eLang.anyOf( + LANGUAGE_FRENCH, + LANGUAGE_FRENCH_BELGIAN, + LANGUAGE_FRENCH_CANADIAN, + LANGUAGE_FRENCH_SWISS, + LANGUAGE_FRENCH_LUXEMBOURG)) { - case LANGUAGE_FRENCH: - case LANGUAGE_FRENCH_BELGIAN: - case LANGUAGE_FRENCH_CANADIAN: - case LANGUAGE_FRENCH_SWISS: - case LANGUAGE_FRENCH_LUXEMBOURG: { OUString s( cNonBreakingSpace ); // UNICODE code for no break space @@ -1203,7 +1198,6 @@ void SvxAutoCorrect::InsertQuote( SvxAutoCorrDoc& rDoc, sal_Int32 nInsPos, ++nInsPos; } } - break; } } @@ -1222,18 +1216,17 @@ OUString SvxAutoCorrect::GetQuote( SvxAutoCorrDoc& rDoc, sal_Int32 nInsPos, { if( LANGUAGE_SYSTEM == eLang ) eLang = GetAppLang().getLanguageType(); - switch( eLang ) + if( eLang.anyOf( + LANGUAGE_FRENCH, + LANGUAGE_FRENCH_BELGIAN, + LANGUAGE_FRENCH_CANADIAN, + LANGUAGE_FRENCH_SWISS, + LANGUAGE_FRENCH_LUXEMBOURG)) { - case LANGUAGE_FRENCH: - case LANGUAGE_FRENCH_BELGIAN: - case LANGUAGE_FRENCH_CANADIAN: - case LANGUAGE_FRENCH_SWISS: - case LANGUAGE_FRENCH_LUXEMBOURG: if( bSttQuote ) sRet += " "; else sRet = " " + sRet; - break; } } return sRet; diff --git a/editeng/source/rtf/rtfitem.cxx b/editeng/source/rtf/rtfitem.cxx index da91b578ff33..e891184b8c14 100644 --- a/editeng/source/rtf/rtfitem.cxx +++ b/editeng/source/rtf/rtfitem.cxx @@ -956,7 +956,7 @@ ATTR_SETOVERLINE: case RTF_LANG: if( aPlainMap.nLanguage ) { - pSet->Put( SvxLanguageItem( (LanguageType)nTokenValue, + pSet->Put( SvxLanguageItem( LanguageType(nTokenValue), aPlainMap.nLanguage )); } break; @@ -964,13 +964,13 @@ ATTR_SETOVERLINE: case RTF_LANGFE: if( aPlainMap.nCJKLanguage ) { - pSet->Put( SvxLanguageItem( (LanguageType)nTokenValue, + pSet->Put( SvxLanguageItem( LanguageType(nTokenValue), aPlainMap.nCJKLanguage )); } break; case RTF_ALANG: { - SvxLanguageItem aTmpItem( (LanguageType)nTokenValue, + SvxLanguageItem aTmpItem( LanguageType(nTokenValue), SID_ATTR_CHAR_LANGUAGE ); SetScriptAttr( eCharType, *pSet, aTmpItem ); } @@ -1835,8 +1835,7 @@ void SvxRTFParser::SetDefault( int nToken, int nValue ) // store default Language if( -1 != nValue ) { - SvxLanguageItem aTmpItem( (const LanguageType)nValue, - SID_ATTR_CHAR_LANGUAGE ); + SvxLanguageItem aTmpItem( LanguageType(nValue), SID_ATTR_CHAR_LANGUAGE ); SetScriptAttr( NOTDEF_CHARTYPE, aTmp, aTmpItem ); } break; diff --git a/editeng/source/uno/UnoForbiddenCharsTable.cxx b/editeng/source/uno/UnoForbiddenCharsTable.cxx index 7c9a17825a80..9a9b9854b20a 100644 --- a/editeng/source/uno/UnoForbiddenCharsTable.cxx +++ b/editeng/source/uno/UnoForbiddenCharsTable.cxx @@ -115,8 +115,8 @@ Sequence< lang::Locale > SAL_CALL SvxUnoForbiddenCharsTable::getLocales() for( SvxForbiddenCharactersTable::Map::iterator it = mxForbiddenChars->GetMap().begin(); it != mxForbiddenChars->GetMap().end(); ++it ) { - const sal_uLong nLanguage = it->first; - *pLocales++ = LanguageTag( static_cast < LanguageType > (nLanguage) ).getLocale(); + const LanguageType nLanguage = it->first; + *pLocales++ = LanguageTag( nLanguage ).getLocale(); } } diff --git a/filter/source/msfilter/countryid.cxx b/filter/source/msfilter/countryid.cxx index 6fa9066d6d85..b2dd7021df62 100644 --- a/filter/source/msfilter/countryid.cxx +++ b/filter/source/msfilter/countryid.cxx @@ -276,7 +276,7 @@ inline bool CountryEntryPred_Language::operator()( const CountryEntry& rCmp ) co // rCmp.mbUseSubLang==true -> compare full language type // rCmp.mbUseSubLang==false -> compare primary language only return rCmp.mbUseSubLang ? (meLanguage == rCmp.meLanguage) : - ((meLanguage & 0x03FF) == (rCmp.meLanguage & 0x03FF)); + (primary(meLanguage) == primary(rCmp.meLanguage)); } } // namespace diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 2748b61896ae..6b50a7bda803 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -4445,7 +4445,7 @@ PPTCharPropSet::PPTCharPropSet(sal_uInt32 nParagraph) mnHylinkOrigColor = 0; mbIsHyperlink = false; mbHardHylinkOrigColor = false; - mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = 0; + mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = LANGUAGE_SYSTEM; } PPTCharPropSet::PPTCharPropSet( const PPTCharPropSet& rCharPropSet ) @@ -4475,7 +4475,7 @@ PPTCharPropSet::PPTCharPropSet( const PPTCharPropSet& rCharPropSet, sal_uInt32 n mnOriginalTextPos = rCharPropSet.mnOriginalTextPos; maString = rCharPropSet.maString; mpFieldItem.reset( rCharPropSet.mpFieldItem ? new SvxFieldItem( *rCharPropSet.mpFieldItem ) : nullptr ); - mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = 0; + mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = LANGUAGE_SYSTEM; } PPTCharPropSet::~PPTCharPropSet() @@ -4737,9 +4737,9 @@ PPTTextSpecInfo::PPTTextSpecInfo( sal_uInt32 _nCharIdx ) : nCharIdx ( _nCharIdx ), nDontKnow ( 1 ) { - nLanguage[ 0 ] = 0x400; - nLanguage[ 1 ] = 0; - nLanguage[ 2 ] = 0; + nLanguage[ 0 ] = LANGUAGE_PROCESS_OR_USER_DEFAULT; + nLanguage[ 1 ] = LANGUAGE_SYSTEM; + nLanguage[ 2 ] = LANGUAGE_SYSTEM; } PPTTextSpecInfo::~PPTTextSpecInfo() @@ -4796,14 +4796,14 @@ bool PPTTextSpecInfoAtomInterpreter::Read( SvStream& rIn, const DffRecordHeader& if ( nLang ) { // #i119985#, we could probably handle this better if we have a - // place to over-ride the final language for weak + // place to override the final language for weak // characters/fields to fallback to, rather than the current // application locale. Assuming that we can determine what the // default fallback language for a given .ppt, etc is during // load time. if (i == 2) { - pEntry->nLanguage[ 0 ] = pEntry->nLanguage[ 1 ] = pEntry->nLanguage[ 2 ] = nLang; + pEntry->nLanguage[ 0 ] = pEntry->nLanguage[ 1 ] = pEntry->nLanguage[ 2 ] = LanguageType(nLang); } } nFlags &= ~i; diff --git a/forms/source/component/FormattedField.cxx b/forms/source/component/FormattedField.cxx index 67c0a2b11d51..2f4c42cbd272 100644 --- a/forms/source/component/FormattedField.cxx +++ b/forms/source/component/FormattedField.cxx @@ -672,7 +672,7 @@ void OFormattedModel::write(const Reference<XObjectOutputStream>& _rxOutStream) if (hasProperty(s_aFormatStringProp, xFormat)) xFormat->getPropertyValue(s_aFormatStringProp) >>= sFormatDescription; _rxOutStream->writeUTF(sFormatDescription); - _rxOutStream->writeLong((sal_Int32)eFormatLanguage); + _rxOutStream->writeLong((sal_uInt16)eFormatLanguage); } // version 2 : write the properties common to all OEditBaseModels writeCommonEditProperties(_rxOutStream); @@ -729,7 +729,7 @@ void OFormattedModel::read(const Reference<XObjectInputStream>& _rxInStream) { // read string and language... OUString sFormatDescription = _rxInStream->readUTF(); - LanguageType eDescriptionLanguage = (LanguageType)_rxInStream->readLong(); + LanguageType eDescriptionLanguage(_rxInStream->readLong()); // and let a formatter roll dice based on that to create a key... xSupplier = calcFormatsSupplier(); // calcFormatsSupplier first takes the one from the model, then one from the starform, then a new one... diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx index c3660d2b7320..7b1504ae69f4 100644 --- a/framework/source/services/substitutepathvars.cxx +++ b/framework/source/services/substitutepathvars.cxx @@ -671,7 +671,7 @@ void SubstitutePathVariables::SetPredefinedPathVariables() m_aPreDefVars.m_FixedVar[ PREDEFVAR_VLANG ] = aLocaleStr; // Set $(langid) - m_aPreDefVars.m_FixedVar[ PREDEFVAR_LANGID ] = OUString::number( m_aPreDefVars.m_eLanguageType ); + m_aPreDefVars.m_FixedVar[ PREDEFVAR_LANGID ] = OUString::number( (sal_uInt16)m_aPreDefVars.m_eLanguageType ); // Set the other pre defined path variables // Set $(work) diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx b/i18nlangtag/qa/cppunit/test_languagetag.cxx index bec6ed991da0..e2a1cf72a955 100644 --- a/i18nlangtag/qa/cppunit/test_languagetag.cxx +++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx @@ -54,7 +54,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("de"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("DE"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_GERMAN), nLanguageType ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_GERMAN, nLanguageType ); CPPUNIT_ASSERT_EQUAL( OUString("de"), de_DE.getLanguage() ); CPPUNIT_ASSERT_EQUAL( OUString("DE"), de_DE.getCountry() ); CPPUNIT_ASSERT( de_DE.getScript().isEmpty() ); @@ -87,7 +87,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("sr"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("RS"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA), sr_RS.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA, sr_RS.getLanguageType() ); CPPUNIT_ASSERT( sr_RS.isValidBcp47() ); CPPUNIT_ASSERT( sr_RS.isIsoLocale() ); CPPUNIT_ASSERT( sr_RS.isIsoODF() ); @@ -101,7 +101,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("RS"), aLocale.Country ); CPPUNIT_ASSERT_EQUAL( s_sr_Latn_RS, aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_SERBIAN_LATIN_SERBIA), sr_RS.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_SERBIAN_LATIN_SERBIA, sr_RS.getLanguageType() ); CPPUNIT_ASSERT( sr_RS.isValidBcp47() ); CPPUNIT_ASSERT( !sr_RS.isIsoLocale() ); CPPUNIT_ASSERT( sr_RS.isIsoODF() ); @@ -119,7 +119,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("CS"), aLocale.Country ); CPPUNIT_ASSERT_EQUAL( s_sr_Latn_CS, aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_SERBIAN_LATIN_SAM), sr_Latn_CS.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_SERBIAN_LATIN_SAM, sr_Latn_CS.getLanguageType() ); CPPUNIT_ASSERT( sr_Latn_CS.isValidBcp47() ); CPPUNIT_ASSERT( !sr_Latn_CS.isIsoLocale() ); CPPUNIT_ASSERT( sr_Latn_CS.isIsoODF() ); @@ -150,7 +150,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString(I18NLANGTAG_QLT) , aLocale.Language); CPPUNIT_ASSERT_EQUAL( OUString("RS"), aLocale.Country ); CPPUNIT_ASSERT_EQUAL( OUString("sr-Latn-RS"), aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_SERBIAN_LATIN_SERBIA), sh_RS.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_SERBIAN_LATIN_SERBIA, sh_RS.getLanguageType() ); CPPUNIT_ASSERT( sh_RS.isValidBcp47() ); CPPUNIT_ASSERT( !sh_RS.isIsoLocale() ); CPPUNIT_ASSERT( sh_RS.isIsoODF() ); @@ -168,7 +168,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("sr"), sh_RS_Fallbacks[5]); CPPUNIT_ASSERT_EQUAL( OUString("sr-Latn-RS"), sh_RS.makeFallback().getBcp47()); CPPUNIT_ASSERT_EQUAL( OUString("sr-Latn-RS"), sh_RS.getBcp47()); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_SERBIAN_LATIN_SERBIA), sh_RS.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_SERBIAN_LATIN_SERBIA, sh_RS.getLanguageType() ); } // 'bs-Latn-BA' with 'Latn' suppress-script, we map that ourselves for a @@ -182,7 +182,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("bs"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("BA"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA), bs_Latn_BA.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA, bs_Latn_BA.getLanguageType() ); CPPUNIT_ASSERT( bs_Latn_BA.isValidBcp47() ); CPPUNIT_ASSERT( bs_Latn_BA.isIsoLocale() ); CPPUNIT_ASSERT( bs_Latn_BA.isIsoODF() ); @@ -196,7 +196,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("bs"), bs_Latn_BA_Fallbacks[1]); CPPUNIT_ASSERT_EQUAL( OUString("bs-BA"), bs_Latn_BA.makeFallback().getBcp47()); CPPUNIT_ASSERT_EQUAL( OUString("bs-BA"), bs_Latn_BA.getBcp47()); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA), bs_Latn_BA.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA, bs_Latn_BA.getLanguageType() ); } { @@ -207,7 +207,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("ES"), aLocale.Country ); CPPUNIT_ASSERT_EQUAL( s_ca_ES_valencia, aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_CATALAN_VALENCIAN), ca_ES_valencia.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_CATALAN_VALENCIAN, ca_ES_valencia.getLanguageType() ); CPPUNIT_ASSERT( ca_ES_valencia.isValidBcp47() ); CPPUNIT_ASSERT( !ca_ES_valencia.isIsoLocale() ); CPPUNIT_ASSERT( !ca_ES_valencia.isIsoODF() ); @@ -258,7 +258,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString(I18NLANGTAG_QLT) , aLocale.Language); CPPUNIT_ASSERT_EQUAL( OUString("ES"), aLocale.Country ); CPPUNIT_ASSERT_EQUAL( s_ca_ES_valencia, aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_CATALAN_VALENCIAN), ca_XV.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_CATALAN_VALENCIAN, ca_XV.getLanguageType() ); CPPUNIT_ASSERT( ca_XV.isValidBcp47() ); CPPUNIT_ASSERT( !ca_XV.isIsoLocale() ); CPPUNIT_ASSERT( !ca_XV.isIsoODF() ); @@ -284,7 +284,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("de"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("DE"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_GERMAN), de_DE.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_GERMAN, de_DE.getLanguageType() ); CPPUNIT_ASSERT( de_DE.isValidBcp47() ); CPPUNIT_ASSERT( de_DE.isIsoLocale() ); CPPUNIT_ASSERT( de_DE.isIsoODF() ); @@ -307,7 +307,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("de"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("DE"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_GERMAN), de_DE.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_GERMAN, de_DE.getLanguageType() ); } { @@ -318,7 +318,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("de"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("DE"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_GERMAN), de_DE.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_GERMAN, de_DE.getLanguageType() ); } // Unmapped but known language-only. @@ -345,7 +345,7 @@ void TestLanguageTag::testAllTags() LanguageTag bo( "bo", true ); CPPUNIT_ASSERT_EQUAL( MsLangId::getPrimaryLanguage( LANGUAGE_TIBETAN), bo.getLanguageType() ); LanguageTag dz( "dz", true ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_DZONGKHA_MAP_LONLY), dz.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_DZONGKHA_MAP_LONLY, dz.getLanguageType() ); } // "no", "nb" and "nn" share the same primary language ID, which even is @@ -355,11 +355,11 @@ void TestLanguageTag::testAllTags() LanguageTag no( "no", true ); CPPUNIT_ASSERT( LanguageTag::isOnTheFlyID( no.getLanguageType()) ); LanguageTag nb( "nb", true ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_NORWEGIAN_BOKMAL_LSO), nb.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_NORWEGIAN_BOKMAL_LSO, nb.getLanguageType() ); LanguageTag nn( "nn", true ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_NORWEGIAN_NYNORSK_LSO), nn.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_NORWEGIAN_NYNORSK_LSO, nn.getLanguageType() ); LanguageTag no_NO( "no-NO", true ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_NORWEGIAN), no_NO.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_NORWEGIAN, no_NO.getLanguageType() ); } // 'de-1901' derived from 'de-DE-1901' grandfathered to check that it is @@ -397,7 +397,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("GB"), aLocale.Country ); CPPUNIT_ASSERT_EQUAL( s_en_GB_oxendict, aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_ENGLISH_UK_OXENDICT), en_GB_oed.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_ENGLISH_UK_OXENDICT, en_GB_oed.getLanguageType() ); CPPUNIT_ASSERT( en_GB_oed.isValidBcp47() ); CPPUNIT_ASSERT( !en_GB_oed.isIsoLocale() ); CPPUNIT_ASSERT( !en_GB_oed.isIsoODF() ); @@ -422,7 +422,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("GB"), aLocale.Country ); CPPUNIT_ASSERT_EQUAL( s_en_GB_oxendict, aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_ENGLISH_UK_OXENDICT), en_GB_oxendict.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_ENGLISH_UK_OXENDICT, en_GB_oxendict.getLanguageType() ); CPPUNIT_ASSERT( en_GB_oxendict.isValidBcp47() ); CPPUNIT_ASSERT( !en_GB_oxendict.isIsoLocale() ); CPPUNIT_ASSERT( !en_GB_oxendict.isIsoODF() ); @@ -476,7 +476,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qtz"), aLocale.Language ); CPPUNIT_ASSERT( aLocale.Country.isEmpty() ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_KEYID), qtz.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_KEYID, qtz.getLanguageType() ); } // 'qty' is a local use unknown locale @@ -511,7 +511,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT( aLocale.Country.isEmpty() ); CPPUNIT_ASSERT_EQUAL( OUString("x-comment"), aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_PRIV_COMMENT), xcomment.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_PRIV_COMMENT, xcomment.getLanguageType() ); } // 'x-foobar' is a privateuse unknown "locale" @@ -535,7 +535,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT( aLocale.Country.isEmpty() ); CPPUNIT_ASSERT_EQUAL( OUString("*"), aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_PRIV_JOKER), joker.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_PRIV_JOKER, joker.getLanguageType() ); joker.reset( LANGUAGE_USER_PRIV_JOKER ); aLocale = joker.getLocale(); @@ -543,7 +543,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT( aLocale.Country.isEmpty() ); CPPUNIT_ASSERT_EQUAL( OUString("*"), aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_USER_PRIV_JOKER), joker.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_USER_PRIV_JOKER, joker.getLanguageType() ); } // 'C' locale shall map to 'en-US' @@ -556,7 +556,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("en"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("US"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_ENGLISH_US), aTag.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_ENGLISH_US, aTag.getLanguageType() ); } { LanguageTag aTag( lang::Locale("C","","") ); @@ -567,7 +567,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("en"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("US"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_ENGLISH_US), aTag.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_ENGLISH_US, aTag.getLanguageType() ); } // test reset() methods @@ -581,7 +581,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("de"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("DE"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_GERMAN), aTag.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_GERMAN, aTag.getLanguageType() ); aTag.reset( "en-US" ); aLocale = aTag.getLocale(); @@ -589,7 +589,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("en"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("US"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_ENGLISH_US), aTag.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_ENGLISH_US, aTag.getLanguageType() ); aTag.reset( lang::Locale( "de", "DE", "" ) ); aLocale = aTag.getLocale(); @@ -597,7 +597,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("de"), aLocale.Language ); CPPUNIT_ASSERT_EQUAL( OUString("DE"), aLocale.Country ); CPPUNIT_ASSERT( aLocale.Variant.isEmpty() ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_GERMAN), aTag.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_GERMAN, aTag.getLanguageType() ); } { @@ -608,7 +608,7 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT_EQUAL( OUString("qlt"), aLocale.Language ); CPPUNIT_ASSERT( aLocale.Country.isEmpty() ); CPPUNIT_ASSERT_EQUAL( s_uab, aLocale.Variant ); - CPPUNIT_ASSERT_EQUAL( static_cast<LanguageType>(LANGUAGE_DONTKNOW), uab.getLanguageType() ); + CPPUNIT_ASSERT_EQUAL( LANGUAGE_DONTKNOW, uab.getLanguageType() ); CPPUNIT_ASSERT( !uab.isValidBcp47() ); CPPUNIT_ASSERT( !uab.isIsoLocale() ); CPPUNIT_ASSERT( !uab.isIsoODF() ); @@ -722,9 +722,9 @@ void TestLanguageTag::testAllIsoLangEntries() OString aMessage( OUStringToOString( (*it).maBcp47, RTL_TEXTENCODING_ASCII_US)); aMessage += " " + OUStringToOString( aTagString.getBcp47(), RTL_TEXTENCODING_ASCII_US) + ": " + OUStringToOString( aTagString.getBcp47(), RTL_TEXTENCODING_ASCII_US) + " " + - OString::number( aTagString.getLanguageType(), 16) + + OString::number( (sal_uInt16)aTagString.getLanguageType(), 16) + " -> " + OUStringToOString( aTagBack.getBcp47(), RTL_TEXTENCODING_ASCII_US) + " " + - OString::number( aTagBack.getLanguageType(), 16); + OString::number( (sal_uInt16)aTagBack.getLanguageType(), 16); CPPUNIT_ASSERT_EQUAL_MESSAGE( aMessage.getStr(), aTagBack.getLanguageType(), aTagString.getLanguageType()); } } diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index 303b399e130b..3c2d0219f7e0 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -28,7 +28,7 @@ using namespace com::sun::star; -static const LanguageType kSAME = 0xffff; +static const LanguageType kSAME(0xffff); namespace { inline LanguageType getOverrideLang( LanguageType nLang, LanguageType nOverride ) @@ -165,157 +165,158 @@ struct IsoLangOtherEntry * code: * LANGUAGE_ENGLISH LANGUAGE_ARABIC_PRIMARY_ONLY */ +constexpr LanguageType k0(0); static IsoLanguageCountryEntry const aImplIsoLangEntries[] = { // MS-LANGID codes, ISO639-1/2/3, ISO3166, override - { LANGUAGE_ENGLISH, "en", "" , 0 }, - { LANGUAGE_ENGLISH_US, "en", "US", 0 }, - { LANGUAGE_ENGLISH_UK, "en", "GB", 0 }, - { LANGUAGE_ENGLISH_AUS, "en", "AU", 0 }, - { LANGUAGE_ENGLISH_CAN, "en", "CA", 0 }, - { LANGUAGE_FRENCH, "fr", "FR", 0 }, - { LANGUAGE_GERMAN, "de", "DE", 0 }, - { LANGUAGE_ITALIAN, "it", "IT", 0 }, - { LANGUAGE_DUTCH, "nl", "NL", 0 }, - { LANGUAGE_SPANISH_MODERN, "es", "ES", 0 }, - { LANGUAGE_SPANISH_DATED, "es", "ES", 0 }, - { LANGUAGE_PORTUGUESE, "pt", "PT", 0 }, - { LANGUAGE_PORTUGUESE_BRAZILIAN, "pt", "BR", 0 }, - { LANGUAGE_DANISH, "da", "DK", 0 }, - { LANGUAGE_GREEK, "el", "GR", 0 }, - { LANGUAGE_CHINESE_SIMPLIFIED, "zh", "CN", 0 }, - { LANGUAGE_CHINESE_SIMPLIFIED_LEGACY, "zh", "CN", 0 }, - { LANGUAGE_CHINESE_TRADITIONAL, "zh", "TW", 0 }, - { LANGUAGE_CHINESE_HONGKONG, "zh", "HK", 0 }, - { LANGUAGE_CHINESE_SINGAPORE, "zh", "SG", 0 }, - { LANGUAGE_CHINESE_MACAU, "zh", "MO", 0 }, - { LANGUAGE_CHINESE_LSO, "zh", "" , 0 }, - { LANGUAGE_YUE_CHINESE_HONGKONG, "yue", "HK", 0 }, - { LANGUAGE_ENGLISH_HONG_KONG_SAR, "en", "HK", 0 }, - { LANGUAGE_JAPANESE, "ja", "JP", 0 }, - { LANGUAGE_KOREAN, "ko", "KR", 0 }, - { LANGUAGE_KOREAN_JOHAB, "ko", "KR", 0 }, - { LANGUAGE_USER_KOREAN_NORTH, "ko", "KP", 0 }, - { LANGUAGE_SWEDISH, "sv", "SE", 0 }, - { LANGUAGE_SWEDISH_FINLAND, "sv", "FI", 0 }, - { LANGUAGE_FINNISH, "fi", "FI", 0 }, - { LANGUAGE_RUSSIAN, "ru", "RU", 0 }, - { LANGUAGE_TATAR, "tt", "RU", 0 }, - { LANGUAGE_ENGLISH_NZ, "en", "NZ", 0 }, - { LANGUAGE_ENGLISH_EIRE, "en", "IE", 0 }, - { LANGUAGE_DUTCH_BELGIAN, "nl", "BE", 0 }, - { LANGUAGE_FRENCH_BELGIAN, "fr", "BE", 0 }, - { LANGUAGE_FRENCH_CANADIAN, "fr", "CA", 0 }, - { LANGUAGE_FRENCH_SWISS, "fr", "CH", 0 }, - { LANGUAGE_GERMAN_SWISS, "de", "CH", 0 }, - { LANGUAGE_GERMAN_AUSTRIAN, "de", "AT", 0 }, - { LANGUAGE_ITALIAN_SWISS, "it", "CH", 0 }, - { LANGUAGE_ALBANIAN, "sq", "AL", 0 }, - { LANGUAGE_ARABIC_SAUDI_ARABIA, "ar", "SA", 0 }, - { LANGUAGE_ARABIC_EGYPT, "ar", "EG", 0 }, - { LANGUAGE_ARABIC_UAE, "ar", "AE", 0 }, - { LANGUAGE_ARABIC_IRAQ, "ar", "IQ", 0 }, - { LANGUAGE_ARABIC_LIBYA, "ar", "LY", 0 }, - { LANGUAGE_ARABIC_ALGERIA, "ar", "DZ", 0 }, - { LANGUAGE_ARABIC_MOROCCO, "ar", "MA", 0 }, - { LANGUAGE_ARABIC_TUNISIA, "ar", "TN", 0 }, - { LANGUAGE_ARABIC_OMAN, "ar", "OM", 0 }, - { LANGUAGE_ARABIC_YEMEN, "ar", "YE", 0 }, - { LANGUAGE_ARABIC_SYRIA, "ar", "SY", 0 }, - { LANGUAGE_ARABIC_JORDAN, "ar", "JO", 0 }, - { LANGUAGE_ARABIC_LEBANON, "ar", "LB", 0 }, - { LANGUAGE_ARABIC_KUWAIT, "ar", "KW", 0 }, - { LANGUAGE_ARABIC_BAHRAIN, "ar", "BH", 0 }, - { LANGUAGE_ARABIC_QATAR, "ar", "QA", 0 }, - { LANGUAGE_USER_ARABIC_CHAD, "ar", "TD", 0 }, - { LANGUAGE_USER_ARABIC_COMOROS, "ar", "KM", 0 }, - { LANGUAGE_USER_ARABIC_DJIBOUTI, "ar", "DJ", 0 }, - { LANGUAGE_USER_ARABIC_ERITREA, "ar", "ER", 0 }, - { LANGUAGE_USER_ARABIC_ISRAEL, "ar", "IL", 0 }, - { LANGUAGE_USER_ARABIC_MAURITANIA, "ar", "MR", 0 }, - { LANGUAGE_USER_ARABIC_PALESTINE, "ar", "PS", 0 }, - { LANGUAGE_USER_ARABIC_SOMALIA, "ar", "SO", 0 }, - { LANGUAGE_USER_ARABIC_SUDAN, "ar", "SD", 0 }, - { LANGUAGE_ARABIC_PRIMARY_ONLY, "ar", "" , 0 }, - { LANGUAGE_BASQUE, "eu", "ES", 0 }, + { LANGUAGE_ENGLISH, "en", "" , k0 }, + { LANGUAGE_ENGLISH_US, "en", "US", k0 }, + { LANGUAGE_ENGLISH_UK, "en", "GB", k0 }, + { LANGUAGE_ENGLISH_AUS, "en", "AU", k0 }, + { LANGUAGE_ENGLISH_CAN, "en", "CA", k0 }, + { LANGUAGE_FRENCH, "fr", "FR", k0 }, + { LANGUAGE_GERMAN, "de", "DE", k0 }, + { LANGUAGE_ITALIAN, "it", "IT", k0 }, + { LANGUAGE_DUTCH, "nl", "NL", k0 }, + { LANGUAGE_SPANISH_MODERN, "es", "ES", k0 }, + { LANGUAGE_SPANISH_DATED, "es", "ES", k0 }, + { LANGUAGE_PORTUGUESE, "pt", "PT", k0 }, + { LANGUAGE_PORTUGUESE_BRAZILIAN, "pt", "BR", k0 }, + { LANGUAGE_DANISH, "da", "DK", k0 }, + { LANGUAGE_GREEK, "el", "GR", k0 }, + { LANGUAGE_CHINESE_SIMPLIFIED, "zh", "CN", k0 }, + { LANGUAGE_CHINESE_SIMPLIFIED_LEGACY, "zh", "CN", k0 }, + { LANGUAGE_CHINESE_TRADITIONAL, "zh", "TW", k0 }, + { LANGUAGE_CHINESE_HONGKONG, "zh", "HK", k0 }, + { LANGUAGE_CHINESE_SINGAPORE, "zh", "SG", k0 }, + { LANGUAGE_CHINESE_MACAU, "zh", "MO", k0 }, + { LANGUAGE_CHINESE_LSO, "zh", "" , k0 }, + { LANGUAGE_YUE_CHINESE_HONGKONG, "yue", "HK", k0 }, + { LANGUAGE_ENGLISH_HONG_KONG_SAR, "en", "HK", k0 }, + { LANGUAGE_JAPANESE, "ja", "JP", k0 }, + { LANGUAGE_KOREAN, "ko", "KR", k0 }, + { LANGUAGE_KOREAN_JOHAB, "ko", "KR", k0 }, + { LANGUAGE_USER_KOREAN_NORTH, "ko", "KP", k0 }, + { LANGUAGE_SWEDISH, "sv", "SE", k0 }, + { LANGUAGE_SWEDISH_FINLAND, "sv", "FI", k0 }, + { LANGUAGE_FINNISH, "fi", "FI", k0 }, + { LANGUAGE_RUSSIAN, "ru", "RU", k0 }, + { LANGUAGE_TATAR, "tt", "RU", k0 }, + { LANGUAGE_ENGLISH_NZ, "en", "NZ", k0 }, + { LANGUAGE_ENGLISH_EIRE, "en", "IE", k0 }, + { LANGUAGE_DUTCH_BELGIAN, "nl", "BE", k0 }, + { LANGUAGE_FRENCH_BELGIAN, "fr", "BE", k0 }, + { LANGUAGE_FRENCH_CANADIAN, "fr", "CA", k0 }, + { LANGUAGE_FRENCH_SWISS, "fr", "CH", k0 }, + { LANGUAGE_GERMAN_SWISS, "de", "CH", k0 }, + { LANGUAGE_GERMAN_AUSTRIAN, "de", "AT", k0 }, + { LANGUAGE_ITALIAN_SWISS, "it", "CH", k0 }, + { LANGUAGE_ALBANIAN, "sq", "AL", k0 }, + { LANGUAGE_ARABIC_SAUDI_ARABIA, "ar", "SA", k0 }, + { LANGUAGE_ARABIC_EGYPT, "ar", "EG", k0 }, + { LANGUAGE_ARABIC_UAE, "ar", "AE", k0 }, + { LANGUAGE_ARABIC_IRAQ, "ar", "IQ", k0 }, + { LANGUAGE_ARABIC_LIBYA, "ar", "LY", k0 }, + { LANGUAGE_ARABIC_ALGERIA, "ar", "DZ", k0 }, + { LANGUAGE_ARABIC_MOROCCO, "ar", "MA", k0 }, + { LANGUAGE_ARABIC_TUNISIA, "ar", "TN", k0 }, + { LANGUAGE_ARABIC_OMAN, "ar", "OM", k0 }, + { LANGUAGE_ARABIC_YEMEN, "ar", "YE", k0 }, + { LANGUAGE_ARABIC_SYRIA, "ar", "SY", k0 }, + { LANGUAGE_ARABIC_JORDAN, "ar", "JO", k0 }, + { LANGUAGE_ARABIC_LEBANON, "ar", "LB", k0 }, + { LANGUAGE_ARABIC_KUWAIT, "ar", "KW", k0 }, + { LANGUAGE_ARABIC_BAHRAIN, "ar", "BH", k0 }, + { LANGUAGE_ARABIC_QATAR, "ar", "QA", k0 }, + { LANGUAGE_USER_ARABIC_CHAD, "ar", "TD", k0 }, + { LANGUAGE_USER_ARABIC_COMOROS, "ar", "KM", k0 }, + { LANGUAGE_USER_ARABIC_DJIBOUTI, "ar", "DJ", k0 }, + { LANGUAGE_USER_ARABIC_ERITREA, "ar", "ER", k0 }, + { LANGUAGE_USER_ARABIC_ISRAEL, "ar", "IL", k0 }, + { LANGUAGE_USER_ARABIC_MAURITANIA, "ar", "MR", k0 }, + { LANGUAGE_USER_ARABIC_PALESTINE, "ar", "PS", k0 }, + { LANGUAGE_USER_ARABIC_SOMALIA, "ar", "SO", k0 }, + { LANGUAGE_USER_ARABIC_SUDAN, "ar", "SD", k0 }, + { LANGUAGE_ARABIC_PRIMARY_ONLY, "ar", "" , k0 }, + { LANGUAGE_BASQUE, "eu", "ES", k0 }, { LANGUAGE_BASQUE, "eu", "" , kSAME }, // our earlier definition - { LANGUAGE_BULGARIAN, "bg", "BG", 0 }, - { LANGUAGE_CZECH, "cs", "CZ", 0 }, + { LANGUAGE_BULGARIAN, "bg", "BG", k0 }, + { LANGUAGE_CZECH, "cs", "CZ", k0 }, { LANGUAGE_CZECH, "cz", "" , kSAME }, - { LANGUAGE_ENGLISH_JAMAICA, "en", "JM", 0 }, - { LANGUAGE_ENGLISH_CARRIBEAN, "en", "BS", 0 }, // not 100%, because AG is Bahamas - { LANGUAGE_ENGLISH_BELIZE, "en", "BZ", 0 }, - { LANGUAGE_ENGLISH_TRINIDAD, "en", "TT", 0 }, - { LANGUAGE_ENGLISH_ZIMBABWE, "en", "ZW", 0 }, - { LANGUAGE_ENGLISH_INDONESIA, "en", "ID", 0 }, - { LANGUAGE_ESTONIAN, "et", "EE", 0 }, - { LANGUAGE_FAEROESE, "fo", "FO", 0 }, - { LANGUAGE_FARSI, "fa", "IR", 0 }, - { LANGUAGE_FRENCH_LUXEMBOURG, "fr", "LU", 0 }, - { LANGUAGE_FRENCH_MONACO, "fr", "MC", 0 }, - { LANGUAGE_GERMAN_LUXEMBOURG, "de", "LU", 0 }, - { LANGUAGE_GERMAN_LIECHTENSTEIN, "de", "LI", 0 }, - { LANGUAGE_HEBREW, "he", "IL", 0 }, // new: old was "iw" + { LANGUAGE_ENGLISH_JAMAICA, "en", "JM", k0 }, + { LANGUAGE_ENGLISH_CARRIBEAN, "en", "BS", k0 }, // not 100%, because AG is Bahamas + { LANGUAGE_ENGLISH_BELIZE, "en", "BZ", k0 }, + { LANGUAGE_ENGLISH_TRINIDAD, "en", "TT", k0 }, + { LANGUAGE_ENGLISH_ZIMBABWE, "en", "ZW", k0 }, + { LANGUAGE_ENGLISH_INDONESIA, "en", "ID", k0 }, + { LANGUAGE_ESTONIAN, "et", "EE", k0 }, + { LANGUAGE_FAEROESE, "fo", "FO", k0 }, + { LANGUAGE_FARSI, "fa", "IR", k0 }, + { LANGUAGE_FRENCH_LUXEMBOURG, "fr", "LU", k0 }, + { LANGUAGE_FRENCH_MONACO, "fr", "MC", k0 }, + { LANGUAGE_GERMAN_LUXEMBOURG, "de", "LU", k0 }, + { LANGUAGE_GERMAN_LIECHTENSTEIN, "de", "LI", k0 }, + { LANGUAGE_HEBREW, "he", "IL", k0 }, // new: old was "iw" { LANGUAGE_HEBREW, "iw", "IL", kSAME }, // old: new is "he" - { LANGUAGE_HUNGARIAN, "hu", "HU", 0 }, - { LANGUAGE_ICELANDIC, "is", "IS", 0 }, - { LANGUAGE_INDONESIAN, "id", "ID", 0 }, // new: old was "in" + { LANGUAGE_HUNGARIAN, "hu", "HU", k0 }, + { LANGUAGE_ICELANDIC, "is", "IS", k0 }, + { LANGUAGE_INDONESIAN, "id", "ID", k0 }, // new: old was "in" { LANGUAGE_INDONESIAN, "in", "ID", kSAME }, // old: new is "id" - { LANGUAGE_NORWEGIAN, "no", "NO", 0 }, - { LANGUAGE_NORWEGIAN_BOKMAL, "nb", "NO", 0 }, - { LANGUAGE_NORWEGIAN_BOKMAL_LSO, "nb", "" , 0 }, - { LANGUAGE_NORWEGIAN_NYNORSK, "nn", "NO", 0 }, - { LANGUAGE_NORWEGIAN_NYNORSK_LSO, "nn", "" , 0 }, - { LANGUAGE_POLISH, "pl", "PL", 0 }, - { LANGUAGE_RHAETO_ROMAN, "rm", "CH", 0 }, - { LANGUAGE_ROMANIAN, "ro", "RO", 0 }, - { LANGUAGE_ROMANIAN_MOLDOVA, "ro", "MD", 0 }, - { LANGUAGE_SLOVAK, "sk", "SK", 0 }, - { LANGUAGE_SLOVENIAN, "sl", "SI", 0 }, - { LANGUAGE_SPANISH_MEXICAN, "es", "MX", 0 }, - { LANGUAGE_SPANISH_GUATEMALA, "es", "GT", 0 }, - { LANGUAGE_SPANISH_COSTARICA, "es", "CR", 0 }, - { LANGUAGE_SPANISH_PANAMA, "es", "PA", 0 }, - { LANGUAGE_SPANISH_DOMINICAN_REPUBLIC, "es", "DO", 0 }, - { LANGUAGE_SPANISH_VENEZUELA, "es", "VE", 0 }, - { LANGUAGE_SPANISH_COLOMBIA, "es", "CO", 0 }, - { LANGUAGE_SPANISH_PERU, "es", "PE", 0 }, - { LANGUAGE_SPANISH_ARGENTINA, "es", "AR", 0 }, - { LANGUAGE_SPANISH_ECUADOR, "es", "EC", 0 }, - { LANGUAGE_SPANISH_CHILE, "es", "CL", 0 }, - { LANGUAGE_SPANISH_URUGUAY, "es", "UY", 0 }, - { LANGUAGE_SPANISH_PARAGUAY, "es", "PY", 0 }, - { LANGUAGE_SPANISH_BOLIVIA, "es", "BO", 0 }, - { LANGUAGE_SPANISH_EL_SALVADOR, "es", "SV", 0 }, - { LANGUAGE_SPANISH_HONDURAS, "es", "HN", 0 }, - { LANGUAGE_SPANISH_NICARAGUA, "es", "NI", 0 }, - { LANGUAGE_SPANISH_PUERTO_RICO, "es", "PR", 0 }, - { LANGUAGE_SPANISH_UNITED_STATES, "es", "US", 0 }, - { LANGUAGE_SPANISH_LATIN_AMERICA, "es", "" , 0 }, - { LANGUAGE_TURKISH, "tr", "TR", 0 }, - { LANGUAGE_UKRAINIAN, "uk", "UA", 0 }, - { LANGUAGE_VIETNAMESE, "vi", "VN", 0 }, - { LANGUAGE_LATVIAN, "lv", "LV", 0 }, - { LANGUAGE_MACEDONIAN, "mk", "MK", 0 }, - { LANGUAGE_MALAY_MALAYSIA, "ms", "MY", 0 }, - { LANGUAGE_MALAY_BRUNEI_DARUSSALAM, "ms", "BN", 0 }, - { LANGUAGE_ENGLISH_MALAYSIA, "en", "MY", 0 }, - { LANGUAGE_THAI, "th", "TH", 0 }, - { LANGUAGE_LITHUANIAN, "lt", "LT", 0 }, - { LANGUAGE_LITHUANIAN_CLASSIC, "lt", "LT", 0 }, - { LANGUAGE_CROATIAN, "hr", "HR", 0 }, // Croatian in Croatia - { LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA, "hr", "BA", 0 }, - { LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA, "bs", "BA", 0 }, - { LANGUAGE_BOSNIAN_LSO, "bs", "" , 0 }, // so what is 'bs' vs 'bs-Latn'? - { LANGUAGE_SERBIAN_CYRILLIC_SERBIA, "sr", "RS", 0 }, // Serbian Cyrillic in Serbia - { LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA, "sr", "RS", 0 }, - { LANGUAGE_SERBIAN_CYRILLIC_SAM, "sr", "CS", 0 }, // Serbian Cyrillic in Serbia and Montenegro + { LANGUAGE_NORWEGIAN, "no", "NO", k0 }, + { LANGUAGE_NORWEGIAN_BOKMAL, "nb", "NO", k0 }, + { LANGUAGE_NORWEGIAN_BOKMAL_LSO, "nb", "" , k0 }, + { LANGUAGE_NORWEGIAN_NYNORSK, "nn", "NO", k0 }, + { LANGUAGE_NORWEGIAN_NYNORSK_LSO, "nn", "" , k0 }, + { LANGUAGE_POLISH, "pl", "PL", k0 }, + { LANGUAGE_RHAETO_ROMAN, "rm", "CH", k0 }, + { LANGUAGE_ROMANIAN, "ro", "RO", k0 }, + { LANGUAGE_ROMANIAN_MOLDOVA, "ro", "MD", k0 }, + { LANGUAGE_SLOVAK, "sk", "SK", k0 }, + { LANGUAGE_SLOVENIAN, "sl", "SI", k0 }, + { LANGUAGE_SPANISH_MEXICAN, "es", "MX", k0 }, + { LANGUAGE_SPANISH_GUATEMALA, "es", "GT", k0 }, + { LANGUAGE_SPANISH_COSTARICA, "es", "CR", k0 }, + { LANGUAGE_SPANISH_PANAMA, "es", "PA", k0 }, + { LANGUAGE_SPANISH_DOMINICAN_REPUBLIC, "es", "DO", k0 }, + { LANGUAGE_SPANISH_VENEZUELA, "es", "VE", k0 }, + { LANGUAGE_SPANISH_COLOMBIA, "es", "CO", k0 }, + { LANGUAGE_SPANISH_PERU, "es", "PE", k0 }, + { LANGUAGE_SPANISH_ARGENTINA, "es", "AR", k0 }, + { LANGUAGE_SPANISH_ECUADOR, "es", "EC", k0 }, + { LANGUAGE_SPANISH_CHILE, "es", "CL", k0 }, + { LANGUAGE_SPANISH_URUGUAY, "es", "UY", k0 }, + { LANGUAGE_SPANISH_PARAGUAY, "es", "PY", k0 }, + { LANGUAGE_SPANISH_BOLIVIA, "es", "BO", k0 }, + { LANGUAGE_SPANISH_EL_SALVADOR, "es", "SV", k0 }, + { LANGUAGE_SPANISH_HONDURAS, "es", "HN", k0 }, + { LANGUAGE_SPANISH_NICARAGUA, "es", "NI", k0 }, + { LANGUAGE_SPANISH_PUERTO_RICO, "es", "PR", k0 }, + { LANGUAGE_SPANISH_UNITED_STATES, "es", "US", k0 }, + { LANGUAGE_SPANISH_LATIN_AMERICA, "es", "" , k0 }, + { LANGUAGE_TURKISH, "tr", "TR", k0 }, + { LANGUAGE_UKRAINIAN, "uk", "UA", k0 }, + { LANGUAGE_VIETNAMESE, "vi", "VN", k0 }, + { LANGUAGE_LATVIAN, "lv", "LV", k0 }, + { LANGUAGE_MACEDONIAN, "mk", "MK", k0 }, + { LANGUAGE_MALAY_MALAYSIA, "ms", "MY", k0 }, + { LANGUAGE_MALAY_BRUNEI_DARUSSALAM, "ms", "BN", k0 }, + { LANGUAGE_ENGLISH_MALAYSIA, "en", "MY", k0 }, + { LANGUAGE_THAI, "th", "TH", k0 }, + { LANGUAGE_LITHUANIAN, "lt", "LT", k0 }, + { LANGUAGE_LITHUANIAN_CLASSIC, "lt", "LT", k0 }, + { LANGUAGE_CROATIAN, "hr", "HR", k0 }, // Croatian in Croatia + { LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA, "hr", "BA", k0 }, + { LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA, "bs", "BA", k0 }, + { LANGUAGE_BOSNIAN_LSO, "bs", "" , k0 }, // so what is 'bs' vs 'bs-Latn'? + { LANGUAGE_SERBIAN_CYRILLIC_SERBIA, "sr", "RS", k0 }, // Serbian Cyrillic in Serbia + { LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA, "sr", "RS", k0 }, + { LANGUAGE_SERBIAN_CYRILLIC_SAM, "sr", "CS", k0 }, // Serbian Cyrillic in Serbia and Montenegro { LANGUAGE_SERBIAN_CYRILLIC_SAM, "sr", "YU", kSAME }, // legacy Serbian Cyrillic in Serbia and Montenegro (former Yugoslavia); kludge, sr_CS not supported by ICU 2.6 (3.4 does) - { LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO, "sr", "ME", 0 }, - { LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO, "sr", "ME", 0 }, - { LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA, "sr", "BA", 0 }, - { LANGUAGE_SERBIAN_CYRILLIC_LSO, "sr", "" , 0 }, + { LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO, "sr", "ME", k0 }, + { LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO, "sr", "ME", k0 }, + { LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA, "sr", "BA", k0 }, + { LANGUAGE_SERBIAN_CYRILLIC_LSO, "sr", "" , k0 }, { LANGUAGE_SERBIAN_LATIN_SERBIA, "sh", "RS", kSAME }, // legacy kludge, is sr-Latn-RS now { LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA, "sh", "RS", kSAME }, // legacy kludge, is sr-Latn-RS now { LANGUAGE_SERBIAN_LATIN_SAM, "sh", "CS", kSAME }, // legacy kludge, is sr-Latn-CS now @@ -324,449 +325,449 @@ static IsoLanguageCountryEntry const aImplIsoLangEntries[] = { LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO, "sh", "ME", kSAME }, // legacy kludge, is sr-Latn-ME now { LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA, "sh", "BA", kSAME }, // legacy kludge, is sr-Latn-BA now { LANGUAGE_SERBIAN_LATIN_LSO, "sh", "" , kSAME }, // legacy kludge, is sr-Latn now - { LANGUAGE_ARMENIAN, "hy", "AM", 0 }, - { LANGUAGE_AZERI_LATIN, "az", "AZ", 0 }, // macrolanguage code - { LANGUAGE_UZBEK_LATIN, "uz", "UZ", 0 }, // macrolanguage code - { LANGUAGE_UZBEK_LATIN_LSO, "uz", "" , 0 }, // macrolanguage code - { LANGUAGE_BENGALI_BANGLADESH, "bn", "BD", 0 }, - { LANGUAGE_BENGALI, "bn", "IN", 0 }, - { LANGUAGE_BURMESE, "my", "MM", 0 }, - { LANGUAGE_KAZAKH, "kk", "KZ", 0 }, - { LANGUAGE_ENGLISH_INDIA, "en", "IN", 0 }, - { LANGUAGE_URDU_INDIA, "ur", "IN", 0 }, - { LANGUAGE_URDU_PAKISTAN, "ur", "PK", 0 }, - { LANGUAGE_HINDI, "hi", "IN", 0 }, - { LANGUAGE_GUJARATI, "gu", "IN", 0 }, - { LANGUAGE_KANNADA, "kn", "IN", 0 }, - { LANGUAGE_ASSAMESE, "as", "IN", 0 }, - { LANGUAGE_KASHMIRI_INDIA, "ks", "IN", 0 }, + { LANGUAGE_ARMENIAN, "hy", "AM", k0 }, + { LANGUAGE_AZERI_LATIN, "az", "AZ", k0 }, // macrolanguage code + { LANGUAGE_UZBEK_LATIN, "uz", "UZ", k0 }, // macrolanguage code + { LANGUAGE_UZBEK_LATIN_LSO, "uz", "" , k0 }, // macrolanguage code + { LANGUAGE_BENGALI_BANGLADESH, "bn", "BD", k0 }, + { LANGUAGE_BENGALI, "bn", "IN", k0 }, + { LANGUAGE_BURMESE, "my", "MM", k0 }, + { LANGUAGE_KAZAKH, "kk", "KZ", k0 }, + { LANGUAGE_ENGLISH_INDIA, "en", "IN", k0 }, + { LANGUAGE_URDU_INDIA, "ur", "IN", k0 }, + { LANGUAGE_URDU_PAKISTAN, "ur", "PK", k0 }, + { LANGUAGE_HINDI, "hi", "IN", k0 }, + { LANGUAGE_GUJARATI, "gu", "IN", k0 }, + { LANGUAGE_KANNADA, "kn", "IN", k0 }, + { LANGUAGE_ASSAMESE, "as", "IN", k0 }, + { LANGUAGE_KASHMIRI_INDIA, "ks", "IN", k0 }, { LANGUAGE_KASHMIRI, "ks", "" , kSAME }, // Kashmiri in "Jammu and Kashmir" ... no ISO3166 code for that - { LANGUAGE_MALAYALAM, "ml", "IN", 0 }, - { LANGUAGE_MANIPURI, "mni", "IN", 0 }, - { LANGUAGE_MARATHI, "mr", "IN", 0 }, - { LANGUAGE_KONKANI, "kok", "IN", 0 }, - { LANGUAGE_NEPALI, "ne", "NP", 0 }, - { LANGUAGE_NEPALI_INDIA, "ne", "IN", 0 }, - { LANGUAGE_ODIA, "or", "IN", 0 }, - { LANGUAGE_PUNJABI, "pa", "IN", 0 }, - { LANGUAGE_SANSKRIT, "sa", "IN", 0 }, - { LANGUAGE_TAMIL, "ta", "IN", 0 }, - { LANGUAGE_TAMIL_SRI_LANKA, "ta", "LK", 0 }, - { LANGUAGE_TELUGU, "te", "IN", 0 }, - { LANGUAGE_PUNJABI_PAKISTAN, "pnb", "PK", 0 }, - { LANGUAGE_PUNJABI_ARABIC_LSO, "pnb", "" , 0 }, + { LANGUAGE_MALAYALAM, "ml", "IN", k0 }, + { LANGUAGE_MANIPURI, "mni", "IN", k0 }, + { LANGUAGE_MARATHI, "mr", "IN", k0 }, + { LANGUAGE_KONKANI, "kok", "IN", k0 }, + { LANGUAGE_NEPALI, "ne", "NP", k0 }, + { LANGUAGE_NEPALI_INDIA, "ne", "IN", k0 }, + { LANGUAGE_ODIA, "or", "IN", k0 }, + { LANGUAGE_PUNJABI, "pa", "IN", k0 }, + { LANGUAGE_SANSKRIT, "sa", "IN", k0 }, + { LANGUAGE_TAMIL, "ta", "IN", k0 }, + { LANGUAGE_TAMIL_SRI_LANKA, "ta", "LK", k0 }, + { LANGUAGE_TELUGU, "te", "IN", k0 }, + { LANGUAGE_PUNJABI_PAKISTAN, "pnb", "PK", k0 }, + { LANGUAGE_PUNJABI_ARABIC_LSO, "pnb", "" , k0 }, { LANGUAGE_PUNJABI_PAKISTAN, "lah", "PK", kSAME }, // macrolanguage code, earlier preferred 'lah' over 'pa' for Western Panjabi, now there is 'pnb' { LANGUAGE_PUNJABI_PAKISTAN, "pa", "PK", kSAME }, // MS maps this to 'pa-Arab-PK', but 'pa'='pan' Eastern Panjabi is not used in PK, only in { LANGUAGE_SINDHI_PAKISTAN, "sd", "PK", kSAME }, // Arabic script - { LANGUAGE_SINDHI, "sd", "IN", 0 }, // TODO: there's Deva(nagari) and Arab(ic) script, MS maps this to 'sd-Deva-IN' - { LANGUAGE_BELARUSIAN, "be", "BY", 0 }, - { LANGUAGE_CATALAN, "ca", "ES", 0 }, // Spain (default) - { LANGUAGE_CATALAN, "ca", "AD", 0 }, // Andorra + { LANGUAGE_SINDHI, "sd", "IN", k0 }, // TODO: there's Deva(nagari) and Arab(ic) script, MS maps this to 'sd-Deva-IN' + { LANGUAGE_BELARUSIAN, "be", "BY", k0 }, + { LANGUAGE_CATALAN, "ca", "ES", k0 }, // Spain (default) + { LANGUAGE_CATALAN, "ca", "AD", k0 }, // Andorra //LANGUAGE_CATALAN_VALENCIAN ca-ES-valencia Bcp47CountryEntry takes precedence { LANGUAGE_CATALAN_VALENCIAN, "ca", "XV", kSAME }, // XV: ISO 3166 user-assigned; old workaround for UI localization only, in case it escaped to document content { LANGUAGE_CATALAN_VALENCIAN, "qcv", "ES", kSAME }, // qcv: ISO 639-3 reserved-for-local-use; old UI localization quirk only, in case it escaped to document content - { LANGUAGE_FRENCH_CAMEROON, "fr", "CM", 0 }, - { LANGUAGE_FRENCH_COTE_D_IVOIRE, "fr", "CI", 0 }, - { LANGUAGE_FRENCH_MALI, "fr", "ML", 0 }, - { LANGUAGE_FRENCH_SENEGAL, "fr", "SN", 0 }, - { LANGUAGE_FRENCH_ZAIRE, "fr", "CD", 0 }, // Democratic Republic Of Congo - { LANGUAGE_FRENCH_MOROCCO, "fr", "MA", 0 }, - { LANGUAGE_FRENCH_REUNION, "fr", "RE", 0 }, - { LANGUAGE_FRENCH, "fr", "" , 0 }, // needed as a catcher before other "fr" entries! - { LANGUAGE_FRENCH_NORTH_AFRICA, "fr", "" , 0 }, - { LANGUAGE_FRENCH_WEST_INDIES, "fr", "" , 0 }, // no ISO country code; MS "Neither defined nor reserved" - { LANGUAGE_FRISIAN_NETHERLANDS, "fy", "NL", 0 }, - { LANGUAGE_GAELIC_IRELAND, "ga", "IE", 0 }, - { LANGUAGE_GAELIC_SCOTLAND, "gd", "GB", 0 }, - { LANGUAGE_GAELIC_SCOTLAND_LEGACY, "gd", "GB", 0 }, - { LANGUAGE_GALICIAN, "gl", "ES", 0 }, - { LANGUAGE_GEORGIAN, "ka", "GE", 0 }, - { LANGUAGE_KHMER, "km", "KH", 0 }, - { LANGUAGE_KIRGHIZ, "ky", "KG", 0 }, - { LANGUAGE_LAO, "lo", "LA", 0 }, - { LANGUAGE_MALTESE, "mt", "MT", 0 }, - { LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA, "mn", "MN", 0 }, // macrolanguage code; should be khk-MN; Cyrillic script - { LANGUAGE_MONGOLIAN_CYRILLIC_LSO, "mn", "" , 0 }, // macrolanguage code; should be khk; Cyrillic script - { LANGUAGE_ROMANIAN_MOLDOVA, "ro", "MD", 0 }, - { LANGUAGE_ROMANIAN_MOLDOVA, "mo", "MD", 0 }, // mo-MD was associated with Russian Moldova LCID, apparently an error; 'mo' is retired, merged with 'ro', see http://www-01.sil.org/iso639-3/documentation.asp?id=mol - { LANGUAGE_RUSSIAN_MOLDOVA, "ru", "MD", 0 }, // as per [MS-LCID] rev. 7.0 2015-06-30 - { LANGUAGE_SWAHILI, "sw", "KE", 0 }, - { LANGUAGE_USER_SWAHILI_TANZANIA, "sw", "TZ", 0 }, - { LANGUAGE_TAJIK, "tg", "TJ", 0 }, - { LANGUAGE_TAJIK_LSO, "tg", "" , 0 }, - { LANGUAGE_TIBETAN, "bo", "CN", 0 }, // CN politically correct? - { LANGUAGE_USER_TIBETAN_INDIA, "bo", "IN", 0 }, - { LANGUAGE_USER_TIBETAN_BHUTAN, "bo", "BT", 0 }, - { LANGUAGE_DZONGKHA_BHUTAN, "dz", "BT", 0 }, - { LANGUAGE_TIBETAN_BHUTAN, "dz", "BT", 0 }, // MS reserved for bo-BT, but LCID was used as Dzongkha, see #i53497# - { LANGUAGE_USER_DZONGKHA_MAP_LONLY, "dz", "" , 0 }, // because of the MS error, see lang.h - { LANGUAGE_TURKMEN, "tk", "TM", 0 }, - { LANGUAGE_WELSH, "cy", "GB", 0 }, - { LANGUAGE_SESOTHO, "st", "ZA", 0 }, - { LANGUAGE_SEPEDI, "nso", "ZA", 0 }, + { LANGUAGE_FRENCH_CAMEROON, "fr", "CM", k0 }, + { LANGUAGE_FRENCH_COTE_D_IVOIRE, "fr", "CI", k0 }, + { LANGUAGE_FRENCH_MALI, "fr", "ML", k0 }, + { LANGUAGE_FRENCH_SENEGAL, "fr", "SN", k0 }, + { LANGUAGE_FRENCH_ZAIRE, "fr", "CD", k0 }, // Democratic Republic Of Congo + { LANGUAGE_FRENCH_MOROCCO, "fr", "MA", k0 }, + { LANGUAGE_FRENCH_REUNION, "fr", "RE", k0 }, + { LANGUAGE_FRENCH, "fr", "" , k0 }, // needed as a catcher before other "fr" entries! + { LANGUAGE_FRENCH_NORTH_AFRICA, "fr", "" , k0 }, + { LANGUAGE_FRENCH_WEST_INDIES, "fr", "" , k0 }, // no ISO country code; MS "Neither defined nor reserved" + { LANGUAGE_FRISIAN_NETHERLANDS, "fy", "NL", k0 }, + { LANGUAGE_GAELIC_IRELAND, "ga", "IE", k0 }, + { LANGUAGE_GAELIC_SCOTLAND, "gd", "GB", k0 }, + { LANGUAGE_GAELIC_SCOTLAND_LEGACY, "gd", "GB", k0 }, + { LANGUAGE_GALICIAN, "gl", "ES", k0 }, + { LANGUAGE_GEORGIAN, "ka", "GE", k0 }, + { LANGUAGE_KHMER, "km", "KH", k0 }, + { LANGUAGE_KIRGHIZ, "ky", "KG", k0 }, + { LANGUAGE_LAO, "lo", "LA", k0 }, + { LANGUAGE_MALTESE, "mt", "MT", k0 }, + { LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA, "mn", "MN", k0 }, // macrolanguage code; should be khk-MN; Cyrillic script + { LANGUAGE_MONGOLIAN_CYRILLIC_LSO, "mn", "" , k0 }, // macrolanguage code; should be khk; Cyrillic script + { LANGUAGE_ROMANIAN_MOLDOVA, "ro", "MD", k0 }, + { LANGUAGE_ROMANIAN_MOLDOVA, "mo", "MD", k0 }, // mo-MD was associated with Russian Moldova LCID, apparently an error; 'mo' is retired, merged with 'ro', see http://www-01.sil.org/iso639-3/documentation.asp?id=mol + { LANGUAGE_RUSSIAN_MOLDOVA, "ru", "MD", k0 }, // as per [MS-LCID] rev. 7.0 2015-06-30 + { LANGUAGE_SWAHILI, "sw", "KE", k0 }, + { LANGUAGE_USER_SWAHILI_TANZANIA, "sw", "TZ", k0 }, + { LANGUAGE_TAJIK, "tg", "TJ", k0 }, + { LANGUAGE_TAJIK_LSO, "tg", "" , k0 }, + { LANGUAGE_TIBETAN, "bo", "CN", k0 }, // CN politically correct? + { LANGUAGE_USER_TIBETAN_INDIA, "bo", "IN", k0 }, + { LANGUAGE_USER_TIBETAN_BHUTAN, "bo", "BT", k0 }, + { LANGUAGE_DZONGKHA_BHUTAN, "dz", "BT", k0 }, + { LANGUAGE_TIBETAN_BHUTAN, "dz", "BT", k0 }, // MS reserved for bo-BT, but LCID was used as Dzongkha, see #i53497# + { LANGUAGE_USER_DZONGKHA_MAP_LONLY, "dz", "" , k0 }, // because of the MS error, see lang.h + { LANGUAGE_TURKMEN, "tk", "TM", k0 }, + { LANGUAGE_WELSH, "cy", "GB", k0 }, + { LANGUAGE_SESOTHO, "st", "ZA", k0 }, + { LANGUAGE_SEPEDI, "nso", "ZA", k0 }, { LANGUAGE_SEPEDI, "ns", "ZA", kSAME }, // fake "ns" for compatibility with existing OOo1.1.x localization to be able to read those documents - { LANGUAGE_TSONGA, "ts", "ZA", 0 }, - { LANGUAGE_TSWANA, "tn", "ZA", 0 }, - { LANGUAGE_ENGLISH_SAFRICA, "en", "ZA", 0 }, - { LANGUAGE_AFRIKAANS, "af", "ZA", 0 }, - { LANGUAGE_VENDA, "ve", "ZA", 0 }, // default 639-1 + { LANGUAGE_TSONGA, "ts", "ZA", k0 }, + { LANGUAGE_TSWANA, "tn", "ZA", k0 }, + { LANGUAGE_ENGLISH_SAFRICA, "en", "ZA", k0 }, + { LANGUAGE_AFRIKAANS, "af", "ZA", k0 }, + { LANGUAGE_VENDA, "ve", "ZA", k0 }, // default 639-1 { LANGUAGE_VENDA, "ven", "ZA", kSAME }, // 639-2 may have been used temporarily since 2004-07-23 - { LANGUAGE_XHOSA, "xh", "ZA", 0 }, - { LANGUAGE_ZULU, "zu", "ZA", 0 }, -// { LANGUAGE_QUECHUA_COLOMBIA, "quc", "CO", 0 }, // MS reserved, and looks wrong, quc would be in Guatemala, not Colombia - { LANGUAGE_QUECHUA_ECUADOR, "quz", "EC", 0 }, // MS + { LANGUAGE_XHOSA, "xh", "ZA", k0 }, + { LANGUAGE_ZULU, "zu", "ZA", k0 }, +// { LANGUAGE_QUECHUA_COLOMBIA, "quc", "CO", k0 }, // MS reserved, and looks wrong, quc would be in Guatemala, not Colombia + { LANGUAGE_QUECHUA_ECUADOR, "quz", "EC", k0 }, // MS { LANGUAGE_QUECHUA_ECUADOR, "qu", "EC", kSAME }, // macrolanguage code - { LANGUAGE_QUECHUA_PERU, "quz", "PE", 0 }, // MS + { LANGUAGE_QUECHUA_PERU, "quz", "PE", k0 }, // MS { LANGUAGE_QUECHUA_PERU, "qu", "PE", kSAME }, // macrolanguage code - { LANGUAGE_QUECHUA_BOLIVIA, "qu", "BO", 0 }, // macrolanguage code, TODO instead: quh-BO or qul-BO; MS says quz-BO which is wrong - { LANGUAGE_PASHTO, "ps", "AF", 0 }, - { LANGUAGE_OROMO, "om", "ET", 0 }, - { LANGUAGE_DHIVEHI, "dv", "MV", 0 }, - { LANGUAGE_UIGHUR_CHINA, "ug", "CN", 0 }, - { LANGUAGE_TIGRIGNA_ETHIOPIA, "ti", "ET", 0 }, - { LANGUAGE_TIGRIGNA_ERITREA, "ti", "ER", 0 }, - { LANGUAGE_AMHARIC_ETHIOPIA, "am", "ET", 0 }, - { LANGUAGE_GUARANI_PARAGUAY, "gug", "PY", 0 }, - { LANGUAGE_HAWAIIAN_UNITED_STATES, "haw", "US", 0 }, - { LANGUAGE_EDO, "bin", "NG", 0 }, - { LANGUAGE_FULFULDE_NIGERIA, "fuv", "NG", 0 }, + { LANGUAGE_QUECHUA_BOLIVIA, "qu", "BO", k0 }, // macrolanguage code, TODO instead: quh-BO or qul-BO; MS says quz-BO which is wrong + { LANGUAGE_PASHTO, "ps", "AF", k0 }, + { LANGUAGE_OROMO, "om", "ET", k0 }, + { LANGUAGE_DHIVEHI, "dv", "MV", k0 }, + { LANGUAGE_UIGHUR_CHINA, "ug", "CN", k0 }, + { LANGUAGE_TIGRIGNA_ETHIOPIA, "ti", "ET", k0 }, + { LANGUAGE_TIGRIGNA_ERITREA, "ti", "ER", k0 }, + { LANGUAGE_AMHARIC_ETHIOPIA, "am", "ET", k0 }, + { LANGUAGE_GUARANI_PARAGUAY, "gug", "PY", k0 }, + { LANGUAGE_HAWAIIAN_UNITED_STATES, "haw", "US", k0 }, + { LANGUAGE_EDO, "bin", "NG", k0 }, + { LANGUAGE_FULFULDE_NIGERIA, "fuv", "NG", k0 }, { LANGUAGE_FULFULDE_NIGERIA, "ff", "NG", kSAME }, // macrolanguage code - { LANGUAGE_FULFULDE_SENEGAL, "ff", "SN", 0 }, // macrolanguage code + { LANGUAGE_FULFULDE_SENEGAL, "ff", "SN", k0 }, // macrolanguage code { LANGUAGE_HAUSA_NIGERIA, "ha", "NG", kSAME }, { LANGUAGE_USER_HAUSA_GHANA, "ha", "GH", kSAME }, - { LANGUAGE_IGBO_NIGERIA, "ig", "NG", 0 }, - { LANGUAGE_KANURI_NIGERIA, "kr", "NG", 0 }, - { LANGUAGE_YORUBA, "yo", "NG", 0 }, - { LANGUAGE_SOMALI, "so", "SO", 0 }, - { LANGUAGE_PAPIAMENTU, "pap", "AN", 0 }, - { LANGUAGE_USER_PAPIAMENTU_ARUBA, "pap", "AW", 0 }, - { LANGUAGE_USER_PAPIAMENTU_CURACAO, "pap", "CW", 0 }, - { LANGUAGE_USER_PAPIAMENTU_BONAIRE, "pap", "BQ", 0 }, - { LANGUAGE_ENGLISH_SINGAPORE, "en", "SG", 0 }, - { LANGUAGE_USER_YIDDISH_US, "yi", "US", 0 }, - { LANGUAGE_YIDDISH, "yi", "IL", 0 }, // new: old was "ji" + { LANGUAGE_IGBO_NIGERIA, "ig", "NG", k0 }, + { LANGUAGE_KANURI_NIGERIA, "kr", "NG", k0 }, + { LANGUAGE_YORUBA, "yo", "NG", k0 }, + { LANGUAGE_SOMALI, "so", "SO", k0 }, + { LANGUAGE_PAPIAMENTU, "pap", "AN", k0 }, + { LANGUAGE_USER_PAPIAMENTU_ARUBA, "pap", "AW", k0 }, + { LANGUAGE_USER_PAPIAMENTU_CURACAO, "pap", "CW", k0 }, + { LANGUAGE_USER_PAPIAMENTU_BONAIRE, "pap", "BQ", k0 }, + { LANGUAGE_ENGLISH_SINGAPORE, "en", "SG", k0 }, + { LANGUAGE_USER_YIDDISH_US, "yi", "US", k0 }, + { LANGUAGE_YIDDISH, "yi", "IL", k0 }, // new: old was "ji" { LANGUAGE_YIDDISH, "ji", "IL", kSAME }, // old: new is "yi" - { LANGUAGE_SYRIAC, "syr", "TR", 0 }, // "TR" according to http://www.ethnologue.com/show_language.asp?code=SYC - { LANGUAGE_SINHALESE_SRI_LANKA, "si", "LK", 0 }, + { LANGUAGE_SYRIAC, "syr", "TR", k0 }, // "TR" according to http://www.ethnologue.com/show_language.asp?code=SYC + { LANGUAGE_SINHALESE_SRI_LANKA, "si", "LK", k0 }, { LANGUAGE_CHEROKEE_UNITED_STATES, "chr", "US", kSAME }, { LANGUAGE_INUKTITUT_LATIN_CANADA, "iu", "CA", kSAME }, // macrolanguage code { LANGUAGE_INUKTITUT_LATIN_LSO, "iu", "" , kSAME }, // macrolanguage code - { LANGUAGE_SAMI_NORTHERN_NORWAY, "se", "NO", 0 }, - { LANGUAGE_SAMI_INARI, "smn", "FI", 0 }, - { LANGUAGE_SAMI_INARI_LSO, "smn", "" , 0 }, - { LANGUAGE_SAMI_LULE_NORWAY, "smj", "NO", 0 }, - { LANGUAGE_SAMI_LULE_SWEDEN, "smj", "SE", 0 }, - { LANGUAGE_SAMI_LULE_LSO, "smj", "" , 0 }, - { LANGUAGE_SAMI_NORTHERN_FINLAND, "se", "FI", 0 }, - { LANGUAGE_SAMI_NORTHERN_SWEDEN, "se", "SE", 0 }, - { LANGUAGE_SAMI_SKOLT, "sms", "FI", 0 }, - { LANGUAGE_SAMI_SKOLT_LSO, "sms", "" , 0 }, - { LANGUAGE_SAMI_SOUTHERN_NORWAY, "sma", "NO", 0 }, - { LANGUAGE_SAMI_SOUTHERN_SWEDEN, "sma", "SE", 0 }, - { LANGUAGE_SAMI_SOUTHERN_LSO, "sma", "" , 0 }, - { LANGUAGE_USER_SAMI_KILDIN_RUSSIA, "sjd", "RU", 0 }, - { LANGUAGE_MAPUDUNGUN_CHILE, "arn", "CL", 0 }, - { LANGUAGE_CORSICAN_FRANCE, "co", "FR", 0 }, - { LANGUAGE_ALSATIAN_FRANCE, "gsw", "FR", 0 }, // in fact 'gsw' is Schwyzerduetsch (Swiss German), which is a dialect of Alemannic German, as is Alsatian. They aren't distinct languages and share this code. - { LANGUAGE_YAKUT_RUSSIA, "sah", "RU", 0 }, - { LANGUAGE_MOHAWK_CANADA, "moh", "CA", 0 }, - { LANGUAGE_BASHKIR_RUSSIA, "ba", "RU", 0 }, - { LANGUAGE_KICHE_GUATEMALA, "qut", "GT", 0 }, - { LANGUAGE_DARI_AFGHANISTAN, "prs", "AF", 0 }, + { LANGUAGE_SAMI_NORTHERN_NORWAY, "se", "NO", k0 }, + { LANGUAGE_SAMI_INARI, "smn", "FI", k0 }, + { LANGUAGE_SAMI_INARI_LSO, "smn", "" , k0 }, + { LANGUAGE_SAMI_LULE_NORWAY, "smj", "NO", k0 }, + { LANGUAGE_SAMI_LULE_SWEDEN, "smj", "SE", k0 }, + { LANGUAGE_SAMI_LULE_LSO, "smj", "" , k0 }, + { LANGUAGE_SAMI_NORTHERN_FINLAND, "se", "FI", k0 }, + { LANGUAGE_SAMI_NORTHERN_SWEDEN, "se", "SE", k0 }, + { LANGUAGE_SAMI_SKOLT, "sms", "FI", k0 }, + { LANGUAGE_SAMI_SKOLT_LSO, "sms", "" , k0 }, + { LANGUAGE_SAMI_SOUTHERN_NORWAY, "sma", "NO", k0 }, + { LANGUAGE_SAMI_SOUTHERN_SWEDEN, "sma", "SE", k0 }, + { LANGUAGE_SAMI_SOUTHERN_LSO, "sma", "" , k0 }, + { LANGUAGE_USER_SAMI_KILDIN_RUSSIA, "sjd", "RU", k0 }, + { LANGUAGE_MAPUDUNGUN_CHILE, "arn", "CL", k0 }, + { LANGUAGE_CORSICAN_FRANCE, "co", "FR", k0 }, + { LANGUAGE_ALSATIAN_FRANCE, "gsw", "FR", k0 }, // in fact 'gsw' is Schwyzerduetsch (Swiss German), which is a dialect of Alemannic German, as is Alsatian. They aren't distinct languages and share this code. + { LANGUAGE_YAKUT_RUSSIA, "sah", "RU", k0 }, + { LANGUAGE_MOHAWK_CANADA, "moh", "CA", k0 }, + { LANGUAGE_BASHKIR_RUSSIA, "ba", "RU", k0 }, + { LANGUAGE_KICHE_GUATEMALA, "qut", "GT", k0 }, + { LANGUAGE_DARI_AFGHANISTAN, "prs", "AF", k0 }, { LANGUAGE_DARI_AFGHANISTAN, "gbz", "AF", kSAME }, // was an error - { LANGUAGE_WOLOF_SENEGAL, "wo", "SN", 0 }, - { LANGUAGE_FILIPINO, "fil", "PH", 0 }, - { LANGUAGE_USER_TAGALOG, "tl", "PH", 0 }, - { LANGUAGE_ENGLISH_PHILIPPINES, "en", "PH", 0 }, - { LANGUAGE_IBIBIO_NIGERIA, "ibb", "NG", 0 }, - { LANGUAGE_YI, "ii", "CN", 0 }, - { LANGUAGE_ENGLISH_ARAB_EMIRATES, "en", "AE", 0 }, // MS reserved - { LANGUAGE_ENGLISH_BAHRAIN, "en", "BH", 0 }, // MS reserved - { LANGUAGE_ENGLISH_EGYPT, "en", "EG", 0 }, // MS reserved - { LANGUAGE_ENGLISH_JORDAN, "en", "JO", 0 }, // MS reserved - { LANGUAGE_ENGLISH_KUWAIT, "en", "KW", 0 }, // MS reserved - { LANGUAGE_ENGLISH_TURKEY, "en", "TR", 0 }, // MS reserved - { LANGUAGE_ENGLISH_YEMEN, "en", "YE", 0 }, // MS reserved - { LANGUAGE_TAMAZIGHT_LATIN_ALGERIA, "kab", "DZ", 0 }, // In practice Kabyle is the language used for this - { LANGUAGE_OBSOLETE_USER_KABYLE, "kab", "DZ", 0 }, + { LANGUAGE_WOLOF_SENEGAL, "wo", "SN", k0 }, + { LANGUAGE_FILIPINO, "fil", "PH", k0 }, + { LANGUAGE_USER_TAGALOG, "tl", "PH", k0 }, + { LANGUAGE_ENGLISH_PHILIPPINES, "en", "PH", k0 }, + { LANGUAGE_IBIBIO_NIGERIA, "ibb", "NG", k0 }, + { LANGUAGE_YI, "ii", "CN", k0 }, + { LANGUAGE_ENGLISH_ARAB_EMIRATES, "en", "AE", k0 }, // MS reserved + { LANGUAGE_ENGLISH_BAHRAIN, "en", "BH", k0 }, // MS reserved + { LANGUAGE_ENGLISH_EGYPT, "en", "EG", k0 }, // MS reserved + { LANGUAGE_ENGLISH_JORDAN, "en", "JO", k0 }, // MS reserved + { LANGUAGE_ENGLISH_KUWAIT, "en", "KW", k0 }, // MS reserved + { LANGUAGE_ENGLISH_TURKEY, "en", "TR", k0 }, // MS reserved + { LANGUAGE_ENGLISH_YEMEN, "en", "YE", k0 }, // MS reserved + { LANGUAGE_TAMAZIGHT_LATIN_ALGERIA, "kab", "DZ", k0 }, // In practice Kabyle is the language used for this + { LANGUAGE_OBSOLETE_USER_KABYLE, "kab", "DZ", k0 }, { LANGUAGE_TAMAZIGHT_LATIN_ALGERIA, "ber", "DZ", kSAME }, // In practice Algeria has standardized on Kabyle as the member of the "ber" collective which gets used there. { LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO, "tmz", "MA", kSAME }, - { LANGUAGE_TAMAZIGHT_MOROCCO, "tmz", "MA", 0 }, // MS reserved + { LANGUAGE_TAMAZIGHT_MOROCCO, "tmz", "MA", k0 }, // MS reserved { LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO, "ber", "MA", kSAME }, // Morocco is officially using Tifinagh for its Berber languages, old kludge to distinguish from LANGUAGE_TAMAZIGHT_LATIN_ALGERIA - { LANGUAGE_USER_LATIN_VATICAN, "la", "VA", 0 }, - { LANGUAGE_OBSOLETE_USER_LATIN, "la", "VA", 0 }, - { LANGUAGE_LATIN_LSO, "la", "" , 0 }, - { LANGUAGE_USER_ESPERANTO, "eo", "" , 0 }, - { LANGUAGE_USER_INTERLINGUA, "ia", "" , 0 }, - { LANGUAGE_USER_INTERLINGUE, "ie", "" , 0 }, - { LANGUAGE_MAORI_NEW_ZEALAND, "mi", "NZ", 0 }, - { LANGUAGE_OBSOLETE_USER_MAORI, "mi", "NZ", 0 }, - { LANGUAGE_KINYARWANDA_RWANDA, "rw", "RW", 0 }, - { LANGUAGE_OBSOLETE_USER_KINYARWANDA, "rw", "RW", 0 }, - { LANGUAGE_UPPER_SORBIAN_GERMANY, "hsb", "DE", 0 }, // MS maps this to 'wen-DE', which is nonsense. 'wen' is a collective language code, 'WEN' is a SIL code, see http://www.ethnologue.com/14/show_iso639.asp?code=wen and http://www.ethnologue.com/14/show_language.asp?code=WEN - { LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN,"hsb", "DE", 0 }, - { LANGUAGE_LOWER_SORBIAN_GERMANY, "dsb", "DE", 0 }, // MS maps this to 'wee-DE', which is nonsense. 'WEE' is a SIL code, see http://www.ethnologue.com/14/show_language.asp?code=WEE - { LANGUAGE_LOWER_SORBIAN_LSO, "dsb", "" , 0 }, - { LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN,"dsb", "DE", 0 }, - { LANGUAGE_OCCITAN_FRANCE, "oc", "FR", 0 }, - { LANGUAGE_OBSOLETE_USER_OCCITAN, "oc", "FR", 0 }, + { LANGUAGE_USER_LATIN_VATICAN, "la", "VA", k0 }, + { LANGUAGE_OBSOLETE_USER_LATIN, "la", "VA", k0 }, + { LANGUAGE_LATIN_LSO, "la", "" , k0 }, + { LANGUAGE_USER_ESPERANTO, "eo", "" , k0 }, + { LANGUAGE_USER_INTERLINGUA, "ia", "" , k0 }, + { LANGUAGE_USER_INTERLINGUE, "ie", "" , k0 }, + { LANGUAGE_MAORI_NEW_ZEALAND, "mi", "NZ", k0 }, + { LANGUAGE_OBSOLETE_USER_MAORI, "mi", "NZ", k0 }, + { LANGUAGE_KINYARWANDA_RWANDA, "rw", "RW", k0 }, + { LANGUAGE_OBSOLETE_USER_KINYARWANDA, "rw", "RW", k0 }, + { LANGUAGE_UPPER_SORBIAN_GERMANY, "hsb", "DE", k0 }, // MS maps this to 'wen-DE', which is nonsense. 'wen' is a collective language code, 'WEN' is a SIL code, see http://www.ethnologue.com/14/show_iso639.asp?code=wen and http://www.ethnologue.com/14/show_language.asp?code=WEN + { LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN,"hsb", "DE", k0 }, + { LANGUAGE_LOWER_SORBIAN_GERMANY, "dsb", "DE", k0 }, // MS maps this to 'wee-DE', which is nonsense. 'WEE' is a SIL code, see http://www.ethnologue.com/14/show_language.asp?code=WEE + { LANGUAGE_LOWER_SORBIAN_LSO, "dsb", "" , k0 }, + { LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN,"dsb", "DE", k0 }, + { LANGUAGE_OCCITAN_FRANCE, "oc", "FR", k0 }, + { LANGUAGE_OBSOLETE_USER_OCCITAN, "oc", "FR", k0 }, { LANGUAGE_USER_KURDISH_TURKEY, "kmr", "TR", kSAME }, { LANGUAGE_USER_KURDISH_TURKEY, "ku", "TR", kSAME }, { LANGUAGE_USER_KURDISH_SYRIA, "kmr", "SY", kSAME }, { LANGUAGE_USER_KURDISH_SYRIA, "ku", "SY", kSAME }, - { LANGUAGE_KURDISH_ARABIC_IRAQ, "ckb", "IQ", 0 }, + { LANGUAGE_KURDISH_ARABIC_IRAQ, "ckb", "IQ", k0 }, { LANGUAGE_KURDISH_ARABIC_IRAQ, "ku", "IQ", kSAME }, { LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ, "ku", "IQ", LANGUAGE_KURDISH_ARABIC_IRAQ }, - { LANGUAGE_USER_KURDISH_SOUTHERN_IRAN, "sdh", "IR", 0 }, - { LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ, "sdh", "IQ", 0 }, - { LANGUAGE_USER_KURDISH_IRAN, "ckb", "IR", 0 }, + { LANGUAGE_USER_KURDISH_SOUTHERN_IRAN, "sdh", "IR", k0 }, + { LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ, "sdh", "IQ", k0 }, + { LANGUAGE_USER_KURDISH_IRAN, "ckb", "IR", k0 }, { LANGUAGE_USER_KURDISH_IRAN, "ku", "IR", kSAME }, - { LANGUAGE_KURDISH_ARABIC_LSO, "ckb", "" , 0 }, - { LANGUAGE_USER_SARDINIAN, "sc", "IT", 0 }, // macrolanguage code - { LANGUAGE_USER_SARDINIAN_CAMPIDANESE, "sro", "IT", 0 }, - { LANGUAGE_USER_SARDINIAN_GALLURESE, "sdn", "IT", 0 }, - { LANGUAGE_USER_SARDINIAN_LOGUDORESE, "src", "IT", 0 }, - { LANGUAGE_USER_SARDINIAN_SASSARESE, "sdc", "IT", 0 }, - { LANGUAGE_BRETON_FRANCE, "br", "FR", 0 }, - { LANGUAGE_OBSOLETE_USER_BRETON, "br", "FR", 0 }, - { LANGUAGE_KALAALLISUT_GREENLAND, "kl", "GL", 0 }, - { LANGUAGE_OBSOLETE_USER_KALAALLISUT, "kl", "GL", 0 }, - { LANGUAGE_USER_SWAZI, "ss", "ZA", 0 }, - { LANGUAGE_USER_NDEBELE_SOUTH, "nr", "ZA", 0 }, - { LANGUAGE_TSWANA_BOTSWANA, "tn", "BW", 0 }, - { LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA, "tn", "BW", 0 }, - { LANGUAGE_USER_ENGLISH_BOTSWANA, "en", "BW", 0 }, - { LANGUAGE_USER_MOORE, "mos", "BF", 0 }, - { LANGUAGE_USER_BAMBARA, "bm", "ML", 0 }, - { LANGUAGE_USER_AKAN, "ak", "GH", 0 }, - { LANGUAGE_LUXEMBOURGISH_LUXEMBOURG, "lb", "LU", 0 }, - { LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH, "lb", "LU", 0 }, - { LANGUAGE_USER_FRIULIAN, "fur", "IT", 0 }, - { LANGUAGE_USER_FIJIAN, "fj", "FJ", 0 }, - { LANGUAGE_USER_AFRIKAANS_NAMIBIA, "af", "NA", 0 }, - { LANGUAGE_USER_ENGLISH_NAMIBIA, "en", "NA", 0 }, - { LANGUAGE_USER_WALLOON, "wa", "BE", 0 }, - { LANGUAGE_USER_COPTIC, "cop", "EG", 0 }, - { LANGUAGE_USER_GASCON, "gsc", "FR", 0 }, - { LANGUAGE_USER_GERMAN_BELGIUM, "de", "BE", 0 }, - { LANGUAGE_USER_CHUVASH, "cv", "RU", 0 }, - { LANGUAGE_USER_EWE_GHANA, "ee", "GH", 0 }, - { LANGUAGE_USER_ENGLISH_GHANA, "en", "GH", 0 }, - { LANGUAGE_USER_SANGO, "sg", "CF", 0 }, - { LANGUAGE_USER_GANDA, "lg", "UG", 0 }, - { LANGUAGE_USER_LINGALA_DRCONGO, "ln", "CD", 0 }, - { LANGUAGE_USER_LOW_GERMAN, "nds", "DE", 0 }, - { LANGUAGE_USER_HILIGAYNON, "hil", "PH", 0 }, - { LANGUAGE_USER_ENGLISH_MALAWI, "en", "MW", 0 }, /* en default for MW */ - { LANGUAGE_USER_NYANJA, "ny", "MW", 0 }, - { LANGUAGE_USER_KASHUBIAN, "csb", "PL", 0 }, - { LANGUAGE_SPANISH_CUBA, "es", "CU", 0 }, - { LANGUAGE_OBSOLETE_USER_SPANISH_CUBA, "es", "CU", 0 }, - { LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA, "qul", "BO", 0 }, - { LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA, "quh", "BO", 0 }, - { LANGUAGE_USER_BODO_INDIA, "brx", "IN", 0 }, - { LANGUAGE_USER_DOGRI_INDIA, "dgo", "IN", 0 }, - { LANGUAGE_USER_MAITHILI_INDIA, "mai", "IN", 0 }, - { LANGUAGE_USER_SANTALI_INDIA, "sat", "IN", 0 }, - { LANGUAGE_USER_TETUN, "tet", "ID", 0 }, - { LANGUAGE_USER_TETUN_TIMOR_LESTE, "tet", "TL", 0 }, - { LANGUAGE_USER_TOK_PISIN, "tpi", "PG", 0 }, - { LANGUAGE_USER_SHUSWAP, "shs", "CA", 0 }, - { LANGUAGE_USER_ANCIENT_GREEK, "grc", "GR", 0 }, - { LANGUAGE_USER_ASTURIAN, "ast", "ES", 0 }, - { LANGUAGE_USER_LATGALIAN, "ltg", "LV", 0 }, - { LANGUAGE_USER_MAORE, "swb", "YT", 0 }, - { LANGUAGE_USER_BUSHI, "buc", "YT", 0 }, - { LANGUAGE_USER_TAHITIAN, "ty", "PF", 0 }, - { LANGUAGE_MALAGASY_PLATEAU, "plt", "MG", 0 }, + { LANGUAGE_KURDISH_ARABIC_LSO, "ckb", "" , k0 }, + { LANGUAGE_USER_SARDINIAN, "sc", "IT", k0 }, // macrolanguage code + { LANGUAGE_USER_SARDINIAN_CAMPIDANESE, "sro", "IT", k0 }, + { LANGUAGE_USER_SARDINIAN_GALLURESE, "sdn", "IT", k0 }, + { LANGUAGE_USER_SARDINIAN_LOGUDORESE, "src", "IT", k0 }, + { LANGUAGE_USER_SARDINIAN_SASSARESE, "sdc", "IT", k0 }, + { LANGUAGE_BRETON_FRANCE, "br", "FR", k0 }, + { LANGUAGE_OBSOLETE_USER_BRETON, "br", "FR", k0 }, + { LANGUAGE_KALAALLISUT_GREENLAND, "kl", "GL", k0 }, + { LANGUAGE_OBSOLETE_USER_KALAALLISUT, "kl", "GL", k0 }, + { LANGUAGE_USER_SWAZI, "ss", "ZA", k0 }, + { LANGUAGE_USER_NDEBELE_SOUTH, "nr", "ZA", k0 }, + { LANGUAGE_TSWANA_BOTSWANA, "tn", "BW", k0 }, + { LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA, "tn", "BW", k0 }, + { LANGUAGE_USER_ENGLISH_BOTSWANA, "en", "BW", k0 }, + { LANGUAGE_USER_MOORE, "mos", "BF", k0 }, + { LANGUAGE_USER_BAMBARA, "bm", "ML", k0 }, + { LANGUAGE_USER_AKAN, "ak", "GH", k0 }, + { LANGUAGE_LUXEMBOURGISH_LUXEMBOURG, "lb", "LU", k0 }, + { LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH, "lb", "LU", k0 }, + { LANGUAGE_USER_FRIULIAN, "fur", "IT", k0 }, + { LANGUAGE_USER_FIJIAN, "fj", "FJ", k0 }, + { LANGUAGE_USER_AFRIKAANS_NAMIBIA, "af", "NA", k0 }, + { LANGUAGE_USER_ENGLISH_NAMIBIA, "en", "NA", k0 }, + { LANGUAGE_USER_WALLOON, "wa", "BE", k0 }, + { LANGUAGE_USER_COPTIC, "cop", "EG", k0 }, + { LANGUAGE_USER_GASCON, "gsc", "FR", k0 }, + { LANGUAGE_USER_GERMAN_BELGIUM, "de", "BE", k0 }, + { LANGUAGE_USER_CHUVASH, "cv", "RU", k0 }, + { LANGUAGE_USER_EWE_GHANA, "ee", "GH", k0 }, + { LANGUAGE_USER_ENGLISH_GHANA, "en", "GH", k0 }, + { LANGUAGE_USER_SANGO, "sg", "CF", k0 }, + { LANGUAGE_USER_GANDA, "lg", "UG", k0 }, + { LANGUAGE_USER_LINGALA_DRCONGO, "ln", "CD", k0 }, + { LANGUAGE_USER_LOW_GERMAN, "nds", "DE", k0 }, + { LANGUAGE_USER_HILIGAYNON, "hil", "PH", k0 }, + { LANGUAGE_USER_ENGLISH_MALAWI, "en", "MW", k0 }, /* en default for MW */ + { LANGUAGE_USER_NYANJA, "ny", "MW", k0 }, + { LANGUAGE_USER_KASHUBIAN, "csb", "PL", k0 }, + { LANGUAGE_SPANISH_CUBA, "es", "CU", k0 }, + { LANGUAGE_OBSOLETE_USER_SPANISH_CUBA, "es", "CU", k0 }, + { LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA, "qul", "BO", k0 }, + { LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA, "quh", "BO", k0 }, + { LANGUAGE_USER_BODO_INDIA, "brx", "IN", k0 }, + { LANGUAGE_USER_DOGRI_INDIA, "dgo", "IN", k0 }, + { LANGUAGE_USER_MAITHILI_INDIA, "mai", "IN", k0 }, + { LANGUAGE_USER_SANTALI_INDIA, "sat", "IN", k0 }, + { LANGUAGE_USER_TETUN, "tet", "ID", k0 }, + { LANGUAGE_USER_TETUN_TIMOR_LESTE, "tet", "TL", k0 }, + { LANGUAGE_USER_TOK_PISIN, "tpi", "PG", k0 }, + { LANGUAGE_USER_SHUSWAP, "shs", "CA", k0 }, + { LANGUAGE_USER_ANCIENT_GREEK, "grc", "GR", k0 }, + { LANGUAGE_USER_ASTURIAN, "ast", "ES", k0 }, + { LANGUAGE_USER_LATGALIAN, "ltg", "LV", k0 }, + { LANGUAGE_USER_MAORE, "swb", "YT", k0 }, + { LANGUAGE_USER_BUSHI, "buc", "YT", k0 }, + { LANGUAGE_USER_TAHITIAN, "ty", "PF", k0 }, + { LANGUAGE_MALAGASY_PLATEAU, "plt", "MG", k0 }, { LANGUAGE_MALAGASY_PLATEAU, "mg", "MG", kSAME }, - { LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU, "plt", "MG", 0 }, - { LANGUAGE_USER_BAFIA, "ksf", "CM", 0 }, - { LANGUAGE_USER_GIKUYU, "ki", "KE", 0 }, - { LANGUAGE_USER_RUSYN_UKRAINE, "rue", "UA", 0 }, - { LANGUAGE_USER_RUSYN_SLOVAKIA, "rue", "SK", 0 }, - { LANGUAGE_USER_LIMBU, "lif", "NP", 0 }, - { LANGUAGE_USER_LOJBAN, "jbo", "" , 0 }, - { LANGUAGE_USER_HAITIAN, "ht", "HT", 0 }, - { LANGUAGE_FRENCH_HAITI, "fr", "HT", 0 }, - { LANGUAGE_USER_BEEMBE, "beq", "CG", 0 }, - { LANGUAGE_USER_BEKWEL, "bkw", "CG", 0 }, - { LANGUAGE_USER_KITUBA, "mkw", "CG", 0 }, - { LANGUAGE_USER_LARI, "ldi", "CG", 0 }, - { LANGUAGE_USER_MBOCHI, "mdw", "CG", 0 }, - { LANGUAGE_USER_TEKE_EBOO, "ebo", "CG", 0 }, - { LANGUAGE_USER_TEKE_IBALI, "tek", "CG", 0 }, - { LANGUAGE_USER_TEKE_TYEE, "tyx", "CG", 0 }, - { LANGUAGE_USER_VILI, "vif", "CG", 0 }, - { LANGUAGE_USER_PORTUGUESE_ANGOLA, "pt", "AO", 0 }, - { LANGUAGE_USER_MANX, "gv", "GB", 0 }, - { LANGUAGE_USER_ARAGONESE, "an", "ES", 0 }, - { LANGUAGE_USER_KEYID, "qtz", "" , 0 }, // key id pseudolanguage used for UI testing + { LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU, "plt", "MG", k0 }, + { LANGUAGE_USER_BAFIA, "ksf", "CM", k0 }, + { LANGUAGE_USER_GIKUYU, "ki", "KE", k0 }, + { LANGUAGE_USER_RUSYN_UKRAINE, "rue", "UA", k0 }, + { LANGUAGE_USER_RUSYN_SLOVAKIA, "rue", "SK", k0 }, + { LANGUAGE_USER_LIMBU, "lif", "NP", k0 }, + { LANGUAGE_USER_LOJBAN, "jbo", "" , k0 }, + { LANGUAGE_USER_HAITIAN, "ht", "HT", k0 }, + { LANGUAGE_FRENCH_HAITI, "fr", "HT", k0 }, + { LANGUAGE_USER_BEEMBE, "beq", "CG", k0 }, + { LANGUAGE_USER_BEKWEL, "bkw", "CG", k0 }, + { LANGUAGE_USER_KITUBA, "mkw", "CG", k0 }, + { LANGUAGE_USER_LARI, "ldi", "CG", k0 }, + { LANGUAGE_USER_MBOCHI, "mdw", "CG", k0 }, + { LANGUAGE_USER_TEKE_EBOO, "ebo", "CG", k0 }, + { LANGUAGE_USER_TEKE_IBALI, "tek", "CG", k0 }, + { LANGUAGE_USER_TEKE_TYEE, "tyx", "CG", k0 }, + { LANGUAGE_USER_VILI, "vif", "CG", k0 }, + { LANGUAGE_USER_PORTUGUESE_ANGOLA, "pt", "AO", k0 }, + { LANGUAGE_USER_MANX, "gv", "GB", k0 }, + { LANGUAGE_USER_ARAGONESE, "an", "ES", k0 }, + { LANGUAGE_USER_KEYID, "qtz", "" , k0 }, // key id pseudolanguage used for UI testing { LANGUAGE_USER_PALI_LATIN, "pli", "" , kSAME }, // Pali with Latin script, ISO 639-3 (sigh..) back-compat, Latin is not a default script though.. - { LANGUAGE_USER_KYRGYZ_CHINA, "ky", "CN", 0 }, - { LANGUAGE_USER_KOMI_ZYRIAN, "kpv", "RU", 0 }, - { LANGUAGE_USER_KOMI_PERMYAK, "koi", "RU", 0 }, - { LANGUAGE_USER_PITJANTJATJARA, "pjt", "AU", 0 }, - { LANGUAGE_USER_ERZYA, "myv", "RU", 0 }, - { LANGUAGE_USER_MARI_MEADOW, "mhr", "RU", 0 }, - { LANGUAGE_USER_KHANTY, "kca", "RU", 0 }, - { LANGUAGE_USER_LIVONIAN, "liv", "RU", 0 }, - { LANGUAGE_USER_MOKSHA, "mdf", "RU", 0 }, - { LANGUAGE_USER_MARI_HILL, "mrj", "RU", 0 }, - { LANGUAGE_USER_NGANASAN, "nio", "RU", 0 }, - { LANGUAGE_USER_OLONETS, "olo", "RU", 0 }, - { LANGUAGE_USER_VEPS, "vep", "RU", 0 }, - { LANGUAGE_USER_VORO, "vro", "EE", 0 }, - { LANGUAGE_USER_NENETS, "yrk", "RU", 0 }, - { LANGUAGE_USER_AKA, "axk", "CF", 0 }, - { LANGUAGE_USER_AKA_CONGO, "axk", "CG", 0 }, - { LANGUAGE_USER_DIBOLE, "bvx", "CG", 0 }, - { LANGUAGE_USER_DOONDO, "dde", "CG", 0 }, - { LANGUAGE_USER_KAAMBA, "xku", "CG", 0 }, - { LANGUAGE_USER_KOONGO, "kng", "CD", 0 }, - { LANGUAGE_USER_KOONGO_CONGO, "kng", "CG", 0 }, - { LANGUAGE_USER_KUNYI, "njx", "CG", 0 }, - { LANGUAGE_USER_NGUNGWEL, "ngz", "CG", 0 }, - { LANGUAGE_USER_NJYEM, "njy", "CM", 0 }, - { LANGUAGE_USER_NJYEM_CONGO, "njy", "CG", 0 }, - { LANGUAGE_USER_PUNU, "puu", "GA", 0 }, - { LANGUAGE_USER_PUNU_CONGO, "puu", "CG", 0 }, - { LANGUAGE_USER_SUUNDI, "sdj", "CG", 0 }, - { LANGUAGE_USER_TEKE_KUKUYA, "kkw", "CG", 0 }, - { LANGUAGE_USER_TSAANGI, "tsa", "CG", 0 }, - { LANGUAGE_USER_YAKA, "iyx", "CG", 0 }, - { LANGUAGE_USER_YOMBE, "yom", "CD", 0 }, - { LANGUAGE_USER_YOMBE_CONGO, "yom", "CG", 0 }, - { LANGUAGE_USER_SIDAMA, "sid", "ET", 0 }, - { LANGUAGE_USER_NKO, "nqo", "GN", 0 }, - { LANGUAGE_USER_UDMURT, "udm", "RU", 0 }, - { LANGUAGE_USER_CORNISH, "kw", "UK", 0 }, - { LANGUAGE_USER_SAMI_PITE_SWEDEN, "sje", "SE", 0 }, - { LANGUAGE_USER_NGAEBERE, "gym", "PA", 0 }, - { LANGUAGE_USER_KUMYK, "kum", "RU", 0 }, - { LANGUAGE_USER_NOGAI, "nog", "RU", 0 }, - { LANGUAGE_USER_LADIN, "lld", "IT", 0 }, - { LANGUAGE_USER_FRENCH_BURKINA_FASO, "fr", "BF", 0 }, - { LANGUAGE_USER_PUINAVE, "pui", "CO", 0 }, - { LANGUAGE_USER_AVAR, "av", "RU", 0 }, - { LANGUAGE_USER_LENGO, "lgr", "SB", 0 }, - { LANGUAGE_USER_FRENCH_BENIN, "fr", "BJ", 0 }, - { LANGUAGE_USER_FRENCH_NIGER, "fr", "NE", 0 }, - { LANGUAGE_USER_FRENCH_TOGO, "fr", "TG", 0 }, - { LANGUAGE_USER_KVEN_FINNISH, "fkv", "NO", 0 }, - { LANGUAGE_USER_CHURCH_SLAVIC, "cu", "RU", 0 }, - { LANGUAGE_USER_VENETIAN, "vec", "IT", 0 }, - { LANGUAGE_USER_ENGLISH_GAMBIA, "en", "GM", 0 }, - { LANGUAGE_USER_OCCITAN_ARANESE, "oc", "ES", 0 }, - { LANGUAGE_USER_ARPITAN_FRANCE, "frp", "FR", 0 }, - { LANGUAGE_USER_ARPITAN_ITALY, "frp", "IT", 0 }, - { LANGUAGE_USER_ARPITAN_SWITZERLAND, "frp", "CH", 0 }, - { LANGUAGE_USER_APATANI, "apt", "IN", 0 }, - { LANGUAGE_USER_ENGLISH_MAURITIUS, "en", "MU", 0 }, - { LANGUAGE_USER_FRENCH_MAURITIUS, "fr", "MU", 0 }, - { LANGUAGE_USER_SILESIAN, "szl", "PL", 0 }, - { LANGUAGE_USER_MANCHU, "mnc", "CN", 0 }, - { LANGUAGE_USER_XIBE, "sjo", "CN", 0 }, - { LANGUAGE_MULTIPLE, "mul", "" , 0 }, // multiple languages, many languages are used - { LANGUAGE_UNDETERMINED, "und", "" , 0 }, // undetermined language, language cannot be identified - { LANGUAGE_NONE, "zxx", "" , 0 }, // added to ISO 639-2 on 2006-01-11: Used to declare the absence of linguistic information - { LANGUAGE_DONTKNOW, "", "" , 0 } // marks end of table + { LANGUAGE_USER_KYRGYZ_CHINA, "ky", "CN", k0 }, + { LANGUAGE_USER_KOMI_ZYRIAN, "kpv", "RU", k0 }, + { LANGUAGE_USER_KOMI_PERMYAK, "koi", "RU", k0 }, + { LANGUAGE_USER_PITJANTJATJARA, "pjt", "AU", k0 }, + { LANGUAGE_USER_ERZYA, "myv", "RU", k0 }, + { LANGUAGE_USER_MARI_MEADOW, "mhr", "RU", k0 }, + { LANGUAGE_USER_KHANTY, "kca", "RU", k0 }, + { LANGUAGE_USER_LIVONIAN, "liv", "RU", k0 }, + { LANGUAGE_USER_MOKSHA, "mdf", "RU", k0 }, + { LANGUAGE_USER_MARI_HILL, "mrj", "RU", k0 }, + { LANGUAGE_USER_NGANASAN, "nio", "RU", k0 }, + { LANGUAGE_USER_OLONETS, "olo", "RU", k0 }, + { LANGUAGE_USER_VEPS, "vep", "RU", k0 }, + { LANGUAGE_USER_VORO, "vro", "EE", k0 }, + { LANGUAGE_USER_NENETS, "yrk", "RU", k0 }, + { LANGUAGE_USER_AKA, "axk", "CF", k0 }, + { LANGUAGE_USER_AKA_CONGO, "axk", "CG", k0 }, + { LANGUAGE_USER_DIBOLE, "bvx", "CG", k0 }, + { LANGUAGE_USER_DOONDO, "dde", "CG", k0 }, + { LANGUAGE_USER_KAAMBA, "xku", "CG", k0 }, + { LANGUAGE_USER_KOONGO, "kng", "CD", k0 }, + { LANGUAGE_USER_KOONGO_CONGO, "kng", "CG", k0 }, + { LANGUAGE_USER_KUNYI, "njx", "CG", k0 }, + { LANGUAGE_USER_NGUNGWEL, "ngz", "CG", k0 }, + { LANGUAGE_USER_NJYEM, "njy", "CM", k0 }, + { LANGUAGE_USER_NJYEM_CONGO, "njy", "CG", k0 }, + { LANGUAGE_USER_PUNU, "puu", "GA", k0 }, + { LANGUAGE_USER_PUNU_CONGO, "puu", "CG", k0 }, + { LANGUAGE_USER_SUUNDI, "sdj", "CG", k0 }, + { LANGUAGE_USER_TEKE_KUKUYA, "kkw", "CG", k0 }, + { LANGUAGE_USER_TSAANGI, "tsa", "CG", k0 }, + { LANGUAGE_USER_YAKA, "iyx", "CG", k0 }, + { LANGUAGE_USER_YOMBE, "yom", "CD", k0 }, + { LANGUAGE_USER_YOMBE_CONGO, "yom", "CG", k0 }, + { LANGUAGE_USER_SIDAMA, "sid", "ET", k0 }, + { LANGUAGE_USER_NKO, "nqo", "GN", k0 }, + { LANGUAGE_USER_UDMURT, "udm", "RU", k0 }, + { LANGUAGE_USER_CORNISH, "kw", "UK", k0 }, + { LANGUAGE_USER_SAMI_PITE_SWEDEN, "sje", "SE", k0 }, + { LANGUAGE_USER_NGAEBERE, "gym", "PA", k0 }, + { LANGUAGE_USER_KUMYK, "kum", "RU", k0 }, + { LANGUAGE_USER_NOGAI, "nog", "RU", k0 }, + { LANGUAGE_USER_LADIN, "lld", "IT", k0 }, + { LANGUAGE_USER_FRENCH_BURKINA_FASO, "fr", "BF", k0 }, + { LANGUAGE_USER_PUINAVE, "pui", "CO", k0 }, + { LANGUAGE_USER_AVAR, "av", "RU", k0 }, + { LANGUAGE_USER_LENGO, "lgr", "SB", k0 }, + { LANGUAGE_USER_FRENCH_BENIN, "fr", "BJ", k0 }, + { LANGUAGE_USER_FRENCH_NIGER, "fr", "NE", k0 }, + { LANGUAGE_USER_FRENCH_TOGO, "fr", "TG", k0 }, + { LANGUAGE_USER_KVEN_FINNISH, "fkv", "NO", k0 }, + { LANGUAGE_USER_CHURCH_SLAVIC, "cu", "RU", k0 }, + { LANGUAGE_USER_VENETIAN, "vec", "IT", k0 }, + { LANGUAGE_USER_ENGLISH_GAMBIA, "en", "GM", k0 }, + { LANGUAGE_USER_OCCITAN_ARANESE, "oc", "ES", k0 }, + { LANGUAGE_USER_ARPITAN_FRANCE, "frp", "FR", k0 }, + { LANGUAGE_USER_ARPITAN_ITALY, "frp", "IT", k0 }, + { LANGUAGE_USER_ARPITAN_SWITZERLAND, "frp", "CH", k0 }, + { LANGUAGE_USER_APATANI, "apt", "IN", k0 }, + { LANGUAGE_USER_ENGLISH_MAURITIUS, "en", "MU", k0 }, + { LANGUAGE_USER_FRENCH_MAURITIUS, "fr", "MU", k0 }, + { LANGUAGE_USER_SILESIAN, "szl", "PL", k0 }, + { LANGUAGE_USER_MANCHU, "mnc", "CN", k0 }, + { LANGUAGE_USER_XIBE, "sjo", "CN", k0 }, + { LANGUAGE_MULTIPLE, "mul", "" , k0 }, // multiple languages, many languages are used + { LANGUAGE_UNDETERMINED, "und", "" , k0 }, // undetermined language, language cannot be identified + { LANGUAGE_NONE, "zxx", "" , k0 }, // added to ISO 639-2 on 2006-01-11: Used to declare the absence of linguistic information + { LANGUAGE_DONTKNOW, "", "" , k0 } // marks end of table }; static IsoLanguageScriptCountryEntry const aImplIsoLangScriptEntries[] = { // MS-LangID, ISO639-ISO15924, ISO3166, override - { LANGUAGE_SERBIAN_LATIN_SERBIA, "sr-Latn", "RS", 0 }, - { LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA, "sr-Latn", "RS", 0 }, - { LANGUAGE_SERBIAN_LATIN_MONTENEGRO, "sr-Latn", "ME", 0 }, - { LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO,"sr-Latn", "ME", 0 }, - { LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA, "sr-Latn", "BA", 0 }, - { LANGUAGE_SERBIAN_LATIN_SAM, "sr-Latn", "CS", 0 }, // Serbian Latin in Serbia and Montenegro; note that not all applications may know about the 'CS' reusage mess, see https://en.wikipedia.org/wiki/ISO_3166-2:CS - { LANGUAGE_SERBIAN_LATIN_SAM, "sr-Latn", "YU", 0 }, // legacy Serbian Latin in Yugoslavia - { LANGUAGE_SERBIAN_LATIN_LSO, "sr-Latn", "" , 0 }, + { LANGUAGE_SERBIAN_LATIN_SERBIA, "sr-Latn", "RS", k0 }, + { LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA, "sr-Latn", "RS", k0 }, + { LANGUAGE_SERBIAN_LATIN_MONTENEGRO, "sr-Latn", "ME", k0 }, + { LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO,"sr-Latn", "ME", k0 }, + { LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA, "sr-Latn", "BA", k0 }, + { LANGUAGE_SERBIAN_LATIN_SAM, "sr-Latn", "CS", k0 }, // Serbian Latin in Serbia and Montenegro; note that not all applications may know about the 'CS' reusage mess, see https://en.wikipedia.org/wiki/ISO_3166-2:CS + { LANGUAGE_SERBIAN_LATIN_SAM, "sr-Latn", "YU", k0 }, // legacy Serbian Latin in Yugoslavia + { LANGUAGE_SERBIAN_LATIN_LSO, "sr-Latn", "" , k0 }, { LANGUAGE_SERBIAN_LATIN_NEUTRAL, "sr-Latn", "" , LANGUAGE_SERBIAN_LATIN_LSO }, // MS lists this as 'sr' only, what a mess { LANGUAGE_SERBIAN_CYRILLIC_SERBIA, "sr-Cyrl", "RS", kSAME }, // MS { LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO, "sr-Cyrl", "ME", kSAME }, // MS { LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA, "sr-Cyrl", "BA", kSAME }, // MS { LANGUAGE_SERBIAN_CYRILLIC_SAM, "sr-Cyrl", "CS", kSAME }, // MS { LANGUAGE_SERBIAN_CYRILLIC_LSO, "sr-Cyrl", "" , kSAME }, // MS - { LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA, "bs-Cyrl", "BA", 0 }, - { LANGUAGE_BOSNIAN_CYRILLIC_LSO, "bs-Cyrl", "" , 0 }, - { LANGUAGE_AZERI_CYRILLIC, "az-Cyrl", "AZ", 0 }, // macrolanguage code - { LANGUAGE_AZERI_CYRILLIC_LSO, "az-Cyrl", "" , 0 }, // macrolanguage code - { LANGUAGE_UZBEK_CYRILLIC, "uz-Cyrl", "UZ", 0 }, // macrolanguage code - { LANGUAGE_UZBEK_CYRILLIC_LSO, "uz-Cyrl", "" , 0 }, // macrolanguage code - { LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA, "mn-Cyrl", "MN", 0 }, // macrolanguage code; should be khk-MN or khk-Cyrl-MN - { LANGUAGE_MONGOLIAN_CYRILLIC_LSO, "mn-Cyrl", "" , 0 }, // macrolanguage code; MS, should be khk or khk-Cyrl - { LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA, "mn-Mong", "MN", 0 }, // macrolanguage code; MS, should be khk-Mong-MN - { LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA, "mn-Mong", "CN", 0 }, // macrolanguage code; MS, should actually be mvf-CN - { LANGUAGE_MONGOLIAN_MONGOLIAN_LSO, "mn-Mong", "" , 0 }, // macrolanguage code - { LANGUAGE_USER_PALI_LATIN, "pi-Latn", "" , 0 }, - { LANGUAGE_USER_KARAKALPAK_LATIN, "kaa-Latn", "UZ", 0 }, - { LANGUAGE_TAJIK, "tg-Cyrl", "TJ", 0 }, // MS - { LANGUAGE_TAJIK_LSO, "tg-Cyrl", "" , 0 }, // MS - { LANGUAGE_AZERI_LATIN, "az-Latn", "AZ", 0 }, // macrolanguage code; MS - { LANGUAGE_AZERI_LATIN_LSO, "az-Latn", "" , 0 }, // macrolanguage code; MS + { LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA, "bs-Cyrl", "BA", k0 }, + { LANGUAGE_BOSNIAN_CYRILLIC_LSO, "bs-Cyrl", "" , k0 }, + { LANGUAGE_AZERI_CYRILLIC, "az-Cyrl", "AZ", k0 }, // macrolanguage code + { LANGUAGE_AZERI_CYRILLIC_LSO, "az-Cyrl", "" , k0 }, // macrolanguage code + { LANGUAGE_UZBEK_CYRILLIC, "uz-Cyrl", "UZ", k0 }, // macrolanguage code + { LANGUAGE_UZBEK_CYRILLIC_LSO, "uz-Cyrl", "" , k0 }, // macrolanguage code + { LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA, "mn-Cyrl", "MN", k0 }, // macrolanguage code; should be khk-MN or khk-Cyrl-MN + { LANGUAGE_MONGOLIAN_CYRILLIC_LSO, "mn-Cyrl", "" , k0 }, // macrolanguage code; MS, should be khk or khk-Cyrl + { LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA, "mn-Mong", "MN", k0 }, // macrolanguage code; MS, should be khk-Mong-MN + { LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA, "mn-Mong", "CN", k0 }, // macrolanguage code; MS, should actually be mvf-CN + { LANGUAGE_MONGOLIAN_MONGOLIAN_LSO, "mn-Mong", "" , k0 }, // macrolanguage code + { LANGUAGE_USER_PALI_LATIN, "pi-Latn", "" , k0 }, + { LANGUAGE_USER_KARAKALPAK_LATIN, "kaa-Latn", "UZ", k0 }, + { LANGUAGE_TAJIK, "tg-Cyrl", "TJ", k0 }, // MS + { LANGUAGE_TAJIK_LSO, "tg-Cyrl", "" , k0 }, // MS + { LANGUAGE_AZERI_LATIN, "az-Latn", "AZ", k0 }, // macrolanguage code; MS + { LANGUAGE_AZERI_LATIN_LSO, "az-Latn", "" , k0 }, // macrolanguage code; MS { LANGUAGE_USER_YIDDISH_US, "yi-Hebr", "US", kSAME }, // macrolanguage code; MS, Hebr is suppress-script { LANGUAGE_YIDDISH, "yi-Hebr", "IL", kSAME }, // macrolanguage code; MS, Hebr is suppress-script - { LANGUAGE_UZBEK_LATIN, "uz-Latn", "UZ", 0 }, // macrolanguage code - { LANGUAGE_UZBEK_LATIN_LSO, "uz-Latn", "" , 0 }, -// { LANGUAGE_SINDHI, "sd-Deva", "IN", 0 }, // MS, TODO: see comment above in aImplIsoLangEntries - { LANGUAGE_SINDHI_PAKISTAN, "sd-Arab", "PK", 0 }, // MS - { LANGUAGE_SINDHI_ARABIC_LSO, "sd-Arab", "" , 0 }, - { LANGUAGE_CHEROKEE_UNITED_STATES, "chr-Cher", "US", 0 }, // MS - { LANGUAGE_CHEROKEE_CHEROKEE_LSO, "chr-Cher", "" , 0 }, - { LANGUAGE_INUKTITUT_SYLLABICS_CANADA, "iu-Cans", "CA", 0 }, // macrolanguage code, MS - { LANGUAGE_INUKTITUT_SYLLABICS_LSO, "iu-Cans", "" , 0 }, // macrolanguage code, MS - { LANGUAGE_INUKTITUT_LATIN_CANADA, "iu-Latn", "CA", 0 }, // macrolanguage code, MS - { LANGUAGE_INUKTITUT_LATIN_LSO, "iu-Latn", "" , 0 }, // macrolanguage code, MS - { LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO, "tzm-Tfng", "MA", 0 }, - { LANGUAGE_TAMAZIGHT_TIFINAGH_LSO, "tzm-Tfng", "" , 0 }, - { LANGUAGE_KASHMIRI_INDIA, "ks-Deva", "IN", 0 }, // MS - { LANGUAGE_KASHMIRI, "ks-Arab", "" , 0 }, // MS, Kashmiri in "Jammu and Kashmir" ... no ISO3166 code for that - { LANGUAGE_HAUSA_NIGERIA, "ha-Latn", "NG", 0 }, // MS - { LANGUAGE_USER_HAUSA_GHANA, "ha-Latn", "GH", 0 }, - { LANGUAGE_HAUSA_LATIN_LSO, "ha-Latn", "" , 0 }, + { LANGUAGE_UZBEK_LATIN, "uz-Latn", "UZ", k0 }, // macrolanguage code + { LANGUAGE_UZBEK_LATIN_LSO, "uz-Latn", "" , k0 }, +// { LANGUAGE_SINDHI, "sd-Deva", "IN", k0 }, // MS, TODO: see comment above in aImplIsoLangEntries + { LANGUAGE_SINDHI_PAKISTAN, "sd-Arab", "PK", k0 }, // MS + { LANGUAGE_SINDHI_ARABIC_LSO, "sd-Arab", "" , k0 }, + { LANGUAGE_CHEROKEE_UNITED_STATES, "chr-Cher", "US", k0 }, // MS + { LANGUAGE_CHEROKEE_CHEROKEE_LSO, "chr-Cher", "" , k0 }, + { LANGUAGE_INUKTITUT_SYLLABICS_CANADA, "iu-Cans", "CA", k0 }, // macrolanguage code, MS + { LANGUAGE_INUKTITUT_SYLLABICS_LSO, "iu-Cans", "" , k0 }, // macrolanguage code, MS + { LANGUAGE_INUKTITUT_LATIN_CANADA, "iu-Latn", "CA", k0 }, // macrolanguage code, MS + { LANGUAGE_INUKTITUT_LATIN_LSO, "iu-Latn", "" , k0 }, // macrolanguage code, MS + { LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO, "tzm-Tfng", "MA", k0 }, + { LANGUAGE_TAMAZIGHT_TIFINAGH_LSO, "tzm-Tfng", "" , k0 }, + { LANGUAGE_KASHMIRI_INDIA, "ks-Deva", "IN", k0 }, // MS + { LANGUAGE_KASHMIRI, "ks-Arab", "" , k0 }, // MS, Kashmiri in "Jammu and Kashmir" ... no ISO3166 code for that + { LANGUAGE_HAUSA_NIGERIA, "ha-Latn", "NG", k0 }, // MS + { LANGUAGE_USER_HAUSA_GHANA, "ha-Latn", "GH", k0 }, + { LANGUAGE_HAUSA_LATIN_LSO, "ha-Latn", "" , k0 }, { LANGUAGE_LATIN_LSO, "la-Latn", "" , kSAME }, // MS, though Latn is suppress-script - { LANGUAGE_TAI_NUA_CHINA, "tdd-Tale", "CN", 0 }, // MS reserved - { LANGUAGE_LU_CHINA, "khb-Talu", "CN", 0 }, // MS reserved + { LANGUAGE_TAI_NUA_CHINA, "tdd-Tale", "CN", k0 }, // MS reserved + { LANGUAGE_LU_CHINA, "khb-Talu", "CN", k0 }, // MS reserved { LANGUAGE_KURDISH_ARABIC_IRAQ, "ku-Arab", "IQ", kSAME }, // macrolanguage code, MS { LANGUAGE_KURDISH_ARABIC_LSO, "ku-Arab", "" , kSAME }, // macrolanguage code, MS - { LANGUAGE_USER_KURDISH_TURKEY, "kmr-Latn", "TR", 0 }, - { LANGUAGE_USER_KURDISH_SYRIA, "kmr-Latn", "SY", 0 }, - { LANGUAGE_PUNJABI_PAKISTAN, "pnb-Arab", "PK", 0 }, - { LANGUAGE_PUNJABI_ARABIC_LSO, "pnb-Arab", "" , 0 }, - { LANGUAGE_PUNJABI_PAKISTAN, "pa-Arab", "PK", 0 }, // MS, incorrect - { LANGUAGE_PUNJABI_ARABIC_LSO, "pa-Arab", "" , 0 }, // MS, incorrect + { LANGUAGE_USER_KURDISH_TURKEY, "kmr-Latn", "TR", k0 }, + { LANGUAGE_USER_KURDISH_SYRIA, "kmr-Latn", "SY", k0 }, + { LANGUAGE_PUNJABI_PAKISTAN, "pnb-Arab", "PK", k0 }, + { LANGUAGE_PUNJABI_ARABIC_LSO, "pnb-Arab", "" , k0 }, + { LANGUAGE_PUNJABI_PAKISTAN, "pa-Arab", "PK", k0 }, // MS, incorrect + { LANGUAGE_PUNJABI_ARABIC_LSO, "pa-Arab", "" , k0 }, // MS, incorrect { LANGUAGE_TAMAZIGHT_LATIN_ALGERIA, "tzm-Latn", "DZ", kSAME }, // MS - { LANGUAGE_TAMAZIGHT_LATIN_LSO, "tzm-Latn", "" , 0 }, // MS - { LANGUAGE_FULFULDE_SENEGAL, "ff-Latn", "SN", 0 }, // macrolanguage code, MS - { LANGUAGE_FULFULDE_LATIN_LSO, "ff-Latn", "" , 0 }, // macrolanguage code + { LANGUAGE_TAMAZIGHT_LATIN_LSO, "tzm-Latn", "" , k0 }, // MS + { LANGUAGE_FULFULDE_SENEGAL, "ff-Latn", "SN", k0 }, // macrolanguage code, MS + { LANGUAGE_FULFULDE_LATIN_LSO, "ff-Latn", "" , k0 }, // macrolanguage code { LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA, "bs-Latn", "BA", kSAME }, // MS, though Latn is suppress-script { LANGUAGE_BOSNIAN_LATIN_LSO, "bs-Latn", "" , LANGUAGE_BOSNIAN_LSO }, // MS, though Latn is suppress-script - { LANGUAGE_CHINESE_TRADITIONAL_LSO, "zh-Hant", "" , 0 }, - { LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN, "emk-Latn", "GN", 0 }, - { LANGUAGE_USER_CREE_PLAINS_LATIN, "crk-Latn", "CA", 0 }, - { LANGUAGE_USER_CREE_PLAINS_SYLLABICS, "crk-Cans", "CA", 0 }, + { LANGUAGE_CHINESE_TRADITIONAL_LSO, "zh-Hant", "" , k0 }, + { LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN, "emk-Latn", "GN", k0 }, + { LANGUAGE_USER_CREE_PLAINS_LATIN, "crk-Latn", "CA", k0 }, + { LANGUAGE_USER_CREE_PLAINS_SYLLABICS, "crk-Cans", "CA", k0 }, { LANGUAGE_USER_CREE_PLAINS_LATIN, "crk-Latn", "CN", kSAME }, // erroneous tdf#73973 { LANGUAGE_USER_CREE_PLAINS_SYLLABICS, "crk-Cans", "CN", kSAME }, // erroneous tdf#73973 - { LANGUAGE_USER_HUNGARIAN_ROVAS, "hu-Hung", "HU", 0 }, - { LANGUAGE_DONTKNOW, "", "" , 0 } // marks end of table + { LANGUAGE_USER_HUNGARIAN_ROVAS, "hu-Hung", "HU", k0 }, + { LANGUAGE_DONTKNOW, "", "" , k0 } // marks end of table }; static Bcp47CountryEntry const aImplBcp47CountryEntries[] = { // MS-LangID full BCP47, ISO3166, ISO639-Variant or other fallback - { LANGUAGE_CATALAN_VALENCIAN, "ca-ES-valencia", "ES", "ca-valencia", 0 }, - { LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN, "ca-ES-valencia", "ES", "", 0 }, // In case MS format files using the old value escaped into the wild, map them back. - { LANGUAGE_USER_ENGLISH_UK_OXENDICT, "en-GB-oxendict", "GB", "", 0 }, + { LANGUAGE_CATALAN_VALENCIAN, "ca-ES-valencia", "ES", "ca-valencia", k0 }, + { LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN, "ca-ES-valencia", "ES", "", k0 }, // In case MS format files using the old value escaped into the wild, map them back. + { LANGUAGE_USER_ENGLISH_UK_OXENDICT, "en-GB-oxendict", "GB", "", k0 }, { LANGUAGE_USER_ENGLISH_UK_OED, "en-GB-oed", "GB", "", LANGUAGE_USER_ENGLISH_UK_OXENDICT }, // grandfathered, deprecated, prefer en-GB-oxendict // { LANGUAGE_YUE_CHINESE_HONGKONG, "zh-yue-HK", "HK", "", 0 }, // MS reserved, prefer yue-HK; do not add unless LanguageTag::simpleExtract() can handle it to not call liblangtag for rsc! - { LANGUAGE_DONTKNOW, "", "", "", 0 } // marks end of table + { LANGUAGE_DONTKNOW, "", "", "", k0 } // marks end of table }; static IsoLanguageCountryEntry aLastResortFallbackEntry = -{ LANGUAGE_ENGLISH_US, "en", "US", 0 }; +{ LANGUAGE_ENGLISH_US, "en", "US", k0 }; OUString IsoLanguageCountryEntry::getTagString() const { @@ -1137,22 +1138,20 @@ css::lang::Locale MsLangId::Conversion::lookupFallbackLocale( } else { - switch (pEntry->mnLang) - { + if (pEntry->mnLang.anyOf( // These are known to have no country assigned. - case LANGUAGE_USER_ESPERANTO: - case LANGUAGE_USER_INTERLINGUA: - case LANGUAGE_USER_INTERLINGUE: - case LANGUAGE_USER_LOJBAN: - case LANGUAGE_KASHMIRI: - case LANGUAGE_USER_KEYID: + LANGUAGE_USER_ESPERANTO, + LANGUAGE_USER_INTERLINGUA, + LANGUAGE_USER_INTERLINGUE, + LANGUAGE_USER_LOJBAN, + LANGUAGE_KASHMIRI, + LANGUAGE_USER_KEYID, // And the special codes without country. - case LANGUAGE_MULTIPLE: - case LANGUAGE_UNDETERMINED: - case LANGUAGE_NONE: - return getLocale( pEntry); // may override - default: - ; // nothing + LANGUAGE_MULTIPLE, + LANGUAGE_UNDETERMINED, + LANGUAGE_NONE)) + { + return getLocale( pEntry); // may override } } if (!pFirstLang) diff --git a/i18nlangtag/source/isolang/mslangid.cxx b/i18nlangtag/source/isolang/mslangid.cxx index 541bb4b94831..41231f8a7e1b 100644 --- a/i18nlangtag/source/isolang/mslangid.cxx +++ b/i18nlangtag/source/isolang/mslangid.cxx @@ -70,40 +70,36 @@ void MsLangId::setConfiguredComplexFallback( LanguageType nLang ) // static inline LanguageType MsLangId::simplifySystemLanguages( LanguageType nLang ) { - switch (nLang) - { - case LANGUAGE_PROCESS_OR_USER_DEFAULT : - case LANGUAGE_SYSTEM_DEFAULT : - case LANGUAGE_SYSTEM : - nLang = LANGUAGE_SYSTEM; - break; - default: - ; // nothing - } + if (nLang.anyOf( LANGUAGE_PROCESS_OR_USER_DEFAULT, + LANGUAGE_SYSTEM_DEFAULT, + LANGUAGE_SYSTEM)) + nLang = LANGUAGE_SYSTEM; return nLang; } // static LanguageType MsLangId::getRealLanguage( LanguageType nLang ) { - switch (simplifySystemLanguages( nLang)) + LanguageType simplifyLang = simplifySystemLanguages( nLang); + if (simplifyLang == LANGUAGE_SYSTEM ) + { + if (nConfiguredSystemLanguage == LANGUAGE_SYSTEM) + nLang = getSystemLanguage(); + else + nLang = nConfiguredSystemLanguage; + } + else if (simplifyLang == LANGUAGE_HID_HUMAN_INTERFACE_DEVICE) + { + if (nConfiguredSystemUILanguage == LANGUAGE_SYSTEM) + nLang = getSystemUILanguage(); + else + nLang = nConfiguredSystemUILanguage; + } + else { - case LANGUAGE_SYSTEM : - if (nConfiguredSystemLanguage == LANGUAGE_SYSTEM) - nLang = getSystemLanguage(); - else - nLang = nConfiguredSystemLanguage; - break; - case LANGUAGE_HID_HUMAN_INTERFACE_DEVICE : - if (nConfiguredSystemUILanguage == LANGUAGE_SYSTEM) - nLang = getSystemUILanguage(); - else - nLang = nConfiguredSystemUILanguage; - break; - default: - /* TODO: would this be useful here? */ - //nLang = MsLangId::getReplacementForObsoleteLanguage( nLang); - ; // nothing + /* TODO: would this be useful here? */ + //nLang = MsLangId::getReplacementForObsoleteLanguage( nLang); + ; // nothing } if (nLang == LANGUAGE_DONTKNOW) nLang = LANGUAGE_ENGLISH_US; @@ -196,39 +192,38 @@ css::lang::Locale MsLangId::getFallbackLocale( return Conversion::lookupFallbackLocale( rLocale); } +static constexpr bool equalsPrimary(LanguageType lhs, LanguageType rhs) +{ + return (sal_uInt16(lhs) & LANGUAGE_MASK_PRIMARY ) + == (sal_uInt16(rhs) & LANGUAGE_MASK_PRIMARY ); +} + // static bool MsLangId::isRightToLeft( LanguageType nLang ) { - switch( nLang & LANGUAGE_MASK_PRIMARY ) + if( equalsPrimary(nLang, LANGUAGE_ARABIC_SAUDI_ARABIA) + || equalsPrimary(nLang, LANGUAGE_HEBREW) + || equalsPrimary(nLang, LANGUAGE_YIDDISH) + || equalsPrimary(nLang, LANGUAGE_URDU_PAKISTAN) + || equalsPrimary(nLang, LANGUAGE_FARSI) + || equalsPrimary(nLang, LANGUAGE_KASHMIRI) + || equalsPrimary(nLang, LANGUAGE_SINDHI) + || equalsPrimary(nLang, LANGUAGE_UIGHUR_CHINA) + || equalsPrimary(nLang, LANGUAGE_USER_KYRGYZ_CHINA) + || equalsPrimary(nLang, LANGUAGE_USER_NKO) ) { - case LANGUAGE_ARABIC_SAUDI_ARABIA & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_HEBREW & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_YIDDISH & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_URDU_PAKISTAN & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_FARSI & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_KASHMIRI & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_SINDHI & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_UIGHUR_CHINA & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_USER_KYRGYZ_CHINA & LANGUAGE_MASK_PRIMARY : - case LANGUAGE_USER_NKO & LANGUAGE_MASK_PRIMARY : - return true; - - default: - break; + return true; } - switch (nLang) + if (nLang.anyOf( + LANGUAGE_USER_KURDISH_IRAN, + LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ, + LANGUAGE_KURDISH_ARABIC_IRAQ, + LANGUAGE_KURDISH_ARABIC_LSO, + LANGUAGE_USER_KURDISH_SOUTHERN_IRAN, + LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ, + LANGUAGE_USER_HUNGARIAN_ROVAS)) { - case LANGUAGE_USER_KURDISH_IRAN: - case LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ: - case LANGUAGE_KURDISH_ARABIC_IRAQ: - case LANGUAGE_KURDISH_ARABIC_LSO: - case LANGUAGE_USER_KURDISH_SOUTHERN_IRAN: - case LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ: - case LANGUAGE_USER_HUNGARIAN_ROVAS: return true; - - default: - break; } if (LanguageTag::isOnTheFlyID(nLang)) return LanguageTag::getOnTheFlyScriptType(nLang) == LanguageTag::ScriptType::RTL; @@ -259,18 +254,10 @@ bool MsLangId::isSimplifiedChinese( const css::lang::Locale & rLocale ) // static bool MsLangId::isTraditionalChinese( LanguageType nLang ) { - bool bRet = false; - switch (nLang) - { - case LANGUAGE_CHINESE_TRADITIONAL: - case LANGUAGE_CHINESE_HONGKONG: - case LANGUAGE_CHINESE_MACAU: - bRet = true; - break; - default: - break; - } - return bRet; + return nLang.anyOf( + LANGUAGE_CHINESE_TRADITIONAL, + LANGUAGE_CHINESE_HONGKONG, + LANGUAGE_CHINESE_MACAU); } // static @@ -295,15 +282,13 @@ bool MsLangId::isKorean( LanguageType nLang ) // static bool MsLangId::isCJK( LanguageType nLang ) { - switch (nLang & LANGUAGE_MASK_PRIMARY) + if (primary(nLang).anyOf( + primary(LANGUAGE_CHINESE), + primary(LANGUAGE_YUE_CHINESE_HONGKONG), + primary(LANGUAGE_JAPANESE), + primary(LANGUAGE_KOREAN))) { - case LANGUAGE_CHINESE & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_YUE_CHINESE_HONGKONG & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_JAPANESE & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_KOREAN & LANGUAGE_MASK_PRIMARY: - return true; - default: - break; + return true; } if (LanguageTag::isOnTheFlyID(nLang)) return LanguageTag::getOnTheFlyScriptType(nLang) == LanguageTag::ScriptType::CJK; @@ -326,17 +311,11 @@ bool MsLangId::hasForbiddenCharacters( LanguageType nLang ) // static bool MsLangId::needsSequenceChecking( LanguageType nLang ) { - switch (nLang & LANGUAGE_MASK_PRIMARY) - { - case LANGUAGE_BURMESE & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_KHMER & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_LAO & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_THAI & LANGUAGE_MASK_PRIMARY: - return true; - default: - break; - } - return false; + return primary(nLang).anyOf( + primary(LANGUAGE_BURMESE), + primary(LANGUAGE_KHMER), + primary(LANGUAGE_LAO), + primary(LANGUAGE_THAI)); } @@ -345,33 +324,33 @@ sal_Int16 MsLangId::getScriptType( LanguageType nLang ) { sal_Int16 nScript; - switch( nLang ) - { // CTL - case LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA: - case LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA: - case LANGUAGE_MONGOLIAN_MONGOLIAN_LSO: - case LANGUAGE_USER_KURDISH_IRAN: - case LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ: - case LANGUAGE_KURDISH_ARABIC_IRAQ: - case LANGUAGE_KURDISH_ARABIC_LSO: - case LANGUAGE_USER_KURDISH_SOUTHERN_IRAN: - case LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ: - case LANGUAGE_USER_KYRGYZ_CHINA: - case LANGUAGE_USER_HUNGARIAN_ROVAS: - case LANGUAGE_USER_MANCHU: - case LANGUAGE_USER_XIBE: + if( nLang.anyOf( + LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA, + LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA, + LANGUAGE_MONGOLIAN_MONGOLIAN_LSO, + LANGUAGE_USER_KURDISH_IRAN, + LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ, + LANGUAGE_KURDISH_ARABIC_IRAQ, + LANGUAGE_KURDISH_ARABIC_LSO, + LANGUAGE_USER_KURDISH_SOUTHERN_IRAN, + LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ, + LANGUAGE_USER_KYRGYZ_CHINA, + LANGUAGE_USER_HUNGARIAN_ROVAS, + LANGUAGE_USER_MANCHU, + LANGUAGE_USER_XIBE)) + { nScript = css::i18n::ScriptType::COMPLEX; - break; - + } // "Western" - case LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA: - case LANGUAGE_MONGOLIAN_CYRILLIC_LSO: - case LANGUAGE_USER_KURDISH_SYRIA: - case LANGUAGE_USER_KURDISH_TURKEY: + else if (nLang.anyOf( + LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA, + LANGUAGE_MONGOLIAN_CYRILLIC_LSO, + LANGUAGE_USER_KURDISH_SYRIA, + LANGUAGE_USER_KURDISH_TURKEY)) + { nScript = css::i18n::ScriptType::LATIN; - break; - + } // currently not knowing scripttype - defaulted to LATIN: /* #define LANGUAGE_ARMENIAN 0x042B @@ -381,83 +360,80 @@ sal_Int16 MsLangId::getScriptType( LanguageType nLang ) #define LANGUAGE_MACEDONIAN 0x042F #define LANGUAGE_TATAR 0x0444 */ - - default: - switch ( nLang & LANGUAGE_MASK_PRIMARY ) - { - // CJK catcher - case LANGUAGE_CHINESE & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_YUE_CHINESE_HONGKONG & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_JAPANESE & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_KOREAN & LANGUAGE_MASK_PRIMARY: - nScript = css::i18n::ScriptType::ASIAN; - break; - - // CTL catcher - case LANGUAGE_AMHARIC_ETHIOPIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_ARABIC_SAUDI_ARABIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_ASSAMESE & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_BENGALI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_BURMESE & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_DHIVEHI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_FARSI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_GUJARATI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_HEBREW & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_HINDI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_KANNADA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_KASHMIRI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_KHMER & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_LAO & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_MALAYALAM & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_MANIPURI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_MARATHI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_NEPALI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_ODIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_PUNJABI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_SANSKRIT & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_SINDHI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_SINHALESE_SRI_LANKA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_SYRIAC & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_TAMIL & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_TELUGU & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_THAI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_TIBETAN & LANGUAGE_MASK_PRIMARY: // also LANGUAGE_DZONGKHA - case LANGUAGE_UIGHUR_CHINA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_URDU_INDIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_USER_BODO_INDIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_USER_DOGRI_INDIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_USER_LIMBU & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_USER_MAITHILI_INDIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_USER_NKO & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_YIDDISH & LANGUAGE_MASK_PRIMARY: - nScript = css::i18n::ScriptType::COMPLEX; - break; - - // Western (actually not necessarily Latin but also Cyrillic, - // for example) - default: - if (LanguageTag::isOnTheFlyID(nLang)) - { - switch (LanguageTag::getOnTheFlyScriptType(nLang)) - { - case LanguageTag::ScriptType::CJK : - nScript = css::i18n::ScriptType::ASIAN; - break; - case LanguageTag::ScriptType::CTL : - case LanguageTag::ScriptType::RTL : - nScript = css::i18n::ScriptType::COMPLEX; - break; - case LanguageTag::ScriptType::WESTERN : - case LanguageTag::ScriptType::UNKNOWN : - default: - nScript = css::i18n::ScriptType::LATIN; - break; - } - } - else - nScript = css::i18n::ScriptType::LATIN; - } - break; + // CJK catcher + else if ( primary(nLang).anyOf( + primary(LANGUAGE_CHINESE ), + primary(LANGUAGE_YUE_CHINESE_HONGKONG ), + primary(LANGUAGE_JAPANESE ), + primary(LANGUAGE_KOREAN ) + )) + { + nScript = css::i18n::ScriptType::ASIAN; + } + // CTL catcher + else if (primary(nLang).anyOf( + primary(LANGUAGE_AMHARIC_ETHIOPIA ), + primary(LANGUAGE_ARABIC_SAUDI_ARABIA ), + primary(LANGUAGE_ASSAMESE ), + primary(LANGUAGE_BENGALI ), + primary(LANGUAGE_BURMESE ), + primary(LANGUAGE_DHIVEHI ), + primary(LANGUAGE_FARSI ), + primary(LANGUAGE_GUJARATI ), + primary(LANGUAGE_HEBREW ), + primary(LANGUAGE_HINDI ), + primary(LANGUAGE_KANNADA ), + primary(LANGUAGE_KASHMIRI ), + primary(LANGUAGE_KHMER ), + primary(LANGUAGE_LAO ), + primary(LANGUAGE_MALAYALAM ), + primary(LANGUAGE_MANIPURI ), + primary(LANGUAGE_MARATHI ), + primary(LANGUAGE_NEPALI ), + primary(LANGUAGE_ODIA ), + primary(LANGUAGE_PUNJABI ), + primary(LANGUAGE_SANSKRIT ), + primary(LANGUAGE_SINDHI ), + primary(LANGUAGE_SINHALESE_SRI_LANKA ), + primary(LANGUAGE_SYRIAC ), + primary(LANGUAGE_TAMIL ), + primary(LANGUAGE_TELUGU ), + primary(LANGUAGE_THAI ), + primary(LANGUAGE_TIBETAN ), // also LANGUAGE_DZONGKHA + primary(LANGUAGE_UIGHUR_CHINA ), + primary(LANGUAGE_URDU_INDIA ), + primary(LANGUAGE_USER_BODO_INDIA ), + primary(LANGUAGE_USER_DOGRI_INDIA ), + primary(LANGUAGE_USER_LIMBU ), + primary(LANGUAGE_USER_MAITHILI_INDIA ), + primary(LANGUAGE_USER_NKO ), + primary(LANGUAGE_YIDDISH ))) + { + nScript = css::i18n::ScriptType::COMPLEX; + } + // Western (actually not necessarily Latin but also Cyrillic, + // for example) + else if (LanguageTag::isOnTheFlyID(nLang)) + { + switch (LanguageTag::getOnTheFlyScriptType(nLang)) + { + case LanguageTag::ScriptType::CJK : + nScript = css::i18n::ScriptType::ASIAN; + break; + case LanguageTag::ScriptType::CTL : + case LanguageTag::ScriptType::RTL : + nScript = css::i18n::ScriptType::COMPLEX; + break; + case LanguageTag::ScriptType::WESTERN : + case LanguageTag::ScriptType::UNKNOWN : + default: + nScript = css::i18n::ScriptType::LATIN; + break; + } + } + else + { + nScript = css::i18n::ScriptType::LATIN; } return nScript; } @@ -466,37 +442,34 @@ sal_Int16 MsLangId::getScriptType( LanguageType nLang ) // static bool MsLangId::isNonLatinWestern( LanguageType nLang ) { - switch (nLang) + if (nLang.anyOf( + LANGUAGE_AZERI_CYRILLIC, + LANGUAGE_AZERI_CYRILLIC_LSO, + LANGUAGE_BELARUSIAN, + LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA, + LANGUAGE_BOSNIAN_CYRILLIC_LSO, + LANGUAGE_BULGARIAN, + LANGUAGE_GREEK, + LANGUAGE_MONGOLIAN_CYRILLIC_LSO, + LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA, + LANGUAGE_RUSSIAN, + LANGUAGE_RUSSIAN_MOLDOVA, + LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA, + LANGUAGE_SERBIAN_CYRILLIC_LSO, + LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO, + LANGUAGE_SERBIAN_CYRILLIC_SAM, + LANGUAGE_SERBIAN_CYRILLIC_SERBIA, + LANGUAGE_UKRAINIAN, + LANGUAGE_UZBEK_CYRILLIC, + LANGUAGE_UZBEK_CYRILLIC_LSO)) { - case LANGUAGE_AZERI_CYRILLIC: - case LANGUAGE_AZERI_CYRILLIC_LSO: - case LANGUAGE_BELARUSIAN: - case LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA: - case LANGUAGE_BOSNIAN_CYRILLIC_LSO: - case LANGUAGE_BULGARIAN: - case LANGUAGE_GREEK: - case LANGUAGE_MONGOLIAN_CYRILLIC_LSO: - case LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA: - case LANGUAGE_RUSSIAN: - case LANGUAGE_RUSSIAN_MOLDOVA: - case LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA: - case LANGUAGE_SERBIAN_CYRILLIC_LSO: - case LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO: - case LANGUAGE_SERBIAN_CYRILLIC_SAM: - case LANGUAGE_SERBIAN_CYRILLIC_SERBIA: - case LANGUAGE_UKRAINIAN: - case LANGUAGE_UZBEK_CYRILLIC: - case LANGUAGE_UZBEK_CYRILLIC_LSO: return true; - default: - { - if (getScriptType( nLang) != css::i18n::ScriptType::LATIN) - return false; - LanguageTag aLanguageTag( nLang); - if (aLanguageTag.hasScript()) - return aLanguageTag.getScript() != "Latn"; - } } + if (getScriptType( nLang) != css::i18n::ScriptType::LATIN) + return false; + LanguageTag aLanguageTag( nLang); + if (aLanguageTag.hasScript()) + return aLanguageTag.getScript() != "Latn"; return false; } @@ -504,15 +477,13 @@ bool MsLangId::isNonLatinWestern( LanguageType nLang ) // static bool MsLangId::isLegacy( LanguageType nLang ) { - switch (nLang) - { - case LANGUAGE_SERBIAN_CYRILLIC_SAM: - case LANGUAGE_SERBIAN_LATIN_SAM: + if (nLang.anyOf( + LANGUAGE_SERBIAN_CYRILLIC_SAM, + LANGUAGE_SERBIAN_LATIN_SAM)) /* TODO: activate once dictionary was renamed from pap-AN to * pap-CW, or the pap-CW one supports also pap-AN, see fdo#44112 */ //case LANGUAGE_PAPIAMENTU: return true; - } return false; } @@ -520,100 +491,71 @@ bool MsLangId::isLegacy( LanguageType nLang ) // static LanguageType MsLangId::getReplacementForObsoleteLanguage( LanguageType nLang ) { - switch (nLang) - { - default: - break; // nothing - case LANGUAGE_OBSOLETE_USER_LATIN: - nLang = LANGUAGE_USER_LATIN_VATICAN; - break; - case LANGUAGE_OBSOLETE_USER_MAORI: - nLang = LANGUAGE_MAORI_NEW_ZEALAND; - break; - case LANGUAGE_OBSOLETE_USER_KINYARWANDA: - nLang = LANGUAGE_KINYARWANDA_RWANDA; - break; - case LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN: - nLang = LANGUAGE_UPPER_SORBIAN_GERMANY; - break; - case LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN: - nLang = LANGUAGE_LOWER_SORBIAN_GERMANY; - break; - case LANGUAGE_OBSOLETE_USER_OCCITAN: - nLang = LANGUAGE_OCCITAN_FRANCE; - break; - case LANGUAGE_OBSOLETE_USER_BRETON: - nLang = LANGUAGE_BRETON_FRANCE; - break; - case LANGUAGE_OBSOLETE_USER_KALAALLISUT: - nLang = LANGUAGE_KALAALLISUT_GREENLAND; - break; - case LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH: - nLang = LANGUAGE_LUXEMBOURGISH_LUXEMBOURG; - break; - case LANGUAGE_OBSOLETE_USER_KABYLE: - nLang = LANGUAGE_TAMAZIGHT_LATIN_ALGERIA; - break; - case LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN: - nLang = LANGUAGE_CATALAN_VALENCIAN; - break; - case LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU: - nLang = LANGUAGE_MALAGASY_PLATEAU; - break; - case LANGUAGE_GAELIC_SCOTLAND_LEGACY: - nLang = LANGUAGE_GAELIC_SCOTLAND; - break; - case LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA: - nLang = LANGUAGE_TSWANA_BOTSWANA; - break; - case LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA: - nLang = LANGUAGE_SERBIAN_LATIN_SERBIA; - break; - case LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO: - nLang = LANGUAGE_SERBIAN_LATIN_MONTENEGRO; - break; - case LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA: - nLang = LANGUAGE_SERBIAN_CYRILLIC_SERBIA; - break; - case LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO: - nLang = LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO; - break; - case LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ: - nLang = LANGUAGE_KURDISH_ARABIC_IRAQ; - break; - case LANGUAGE_OBSOLETE_USER_SPANISH_CUBA: - nLang = LANGUAGE_SPANISH_CUBA; - break; - - // The following are not strictly obsolete but should be mapped to a - // replacement locale when encountered. - - // no_NO is an alias for nb_NO - case LANGUAGE_NORWEGIAN: - nLang = LANGUAGE_NORWEGIAN_BOKMAL; - break; - - // #i94435# A Spanish variant that differs only in collation details we - // do not support. - case LANGUAGE_SPANISH_DATED: - nLang = LANGUAGE_SPANISH_MODERN; - break; - - // The erroneous Tibetan vs. Dzongkha case, #i53497# - // We (and MS) have stored LANGUAGE_TIBETAN_BHUTAN. This will need - // special attention if MS one day decides to actually use - // LANGUAGE_TIBETAN_BHUTAN for bo-BT instead of having it reserved; - // then remove the mapping and hope every dz-BT user used ODF to store - // documents ;-) - case LANGUAGE_TIBETAN_BHUTAN: - nLang = LANGUAGE_DZONGKHA_BHUTAN; - break; - - // en-GB-oed is deprecated, use en-GB-oxendict instead. - case LANGUAGE_USER_ENGLISH_UK_OED: - nLang = LANGUAGE_USER_ENGLISH_UK_OXENDICT; - break; - } + if (nLang == LANGUAGE_OBSOLETE_USER_LATIN) + nLang = LANGUAGE_USER_LATIN_VATICAN; + else if (nLang == LANGUAGE_OBSOLETE_USER_MAORI) + nLang = LANGUAGE_MAORI_NEW_ZEALAND; + else if (nLang == LANGUAGE_OBSOLETE_USER_KINYARWANDA) + nLang = LANGUAGE_KINYARWANDA_RWANDA; + else if (nLang == LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN) + nLang = LANGUAGE_UPPER_SORBIAN_GERMANY; + else if (nLang == LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN) + nLang = LANGUAGE_LOWER_SORBIAN_GERMANY; + else if (nLang == LANGUAGE_OBSOLETE_USER_OCCITAN) + nLang = LANGUAGE_OCCITAN_FRANCE; + else if (nLang == LANGUAGE_OBSOLETE_USER_BRETON) + nLang = LANGUAGE_BRETON_FRANCE; + else if (nLang == LANGUAGE_OBSOLETE_USER_KALAALLISUT) + nLang = LANGUAGE_KALAALLISUT_GREENLAND; + else if (nLang == LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH) + nLang = LANGUAGE_LUXEMBOURGISH_LUXEMBOURG; + else if (nLang == LANGUAGE_OBSOLETE_USER_KABYLE) + nLang = LANGUAGE_TAMAZIGHT_LATIN_ALGERIA; + else if (nLang == LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN) + nLang = LANGUAGE_CATALAN_VALENCIAN; + else if (nLang == LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU) + nLang = LANGUAGE_MALAGASY_PLATEAU; + else if (nLang == LANGUAGE_GAELIC_SCOTLAND_LEGACY) + nLang = LANGUAGE_GAELIC_SCOTLAND; + else if (nLang == LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA) + nLang = LANGUAGE_TSWANA_BOTSWANA; + else if (nLang == LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA) + nLang = LANGUAGE_SERBIAN_LATIN_SERBIA; + else if (nLang == LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO) + nLang = LANGUAGE_SERBIAN_LATIN_MONTENEGRO; + else if (nLang == LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA) + nLang = LANGUAGE_SERBIAN_CYRILLIC_SERBIA; + else if (nLang == LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO) + nLang = LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO; + else if (nLang == LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ) + nLang = LANGUAGE_KURDISH_ARABIC_IRAQ; + else if (nLang == LANGUAGE_OBSOLETE_USER_SPANISH_CUBA) + nLang = LANGUAGE_SPANISH_CUBA; + + // The following are not strictly obsolete but should be mapped to a + // replacement locale when encountered. + + // no_NO is an alias for nb_NO + else if (nLang == LANGUAGE_NORWEGIAN) + nLang = LANGUAGE_NORWEGIAN_BOKMAL; + + // #i94435# A Spanish variant that differs only in collation details we + // do not support. + else if (nLang == LANGUAGE_SPANISH_DATED) + nLang = LANGUAGE_SPANISH_MODERN; + + // The erroneous Tibetan vs. Dzongkha case, #i53497# + // We (and MS) have stored LANGUAGE_TIBETAN_BHUTAN. This will need + // special attention if MS one day decides to actually use + // LANGUAGE_TIBETAN_BHUTAN for bo-BT instead of having it reserved; + // then remove the mapping and hope every dz-BT user used ODF to store + // documents ;-) + else if (nLang == LANGUAGE_TIBETAN_BHUTAN) + nLang = LANGUAGE_DZONGKHA_BHUTAN; + + // en-GB-oed is deprecated, use en-GB-oxendict instead. + else if (nLang == LANGUAGE_USER_ENGLISH_UK_OED) + nLang = LANGUAGE_USER_ENGLISH_UK_OXENDICT; return nLang; } diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index 0601d03b3e88..6a9e55778bf9 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -98,7 +98,7 @@ struct theSystemLocale : public rtl::Static< LanguageTag::ImplPtr, theSystemLoca static LanguageType getNextOnTheFlyLanguage() { - static LanguageType nOnTheFlyLanguage = 0; + static LanguageType nOnTheFlyLanguage(0); osl::MutexGuard aGuard( theMutex::get()); if (!nOnTheFlyLanguage) nOnTheFlyLanguage = MsLangId::makeLangID( LANGUAGE_ON_THE_FLY_SUB_START, LANGUAGE_ON_THE_FLY_START); @@ -114,10 +114,10 @@ static LanguageType getNextOnTheFlyLanguage() else { SAL_WARN( "i18nlangtag", "getNextOnTheFlyLanguage: none left! (" - << ((LANGUAGE_ON_THE_FLY_END - LANGUAGE_ON_THE_FLY_START + 1) - * (LANGUAGE_ON_THE_FLY_SUB_END - LANGUAGE_ON_THE_FLY_SUB_START + 1)) + << ((sal_uInt16(LANGUAGE_ON_THE_FLY_END) - sal_uInt16(LANGUAGE_ON_THE_FLY_START) + 1) + * (sal_uInt16(LANGUAGE_ON_THE_FLY_SUB_END) - sal_uInt16(LANGUAGE_ON_THE_FLY_SUB_START) + 1)) << " consumed?!?)"); - return 0; + return LanguageType(0); } } } @@ -643,7 +643,7 @@ LanguageTag::ImplPtr LanguageTagImpl::registerOnTheFly( LanguageType nRegisterID if (!bOtherImpl || !pImpl->mbInitializedLangID) { - if (nRegisterID == 0 || nRegisterID == LANGUAGE_DONTKNOW) + if (nRegisterID == LANGUAGE_SYSTEM || nRegisterID == LANGUAGE_DONTKNOW) nRegisterID = getNextOnTheFlyLanguage(); else { diff --git a/include/editeng/edtdlg.hxx b/include/editeng/edtdlg.hxx index e8f5521ee095..be4722bc31b0 100644 --- a/include/editeng/edtdlg.hxx +++ b/include/editeng/edtdlg.hxx @@ -91,7 +91,7 @@ public: virtual ~EditAbstractDialogFactory() override; // needed for export of vtable static EditAbstractDialogFactory* Create(); virtual VclPtr<AbstractThesaurusDialog> CreateThesaurusDialog( vcl::Window*, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, - const OUString &rWord, sal_Int16 nLanguage ) = 0; + const OUString &rWord, LanguageType nLanguage ) = 0; virtual VclPtr<AbstractHyphenWordDialog> CreateHyphenWordDialog( vcl::Window*, const OUString &rWord, LanguageType nLang, diff --git a/include/editeng/forbiddencharacterstable.hxx b/include/editeng/forbiddencharacterstable.hxx index 8c58a55cb006..b14828593112 100644 --- a/include/editeng/forbiddencharacterstable.hxx +++ b/include/editeng/forbiddencharacterstable.hxx @@ -24,6 +24,7 @@ #include <com/sun/star/uno/Reference.hxx> #include <com/sun/star/i18n/ForbiddenCharacters.hpp> #include <editeng/editengdllapi.h> +#include <i18nlangtag/lang.h> #include <map> namespace com { @@ -36,7 +37,7 @@ namespace uno { class EDITENG_DLLPUBLIC SvxForbiddenCharactersTable : public salhelper::SimpleReferenceObject { public: - typedef std::map<sal_uInt16, css::i18n::ForbiddenCharacters> Map; + typedef std::map<LanguageType, css::i18n::ForbiddenCharacters> Map; private: Map maMap; css::uno::Reference< css::uno::XComponentContext > m_xContext; @@ -44,10 +45,10 @@ private: public: SvxForbiddenCharactersTable( const css::uno::Reference< css::uno::XComponentContext >& rxContext); - Map& GetMap() { return maMap; } - const css::i18n::ForbiddenCharacters* GetForbiddenCharacters( sal_uInt16 nLanguage, bool bGetDefault ); - void SetForbiddenCharacters( sal_uInt16 nLanguage , const css::i18n::ForbiddenCharacters& ); - void ClearForbiddenCharacters( sal_uInt16 nLanguage ); + Map& GetMap() { return maMap; } + const css::i18n::ForbiddenCharacters* GetForbiddenCharacters( LanguageType nLanguage, bool bGetDefault ); + void SetForbiddenCharacters( LanguageType nLanguage , const css::i18n::ForbiddenCharacters& ); + void ClearForbiddenCharacters( LanguageType nLanguage ); }; #endif // INCLUDED_EDITENG_FORBIDDENCHARACTERSTABLE_HXX diff --git a/include/editeng/splwrap.hxx b/include/editeng/splwrap.hxx index e5c4df4b9ff5..2b1b01b91091 100644 --- a/include/editeng/splwrap.hxx +++ b/include/editeng/splwrap.hxx @@ -83,10 +83,10 @@ public: static sal_Int16 CheckSpellLang( css::uno::Reference< css::linguistic2::XSpellChecker1 > const & xSpell, - sal_Int16 nLang ); + LanguageType nLang ); static sal_Int16 CheckHyphLang( css::uno::Reference< css::linguistic2::XHyphenator >const & xHyph, - sal_Int16 nLang ); + LanguageType nLang ); static void ShowLanguageErrors(); diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx index aa950f44fd37..10baddfc9b91 100644 --- a/include/filter/msfilter/svdfppt.hxx +++ b/include/filter/msfilter/svdfppt.hxx @@ -643,7 +643,7 @@ struct PPTTextParagraphStyleAtomInterpreter struct PPTTextSpecInfo { sal_uInt32 nCharIdx; - sal_uInt16 nLanguage[ 3 ]; + LanguageType nLanguage[ 3 ]; sal_uInt16 nDontKnow; explicit PPTTextSpecInfo( sal_uInt32 nCharIdx ); @@ -933,7 +933,7 @@ struct PPTCharPropSet OUString maString; std::unique_ptr<SvxFieldItem> mpFieldItem; - sal_uInt16 mnLanguage[ 3 ]; + LanguageType mnLanguage[ 3 ]; void SetFont( sal_uInt16 nFont ); void SetColor( sal_uInt32 nColor ); diff --git a/include/i18nlangtag/lang.h b/include/i18nlangtag/lang.h index 8240cf63c60f..3e37953868cc 100644 --- a/include/i18nlangtag/lang.h +++ b/include/i18nlangtag/lang.h @@ -85,17 +85,25 @@ * comments are used. Do NOT use // C++ style comments. */ /* disable typedef for usage in svtools/source/misc/langtab.src */ -#ifndef __RSC -typedef unsigned short LanguageType; +#ifdef __RSC +#define LanguageType(x) (x) +#else +#include <sal/types.h> +#include <o3tl/strong_int.hxx> +#include <ostream> +struct LanguageTypeTag {}; +typedef o3tl::strong_int<sal_uInt16, LanguageTypeTag> LanguageType; +inline std::ostream& operator<<(std::ostream& os, LanguageType const & lt) { os << sal_uInt16(lt); return os; } +constexpr LanguageType primary(LanguageType lt) { return LanguageType(sal_uInt16(lt) & 0x03ff); } #endif #define LANGUAGE_MASK_PRIMARY 0x03ff -#define LANGUAGE_DONTKNOW 0x03FF /* yes, the mask */ -#define LANGUAGE_NONE 0x00FF -#define LANGUAGE_HID_HUMAN_INTERFACE_DEVICE 0x04FF -#define LANGUAGE_SYSTEM 0x0000 /* OOo/SO definition */ +#define LANGUAGE_DONTKNOW LanguageType(0x03FF) /* yes, the mask */ +#define LANGUAGE_NONE LanguageType(0x00FF) +#define LANGUAGE_HID_HUMAN_INTERFACE_DEVICE LanguageType(0x04FF) +#define LANGUAGE_SYSTEM LanguageType(0x0000) /* OOo/SO definition */ /* The Invariant Locale (Locale ID = 0x007f) is a locale that can be used by * applications when a consistent and locale-independent result is required. @@ -105,7 +113,7 @@ typedef unsigned short LanguageType; * The settings of the Invariant Locale are similar to US-English international * standards, but should not be used to display formatted data. */ /* NOTE: this is taken from the MS documentation! Not supported by OOo/SO! */ -#define LANGUAGE_INVARIANT 0x007F +#define LANGUAGE_INVARIANT LanguageType(0x007F) /* Naming conventions: * * ..._LSO suffix indicates a Language-Script-Only mapping, i.e. no country @@ -117,360 +125,360 @@ typedef unsigned short LanguageType; * a value defined by MS. */ -#define LANGUAGE_AFRIKAANS 0x0436 -#define LANGUAGE_ALBANIAN 0x041C -#define LANGUAGE_ALSATIAN_FRANCE 0x0484 -#define LANGUAGE_AMHARIC_ETHIOPIA 0x045E -#define LANGUAGE_ARABIC_ALGERIA 0x1401 -#define LANGUAGE_ARABIC_BAHRAIN 0x3C01 -#define LANGUAGE_ARABIC_EGYPT 0x0C01 -#define LANGUAGE_ARABIC_IRAQ 0x0801 -#define LANGUAGE_ARABIC_JORDAN 0x2C01 -#define LANGUAGE_ARABIC_KUWAIT 0x3401 -#define LANGUAGE_ARABIC_LEBANON 0x3001 -#define LANGUAGE_ARABIC_LIBYA 0x1001 -#define LANGUAGE_ARABIC_MOROCCO 0x1801 -#define LANGUAGE_ARABIC_OMAN 0x2001 -#define LANGUAGE_ARABIC_PRIMARY_ONLY 0x0001 /* primary only, not a locale! */ -#define LANGUAGE_ARABIC_QATAR 0x4001 -#define LANGUAGE_ARABIC_SAUDI_ARABIA 0x0401 -#define LANGUAGE_ARABIC_SYRIA 0x2801 -#define LANGUAGE_ARABIC_TUNISIA 0x1C01 -#define LANGUAGE_ARABIC_UAE 0x3801 -#define LANGUAGE_ARABIC_YEMEN 0x2401 -#define LANGUAGE_ARMENIAN 0x042B -#define LANGUAGE_ASSAMESE 0x044D -#define LANGUAGE_AZERI_CYRILLIC 0x082C -#define LANGUAGE_AZERI_CYRILLIC_LSO 0x742C -#define LANGUAGE_AZERI_LATIN 0x042C -#define LANGUAGE_AZERI_LATIN_LSO 0x782C -#define LANGUAGE_BASHKIR_RUSSIA 0x046D -#define LANGUAGE_BASQUE 0x042D -#define LANGUAGE_BELARUSIAN 0x0423 -#define LANGUAGE_BENGALI 0x0445 /* in India */ -#define LANGUAGE_BENGALI_BANGLADESH 0x0845 -#define LANGUAGE_BOSNIAN_CYRILLIC_LSO 0x641A -#define LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA 0x201A -#define LANGUAGE_BOSNIAN_LATIN_LSO 0x681A -#define LANGUAGE_BOSNIAN_LSO 0x781A -#define LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA 0x141A -#define LANGUAGE_BOSNIAN_BOSNIA_HERZEGOVINA LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA /* TODO: remove, only for langtab.src & localize.sdf compatibility */ -#define LANGUAGE_BRETON_FRANCE 0x047E /* obsoletes LANGUAGE_USER_BRETON 0x0629 */ -#define LANGUAGE_BULGARIAN 0x0402 -#define LANGUAGE_BURMESE 0x0455 -#define LANGUAGE_CATALAN 0x0403 -#define LANGUAGE_CATALAN_VALENCIAN 0x0803 /* obsoletes LANGUAGE_USER_CATALAN_VALENCIAN 0x8003 */ -#define LANGUAGE_CHEROKEE_UNITED_STATES 0x045C -#define LANGUAGE_CHEROKEE_CHEROKEE_LSO 0x7C5C -#define LANGUAGE_CHINESE_HONGKONG 0x0C04 -#define LANGUAGE_CHINESE_LSO 0x7804 -#define LANGUAGE_CHINESE_MACAU 0x1404 -#define LANGUAGE_CHINESE_SIMPLIFIED 0x0804 -#define LANGUAGE_CHINESE_SINGAPORE 0x1004 -#define LANGUAGE_CHINESE_TRADITIONAL 0x0404 -#define LANGUAGE_CHINESE_SIMPLIFIED_LEGACY 0x0004 /* MS-.NET 'zh-CHS', primary only! but maps to 'zh-CN' */ -#define LANGUAGE_CHINESE_TRADITIONAL_LSO 0x7C04 /* MS-.NET 'zh-CHT' but maps to 'zh-Hant' */ -#define LANGUAGE_CHINESE LANGUAGE_CHINESE_SIMPLIFIED /* most code uses LANGUAGE_CHINESE */ -#define LANGUAGE_CORSICAN_FRANCE 0x0483 -#define LANGUAGE_CROATIAN 0x041A -#define LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA 0x101A -#define LANGUAGE_CZECH 0x0405 -#define LANGUAGE_DANISH 0x0406 -#define LANGUAGE_DARI_AFGHANISTAN 0x048C /* AKA Zoroastrian Dari */ -#define LANGUAGE_DHIVEHI 0x0465 /* AKA Divehi */ -#define LANGUAGE_DUTCH 0x0413 -#define LANGUAGE_DUTCH_BELGIAN 0x0813 -#define LANGUAGE_EDO 0x0466 -#define LANGUAGE_ENGLISH 0x0009 /* primary only, not a locale! */ -#define LANGUAGE_ENGLISH_ARAB_EMIRATES 0x4C09 -#define LANGUAGE_ENGLISH_AUS 0x0C09 -#define LANGUAGE_ENGLISH_BAHRAIN 0x5009 -#define LANGUAGE_ENGLISH_BELIZE 0x2809 -#define LANGUAGE_ENGLISH_CAN 0x1009 -#define LANGUAGE_ENGLISH_CARRIBEAN 0x2409 -#define LANGUAGE_ENGLISH_EGYPT 0x5409 -#define LANGUAGE_ENGLISH_EIRE 0x1809 -#define LANGUAGE_ENGLISH_HONG_KONG_SAR 0x3C09 -#define LANGUAGE_ENGLISH_INDIA 0x4009 -#define LANGUAGE_ENGLISH_INDONESIA 0x3809 -#define LANGUAGE_ENGLISH_JAMAICA 0x2009 -#define LANGUAGE_ENGLISH_JORDAN 0x5809 -#define LANGUAGE_ENGLISH_KUWAIT 0x5C09 -#define LANGUAGE_ENGLISH_MALAYSIA 0x4409 -#define LANGUAGE_ENGLISH_NZ 0x1409 -#define LANGUAGE_ENGLISH_PHILIPPINES 0x3409 -#define LANGUAGE_ENGLISH_SAFRICA 0x1C09 -#define LANGUAGE_ENGLISH_SINGAPORE 0x4809 -#define LANGUAGE_ENGLISH_TRINIDAD 0x2C09 -#define LANGUAGE_ENGLISH_TURKEY 0x6009 -#define LANGUAGE_ENGLISH_UK 0x0809 -#define LANGUAGE_ENGLISH_US 0x0409 -#define LANGUAGE_ENGLISH_YEMEN 0x6409 -#define LANGUAGE_ENGLISH_ZIMBABWE 0x3009 -#define LANGUAGE_ESTONIAN 0x0425 -#define LANGUAGE_FAEROESE 0x0438 -#define LANGUAGE_FARSI 0x0429 -#define LANGUAGE_FILIPINO 0x0464 -#define LANGUAGE_FINNISH 0x040B -#define LANGUAGE_FRENCH 0x040C -#define LANGUAGE_FRENCH_BELGIAN 0x080C -#define LANGUAGE_FRENCH_CAMEROON 0x2C0C -#define LANGUAGE_FRENCH_CANADIAN 0x0C0C -#define LANGUAGE_FRENCH_COTE_D_IVOIRE 0x300C - -#define LANGUAGE_FRENCH_HAITI 0x3C0C -#define LANGUAGE_FRENCH_LUXEMBOURG 0x140C -#define LANGUAGE_FRENCH_MALI 0x340C -#define LANGUAGE_FRENCH_MONACO 0x180C -#define LANGUAGE_FRENCH_MOROCCO 0x380C -#define LANGUAGE_FRENCH_NORTH_AFRICA 0xE40C -#define LANGUAGE_FRENCH_REUNION 0x200C -#define LANGUAGE_FRENCH_SENEGAL 0x280C -#define LANGUAGE_FRENCH_SWISS 0x100C -#define LANGUAGE_FRENCH_WEST_INDIES 0x1C0C /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */ -#define LANGUAGE_FRENCH_ZAIRE 0x240C -#define LANGUAGE_FRISIAN_NETHERLANDS 0x0462 -#define LANGUAGE_FULFULDE_LATIN_LSO 0x7C67 -#define LANGUAGE_FULFULDE_NIGERIA 0x0467 -#define LANGUAGE_FULFULDE_SENEGAL 0x0867 -#define LANGUAGE_GAELIC_IRELAND 0x083C -#define LANGUAGE_GAELIC_SCOTLAND 0x0491 /* apparently it occurred to MS that those are different languages */ -#define LANGUAGE_GAELIC_SCOTLAND_LEGACY 0x043C -#define LANGUAGE_GALICIAN 0x0456 -#define LANGUAGE_GEORGIAN 0x0437 -#define LANGUAGE_GERMAN 0x0407 -#define LANGUAGE_GERMAN_AUSTRIAN 0x0C07 -#define LANGUAGE_GERMAN_LIECHTENSTEIN 0x1407 -#define LANGUAGE_GERMAN_LUXEMBOURG 0x1007 -#define LANGUAGE_GERMAN_SWISS 0x0807 -#define LANGUAGE_GREEK 0x0408 -#define LANGUAGE_GUARANI_PARAGUAY 0x0474 -#define LANGUAGE_GUJARATI 0x0447 -#define LANGUAGE_HAUSA_LATIN_LSO 0x7C68 -#define LANGUAGE_HAUSA_NIGERIA 0x0468 -#define LANGUAGE_HAWAIIAN_UNITED_STATES 0x0475 -#define LANGUAGE_HEBREW 0x040D -#define LANGUAGE_HINDI 0x0439 -#define LANGUAGE_HUNGARIAN 0x040E -#define LANGUAGE_IBIBIO_NIGERIA 0x0469 -#define LANGUAGE_ICELANDIC 0x040F -#define LANGUAGE_IGBO_NIGERIA 0x0470 -#define LANGUAGE_INDONESIAN 0x0421 -#define LANGUAGE_INUKTITUT_SYLLABICS_CANADA 0x045D -#define LANGUAGE_INUKTITUT_SYLLABICS_LSO 0x785D -#define LANGUAGE_INUKTITUT_LATIN_CANADA 0x085D -#define LANGUAGE_INUKTITUT_LATIN_LSO 0x7C5D -#define LANGUAGE_ITALIAN 0x0410 -#define LANGUAGE_ITALIAN_SWISS 0x0810 -#define LANGUAGE_JAPANESE 0x0411 -#define LANGUAGE_KALAALLISUT_GREENLAND 0x046F /* obsoletes LANGUAGE_USER_KALAALLISUT 0x062A */ -#define LANGUAGE_KANNADA 0x044B -#define LANGUAGE_KANURI_NIGERIA 0x0471 -#define LANGUAGE_KASHMIRI 0x0460 -#define LANGUAGE_KASHMIRI_INDIA 0x0860 -#define LANGUAGE_KAZAKH 0x043F -#define LANGUAGE_KHMER 0x0453 -#define LANGUAGE_KICHE_GUATEMALA 0x0486 /* AKA K'iche', West Central Quiche, */ -#define LANGUAGE_KINYARWANDA_RWANDA 0x0487 /* obsoletes LANGUAGE_USER_KINYARWANDA 0x0621 */ -#define LANGUAGE_KIRGHIZ 0x0440 /* AKA Kyrgyz */ -#define LANGUAGE_KONKANI 0x0457 -#define LANGUAGE_KOREAN 0x0412 -#define LANGUAGE_KOREAN_JOHAB 0x0812 /* not mentioned in MS-LCID.pdf, oh joy */ -#define LANGUAGE_KURDISH_ARABIC_IRAQ 0x0492 /* obsoletes LANGUAGE_USER_KURDISH_IRAQ 0x0E26 */ -#define LANGUAGE_KURDISH_ARABIC_LSO 0x7C92 -#define LANGUAGE_LAO 0x0454 -#define LANGUAGE_LATIN_LSO 0x0476 /* obsoletes LANGUAGE_USER_LATIN 0x0610 */ -#define LANGUAGE_LATVIAN 0x0426 -#define LANGUAGE_LITHUANIAN 0x0427 -#define LANGUAGE_LITHUANIAN_CLASSIC 0x0827 /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */ -#define LANGUAGE_LU_CHINA 0x0490 -#define LANGUAGE_LUXEMBOURGISH_LUXEMBOURG 0x046E /* obsoletes LANGUAGE_USER_LUXEMBOURGISH 0x0630 */ -#define LANGUAGE_MACEDONIAN 0x042F -#define LANGUAGE_MALAGASY_PLATEAU 0x048D /* obsoletes LANGUAGE_USER_MALAGASY_PLATEAU 0x064F */ -#define LANGUAGE_MALAYALAM 0x044C /* in India */ -#define LANGUAGE_MALAY_BRUNEI_DARUSSALAM 0x083E -#define LANGUAGE_MALAY_MALAYSIA 0x043E -#define LANGUAGE_MALTESE 0x043A -#define LANGUAGE_MANIPURI 0x0458 -#define LANGUAGE_MAORI_NEW_ZEALAND 0x0481 /* obsoletes LANGUAGE_USER_MAORI 0x0620 */ -#define LANGUAGE_MAPUDUNGUN_CHILE 0x047A /* AKA Araucanian */ -#define LANGUAGE_MARATHI 0x044E -#define LANGUAGE_MOHAWK_CANADA 0x047C -#define LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA 0x0450 -#define LANGUAGE_MONGOLIAN_CYRILLIC_LSO 0x7850 -#define LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA 0x0C50 -#define LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA 0x0850 -#define LANGUAGE_MONGOLIAN_MONGOLIAN_LSO 0x7C50 -#define LANGUAGE_NEPALI 0x0461 -#define LANGUAGE_NEPALI_INDIA 0x0861 -#define LANGUAGE_NORWEGIAN 0x0014 /* primary only, not a locale! */ -#define LANGUAGE_NORWEGIAN_BOKMAL 0x0414 -#define LANGUAGE_NORWEGIAN_BOKMAL_LSO 0x7C14 -#define LANGUAGE_NORWEGIAN_NYNORSK 0x0814 -#define LANGUAGE_NORWEGIAN_NYNORSK_LSO 0x7814 -#define LANGUAGE_OCCITAN_FRANCE 0x0482 /* obsoletes LANGUAGE_USER_OCCITAN 0x0625 */ -#define LANGUAGE_ODIA 0x0448 -#define LANGUAGE_OROMO 0x0472 -#define LANGUAGE_PAPIAMENTU 0x0479 -#define LANGUAGE_PASHTO 0x0463 -#define LANGUAGE_POLISH 0x0415 -#define LANGUAGE_PORTUGUESE 0x0816 -#define LANGUAGE_PORTUGUESE_BRAZILIAN 0x0416 -#define LANGUAGE_PUNJABI 0x0446 -#define LANGUAGE_PUNJABI_ARABIC_LSO 0x7C46 -#define LANGUAGE_PUNJABI_PAKISTAN 0x0846 -#define LANGUAGE_QUECHUA_BOLIVIA 0x046B -#define LANGUAGE_QUECHUA_COLOMBIA 0x0493 /* different primary ID */ -#define LANGUAGE_QUECHUA_ECUADOR 0x086B -#define LANGUAGE_QUECHUA_PERU 0x0C6B -#define LANGUAGE_RHAETO_ROMAN 0x0417 -#define LANGUAGE_ROMANIAN 0x0418 -#define LANGUAGE_ROMANIAN_MOLDOVA 0x0818 -#define LANGUAGE_RUSSIAN 0x0419 -#define LANGUAGE_RUSSIAN_MOLDOVA 0x0819 -#define LANGUAGE_SAMI_NORTHERN_NORWAY 0x043B -#define LANGUAGE_SAMI_LAPPISH LANGUAGE_SAMI_NORTHERN_NORWAY /* the old MS definition */ -#define LANGUAGE_SAMI_INARI 0x243B -#define LANGUAGE_SAMI_INARI_LSO 0x703B -#define LANGUAGE_SAMI_LULE_LSO 0x7C3B -#define LANGUAGE_SAMI_LULE_NORWAY 0x103B -#define LANGUAGE_SAMI_LULE_SWEDEN 0x143B -#define LANGUAGE_SAMI_NORTHERN_FINLAND 0x0C3B -#define LANGUAGE_SAMI_NORTHERN_SWEDEN 0x083B -#define LANGUAGE_SAMI_SKOLT 0x203B -#define LANGUAGE_SAMI_SKOLT_LSO 0x743B -#define LANGUAGE_SAMI_SOUTHERN_LSO 0x783B -#define LANGUAGE_SAMI_SOUTHERN_NORWAY 0x183B -#define LANGUAGE_SAMI_SOUTHERN_SWEDEN 0x1C3B -#define LANGUAGE_SANSKRIT 0x044F -#define LANGUAGE_SEPEDI 0x046C -#define LANGUAGE_NORTHERNSOTHO LANGUAGE_SEPEDI /* just an alias for the already existing localization */ -#define LANGUAGE_SERBIAN_CYRILLIC_LSO 0x6C1A -#define LANGUAGE_SERBIAN_CYRILLIC_SAM 0x0C1A /* Serbia and Montenegro (former) */ -#define LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA 0x1C1A -#define LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO 0x301A -#define LANGUAGE_SERBIAN_CYRILLIC_SERBIA 0x281A -#define LANGUAGE_SERBIAN_LATIN_LSO 0x701A -#define LANGUAGE_SERBIAN_LATIN_SAM 0x081A -#define LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA 0x181A -#define LANGUAGE_SERBIAN_LATIN_MONTENEGRO 0x2C1A -#define LANGUAGE_SERBIAN_LATIN_NEUTRAL 0x7C1A -#define LANGUAGE_SERBIAN_LATIN_SERBIA 0x241A -#define LANGUAGE_SESOTHO 0x0430 /* also called Sutu now by MS */ -#define LANGUAGE_SINDHI 0x0459 -#define LANGUAGE_SINDHI_ARABIC_LSO 0x7C59 -#define LANGUAGE_SINDHI_PAKISTAN 0x0859 -#define LANGUAGE_SINHALESE_SRI_LANKA 0x045B -#define LANGUAGE_SLOVAK 0x041B -#define LANGUAGE_SLOVENIAN 0x0424 -#define LANGUAGE_SOMALI 0x0477 -#define LANGUAGE_UPPER_SORBIAN_GERMANY 0x042E /* obsoletes LANGUAGE_USER_UPPER_SORBIAN 0x0623 */ -#define LANGUAGE_LOWER_SORBIAN_GERMANY 0x082E /* obsoletes LANGUAGE_USER_LOWER_SORBIAN 0x0624. NOTE: the primary ID is identical to Upper Sorbian, which is not quite correct because they're distinct languages */ -#define LANGUAGE_LOWER_SORBIAN_LSO 0x7C2E -#define LANGUAGE_SORBIAN LANGUAGE_USER_UPPER_SORBIAN /* a strange MS definition */ -#define LANGUAGE_SPANISH_DATED 0x040A /* old collation, not supported, see #i94435# */ -#define LANGUAGE_SPANISH_ARGENTINA 0x2C0A -#define LANGUAGE_SPANISH_BOLIVIA 0x400A -#define LANGUAGE_SPANISH_CHILE 0x340A -#define LANGUAGE_SPANISH_COLOMBIA 0x240A -#define LANGUAGE_SPANISH_COSTARICA 0x140A -#define LANGUAGE_SPANISH_CUBA 0x5C0A -#define LANGUAGE_SPANISH_DOMINICAN_REPUBLIC 0x1C0A -#define LANGUAGE_SPANISH_ECUADOR 0x300A -#define LANGUAGE_SPANISH_EL_SALVADOR 0x440A -#define LANGUAGE_SPANISH_GUATEMALA 0x100A -#define LANGUAGE_SPANISH_HONDURAS 0x480A -#define LANGUAGE_SPANISH_LATIN_AMERICA 0xE40A /* no locale possible */ -#define LANGUAGE_SPANISH_MEXICAN 0x080A -#define LANGUAGE_SPANISH_MODERN 0x0C0A -#define LANGUAGE_SPANISH_NICARAGUA 0x4C0A -#define LANGUAGE_SPANISH_PANAMA 0x180A -#define LANGUAGE_SPANISH_PARAGUAY 0x3C0A -#define LANGUAGE_SPANISH_PERU 0x280A -#define LANGUAGE_SPANISH_PUERTO_RICO 0x500A -#define LANGUAGE_SPANISH_UNITED_STATES 0x540A -#define LANGUAGE_SPANISH_URUGUAY 0x380A -#define LANGUAGE_SPANISH_VENEZUELA 0x200A -#define LANGUAGE_SPANISH LANGUAGE_SPANISH_MODERN /* modern collation, see #i94435# */ -#define LANGUAGE_SWAHILI 0x0441 /* Kenya */ -#define LANGUAGE_SWEDISH 0x041D -#define LANGUAGE_SWEDISH_FINLAND 0x081D -#define LANGUAGE_SYRIAC 0x045A -#define LANGUAGE_TAI_NUA_CHINA 0x048F -#define LANGUAGE_TAJIK 0x0428 -#define LANGUAGE_TAJIK_LSO 0x7C28 -#define LANGUAGE_TAMAZIGHT_ARABIC_MOROCCO 0x045F -#define LANGUAGE_TAMAZIGHT_LATIN_ALGERIA 0x085F -#define LANGUAGE_TAMAZIGHT_LATIN_LSO 0x7C5F -#define LANGUAGE_TAMAZIGHT_MOROCCO 0x0C5F -#define LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO 0x105F -#define LANGUAGE_TAMAZIGHT_TIFINAGH_LSO 0x785F -#define LANGUAGE_TAMIL 0x0449 -#define LANGUAGE_TAMIL_SRI_LANKA 0x0849 -#define LANGUAGE_TATAR 0x0444 -#define LANGUAGE_TELUGU 0x044A -#define LANGUAGE_THAI 0x041E -#define LANGUAGE_TIBETAN 0x0451 -#define LANGUAGE_TIBETAN_BHUTAN 0x0851 /* was used as Dzongkha, a MS error, see #i53497# */ -#define LANGUAGE_DZONGKHA_BHUTAN 0x0C51 /* they finally got it ... ([MS-LCID] rev. 7.0 2015-06-30) */ -#define LANGUAGE_TIGRIGNA_ERITREA 0x0873 -#define LANGUAGE_TIGRIGNA_ETHIOPIA 0x0473 -#define LANGUAGE_TSONGA 0x0431 -#define LANGUAGE_TSWANA 0x0432 /* AKA Setsuana, for South Africa */ -#define LANGUAGE_TSWANA_BOTSWANA 0x0832 /* obsoletes LANGUAGE_USER_TSWANA_BOTSWANA 0x8032 */ -#define LANGUAGE_TURKISH 0x041F -#define LANGUAGE_TURKMEN 0x0442 -#define LANGUAGE_UIGHUR_CHINA 0x0480 -#define LANGUAGE_UKRAINIAN 0x0422 -#define LANGUAGE_URDU_INDIA 0x0820 -#define LANGUAGE_URDU_PAKISTAN 0x0420 -#define LANGUAGE_UZBEK_CYRILLIC 0x0843 -#define LANGUAGE_UZBEK_CYRILLIC_LSO 0x7843 -#define LANGUAGE_UZBEK_LATIN 0x0443 -#define LANGUAGE_UZBEK_LATIN_LSO 0x7C43 -#define LANGUAGE_VENDA 0x0433 -#define LANGUAGE_VIETNAMESE 0x042A -#define LANGUAGE_WELSH 0x0452 -#define LANGUAGE_WOLOF_SENEGAL 0x0488 -#define LANGUAGE_XHOSA 0x0434 /* AKA isiZhosa */ -#define LANGUAGE_YAKUT_RUSSIA 0x0485 -#define LANGUAGE_YI 0x0478 /* Sichuan Yi */ -#define LANGUAGE_YIDDISH 0x043D -#define LANGUAGE_YORUBA 0x046A -#define LANGUAGE_YUE_CHINESE_HONGKONG 0x048E -#define LANGUAGE_ZULU 0x0435 - -#define LANGUAGE_qps_ploc 0x0501 /* 'qps-ploc', qps is a reserved for local use code */ -#define LANGUAGE_qps_ploca 0x05FE /* 'qps-ploca', qps is a reserved for local use code */ -#define LANGUAGE_qps_plocm 0x09FF /* 'qps-plocm', qps is a reserved for local use code */ - -#define LANGUAGE_ar_Ploc_SA_reserved 0x4401 /* 'ar-Ploc-SA', 'Ploc'?? */ -#define LANGUAGE_ja_Ploc_JP_reserved 0x0811 /* 'ja-Ploc-JP', 'Ploc'?? */ -#define LANGUAGE_pap_029_reserved 0x0479 /* 'pap-029' */ -#define LANGUAGE_ar_145_reserved 0x4801 /* 'ar-145' */ -#define LANGUAGE_es_419 0x580A /* 'es-419', not reserved, used? */ +#define LANGUAGE_AFRIKAANS LanguageType(0x0436) +#define LANGUAGE_ALBANIAN LanguageType(0x041C) +#define LANGUAGE_ALSATIAN_FRANCE LanguageType(0x0484) +#define LANGUAGE_AMHARIC_ETHIOPIA LanguageType(0x045E) +#define LANGUAGE_ARABIC_ALGERIA LanguageType(0x1401) +#define LANGUAGE_ARABIC_BAHRAIN LanguageType(0x3C01) +#define LANGUAGE_ARABIC_EGYPT LanguageType(0x0C01) +#define LANGUAGE_ARABIC_IRAQ LanguageType(0x0801) +#define LANGUAGE_ARABIC_JORDAN LanguageType(0x2C01) +#define LANGUAGE_ARABIC_KUWAIT LanguageType(0x3401) +#define LANGUAGE_ARABIC_LEBANON LanguageType(0x3001) +#define LANGUAGE_ARABIC_LIBYA LanguageType(0x1001) +#define LANGUAGE_ARABIC_MOROCCO LanguageType(0x1801) +#define LANGUAGE_ARABIC_OMAN LanguageType(0x2001) +#define LANGUAGE_ARABIC_PRIMARY_ONLY LanguageType(0x0001) /* primary only, not a locale! */ +#define LANGUAGE_ARABIC_QATAR LanguageType(0x4001) +#define LANGUAGE_ARABIC_SAUDI_ARABIA LanguageType(0x0401) +#define LANGUAGE_ARABIC_SYRIA LanguageType(0x2801) +#define LANGUAGE_ARABIC_TUNISIA LanguageType(0x1C01) +#define LANGUAGE_ARABIC_UAE LanguageType(0x3801) +#define LANGUAGE_ARABIC_YEMEN LanguageType(0x2401) +#define LANGUAGE_ARMENIAN LanguageType(0x042B) +#define LANGUAGE_ASSAMESE LanguageType(0x044D) +#define LANGUAGE_AZERI_CYRILLIC LanguageType(0x082C) +#define LANGUAGE_AZERI_CYRILLIC_LSO LanguageType(0x742C) +#define LANGUAGE_AZERI_LATIN LanguageType(0x042C) +#define LANGUAGE_AZERI_LATIN_LSO LanguageType(0x782C) +#define LANGUAGE_BASHKIR_RUSSIA LanguageType(0x046D) +#define LANGUAGE_BASQUE LanguageType(0x042D) +#define LANGUAGE_BELARUSIAN LanguageType(0x0423) +#define LANGUAGE_BENGALI LanguageType(0x0445) /* in India */ +#define LANGUAGE_BENGALI_BANGLADESH LanguageType(0x0845) +#define LANGUAGE_BOSNIAN_CYRILLIC_LSO LanguageType(0x641A) +#define LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA LanguageType(0x201A) +#define LANGUAGE_BOSNIAN_LATIN_LSO LanguageType(0x681A) +#define LANGUAGE_BOSNIAN_LSO LanguageType(0x781A) +#define LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA LanguageType(0x141A) +#define LANGUAGE_BOSNIAN_BOSNIA_HERZEGOVINA LanguageType(LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA) /* TODO: remove, only for langtab.src & localize.sdf compatibility */ +#define LANGUAGE_BRETON_FRANCE LanguageType(0x047E) /* obsoletes LANGUAGE_USER_BRETON 0x0629 */ +#define LANGUAGE_BULGARIAN LanguageType(0x0402) +#define LANGUAGE_BURMESE LanguageType(0x0455) +#define LANGUAGE_CATALAN LanguageType(0x0403) +#define LANGUAGE_CATALAN_VALENCIAN LanguageType(0x0803) /* obsoletes LANGUAGE_USER_CATALAN_VALENCIAN 0x8003 */ +#define LANGUAGE_CHEROKEE_UNITED_STATES LanguageType(0x045C) +#define LANGUAGE_CHEROKEE_CHEROKEE_LSO LanguageType(0x7C5C) +#define LANGUAGE_CHINESE_HONGKONG LanguageType(0x0C04) +#define LANGUAGE_CHINESE_LSO LanguageType(0x7804) +#define LANGUAGE_CHINESE_MACAU LanguageType(0x1404) +#define LANGUAGE_CHINESE_SIMPLIFIED LanguageType(0x0804) +#define LANGUAGE_CHINESE_SINGAPORE LanguageType(0x1004) +#define LANGUAGE_CHINESE_TRADITIONAL LanguageType(0x0404) +#define LANGUAGE_CHINESE_SIMPLIFIED_LEGACY LanguageType(0x0004) /* MS-.NET 'zh-CHS', primary only! but maps to 'zh-CN' */ +#define LANGUAGE_CHINESE_TRADITIONAL_LSO LanguageType(0x7C04) /* MS-.NET 'zh-CHT' but maps to 'zh-Hant' */ +#define LANGUAGE_CHINESE LanguageType(LANGUAGE_CHINESE_SIMPLIFIED) /* most code uses LANGUAGE_CHINESE */ +#define LANGUAGE_CORSICAN_FRANCE LanguageType(0x0483) +#define LANGUAGE_CROATIAN LanguageType(0x041A) +#define LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA LanguageType(0x101A) +#define LANGUAGE_CZECH LanguageType(0x0405) +#define LANGUAGE_DANISH LanguageType(0x0406) +#define LANGUAGE_DARI_AFGHANISTAN LanguageType(0x048C) /* AKA Zoroastrian Dari */ +#define LANGUAGE_DHIVEHI LanguageType(0x0465) /* AKA Divehi */ +#define LANGUAGE_DUTCH LanguageType(0x0413) +#define LANGUAGE_DUTCH_BELGIAN LanguageType(0x0813) +#define LANGUAGE_EDO LanguageType(0x0466) +#define LANGUAGE_ENGLISH LanguageType(0x0009) /* primary only, not a locale! */ +#define LANGUAGE_ENGLISH_ARAB_EMIRATES LanguageType(0x4C09) +#define LANGUAGE_ENGLISH_AUS LanguageType(0x0C09) +#define LANGUAGE_ENGLISH_BAHRAIN LanguageType(0x5009) +#define LANGUAGE_ENGLISH_BELIZE LanguageType(0x2809) +#define LANGUAGE_ENGLISH_CAN LanguageType(0x1009) +#define LANGUAGE_ENGLISH_CARRIBEAN LanguageType(0x2409) +#define LANGUAGE_ENGLISH_EGYPT LanguageType(0x5409) +#define LANGUAGE_ENGLISH_EIRE LanguageType(0x1809) +#define LANGUAGE_ENGLISH_HONG_KONG_SAR LanguageType(0x3C09) +#define LANGUAGE_ENGLISH_INDIA LanguageType(0x4009) +#define LANGUAGE_ENGLISH_INDONESIA LanguageType(0x3809) +#define LANGUAGE_ENGLISH_JAMAICA LanguageType(0x2009) +#define LANGUAGE_ENGLISH_JORDAN LanguageType(0x5809) +#define LANGUAGE_ENGLISH_KUWAIT LanguageType(0x5C09) +#define LANGUAGE_ENGLISH_MALAYSIA LanguageType(0x4409) +#define LANGUAGE_ENGLISH_NZ LanguageType(0x1409) +#define LANGUAGE_ENGLISH_PHILIPPINES LanguageType(0x3409) +#define LANGUAGE_ENGLISH_SAFRICA LanguageType(0x1C09) +#define LANGUAGE_ENGLISH_SINGAPORE LanguageType(0x4809) +#define LANGUAGE_ENGLISH_TRINIDAD LanguageType(0x2C09) +#define LANGUAGE_ENGLISH_TURKEY LanguageType(0x6009) +#define LANGUAGE_ENGLISH_UK LanguageType(0x0809) +#define LANGUAGE_ENGLISH_US LanguageType(0x0409) +#define LANGUAGE_ENGLISH_YEMEN LanguageType(0x6409) +#define LANGUAGE_ENGLISH_ZIMBABWE LanguageType(0x3009) +#define LANGUAGE_ESTONIAN LanguageType(0x0425) +#define LANGUAGE_FAEROESE LanguageType(0x0438) +#define LANGUAGE_FARSI LanguageType(0x0429) +#define LANGUAGE_FILIPINO LanguageType(0x0464) +#define LANGUAGE_FINNISH LanguageType(0x040B) +#define LANGUAGE_FRENCH LanguageType(0x040C) +#define LANGUAGE_FRENCH_BELGIAN LanguageType(0x080C) +#define LANGUAGE_FRENCH_CAMEROON LanguageType(0x2C0C) +#define LANGUAGE_FRENCH_CANADIAN LanguageType(0x0C0C) +#define LANGUAGE_FRENCH_COTE_D_IVOIRE LanguageType(0x300C) + +#define LANGUAGE_FRENCH_HAITI LanguageType(0x3C0C) +#define LANGUAGE_FRENCH_LUXEMBOURG LanguageType(0x140C) +#define LANGUAGE_FRENCH_MALI LanguageType(0x340C) +#define LANGUAGE_FRENCH_MONACO LanguageType(0x180C) +#define LANGUAGE_FRENCH_MOROCCO LanguageType(0x380C) +#define LANGUAGE_FRENCH_NORTH_AFRICA LanguageType(0xE40C) +#define LANGUAGE_FRENCH_REUNION LanguageType(0x200C) +#define LANGUAGE_FRENCH_SENEGAL LanguageType(0x280C) +#define LANGUAGE_FRENCH_SWISS LanguageType(0x100C) +#define LANGUAGE_FRENCH_WEST_INDIES LanguageType(0x1C0C) /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */ +#define LANGUAGE_FRENCH_ZAIRE LanguageType(0x240C) +#define LANGUAGE_FRISIAN_NETHERLANDS LanguageType(0x0462) +#define LANGUAGE_FULFULDE_LATIN_LSO LanguageType(0x7C67) +#define LANGUAGE_FULFULDE_NIGERIA LanguageType(0x0467) +#define LANGUAGE_FULFULDE_SENEGAL LanguageType(0x0867) +#define LANGUAGE_GAELIC_IRELAND LanguageType(0x083C) +#define LANGUAGE_GAELIC_SCOTLAND LanguageType(0x0491) /* apparently it occurred to MS that those are different languages */ +#define LANGUAGE_GAELIC_SCOTLAND_LEGACY LanguageType(0x043C) +#define LANGUAGE_GALICIAN LanguageType(0x0456) +#define LANGUAGE_GEORGIAN LanguageType(0x0437) +#define LANGUAGE_GERMAN LanguageType(0x0407) +#define LANGUAGE_GERMAN_AUSTRIAN LanguageType(0x0C07) +#define LANGUAGE_GERMAN_LIECHTENSTEIN LanguageType(0x1407) +#define LANGUAGE_GERMAN_LUXEMBOURG LanguageType(0x1007) +#define LANGUAGE_GERMAN_SWISS LanguageType(0x0807) +#define LANGUAGE_GREEK LanguageType(0x0408) +#define LANGUAGE_GUARANI_PARAGUAY LanguageType(0x0474) +#define LANGUAGE_GUJARATI LanguageType(0x0447) +#define LANGUAGE_HAUSA_LATIN_LSO LanguageType(0x7C68) +#define LANGUAGE_HAUSA_NIGERIA LanguageType(0x0468) +#define LANGUAGE_HAWAIIAN_UNITED_STATES LanguageType(0x0475) +#define LANGUAGE_HEBREW LanguageType(0x040D) +#define LANGUAGE_HINDI LanguageType(0x0439) +#define LANGUAGE_HUNGARIAN LanguageType(0x040E) +#define LANGUAGE_IBIBIO_NIGERIA LanguageType(0x0469) +#define LANGUAGE_ICELANDIC LanguageType(0x040F) +#define LANGUAGE_IGBO_NIGERIA LanguageType(0x0470) +#define LANGUAGE_INDONESIAN LanguageType(0x0421) +#define LANGUAGE_INUKTITUT_SYLLABICS_CANADA LanguageType(0x045D) +#define LANGUAGE_INUKTITUT_SYLLABICS_LSO LanguageType(0x785D) +#define LANGUAGE_INUKTITUT_LATIN_CANADA LanguageType(0x085D) +#define LANGUAGE_INUKTITUT_LATIN_LSO LanguageType(0x7C5D) +#define LANGUAGE_ITALIAN LanguageType(0x0410) +#define LANGUAGE_ITALIAN_SWISS LanguageType(0x0810) +#define LANGUAGE_JAPANESE LanguageType(0x0411) +#define LANGUAGE_KALAALLISUT_GREENLAND LanguageType(0x046F) /* obsoletes LANGUAGE_USER_KALAALLISUT 0x062A */ +#define LANGUAGE_KANNADA LanguageType(0x044B) +#define LANGUAGE_KANURI_NIGERIA LanguageType(0x0471) +#define LANGUAGE_KASHMIRI LanguageType(0x0460) +#define LANGUAGE_KASHMIRI_INDIA LanguageType(0x0860) +#define LANGUAGE_KAZAKH LanguageType(0x043F) +#define LANGUAGE_KHMER LanguageType(0x0453) +#define LANGUAGE_KICHE_GUATEMALA LanguageType(0x0486) /* AKA K'iche', West Central Quiche, */ +#define LANGUAGE_KINYARWANDA_RWANDA LanguageType(0x0487) /* obsoletes LANGUAGE_USER_KINYARWANDA 0x0621 */ +#define LANGUAGE_KIRGHIZ LanguageType(0x0440) /* AKA Kyrgyz */ +#define LANGUAGE_KONKANI LanguageType(0x0457) +#define LANGUAGE_KOREAN LanguageType(0x0412) +#define LANGUAGE_KOREAN_JOHAB LanguageType(0x0812) /* not mentioned in MS-LCID.pdf, oh joy */ +#define LANGUAGE_KURDISH_ARABIC_IRAQ LanguageType(0x0492) /* obsoletes LANGUAGE_USER_KURDISH_IRAQ 0x0E26 */ +#define LANGUAGE_KURDISH_ARABIC_LSO LanguageType(0x7C92) +#define LANGUAGE_LAO LanguageType(0x0454) +#define LANGUAGE_LATIN_LSO LanguageType(0x0476) /* obsoletes LANGUAGE_USER_LATIN 0x0610 */ +#define LANGUAGE_LATVIAN LanguageType(0x0426) +#define LANGUAGE_LITHUANIAN LanguageType(0x0427) +#define LANGUAGE_LITHUANIAN_CLASSIC LanguageType(0x0827) /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */ +#define LANGUAGE_LU_CHINA LanguageType(0x0490) +#define LANGUAGE_LUXEMBOURGISH_LUXEMBOURG LanguageType(0x046E) /* obsoletes LANGUAGE_USER_LUXEMBOURGISH 0x0630 */ +#define LANGUAGE_MACEDONIAN LanguageType(0x042F) +#define LANGUAGE_MALAGASY_PLATEAU LanguageType(0x048D) /* obsoletes LANGUAGE_USER_MALAGASY_PLATEAU 0x064F */ +#define LANGUAGE_MALAYALAM LanguageType(0x044C) /* in India */ +#define LANGUAGE_MALAY_BRUNEI_DARUSSALAM LanguageType(0x083E) +#define LANGUAGE_MALAY_MALAYSIA LanguageType(0x043E) +#define LANGUAGE_MALTESE LanguageType(0x043A) +#define LANGUAGE_MANIPURI LanguageType(0x0458) +#define LANGUAGE_MAORI_NEW_ZEALAND LanguageType(0x0481) /* obsoletes LANGUAGE_USER_MAORI 0x0620 */ +#define LANGUAGE_MAPUDUNGUN_CHILE LanguageType(0x047A) /* AKA Araucanian */ +#define LANGUAGE_MARATHI LanguageType(0x044E) +#define LANGUAGE_MOHAWK_CANADA LanguageType(0x047C) +#define LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA LanguageType(0x0450) +#define LANGUAGE_MONGOLIAN_CYRILLIC_LSO LanguageType(0x7850) +#define LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA LanguageType(0x0C50) +#define LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA LanguageType(0x0850) +#define LANGUAGE_MONGOLIAN_MONGOLIAN_LSO LanguageType(0x7C50) +#define LANGUAGE_NEPALI LanguageType(0x0461) +#define LANGUAGE_NEPALI_INDIA LanguageType(0x0861) +#define LANGUAGE_NORWEGIAN LanguageType(0x0014) /* primary only, not a locale! */ +#define LANGUAGE_NORWEGIAN_BOKMAL LanguageType(0x0414) +#define LANGUAGE_NORWEGIAN_BOKMAL_LSO LanguageType(0x7C14) +#define LANGUAGE_NORWEGIAN_NYNORSK LanguageType(0x0814) +#define LANGUAGE_NORWEGIAN_NYNORSK_LSO LanguageType(0x7814) +#define LANGUAGE_OCCITAN_FRANCE LanguageType(0x0482) /* obsoletes LANGUAGE_USER_OCCITAN 0x0625 */ +#define LANGUAGE_ODIA LanguageType(0x0448) +#define LANGUAGE_OROMO LanguageType(0x0472) +#define LANGUAGE_PAPIAMENTU LanguageType(0x0479) +#define LANGUAGE_PASHTO LanguageType(0x0463) +#define LANGUAGE_POLISH LanguageType(0x0415) +#define LANGUAGE_PORTUGUESE LanguageType(0x0816) +#define LANGUAGE_PORTUGUESE_BRAZILIAN LanguageType(0x0416) +#define LANGUAGE_PUNJABI LanguageType(0x0446) +#define LANGUAGE_PUNJABI_ARABIC_LSO LanguageType(0x7C46) +#define LANGUAGE_PUNJABI_PAKISTAN LanguageType(0x0846) +#define LANGUAGE_QUECHUA_BOLIVIA LanguageType(0x046B) +#define LANGUAGE_QUECHUA_COLOMBIA LanguageType(0x0493) /* different primary ID */ +#define LANGUAGE_QUECHUA_ECUADOR LanguageType(0x086B) +#define LANGUAGE_QUECHUA_PERU LanguageType(0x0C6B) +#define LANGUAGE_RHAETO_ROMAN LanguageType(0x0417) +#define LANGUAGE_ROMANIAN LanguageType(0x0418) +#define LANGUAGE_ROMANIAN_MOLDOVA LanguageType(0x0818) +#define LANGUAGE_RUSSIAN LanguageType(0x0419) +#define LANGUAGE_RUSSIAN_MOLDOVA LanguageType(0x0819) +#define LANGUAGE_SAMI_NORTHERN_NORWAY LanguageType(0x043B) +#define LANGUAGE_SAMI_LAPPISH LanguageType(LANGUAGE_SAMI_NORTHERN_NORWAY) /* the old MS definition */ +#define LANGUAGE_SAMI_INARI LanguageType(0x243B) +#define LANGUAGE_SAMI_INARI_LSO LanguageType(0x703B) +#define LANGUAGE_SAMI_LULE_LSO LanguageType(0x7C3B) +#define LANGUAGE_SAMI_LULE_NORWAY LanguageType(0x103B) +#define LANGUAGE_SAMI_LULE_SWEDEN LanguageType(0x143B) +#define LANGUAGE_SAMI_NORTHERN_FINLAND LanguageType(0x0C3B) +#define LANGUAGE_SAMI_NORTHERN_SWEDEN LanguageType(0x083B) +#define LANGUAGE_SAMI_SKOLT LanguageType(0x203B) +#define LANGUAGE_SAMI_SKOLT_LSO LanguageType(0x743B) +#define LANGUAGE_SAMI_SOUTHERN_LSO LanguageType(0x783B) +#define LANGUAGE_SAMI_SOUTHERN_NORWAY LanguageType(0x183B) +#define LANGUAGE_SAMI_SOUTHERN_SWEDEN LanguageType(0x1C3B) +#define LANGUAGE_SANSKRIT LanguageType(0x044F) +#define LANGUAGE_SEPEDI LanguageType(0x046C) +#define LANGUAGE_NORTHERNSOTHO LanguageType(LANGUAGE_SEPEDI) /* just an alias for the already existing localization */ +#define LANGUAGE_SERBIAN_CYRILLIC_LSO LanguageType(0x6C1A) +#define LANGUAGE_SERBIAN_CYRILLIC_SAM LanguageType(0x0C1A) /* Serbia and Montenegro (former) */ +#define LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA LanguageType(0x1C1A) +#define LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO LanguageType(0x301A) +#define LANGUAGE_SERBIAN_CYRILLIC_SERBIA LanguageType(0x281A) +#define LANGUAGE_SERBIAN_LATIN_LSO LanguageType(0x701A) +#define LANGUAGE_SERBIAN_LATIN_SAM LanguageType(0x081A) +#define LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA LanguageType(0x181A) +#define LANGUAGE_SERBIAN_LATIN_MONTENEGRO LanguageType(0x2C1A) +#define LANGUAGE_SERBIAN_LATIN_NEUTRAL LanguageType(0x7C1A) +#define LANGUAGE_SERBIAN_LATIN_SERBIA LanguageType(0x241A) +#define LANGUAGE_SESOTHO LanguageType(0x0430) /* also called Sutu now by MS */ +#define LANGUAGE_SINDHI LanguageType(0x0459) +#define LANGUAGE_SINDHI_ARABIC_LSO LanguageType(0x7C59) +#define LANGUAGE_SINDHI_PAKISTAN LanguageType(0x0859) +#define LANGUAGE_SINHALESE_SRI_LANKA LanguageType(0x045B) +#define LANGUAGE_SLOVAK LanguageType(0x041B) +#define LANGUAGE_SLOVENIAN LanguageType(0x0424) +#define LANGUAGE_SOMALI LanguageType(0x0477) +#define LANGUAGE_UPPER_SORBIAN_GERMANY LanguageType(0x042E) /* obsoletes LANGUAGE_USER_UPPER_SORBIAN 0x0623 */ +#define LANGUAGE_LOWER_SORBIAN_GERMANY LanguageType(0x082E) /* obsoletes LANGUAGE_USER_LOWER_SORBIAN 0x0624. NOTE: the primary ID is identical to Upper Sorbian, which is not quite correct because they're distinct languages */ +#define LANGUAGE_LOWER_SORBIAN_LSO LanguageType(0x7C2E) +#define LANGUAGE_SORBIAN LanguageType(LANGUAGE_USER_UPPER_SORBIAN) /* a strange MS definition */ +#define LANGUAGE_SPANISH_DATED LanguageType(0x040A) /* old collation, not supported, see #i94435# */ +#define LANGUAGE_SPANISH_ARGENTINA LanguageType(0x2C0A) +#define LANGUAGE_SPANISH_BOLIVIA LanguageType(0x400A) +#define LANGUAGE_SPANISH_CHILE LanguageType(0x340A) +#define LANGUAGE_SPANISH_COLOMBIA LanguageType(0x240A) +#define LANGUAGE_SPANISH_COSTARICA LanguageType(0x140A) +#define LANGUAGE_SPANISH_CUBA LanguageType(0x5C0A) +#define LANGUAGE_SPANISH_DOMINICAN_REPUBLIC LanguageType(0x1C0A) +#define LANGUAGE_SPANISH_ECUADOR LanguageType(0x300A) +#define LANGUAGE_SPANISH_EL_SALVADOR LanguageType(0x440A) +#define LANGUAGE_SPANISH_GUATEMALA LanguageType(0x100A) +#define LANGUAGE_SPANISH_HONDURAS LanguageType(0x480A) +#define LANGUAGE_SPANISH_LATIN_AMERICA LanguageType(0xE40A) /* no locale possible */ +#define LANGUAGE_SPANISH_MEXICAN LanguageType(0x080A) +#define LANGUAGE_SPANISH_MODERN LanguageType(0x0C0A) +#define LANGUAGE_SPANISH_NICARAGUA LanguageType(0x4C0A) +#define LANGUAGE_SPANISH_PANAMA LanguageType(0x180A) +#define LANGUAGE_SPANISH_PARAGUAY LanguageType(0x3C0A) +#define LANGUAGE_SPANISH_PERU LanguageType(0x280A) +#define LANGUAGE_SPANISH_PUERTO_RICO LanguageType(0x500A) +#define LANGUAGE_SPANISH_UNITED_STATES LanguageType(0x540A) +#define LANGUAGE_SPANISH_URUGUAY LanguageType(0x380A) +#define LANGUAGE_SPANISH_VENEZUELA LanguageType(0x200A) +#define LANGUAGE_SPANISH LanguageType(LANGUAGE_SPANISH_MODERN) /* modern collation, see #i94435# */ +#define LANGUAGE_SWAHILI LanguageType(0x0441) /* Kenya */ +#define LANGUAGE_SWEDISH LanguageType(0x041D) +#define LANGUAGE_SWEDISH_FINLAND LanguageType(0x081D) +#define LANGUAGE_SYRIAC LanguageType(0x045A) +#define LANGUAGE_TAI_NUA_CHINA LanguageType(0x048F) +#define LANGUAGE_TAJIK LanguageType(0x0428) +#define LANGUAGE_TAJIK_LSO LanguageType(0x7C28) +#define LANGUAGE_TAMAZIGHT_ARABIC_MOROCCO LanguageType(0x045F) +#define LANGUAGE_TAMAZIGHT_LATIN_ALGERIA LanguageType(0x085F) +#define LANGUAGE_TAMAZIGHT_LATIN_LSO LanguageType(0x7C5F) +#define LANGUAGE_TAMAZIGHT_MOROCCO LanguageType(0x0C5F) +#define LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO LanguageType(0x105F) +#define LANGUAGE_TAMAZIGHT_TIFINAGH_LSO LanguageType(0x785F) +#define LANGUAGE_TAMIL LanguageType(0x0449) +#define LANGUAGE_TAMIL_SRI_LANKA LanguageType(0x0849) +#define LANGUAGE_TATAR LanguageType(0x0444) +#define LANGUAGE_TELUGU LanguageType(0x044A) +#define LANGUAGE_THAI LanguageType(0x041E) +#define LANGUAGE_TIBETAN LanguageType(0x0451) +#define LANGUAGE_TIBETAN_BHUTAN LanguageType(0x0851) /* was used as Dzongkha, a MS error, see #i53497# */ +#define LANGUAGE_DZONGKHA_BHUTAN LanguageType(0x0C51) /* they finally got it ... ([MS-LCID] rev. 7.0 2015-06-30) */ +#define LANGUAGE_TIGRIGNA_ERITREA LanguageType(0x0873) +#define LANGUAGE_TIGRIGNA_ETHIOPIA LanguageType(0x0473) +#define LANGUAGE_TSONGA LanguageType(0x0431) +#define LANGUAGE_TSWANA LanguageType(0x0432) /* AKA Setsuana, for South Africa */ +#define LANGUAGE_TSWANA_BOTSWANA LanguageType(0x0832) /* obsoletes LANGUAGE_USER_TSWANA_BOTSWANA 0x8032 */ +#define LANGUAGE_TURKISH LanguageType(0x041F) +#define LANGUAGE_TURKMEN LanguageType(0x0442) +#define LANGUAGE_UIGHUR_CHINA LanguageType(0x0480) +#define LANGUAGE_UKRAINIAN LanguageType(0x0422) +#define LANGUAGE_URDU_INDIA LanguageType(0x0820) +#define LANGUAGE_URDU_PAKISTAN LanguageType(0x0420) +#define LANGUAGE_UZBEK_CYRILLIC LanguageType(0x0843) +#define LANGUAGE_UZBEK_CYRILLIC_LSO LanguageType(0x7843) +#define LANGUAGE_UZBEK_LATIN LanguageType(0x0443) +#define LANGUAGE_UZBEK_LATIN_LSO LanguageType(0x7C43) +#define LANGUAGE_VENDA LanguageType(0x0433) +#define LANGUAGE_VIETNAMESE LanguageType(0x042A) +#define LANGUAGE_WELSH LanguageType(0x0452) +#define LANGUAGE_WOLOF_SENEGAL LanguageType(0x0488) +#define LANGUAGE_XHOSA LanguageType(0x0434) /* AKA isiZhosa */ +#define LANGUAGE_YAKUT_RUSSIA LanguageType(0x0485) +#define LANGUAGE_YI LanguageType(0x0478) /* Sichuan Yi */ +#define LANGUAGE_YIDDISH LanguageType(0x043D) +#define LANGUAGE_YORUBA LanguageType(0x046A) +#define LANGUAGE_YUE_CHINESE_HONGKONG LanguageType(0x048E) +#define LANGUAGE_ZULU LanguageType(0x0435) + +#define LANGUAGE_qps_ploc LanguageType(0x0501) /* 'qps-ploc', qps is a reserved for local use code */ +#define LANGUAGE_qps_ploca LanguageType(0x05FE) /* 'qps-ploca', qps is a reserved for local use code */ +#define LANGUAGE_qps_plocm LanguageType(0x09FF) /* 'qps-plocm', qps is a reserved for local use code */ + +#define LANGUAGE_ar_Ploc_SA_reserved LanguageType(0x4401) /* 'ar-Ploc-SA', 'Ploc'?? */ +#define LANGUAGE_ja_Ploc_JP_reserved LanguageType(0x0811) /* 'ja-Ploc-JP', 'Ploc'?? */ +#define LANGUAGE_pap_029_reserved LanguageType(0x0479) /* 'pap-029' */ +#define LANGUAGE_ar_145_reserved LanguageType(0x4801) /* 'ar-145' */ +#define LANGUAGE_es_419 LanguageType(0x580A) /* 'es-419', not reserved, used? */ /* Seems these values were used or reserved at one point of time ... */ -#define LANGUAGE_Neither_defined_nor_reserved_0x007B 0x007B -#define LANGUAGE_Neither_defined_nor_reserved_0x007D 0x007D -#define LANGUAGE_Neither_defined_nor_reserved_0x0089 0x0089 -#define LANGUAGE_Neither_defined_nor_reserved_0x008A 0x008A -#define LANGUAGE_Neither_defined_nor_reserved_0x008B 0x008B -#define LANGUAGE_Neither_defined_nor_reserved_0x008D 0x008D -#define LANGUAGE_Neither_defined_nor_reserved_0x008E 0x008E -#define LANGUAGE_Neither_defined_nor_reserved_0x008F 0x008F -#define LANGUAGE_Neither_defined_nor_reserved_0x0090 0x0090 -#define LANGUAGE_Neither_defined_nor_reserved_0x0827 0x0827 -#define LANGUAGE_Neither_defined_nor_reserved_0x1C0C 0x1C0C -#define LANGUAGE_Neither_defined_nor_reserved_0x2008 0x2008 +#define LANGUAGE_Neither_defined_nor_reserved_0x007B LanguageType(0x007B) +#define LANGUAGE_Neither_defined_nor_reserved_0x007D LanguageType(0x007D) +#define LANGUAGE_Neither_defined_nor_reserved_0x0089 LanguageType(0x0089) +#define LANGUAGE_Neither_defined_nor_reserved_0x008A LanguageType(0x008A) +#define LANGUAGE_Neither_defined_nor_reserved_0x008B LanguageType(0x008B) +#define LANGUAGE_Neither_defined_nor_reserved_0x008D LanguageType(0x008D) +#define LANGUAGE_Neither_defined_nor_reserved_0x008E LanguageType(0x008E) +#define LANGUAGE_Neither_defined_nor_reserved_0x008F LanguageType(0x008F) +#define LANGUAGE_Neither_defined_nor_reserved_0x0090 LanguageType(0x0090) +#define LANGUAGE_Neither_defined_nor_reserved_0x0827 LanguageType(0x0827) +#define LANGUAGE_Neither_defined_nor_reserved_0x1C0C LanguageType(0x1C0C) +#define LANGUAGE_Neither_defined_nor_reserved_0x2008 LanguageType(0x2008) /*! use only for import/export of MS documents, number formatter maps it to *! LANGUAGE_SYSTEM and then to effective system language */ -#define LANGUAGE_SYSTEM_DEFAULT 0x0800 +#define LANGUAGE_SYSTEM_DEFAULT LanguageType(0x0800) /*! use only for import/export of MS documents, number formatter maps it to *! LANGUAGE_SYSTEM and then to effective system language */ -#define LANGUAGE_PROCESS_OR_USER_DEFAULT 0x0400 +#define LANGUAGE_PROCESS_OR_USER_DEFAULT LanguageType(0x0400) /* And now the extensions we define, @@ -511,215 +519,215 @@ typedef unsigned short LanguageType; * that such a mapping exists in i18nlangtag/source/isolang/isolang.cxx, but * mapping ISO back to LANGID will return the new value. */ -#define LANGUAGE_OBSOLETE_USER_LATIN 0x0610 -#define LANGUAGE_USER_LATIN LANGUAGE_LATIN_LSO -#define LANGUAGE_USER_LATIN_VATICAN 0x8076 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_LATIN_LSO)) */ -#define LANGUAGE_USER_ESPERANTO 0x0611 /* no locale possible */ -#define LANGUAGE_USER_INTERLINGUA 0x0612 /* no locale, but conventions */ -#define LANGUAGE_OBSOLETE_USER_MAORI 0x0620 -#define LANGUAGE_USER_MAORI LANGUAGE_MAORI_NEW_ZEALAND -#define LANGUAGE_OBSOLETE_USER_KINYARWANDA 0x0621 -#define LANGUAGE_USER_KINYARWANDA LANGUAGE_KINYARWANDA_RWANDA +#define LANGUAGE_OBSOLETE_USER_LATIN LanguageType(0x0610) +#define LANGUAGE_USER_LATIN LanguageType(LANGUAGE_LATIN_LSO) +#define LANGUAGE_USER_LATIN_VATICAN LanguageType(0x8076) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_LATIN_LSO)) */ +#define LANGUAGE_USER_ESPERANTO LanguageType(0x0611) /* no locale possible */ +#define LANGUAGE_USER_INTERLINGUA LanguageType(0x0612) /* no locale, but conventions */ +#define LANGUAGE_OBSOLETE_USER_MAORI LanguageType(0x0620) +#define LANGUAGE_USER_MAORI LanguageType(LANGUAGE_MAORI_NEW_ZEALAND) +#define LANGUAGE_OBSOLETE_USER_KINYARWANDA LanguageType(0x0621) +#define LANGUAGE_USER_KINYARWANDA LanguageType(LANGUAGE_KINYARWANDA_RWANDA) /* was reserved for Northern Sotho but never used: 0x0622 */ /* obsoleted by LANGUAGE_SEPEDI */ -#define LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN 0x0623 -#define LANGUAGE_USER_UPPER_SORBIAN LANGUAGE_UPPER_SORBIAN_GERMANY -#define LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN 0x0624 -#define LANGUAGE_USER_LOWER_SORBIAN LANGUAGE_LOWER_SORBIAN_GERMANY -#define LANGUAGE_OBSOLETE_USER_OCCITAN 0x0625 -#define LANGUAGE_USER_OCCITAN LANGUAGE_OCCITAN_FRANCE /* reserved to languedocian */ - -#define LANGUAGE_USER_KOREAN_NORTH 0x8012 /* North Korean as opposed to South Korean, makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KOREAN)) */ -#define LANGUAGE_USER_KURDISH_TURKEY 0x0626 /* sublang 0x01, Latin script */ -#define LANGUAGE_USER_KURDISH_SYRIA 0x0A26 /* sublang 0x02, Latin script */ -#define LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ 0x0E26 /* sublang 0x03, Arabic script */ -#define LANGUAGE_USER_KURDISH_IRAQ LANGUAGE_KURDISH_ARABIC_IRAQ -#define LANGUAGE_USER_KURDISH_IRAN 0x1226 /* sublang 0x04, Arabic script */ -#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ 0x8092 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */ -#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAN 0x8492 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */ -#define LANGUAGE_USER_SARDINIAN 0x0627 +#define LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN LanguageType(0x0623) +#define LANGUAGE_USER_UPPER_SORBIAN LanguageType(LANGUAGE_UPPER_SORBIAN_GERMANY) +#define LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN LanguageType(0x0624) +#define LANGUAGE_USER_LOWER_SORBIAN LanguageType(LANGUAGE_LOWER_SORBIAN_GERMANY) +#define LANGUAGE_OBSOLETE_USER_OCCITAN LanguageType(0x0625) +#define LANGUAGE_USER_OCCITAN LanguageType(LANGUAGE_OCCITAN_FRANCE) /* reserved to languedocian */ + +#define LANGUAGE_USER_KOREAN_NORTH LanguageType(0x8012) /* North Korean as opposed to South Korean, makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KOREAN)) */ +#define LANGUAGE_USER_KURDISH_TURKEY LanguageType(0x0626) /* sublang 0x01, Latin script */ +#define LANGUAGE_USER_KURDISH_SYRIA LanguageType(0x0A26) /* sublang 0x02, Latin script */ +#define LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ LanguageType(0x0E26) /* sublang 0x03, Arabic script */ +#define LANGUAGE_USER_KURDISH_IRAQ LanguageType(LANGUAGE_KURDISH_ARABIC_IRAQ) +#define LANGUAGE_USER_KURDISH_IRAN LanguageType(0x1226) /* sublang 0x04, Arabic script */ +#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ LanguageType(0x8092) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */ +#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAN LanguageType(0x8492) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */ +#define LANGUAGE_USER_SARDINIAN LanguageType(0x0627) /* was reserved for Dzongkha but turned down with #i53497#: 0x0628 */ /* obsoleted by LANGUAGE_DZONGKHA_BHUTAN */ -#define LANGUAGE_USER_DZONGKHA_MAP_LONLY 0xF851 /* to map "dz" only, because of the MS error, and preserve CTL information, sub 0x3e */ -#define LANGUAGE_USER_SWAHILI_TANZANIA 0x8041 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SWAHILI)) */ -#define LANGUAGE_OBSOLETE_USER_BRETON 0x0629 -#define LANGUAGE_USER_BRETON LANGUAGE_BRETON_FRANCE -#define LANGUAGE_OBSOLETE_USER_KALAALLISUT 0x062A -#define LANGUAGE_USER_KALAALLISUT LANGUAGE_KALAALLISUT_GREENLAND -#define LANGUAGE_USER_SWAZI 0x062B -#define LANGUAGE_USER_NDEBELE_SOUTH 0x062C -#define LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA 0x8032 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TSWANA)) */ -#define LANGUAGE_USER_TSWANA_BOTSWANA LANGUAGE_TSWANA_BOTSWANA -#define LANGUAGE_USER_MOORE 0x062D -#define LANGUAGE_USER_BAMBARA 0x062E -#define LANGUAGE_USER_AKAN 0x062F -#define LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH 0x0630 -#define LANGUAGE_USER_LUXEMBOURGISH LANGUAGE_LUXEMBOURGISH_LUXEMBOURG -#define LANGUAGE_USER_FRIULIAN 0x0631 -#define LANGUAGE_USER_FIJIAN 0x0632 -#define LANGUAGE_USER_AFRIKAANS_NAMIBIA 0x8036 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_AFRIKAANS)) */ -#define LANGUAGE_USER_ENGLISH_NAMIBIA 0x8009 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */ -#define LANGUAGE_USER_WALLOON 0x0633 -#define LANGUAGE_USER_COPTIC 0x0634 -#define LANGUAGE_USER_CHUVASH 0x0635 -#define LANGUAGE_USER_GASCON 0x0636 /* Gascon France */ -#define LANGUAGE_USER_GERMAN_BELGIUM 0x8007 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_GERMAN)) */ -#define LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN 0x8003 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_CATALAN)) */ -#define LANGUAGE_USER_CATALAN_VALENCIAN LANGUAGE_CATALAN_VALENCIAN -#define LANGUAGE_USER_HAUSA_GHANA 0x8068 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HAUSA_NIGERIA)) */ -#define LANGUAGE_USER_EWE_GHANA 0x0637 -#define LANGUAGE_USER_ENGLISH_GHANA 0x8409 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */ -#define LANGUAGE_USER_TAGALOG 0x0638 -#define LANGUAGE_USER_LINGALA_DRCONGO 0x0639 -#define LANGUAGE_USER_SANGO 0x063A -#define LANGUAGE_USER_GANDA 0x063B -#define LANGUAGE_USER_LOW_GERMAN 0x063C -#define LANGUAGE_USER_HILIGAYNON 0x063D -#define LANGUAGE_USER_NYANJA 0x063E -#define LANGUAGE_USER_KASHUBIAN 0x063F -#define LANGUAGE_OBSOLETE_USER_SPANISH_CUBA 0x800A /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SPANISH)) */ -#define LANGUAGE_USER_SPANISH_CUBA LANGUAGE_SPANISH_CUBA -#define LANGUAGE_USER_TETUN 0x0640 -#define LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA 0x0641 -#define LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA 0x0642 -#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA 0x8C1A /* makeLangID( 0x20+0x03, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */ -#define LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA LANGUAGE_SERBIAN_CYRILLIC_SERBIA -#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA 0x881A /* makeLangID( 0x20+0x02, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */ -#define LANGUAGE_USER_SERBIAN_LATIN_SERBIA LANGUAGE_SERBIAN_LATIN_SERBIA -#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO 0xCC1A /* makeLangID( 0x20+0x13, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */ -#define LANGUAGE_USER_SERBIAN_CYRILLIC_MONTENEGRO LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO -#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO 0xC81A /* makeLangID( 0x20+0x12, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */ -#define LANGUAGE_USER_SERBIAN_LATIN_MONTENEGRO LANGUAGE_SERBIAN_LATIN_MONTENEGRO -#define LANGUAGE_USER_SAMI_KILDIN_RUSSIA 0x803B /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */ -#define LANGUAGE_USER_BODO_INDIA 0x0643 -#define LANGUAGE_USER_DOGRI_INDIA 0x0644 -#define LANGUAGE_USER_MAITHILI_INDIA 0x0645 -#define LANGUAGE_USER_SANTALI_INDIA 0x0646 -#define LANGUAGE_USER_TETUN_TIMOR_LESTE 0x0A40 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_TETUN)) */ -#define LANGUAGE_USER_TOK_PISIN 0x0647 -#define LANGUAGE_USER_SHUSWAP 0x0648 -#define LANGUAGE_USER_ARABIC_CHAD 0x8001 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_COMOROS 0x8401 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_DJIBOUTI 0x8801 /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_ERITREA 0x8C01 /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_ISRAEL 0x9001 /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_MAURITANIA 0x9401 /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_PALESTINE 0x9801 /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_SOMALIA 0x9C01 /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ARABIC_SUDAN 0xA001 /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ -#define LANGUAGE_USER_ANCIENT_GREEK 0x0649 -#define LANGUAGE_USER_ASTURIAN 0x064A -#define LANGUAGE_USER_LATGALIAN 0x064B -#define LANGUAGE_USER_MAORE 0x064C -#define LANGUAGE_USER_BUSHI 0x064D -#define LANGUAGE_USER_TAHITIAN 0x064E -#define LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU 0x064F -#define LANGUAGE_USER_MALAGASY_PLATEAU LANGUAGE_MALAGASY_PLATEAU -#define LANGUAGE_USER_PAPIAMENTU_ARUBA 0x8079 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */ -#define LANGUAGE_USER_SARDINIAN_CAMPIDANESE 0x0650 -#define LANGUAGE_USER_SARDINIAN_GALLURESE 0x0651 -#define LANGUAGE_USER_SARDINIAN_LOGUDORESE 0x0652 -#define LANGUAGE_USER_SARDINIAN_SASSARESE 0x0653 -#define LANGUAGE_USER_BAFIA 0x0654 -#define LANGUAGE_USER_GIKUYU 0x0655 -#define LANGUAGE_USER_RUSYN_UKRAINE 0x0656 -#define LANGUAGE_USER_RUSYN_SLOVAKIA 0x8256 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_RUSYN_UKRAINE)) */ -#define LANGUAGE_USER_YIDDISH_US 0x803D /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_YIDDISH)) */ -#define LANGUAGE_USER_LIMBU 0x0657 -#define LANGUAGE_USER_LOJBAN 0x0658 /* no locale */ -#define LANGUAGE_OBSOLETE_USER_KABYLE 0x0659 -#define LANGUAGE_USER_KABYLE LANGUAGE_TAMAZIGHT_LATIN_ALGERIA -#define LANGUAGE_USER_HAITIAN 0x065A -#define LANGUAGE_USER_BEEMBE 0x065B -#define LANGUAGE_USER_BEKWEL 0x065C -#define LANGUAGE_USER_KITUBA 0x065D -#define LANGUAGE_USER_LARI 0x065E -#define LANGUAGE_USER_MBOCHI 0x065F -#define LANGUAGE_USER_TEKE_IBALI 0x0660 -#define LANGUAGE_USER_TEKE_TYEE 0x0661 -#define LANGUAGE_USER_VILI 0x0662 -#define LANGUAGE_USER_PORTUGUESE_ANGOLA 0x8016 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PORTUGUESE)) */ -#define LANGUAGE_USER_MANX 0x0663 -#define LANGUAGE_USER_TEKE_EBOO 0x0664 -#define LANGUAGE_USER_ARAGONESE 0x0665 -#define LANGUAGE_USER_KEYID 0x0666 /* key id pseudolanguage */ -#define LANGUAGE_USER_PALI_LATIN 0x0667 -#define LANGUAGE_USER_KYRGYZ_CHINA 0x0668 /* not derived from LANGUAGE_KIRGHIZ as these may be different scripts, see http://www.omniglot.com/writing/kirghiz.htm */ -#define LANGUAGE_USER_KOMI_ZYRIAN 0x0669 -#define LANGUAGE_USER_KOMI_PERMYAK 0x066A -#define LANGUAGE_USER_PITJANTJATJARA 0x066B -#define LANGUAGE_USER_ENGLISH_MALAWI 0x8809 /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ -#define LANGUAGE_USER_ERZYA 0x066C -#define LANGUAGE_USER_MARI_MEADOW 0x066D -#define LANGUAGE_USER_KHANTY 0x066E -#define LANGUAGE_USER_LIVONIAN 0x066F -#define LANGUAGE_USER_MOKSHA 0x0670 -#define LANGUAGE_USER_MARI_HILL 0x0671 -#define LANGUAGE_USER_NGANASAN 0x0672 -#define LANGUAGE_USER_OLONETS 0x0673 -#define LANGUAGE_USER_VEPS 0x0674 -#define LANGUAGE_USER_VORO 0x0675 -#define LANGUAGE_USER_NENETS 0x0676 -#define LANGUAGE_USER_PAPIAMENTU_CURACAO 0x8479 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */ -#define LANGUAGE_USER_PAPIAMENTU_BONAIRE 0x8879 /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */ -#define LANGUAGE_USER_AKA 0x0677 -#define LANGUAGE_USER_AKA_CONGO 0x8277 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_AKA)) */ -#define LANGUAGE_USER_DIBOLE 0x0678 -#define LANGUAGE_USER_DOONDO 0x0679 -#define LANGUAGE_USER_KAAMBA 0x067A -#define LANGUAGE_USER_KOONGO 0x067B -#define LANGUAGE_USER_KOONGO_CONGO 0x827B /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_KOONGO)) */ -#define LANGUAGE_USER_KUNYI 0x067C -#define LANGUAGE_USER_NGUNGWEL 0x067D -#define LANGUAGE_USER_NJYEM 0x067E -#define LANGUAGE_USER_NJYEM_CONGO 0x827E /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_NJYEM)) */ -#define LANGUAGE_USER_PUNU 0x067F -#define LANGUAGE_USER_PUNU_CONGO 0x827F /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_PUNU)) */ -#define LANGUAGE_USER_SUUNDI 0x0680 -#define LANGUAGE_USER_TEKE_KUKUYA 0x0681 -#define LANGUAGE_USER_TSAANGI 0x0682 -#define LANGUAGE_USER_YAKA 0x0683 -#define LANGUAGE_USER_YOMBE 0x0684 -#define LANGUAGE_USER_YOMBE_CONGO 0x8284 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_YOMBE)) */ -#define LANGUAGE_USER_SIDAMA 0x0685 -#define LANGUAGE_USER_NKO 0x0686 -#define LANGUAGE_USER_UDMURT 0x0687 -#define LANGUAGE_USER_TIBETAN_INDIA 0x8051 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TIBETAN)) */ -#define LANGUAGE_USER_CORNISH 0x0688 -#define LANGUAGE_USER_SAMI_PITE_SWEDEN 0x843B /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */ -#define LANGUAGE_USER_NGAEBERE 0x0689 -#define LANGUAGE_USER_ENGLISH_UK_OED 0x8C09 /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ -#define LANGUAGE_USER_KUMYK 0x068A -#define LANGUAGE_USER_NOGAI 0x068B -#define LANGUAGE_USER_KARAKALPAK_LATIN 0x068C -#define LANGUAGE_USER_LADIN 0x068D -#define LANGUAGE_USER_TIBETAN_BHUTAN 0x8451 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_TIBETAN)) */ -#define LANGUAGE_USER_FRENCH_BURKINA_FASO 0x800C /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_FRENCH)) */ -#define LANGUAGE_USER_PUINAVE 0x068E -#define LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN 0x068F -#define LANGUAGE_USER_AVAR 0x0690 -#define LANGUAGE_USER_CREE_PLAINS_LATIN 0x0691 -#define LANGUAGE_USER_CREE_PLAINS_SYLLABICS 0x8291 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_CREE_PLAINS_LATIN)) */ -#define LANGUAGE_USER_LENGO 0x0692 -#define LANGUAGE_USER_FRENCH_BENIN 0x840C /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_FRENCH)) */ -#define LANGUAGE_USER_FRENCH_NIGER 0x880C /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_FRENCH)) */ -#define LANGUAGE_USER_FRENCH_TOGO 0x8C0C /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_FRENCH)) */ -#define LANGUAGE_USER_KVEN_FINNISH 0x0693 -#define LANGUAGE_USER_CHURCH_SLAVIC 0x0694 -#define LANGUAGE_USER_VENETIAN 0x0695 -#define LANGUAGE_USER_ENGLISH_GAMBIA 0x9009 /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ -#define LANGUAGE_USER_OCCITAN_ARANESE 0x8082 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_OCCITAN_FRANCE)) */ -#define LANGUAGE_USER_ENGLISH_UK_OXENDICT 0x9409 /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ -#define LANGUAGE_USER_ARPITAN_FRANCE 0x0696 -#define LANGUAGE_USER_ARPITAN_ITALY 0x0A96 /* makeLangID( 0x02, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */ -#define LANGUAGE_USER_ARPITAN_SWITZERLAND 0x0E96 /* makeLangID( 0x03, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */ -#define LANGUAGE_USER_ENGLISH_BOTSWANA 0x9809 /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ -#define LANGUAGE_USER_INTERLINGUE 0x0697 /* no locale */ -#define LANGUAGE_USER_APATANI 0x0698 -#define LANGUAGE_USER_ENGLISH_MAURITIUS 0x9C09 /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ -#define LANGUAGE_USER_FRENCH_MAURITIUS 0x900C /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_FRENCH)) */ -#define LANGUAGE_USER_SILESIAN 0x0699 -#define LANGUAGE_USER_HUNGARIAN_ROVAS 0x800E /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HUNGARIAN)) */ -#define LANGUAGE_USER_MANCHU 0x069A -#define LANGUAGE_USER_XIBE 0x069B +#define LANGUAGE_USER_DZONGKHA_MAP_LONLY LanguageType(0xF851) /* to map "dz" only, because of the MS error, and preserve CTL information, sub 0x3e */ +#define LANGUAGE_USER_SWAHILI_TANZANIA LanguageType(0x8041) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SWAHILI)) */ +#define LANGUAGE_OBSOLETE_USER_BRETON LanguageType(0x0629) +#define LANGUAGE_USER_BRETON LanguageType(LANGUAGE_BRETON_FRANCE) +#define LANGUAGE_OBSOLETE_USER_KALAALLISUT LanguageType(0x062A) +#define LANGUAGE_USER_KALAALLISUT LanguageType(LANGUAGE_KALAALLISUT_GREENLAND) +#define LANGUAGE_USER_SWAZI LanguageType(0x062B) +#define LANGUAGE_USER_NDEBELE_SOUTH LanguageType(0x062C) +#define LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA LanguageType(0x8032) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TSWANA)) */ +#define LANGUAGE_USER_TSWANA_BOTSWANA LanguageType(LANGUAGE_TSWANA_BOTSWANA) +#define LANGUAGE_USER_MOORE LanguageType(0x062D) +#define LANGUAGE_USER_BAMBARA LanguageType(0x062E) +#define LANGUAGE_USER_AKAN LanguageType(0x062F) +#define LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH LanguageType(0x0630) +#define LANGUAGE_USER_LUXEMBOURGISH LanguageType(LANGUAGE_LUXEMBOURGISH_LUXEMBOURG) +#define LANGUAGE_USER_FRIULIAN LanguageType(0x0631) +#define LANGUAGE_USER_FIJIAN LanguageType(0x0632) +#define LANGUAGE_USER_AFRIKAANS_NAMIBIA LanguageType(0x8036) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_AFRIKAANS)) */ +#define LANGUAGE_USER_ENGLISH_NAMIBIA LanguageType(0x8009) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */ +#define LANGUAGE_USER_WALLOON LanguageType(0x0633) +#define LANGUAGE_USER_COPTIC LanguageType(0x0634) +#define LANGUAGE_USER_CHUVASH LanguageType(0x0635) +#define LANGUAGE_USER_GASCON LanguageType(0x0636) /* Gascon France */ +#define LANGUAGE_USER_GERMAN_BELGIUM LanguageType(0x8007) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_GERMAN)) */ +#define LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN LanguageType(0x8003) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_CATALAN)) */ +#define LANGUAGE_USER_CATALAN_VALENCIAN LanguageType(LANGUAGE_CATALAN_VALENCIAN) +#define LANGUAGE_USER_HAUSA_GHANA LanguageType(0x8068) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HAUSA_NIGERIA)) */ +#define LANGUAGE_USER_EWE_GHANA LanguageType(0x0637) +#define LANGUAGE_USER_ENGLISH_GHANA LanguageType(0x8409) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */ +#define LANGUAGE_USER_TAGALOG LanguageType(0x0638) +#define LANGUAGE_USER_LINGALA_DRCONGO LanguageType(0x0639) +#define LANGUAGE_USER_SANGO LanguageType(0x063A) +#define LANGUAGE_USER_GANDA LanguageType(0x063B) +#define LANGUAGE_USER_LOW_GERMAN LanguageType(0x063C) +#define LANGUAGE_USER_HILIGAYNON LanguageType(0x063D) +#define LANGUAGE_USER_NYANJA LanguageType(0x063E) +#define LANGUAGE_USER_KASHUBIAN LanguageType(0x063F) +#define LANGUAGE_OBSOLETE_USER_SPANISH_CUBA LanguageType(0x800A) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SPANISH)) */ +#define LANGUAGE_USER_SPANISH_CUBA LanguageType(LANGUAGE_SPANISH_CUBA) +#define LANGUAGE_USER_TETUN LanguageType(0x0640) +#define LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA LanguageType(0x0641) +#define LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA LanguageType(0x0642) +#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA LanguageType(0x8C1A) /* makeLangID( 0x20+0x03, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */ +#define LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA LanguageType(LANGUAGE_SERBIAN_CYRILLIC_SERBIA) +#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA LanguageType(0x881A) /* makeLangID( 0x20+0x02, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */ +#define LANGUAGE_USER_SERBIAN_LATIN_SERBIA LanguageType(LANGUAGE_SERBIAN_LATIN_SERBIA) +#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO LanguageType(0xCC1A) /* makeLangID( 0x20+0x13, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */ +#define LANGUAGE_USER_SERBIAN_CYRILLIC_MONTENEGRO LanguageType(LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO) +#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO LanguageType(0xC81A) /* makeLangID( 0x20+0x12, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */ +#define LANGUAGE_USER_SERBIAN_LATIN_MONTENEGRO LanguageType(LANGUAGE_SERBIAN_LATIN_MONTENEGRO) +#define LANGUAGE_USER_SAMI_KILDIN_RUSSIA LanguageType(0x803B) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */ +#define LANGUAGE_USER_BODO_INDIA LanguageType(0x0643) +#define LANGUAGE_USER_DOGRI_INDIA LanguageType(0x0644) +#define LANGUAGE_USER_MAITHILI_INDIA LanguageType(0x0645) +#define LANGUAGE_USER_SANTALI_INDIA LanguageType(0x0646) +#define LANGUAGE_USER_TETUN_TIMOR_LESTE LanguageType(0x0A40) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_TETUN)) */ +#define LANGUAGE_USER_TOK_PISIN LanguageType(0x0647) +#define LANGUAGE_USER_SHUSWAP LanguageType(0x0648) +#define LANGUAGE_USER_ARABIC_CHAD LanguageType(0x8001) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_COMOROS LanguageType(0x8401) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_DJIBOUTI LanguageType(0x8801) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_ERITREA LanguageType(0x8C01) /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_ISRAEL LanguageType(0x9001) /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_MAURITANIA LanguageType(0x9401) /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_PALESTINE LanguageType(0x9801) /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_SOMALIA LanguageType(0x9C01) /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ARABIC_SUDAN LanguageType(0xA001) /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */ +#define LANGUAGE_USER_ANCIENT_GREEK LanguageType(0x0649) +#define LANGUAGE_USER_ASTURIAN LanguageType(0x064A) +#define LANGUAGE_USER_LATGALIAN LanguageType(0x064B) +#define LANGUAGE_USER_MAORE LanguageType(0x064C) +#define LANGUAGE_USER_BUSHI LanguageType(0x064D) +#define LANGUAGE_USER_TAHITIAN LanguageType(0x064E) +#define LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU LanguageType(0x064F) +#define LANGUAGE_USER_MALAGASY_PLATEAU LanguageType(LANGUAGE_MALAGASY_PLATEAU) +#define LANGUAGE_USER_PAPIAMENTU_ARUBA LanguageType(0x8079) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */ +#define LANGUAGE_USER_SARDINIAN_CAMPIDANESE LanguageType(0x0650) +#define LANGUAGE_USER_SARDINIAN_GALLURESE LanguageType(0x0651) +#define LANGUAGE_USER_SARDINIAN_LOGUDORESE LanguageType(0x0652) +#define LANGUAGE_USER_SARDINIAN_SASSARESE LanguageType(0x0653) +#define LANGUAGE_USER_BAFIA LanguageType(0x0654) +#define LANGUAGE_USER_GIKUYU LanguageType(0x0655) +#define LANGUAGE_USER_RUSYN_UKRAINE LanguageType(0x0656) +#define LANGUAGE_USER_RUSYN_SLOVAKIA LanguageType(0x8256) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_RUSYN_UKRAINE)) */ +#define LANGUAGE_USER_YIDDISH_US LanguageType(0x803D) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_YIDDISH)) */ +#define LANGUAGE_USER_LIMBU LanguageType(0x0657) +#define LANGUAGE_USER_LOJBAN LanguageType(0x0658) /* no locale */ +#define LANGUAGE_OBSOLETE_USER_KABYLE LanguageType(0x0659) +#define LANGUAGE_USER_KABYLE LanguageType(LANGUAGE_TAMAZIGHT_LATIN_ALGERIA) +#define LANGUAGE_USER_HAITIAN LanguageType(0x065A) +#define LANGUAGE_USER_BEEMBE LanguageType(0x065B) +#define LANGUAGE_USER_BEKWEL LanguageType(0x065C) +#define LANGUAGE_USER_KITUBA LanguageType(0x065D) +#define LANGUAGE_USER_LARI LanguageType(0x065E) +#define LANGUAGE_USER_MBOCHI LanguageType(0x065F) +#define LANGUAGE_USER_TEKE_IBALI LanguageType(0x0660) +#define LANGUAGE_USER_TEKE_TYEE LanguageType(0x0661) +#define LANGUAGE_USER_VILI LanguageType(0x0662) +#define LANGUAGE_USER_PORTUGUESE_ANGOLA LanguageType(0x8016) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PORTUGUESE)) */ +#define LANGUAGE_USER_MANX LanguageType(0x0663) +#define LANGUAGE_USER_TEKE_EBOO LanguageType(0x0664) +#define LANGUAGE_USER_ARAGONESE LanguageType(0x0665) +#define LANGUAGE_USER_KEYID LanguageType(0x0666) /* key id pseudolanguage */ +#define LANGUAGE_USER_PALI_LATIN LanguageType(0x0667) +#define LANGUAGE_USER_KYRGYZ_CHINA LanguageType(0x0668) /* not derived from LANGUAGE_KIRGHIZ as these may be different scripts, see http://www.omniglot.com/writing/kirghiz.htm */ +#define LANGUAGE_USER_KOMI_ZYRIAN LanguageType(0x0669) +#define LANGUAGE_USER_KOMI_PERMYAK LanguageType(0x066A) +#define LANGUAGE_USER_PITJANTJATJARA LanguageType(0x066B) +#define LANGUAGE_USER_ENGLISH_MALAWI LanguageType(0x8809) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ +#define LANGUAGE_USER_ERZYA LanguageType(0x066C) +#define LANGUAGE_USER_MARI_MEADOW LanguageType(0x066D) +#define LANGUAGE_USER_KHANTY LanguageType(0x066E) +#define LANGUAGE_USER_LIVONIAN LanguageType(0x066F) +#define LANGUAGE_USER_MOKSHA LanguageType(0x0670) +#define LANGUAGE_USER_MARI_HILL LanguageType(0x0671) +#define LANGUAGE_USER_NGANASAN LanguageType(0x0672) +#define LANGUAGE_USER_OLONETS LanguageType(0x0673) +#define LANGUAGE_USER_VEPS LanguageType(0x0674) +#define LANGUAGE_USER_VORO LanguageType(0x0675) +#define LANGUAGE_USER_NENETS LanguageType(0x0676) +#define LANGUAGE_USER_PAPIAMENTU_CURACAO LanguageType(0x8479) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */ +#define LANGUAGE_USER_PAPIAMENTU_BONAIRE LanguageType(0x8879) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */ +#define LANGUAGE_USER_AKA LanguageType(0x0677) +#define LANGUAGE_USER_AKA_CONGO LanguageType(0x8277) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_AKA)) */ +#define LANGUAGE_USER_DIBOLE LanguageType(0x0678) +#define LANGUAGE_USER_DOONDO LanguageType(0x0679) +#define LANGUAGE_USER_KAAMBA LanguageType(0x067A) +#define LANGUAGE_USER_KOONGO LanguageType(0x067B) +#define LANGUAGE_USER_KOONGO_CONGO LanguageType(0x827B) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_KOONGO)) */ +#define LANGUAGE_USER_KUNYI LanguageType(0x067C) +#define LANGUAGE_USER_NGUNGWEL LanguageType(0x067D) +#define LANGUAGE_USER_NJYEM LanguageType(0x067E) +#define LANGUAGE_USER_NJYEM_CONGO LanguageType(0x827E) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_NJYEM)) */ +#define LANGUAGE_USER_PUNU LanguageType(0x067F) +#define LANGUAGE_USER_PUNU_CONGO LanguageType(0x827F) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_PUNU)) */ +#define LANGUAGE_USER_SUUNDI LanguageType(0x0680) +#define LANGUAGE_USER_TEKE_KUKUYA LanguageType(0x0681) +#define LANGUAGE_USER_TSAANGI LanguageType(0x0682) +#define LANGUAGE_USER_YAKA LanguageType(0x0683) +#define LANGUAGE_USER_YOMBE LanguageType(0x0684) +#define LANGUAGE_USER_YOMBE_CONGO LanguageType(0x8284) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_YOMBE)) */ +#define LANGUAGE_USER_SIDAMA LanguageType(0x0685) +#define LANGUAGE_USER_NKO LanguageType(0x0686) +#define LANGUAGE_USER_UDMURT LanguageType(0x0687) +#define LANGUAGE_USER_TIBETAN_INDIA LanguageType(0x8051) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TIBETAN)) */ +#define LANGUAGE_USER_CORNISH LanguageType(0x0688) +#define LANGUAGE_USER_SAMI_PITE_SWEDEN LanguageType(0x843B) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */ +#define LANGUAGE_USER_NGAEBERE LanguageType(0x0689) +#define LANGUAGE_USER_ENGLISH_UK_OED LanguageType(0x8C09) /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ +#define LANGUAGE_USER_KUMYK LanguageType(0x068A) +#define LANGUAGE_USER_NOGAI LanguageType(0x068B) +#define LANGUAGE_USER_KARAKALPAK_LATIN LanguageType(0x068C) +#define LANGUAGE_USER_LADIN LanguageType(0x068D) +#define LANGUAGE_USER_TIBETAN_BHUTAN LanguageType(0x8451) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_TIBETAN)) */ +#define LANGUAGE_USER_FRENCH_BURKINA_FASO LanguageType(0x800C) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_FRENCH)) */ +#define LANGUAGE_USER_PUINAVE LanguageType(0x068E) +#define LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN LanguageType(0x068F) +#define LANGUAGE_USER_AVAR LanguageType(0x0690) +#define LANGUAGE_USER_CREE_PLAINS_LATIN LanguageType(0x0691) +#define LANGUAGE_USER_CREE_PLAINS_SYLLABICS LanguageType(0x8291) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_CREE_PLAINS_LATIN)) */ +#define LANGUAGE_USER_LENGO LanguageType(0x0692) +#define LANGUAGE_USER_FRENCH_BENIN LanguageType(0x840C) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_FRENCH)) */ +#define LANGUAGE_USER_FRENCH_NIGER LanguageType(0x880C) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_FRENCH)) */ +#define LANGUAGE_USER_FRENCH_TOGO LanguageType(0x8C0C) /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_FRENCH)) */ +#define LANGUAGE_USER_KVEN_FINNISH LanguageType(0x0693) +#define LANGUAGE_USER_CHURCH_SLAVIC LanguageType(0x0694) +#define LANGUAGE_USER_VENETIAN LanguageType(0x0695) +#define LANGUAGE_USER_ENGLISH_GAMBIA LanguageType(0x9009) /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ +#define LANGUAGE_USER_OCCITAN_ARANESE LanguageType(0x8082) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_OCCITAN_FRANCE)) */ +#define LANGUAGE_USER_ENGLISH_UK_OXENDICT LanguageType(0x9409) /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ +#define LANGUAGE_USER_ARPITAN_FRANCE LanguageType(0x0696) +#define LANGUAGE_USER_ARPITAN_ITALY LanguageType(0x0A96) /* makeLangID( 0x02, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */ +#define LANGUAGE_USER_ARPITAN_SWITZERLAND LanguageType(0x0E96) /* makeLangID( 0x03, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */ +#define LANGUAGE_USER_ENGLISH_BOTSWANA LanguageType(0x9809) /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ +#define LANGUAGE_USER_INTERLINGUE LanguageType(0x0697) /* no locale */ +#define LANGUAGE_USER_APATANI LanguageType(0x0698) +#define LANGUAGE_USER_ENGLISH_MAURITIUS LanguageType(0x9C09) /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ +#define LANGUAGE_USER_FRENCH_MAURITIUS LanguageType(0x900C) /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_FRENCH)) */ +#define LANGUAGE_USER_SILESIAN LanguageType(0x0699) +#define LANGUAGE_USER_HUNGARIAN_ROVAS LanguageType(0x800E) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HUNGARIAN)) */ +#define LANGUAGE_USER_MANCHU LanguageType(0x069A) +#define LANGUAGE_USER_XIBE LanguageType(0x069B) /* XXX Add new user defined LCIDs ^^^ there. @@ -727,20 +735,21 @@ typedef unsigned short LanguageType; /* Primary language ID range for on-the-fly assignment. */ -#define LANGUAGE_ON_THE_FLY_START 0x03E0 -#define LANGUAGE_ON_THE_FLY_END 0x03FE +#define LANGUAGE_ON_THE_FLY_START LanguageType(0x03E0) +#define LANGUAGE_ON_THE_FLY_END LanguageType(0x03FE) /* Sublanguage ID range for on-the-fly assignment. */ -#define LANGUAGE_ON_THE_FLY_SUB_START 0x01 -#define LANGUAGE_ON_THE_FLY_SUB_END 0x3E +#define LANGUAGE_ON_THE_FLY_SUB_START LanguageType(0x01) +#define LANGUAGE_ON_THE_FLY_SUB_END LanguageType(0x3E) /* 0xFFE0 to 0xFFFF reserved for privateuse and specials. */ -#define LANGUAGE_USER_PRIV_JOKER 0xFFEB /* privateuse "*" (sic! bad! nasty!), primary 0x3eb, sub 0x3f */ -#define LANGUAGE_USER_PRIV_COMMENT 0xFFEC /* privateuse "x-comment", primary 0x3ec, sub 0x3f */ -#define LANGUAGE_USER_PRIV_DEFAULT 0xFFED /* privateuse "x-default", primary 0x3ed, sub 0x3f */ -#define LANGUAGE_USER_PRIV_NOTRANSLATE 0xFFEE /* privateuse "x-no-translate" (sic!), primary 0x3ee, sub 0x3f */ -#define LANGUAGE_MULTIPLE 0xFFEF /* multiple languages, primary 0x3ef, sub 0x3f */ -#define LANGUAGE_UNDETERMINED 0xFFF0 /* undetermined language, primary 0x3f0, sub 0x3f */ -#define LANGUAGE_USER_SYSTEM_CONFIG 0xFFFE /* not a locale, to be used only in configuration context to obtain system default, primary 0x3fe, sub 0x3f */ +#define LANGUAGE_USER_PRIV_JOKER LanguageType(0xFFEB) /* privateuse "*" (sic! bad! nasty!), primary 0x3eb, sub 0x3f */ +#define LANGUAGE_USER_PRIV_COMMENT LanguageType(0xFFEC) /* privateuse "x-comment", primary 0x3ec, sub 0x3f */ +#define LANGUAGE_USER_PRIV_DEFAULT LanguageType(0xFFED) /* privateuse "x-default", primary 0x3ed, sub 0x3f */ +#define LANGUAGE_USER_PRIV_NOTRANSLATE LanguageType(0xFFEE) /* privateuse "x-no-translate" (sic!), primary 0x3ee, sub 0x3f */ +#define LANGUAGE_MULTIPLE LanguageType(0xFFEF) /* multiple languages, primary 0x3ef, sub 0x3f */ +#define LANGUAGE_UNDETERMINED LanguageType(0xFFF0) /* undetermined language, primary 0x3f0, sub 0x3f */ +#define LANGUAGE_USER_SYSTEM_CONFIG LanguageType(0xFFFE) /* not a locale, to be used only in configuration context to obtain system default, primary 0x3fe, sub 0x3f */ + #endif /* INCLUDED_I18NLANGTAG_LANG_H */ diff --git a/include/i18nlangtag/mslangid.hxx b/include/i18nlangtag/mslangid.hxx index 668be8c28d30..b38e01d829fc 100644 --- a/include/i18nlangtag/mslangid.hxx +++ b/include/i18nlangtag/mslangid.hxx @@ -40,19 +40,19 @@ public: /// Create a LangID from a primary and a sublanguage. static LanguageType makeLangID( LanguageType nSubLangId, LanguageType nPriLangId) { - return (nSubLangId << 10) | nPriLangId; + return LanguageType((sal_uInt16(nSubLangId) << 10) | sal_uInt16(nPriLangId)); } /// Get the primary language of a LangID. static LanguageType getPrimaryLanguage( LanguageType nLangID) { - return nLangID & LANGUAGE_MASK_PRIMARY; + return LanguageType(sal_uInt16(nLangID) & LANGUAGE_MASK_PRIMARY); } /// Get the sublanguage of a LangID. static LanguageType getSubLanguage( LanguageType nLangID) { - return (nLangID & ~LANGUAGE_MASK_PRIMARY) >> 10; + return LanguageType((sal_uInt16(nLangID) & ~LANGUAGE_MASK_PRIMARY) >> 10); } /** Language/locale of category LC_CTYPE (on Unix, else the system diff --git a/include/linguistic/hyphdta.hxx b/include/linguistic/hyphdta.hxx index 3fe0c76d4b69..b86d8cf8d78a 100644 --- a/include/linguistic/hyphdta.hxx +++ b/include/linguistic/hyphdta.hxx @@ -24,6 +24,7 @@ #include <com/sun/star/linguistic2/XPossibleHyphens.hpp> #include <cppuhelper/implbase.hxx> #include <linguistic/lngdllapi.h> +#include <i18nlangtag/lang.h> namespace linguistic { @@ -35,14 +36,14 @@ class HyphenatedWord : OUString aHyphenatedWord; sal_Int16 nHyphPos; sal_Int16 nHyphenationPos; - sal_uInt16 nLanguage; + LanguageType nLanguage; bool bIsAltSpelling; HyphenatedWord(const HyphenatedWord &) = delete; HyphenatedWord & operator = (const HyphenatedWord &) = delete; public: - HyphenatedWord(const OUString &rWord, sal_uInt16 nLang, sal_Int16 nHyphenationPos, + HyphenatedWord(const OUString &rWord, LanguageType nLang, sal_Int16 nHyphenationPos, const OUString &rHyphenatedWord, sal_Int16 nHyphenPos ); virtual ~HyphenatedWord() override; @@ -61,7 +62,7 @@ public: isAlternativeSpelling() override; static css::uno::Reference <css::linguistic2::XHyphenatedWord> LNG_DLLPUBLIC CreateHyphenatedWord( - const OUString &rWord, sal_Int16 nLang, sal_Int16 nHyphenationPos, + const OUString &rWord, LanguageType nLang, sal_Int16 nHyphenationPos, const OUString &rHyphenatedWord, sal_Int16 nHyphenPos ); }; @@ -75,13 +76,13 @@ class PossibleHyphens : OUString aWord; OUString aWordWithHyphens; css::uno::Sequence< sal_Int16 > aOrigHyphenPos; - sal_uInt16 nLanguage; + LanguageType nLanguage; PossibleHyphens(const PossibleHyphens &) = delete; PossibleHyphens & operator = (const PossibleHyphens &) = delete; public: - PossibleHyphens(const OUString &rWord, sal_uInt16 nLang, + PossibleHyphens(const OUString &rWord, LanguageType nLang, const OUString &rHyphWord, const css::uno::Sequence< sal_Int16 > &rPositions); virtual ~PossibleHyphens() override; @@ -97,7 +98,7 @@ public: getHyphenationPositions() override; static css::uno::Reference < css::linguistic2::XPossibleHyphens > LNG_DLLPUBLIC CreatePossibleHyphens - (const OUString &rWord, sal_Int16 nLang, + (const OUString &rWord, LanguageType nLang, const OUString &rHyphWord, const css::uno::Sequence< sal_Int16 > &rPositions); }; diff --git a/include/linguistic/misc.hxx b/include/linguistic/misc.hxx index b2a53bd3eadf..b65cd9bc9a92 100644 --- a/include/linguistic/misc.hxx +++ b/include/linguistic/misc.hxx @@ -106,7 +106,9 @@ LNG_DLLPUBLIC bool LinguIsUnspecified( LanguageType nLanguage ); tag string instead. */ LNG_DLLPUBLIC bool LinguIsUnspecified( const OUString & rBcp47 ); -css::uno::Sequence< sal_Int16 > +std::vector< LanguageType > + LocaleSeqToLangVec( css::uno::Sequence< css::lang::Locale > &rLocaleSeq ); +css::uno::Sequence<sal_Int16> LocaleSeqToLangSeq( css::uno::Sequence< css::lang::Locale > &rLocaleSeq ); // checks if file pointed to by rURL is readonly @@ -132,12 +134,12 @@ css::uno::Reference< css::linguistic2::XHyphenatedWord > css::uno::Reference< css::linguistic2::XHyphenatedWord > &rxHyphWord ); -LNG_DLLPUBLIC bool IsUpper( const OUString &rText, sal_Int32 nPos, sal_Int32 nLen, sal_Int16 nLanguage ); +LNG_DLLPUBLIC bool IsUpper( const OUString &rText, sal_Int32 nPos, sal_Int32 nLen, LanguageType nLanguage ); -inline bool IsUpper( const OUString &rText, sal_Int16 nLanguage ) { return IsUpper( rText, 0, rText.getLength(), nLanguage ); } +inline bool IsUpper( const OUString &rText, LanguageType nLanguage ) { return IsUpper( rText, 0, rText.getLength(), nLanguage ); } LNG_DLLPUBLIC CapType SAL_CALL capitalType(const OUString&, CharClass *); -OUString ToLower( const OUString &rText, sal_Int16 nLanguage ); +OUString ToLower( const OUString &rText, LanguageType nLanguage ); LNG_DLLPUBLIC bool HasDigits( const OUString &rText ); LNG_DLLPUBLIC bool IsNumeric( const OUString &rText ); @@ -157,13 +159,13 @@ css::uno::Reference< css::linguistic2::XDictionaryEntry > SearchDicList( const css::uno::Reference< css::linguistic2::XSearchableDictionaryList >& rDicList, - const OUString& rWord, sal_Int16 nLanguage, + const OUString& rWord, LanguageType nLanguage, bool bSearchPosDics, bool bSearchSpellEntry ); LNG_DLLPUBLIC DictionaryError AddEntryToDic( css::uno::Reference< css::linguistic2::XDictionary > &rxDic, const OUString &rWord, bool bIsNeg, - const OUString &rRplcTxt, sal_Int16 nRplcLang, + const OUString &rRplcTxt, bool bStripDot = true ); LNG_DLLPUBLIC bool SaveDictionaries( const css::uno::Reference< css::linguistic2::XSearchableDictionaryList > &xDicList ); diff --git a/include/linguistic/spelldta.hxx b/include/linguistic/spelldta.hxx index f38e836371ae..7c23c2cca1bf 100644 --- a/include/linguistic/spelldta.hxx +++ b/include/linguistic/spelldta.hxx @@ -26,6 +26,7 @@ #include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp> #include <cppuhelper/implbase.hxx> #include <linguistic/lngdllapi.h> +#include <i18nlangtag/lang.h> namespace com { namespace sun { namespace star { namespace linguistic2 { @@ -46,9 +47,9 @@ std::vector< OUString > void SeqRemoveNegEntries( std::vector< OUString > &rSeq, css::uno::Reference< css::linguistic2::XSearchableDictionaryList > &rxDicList, - sal_Int16 nLanguage ); + LanguageType nLanguage ); -void SearchSimilarText( const OUString &rText, sal_Int16 nLanguage, +void SearchSimilarText( const OUString &rText, LanguageType nLanguage, css::uno::Reference< css::linguistic2::XSearchableDictionaryList > &xDicList, std::vector< OUString > & rDicListProps ); @@ -63,11 +64,11 @@ class SpellAlternatives css::uno::Sequence< OUString > aAlt; // list of alternatives, may be empty. OUString aWord; sal_Int16 nType; // type of failure - sal_Int16 nLanguage; + LanguageType nLanguage; public: LNG_DLLPUBLIC SpellAlternatives(); - SpellAlternatives(const OUString &rWord, sal_Int16 nLang, + SpellAlternatives(const OUString &rWord, LanguageType nLang, const css::uno::Sequence< OUString > &rAlternatives ); virtual ~SpellAlternatives() override; SpellAlternatives(const SpellAlternatives&) = delete; @@ -85,11 +86,11 @@ public: virtual void SAL_CALL setFailureType( ::sal_Int16 nFailureType ) override; // non-interface specific functions - void LNG_DLLPUBLIC SetWordLanguage(const OUString &rWord, sal_Int16 nLang); + void LNG_DLLPUBLIC SetWordLanguage(const OUString &rWord, LanguageType nLang); void LNG_DLLPUBLIC SetFailureType(sal_Int16 nTypeP); void LNG_DLLPUBLIC SetAlternatives( const css::uno::Sequence< OUString > &rAlt ); static css::uno::Reference < css::linguistic2::XSpellAlternatives > LNG_DLLPUBLIC CreateSpellAlternatives( - const OUString &rWord, sal_Int16 nLang, sal_Int16 nTypeP, const css::uno::Sequence< OUString > &rAlt ); + const OUString &rWord, LanguageType nLang, sal_Int16 nTypeP, const css::uno::Sequence< OUString > &rAlt ); }; } // namespace linguistic diff --git a/include/o3tl/strong_int.hxx b/include/o3tl/strong_int.hxx index 588cab8e5472..ff2ba9123627 100644 --- a/include/o3tl/strong_int.hxx +++ b/include/o3tl/strong_int.hxx @@ -43,7 +43,7 @@ public: explicit constexpr strong_int(UNDERLYING_TYPE value) : m_value(value) {} strong_int() : m_value(0) {} - explicit operator UNDERLYING_TYPE() const { return m_value; } + explicit constexpr operator UNDERLYING_TYPE() const { return m_value; } explicit operator bool() const { return m_value != 0; } UNDERLYING_TYPE get() const { return m_value; } @@ -56,6 +56,15 @@ public: strong_int& operator++() { ++m_value; return *this; } strong_int operator++(int) { UNDERLYING_TYPE nOldValue = m_value; ++m_value; return strong_int(nOldValue); } + bool anyOf(strong_int v) const { + return *this == v; + } + + template<typename... Args> + bool anyOf(strong_int first, Args... args) const { + return *this == first || anyOf(args...); + } + private: UNDERLYING_TYPE m_value; }; diff --git a/include/svl/languageoptions.hxx b/include/svl/languageoptions.hxx index 99670809be7c..f386cb6b0e00 100644 --- a/include/svl/languageoptions.hxx +++ b/include/svl/languageoptions.hxx @@ -98,14 +98,14 @@ public: bool IsReadOnly(EOption eOption) const; // returns for a language the scripttype - static SvtScriptType GetScriptTypeOfLanguage( sal_uInt16 nLang ); + static SvtScriptType GetScriptTypeOfLanguage( LanguageType nLang ); // convert from css::i18n::ScriptType constants to SvtScriptType static SvtScriptType FromI18NToSvtScriptType( sal_Int16 nI18NType ); static sal_Int16 FromSvtScriptTypeToI18N( SvtScriptType nI18NType ); - static sal_Int16 GetI18NScriptTypeOfLanguage( sal_uInt16 nLang ); + static sal_Int16 GetI18NScriptTypeOfLanguage( LanguageType nLang ); }; diff --git a/include/svl/ondemand.hxx b/include/svl/ondemand.hxx index 3e14204a5846..b48523cd594d 100644 --- a/include/svl/ondemand.hxx +++ b/include/svl/ondemand.hxx @@ -96,28 +96,27 @@ public: void changeLocale( const LanguageTag& rLanguageTag ) { LanguageType eLang = rLanguageTag.getLanguageType( false); - switch ( eLang ) - { - case LANGUAGE_SYSTEM : + if ( eLang == LANGUAGE_SYSTEM ) pCurrent = pSystem; - break; - case LANGUAGE_ENGLISH_US : + else if ( eLang == LANGUAGE_ENGLISH_US ) + { if ( !pEnglish ) pEnglish = new LocaleDataWrapper( m_xContext, rLanguageTag ); pCurrent = pEnglish; - break; - default: - if ( !pAny ) - { - pAny = new LocaleDataWrapper( m_xContext, rLanguageTag ); - eLastAnyLanguage = eLang; - } - else if ( eLastAnyLanguage != eLang ) - { - pAny->setLanguageTag( rLanguageTag ); - eLastAnyLanguage = eLang; - } - pCurrent = pAny; + } + else + { + if ( !pAny ) + { + pAny = new LocaleDataWrapper( m_xContext, rLanguageTag ); + eLastAnyLanguage = eLang; + } + else if ( eLastAnyLanguage != eLang ) + { + pAny->setLanguageTag( rLanguageTag ); + eLastAnyLanguage = eLang; + } + pCurrent = pAny; } eCurrentLanguage = eLang; } diff --git a/include/svl/zforlist.hxx b/include/svl/zforlist.hxx index cdcd8a78d6e7..87e0291730cd 100644 --- a/include/svl/zforlist.hxx +++ b/include/svl/zforlist.hxx @@ -754,7 +754,7 @@ public: void GetCompatibilityCurrency( OUString& rSymbol, OUString& rAbbrev ) const; /// Fill rList with the language/country codes that have been allocated - void GetUsedLanguages( std::vector<sal_uInt16>& rList ); + void GetUsedLanguages( std::vector<LanguageType>& rList ); /// Fill a NfKeywordIndex table with keywords of a language/country void FillKeywordTable( NfKeywordTable& rKeywords, LanguageType eLang ); diff --git a/include/svx/langbox.hxx b/include/svx/langbox.hxx index ddf48e6472ec..d7a7f26e9a40 100644 --- a/include/svx/langbox.hxx +++ b/include/svx/langbox.hxx @@ -54,7 +54,7 @@ namespace o3tl } // load language strings from resource -SVX_DLLPUBLIC OUString GetDicInfoStr( const OUString& rName, const sal_uInt16 nLang, bool bNeg ); +SVX_DLLPUBLIC OUString GetDicInfoStr( const OUString& rName, const LanguageType nLang, bool bNeg ); class SVX_DLLPUBLIC SvxLanguageBoxBase { @@ -69,7 +69,7 @@ public: bool bHasLangNone, bool bLangNoneIsLangAll = false, bool bCheckSpellAvail = false ); - void AddLanguages( const css::uno::Sequence< sal_Int16 >& rLanguageTypes, SvxLanguageListFlags nLangList ); + void AddLanguages( const std::vector< LanguageType >& rLanguageTypes, SvxLanguageListFlags nLangList ); sal_Int32 InsertLanguage( const LanguageType eLangType ); void InsertDefaultLanguage( sal_Int16 nType ); diff --git a/include/unotools/lingucfg.hxx b/include/unotools/lingucfg.hxx index 759576d4a6c4..425b21119893 100644 --- a/include/unotools/lingucfg.hxx +++ b/include/unotools/lingucfg.hxx @@ -53,9 +53,9 @@ struct UNOTOOLS_DLLPUBLIC SvtLinguOptions bROHyphMinWordLength; // misc options (non-service specific) - sal_Int16 nDefaultLanguage; - sal_Int16 nDefaultLanguage_CJK; - sal_Int16 nDefaultLanguage_CTL; + LanguageType nDefaultLanguage; + LanguageType nDefaultLanguage_CJK; + LanguageType nDefaultLanguage_CTL; bool bRODefaultLanguage; bool bRODefaultLanguage_CJK; diff --git a/include/unotools/localedatawrapper.hxx b/include/unotools/localedatawrapper.hxx index 944ec80db624..018c7babe456 100644 --- a/include/unotools/localedatawrapper.hxx +++ b/include/unotools/localedatawrapper.hxx @@ -170,7 +170,7 @@ public: matching, excluding already known problems. (e.g. used in number formatter dialog init) */ - static css::uno::Sequence< sal_uInt16 > getInstalledLanguageTypes(); + static std::vector< LanguageType > getInstalledLanguageTypes(); /// maps the LocaleData string to the International enum MeasurementSystem mapMeasurementStringToEnum( const OUString& rMS ) const; diff --git a/include/unotools/transliterationwrapper.hxx b/include/unotools/transliterationwrapper.hxx index 7508386bf3b7..0726d6caf139 100644 --- a/include/unotools/transliterationwrapper.hxx +++ b/include/unotools/transliterationwrapper.hxx @@ -46,7 +46,7 @@ class UNOTOOLS_DLLPUBLIC TransliterationWrapper TransliterationWrapper& operator=( const TransliterationWrapper& ) = delete; void loadModuleImpl() const; - void setLanguageLocaleImpl( sal_uInt16 nLang ); + void setLanguageLocaleImpl( LanguageType nLang ); public: TransliterationWrapper( const css::uno::Reference< css::uno::XComponentContext > & rxContext, @@ -60,7 +60,7 @@ public: /** set a new language and load the corresponding transliteration module if needed for the mode set with nType in the ctor */ - void loadModuleIfNeeded( sal_uInt16 nLang ); + void loadModuleIfNeeded( LanguageType nLang ); /** Load the transliteration module specified by rModuleName, which has to be the UNO service implementation name that is expanded to the full UNO @@ -74,7 +74,7 @@ public: those may load a different module and overwrite this setting. Only the transliterate() method that takes no LanguageType parameter may be used for a specific module loaded with this method. */ - void loadModuleByImplName( const OUString& rModuleName, sal_uInt16 nLang ); + void loadModuleByImplName( const OUString& rModuleName, LanguageType nLang ); /** This transliteration method corresponds with the loadModuleByImplName() method. It relies on a module being loaded and does not try load one. @@ -84,7 +84,7 @@ public: sal_Int32 nStart, sal_Int32 nLen ) const; // Wrapper implementations of class Transliteration - OUString transliterate( const OUString& rStr, sal_uInt16 nLanguage, + OUString transliterate( const OUString& rStr, LanguageType nLanguage, sal_Int32 nStart, sal_Int32 nLen, css::uno::Sequence <sal_Int32>* pOffset ); diff --git a/include/xmloff/xmlnumfe.hxx b/include/xmloff/xmlnumfe.hxx index b4792a8de1a3..c3c51ea57797 100644 --- a/include/xmloff/xmlnumfe.hxx +++ b/include/xmloff/xmlnumfe.hxx @@ -26,6 +26,7 @@ #include <com/sun/star/util/XNumberFormatsSupplier.hpp> #include <com/sun/star/uno/Sequence.h> #include <rtl/ustrbuf.hxx> +#include <i18nlangtag/lang.h> #include <memory> #define XML_WRITTENNUMBERSTYLES "WrittenNumberStyles" @@ -56,7 +57,7 @@ private: SAL_DLLPRIVATE void AddCalendarAttr_Impl( const OUString& rCalendar ); SAL_DLLPRIVATE void AddStyleAttr_Impl( bool bLong ); - SAL_DLLPRIVATE void AddLanguageAttr_Impl( sal_Int32 nLang ); + SAL_DLLPRIVATE void AddLanguageAttr_Impl( LanguageType nLang ); SAL_DLLPRIVATE void AddToTextElement_Impl( const OUString& rString ); SAL_DLLPRIVATE void FinishTextElement_Impl(bool bUseExtensionNS = false); diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm index e17240146d78..4c4c23fed3ff 100644 --- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm +++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm @@ -292,7 +292,7 @@ sal_Bool SAL_CALL sal_Int16 nFailure = GetSpellFailure( rWord, rLocale ); if (nFailure != -1) { - sal_Int16 nLang = LinguLocaleToLanguage( rLocale ); + LanguageType nLang = LinguLocaleToLanguage( rLocale ); // postprocess result for errors that should be ignored if ( (!rHelper.IsSpellUpperCase() && IsUpper( rWord, nLang )) || (!rHelper.IsSpellWithDigits() && HasDigits( rWord )) @@ -316,7 +316,7 @@ Reference< XSpellAlternatives > Reference< XSpellAlternatives > xRes; // note: mutex is held by higher up by spell which covers both - sal_Int16 nLang = LinguLocaleToLanguage( rLocale ); + LanguageType nLang = LinguLocaleToLanguage( rLocale ); int count; Sequence< OUString > aStr( 0 ); diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.cxx b/lingucomponent/source/spellcheck/spell/sspellimp.cxx index 686f52fe24b0..29f94cf8babb 100644 --- a/lingucomponent/source/spellcheck/spell/sspellimp.cxx +++ b/lingucomponent/source/spellcheck/spell/sspellimp.cxx @@ -431,7 +431,7 @@ sal_Bool SAL_CALL SpellChecker::isValid( const OUString& rWord, const Locale& rL sal_Int16 nFailure = GetSpellFailure( rWord, rLocale ); if (nFailure != -1 && !rWord.match(SPELL_XML, 0)) { - sal_Int16 nLang = LinguLocaleToLanguage( rLocale ); + LanguageType nLang = LinguLocaleToLanguage( rLocale ); // postprocess result for errors that should be ignored const bool bIgnoreError = (!rHelper.IsSpellUpperCase() && IsUpper( rWord, nLang )) || @@ -472,7 +472,7 @@ Reference< XSpellAlternatives > if (n) { - sal_Int16 nLang = LinguLocaleToLanguage( rLocale ); + LanguageType nLang = LinguLocaleToLanguage( rLocale ); int numsug = 0; Sequence< OUString > aStr( 0 ); diff --git a/lingucomponent/source/thesaurus/libnth/nthesimp.cxx b/lingucomponent/source/thesaurus/libnth/nthesimp.cxx index 579c45228835..581bae3368e6 100644 --- a/lingucomponent/source/thesaurus/libnth/nthesimp.cxx +++ b/lingucomponent/source/thesaurus/libnth/nthesimp.cxx @@ -286,7 +286,7 @@ Sequence < Reference < css::linguistic2::XMeaning > > SAL_CALL Thesaurus::queryM sal_Int32 stem = 0; sal_Int32 stem2 = 0; - sal_Int16 nLanguage = LinguLocaleToLanguage( rLocale ); + LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); if (LinguIsUnspecified( nLanguage) || aRTerm.isEmpty()) return noMeanings; @@ -375,7 +375,7 @@ Sequence < Reference < css::linguistic2::XMeaning > > SAL_CALL Thesaurus::queryM if (stem) { xTmpRes2 = xSpell->spell( "<?xml?><query type='analyze'><word>" + - aPTerm + "</word></query>", nLanguage, rProperties ); + aPTerm + "</word></query>", (sal_uInt16)nLanguage, rProperties ); if (xTmpRes2.is()) { Sequence<OUString>seq = xTmpRes2->getAlternatives(); @@ -412,7 +412,7 @@ Sequence < Reference < css::linguistic2::XMeaning > > SAL_CALL Thesaurus::queryM { Reference< XSpellAlternatives > xTmpRes; xTmpRes = xSpell->spell( "<?xml?><query type='generate'><word>" + - sTerm + "</word>" + codeTerm + "</query>", nLanguage, rProperties ); + sTerm + "</word>" + codeTerm + "</query>", (sal_uInt16)nLanguage, rProperties ); if (xTmpRes.is()) { Sequence<OUString>seq = xTmpRes->getAlternatives(); @@ -464,11 +464,11 @@ Sequence < Reference < css::linguistic2::XMeaning > > SAL_CALL Thesaurus::queryM stem = 1; xSpell.set( xLngSvcMgr->getSpellChecker(), UNO_QUERY ); - if (!xSpell.is() || !xSpell->isValid( SPELLML_SUPPORT, nLanguage, rProperties )) + if (!xSpell.is() || !xSpell->isValid( SPELLML_SUPPORT, (sal_uInt16)nLanguage, rProperties )) return noMeanings; Reference< XSpellAlternatives > xTmpRes; xTmpRes = xSpell->spell( "<?xml?><query type='stem'><word>" + - aRTerm + "</word></query>", nLanguage, rProperties ); + aRTerm + "</word></query>", (sal_uInt16)nLanguage, rProperties ); if (xTmpRes.is()) { Sequence<OUString>seq = xTmpRes->getAlternatives(); @@ -485,7 +485,7 @@ Sequence < Reference < css::linguistic2::XMeaning > > SAL_CALL Thesaurus::queryM if (!pos) return noMeanings; xTmpRes = xSpell->spell( "<?xml?><query type='stem'><word>" + - aRTerm.copy(pos + 1) + "</word></query>", nLanguage, rProperties ); + aRTerm.copy(pos + 1) + "</word></query>", (sal_uInt16)nLanguage, rProperties ); if (xTmpRes.is()) { Sequence<OUString>seq = xTmpRes->getAlternatives(); diff --git a/lingucomponent/source/thesaurus/libnth/nthesimp.hxx b/lingucomponent/source/thesaurus/libnth/nthesimp.hxx index 1fc520e781e9..97a03c039ad9 100644 --- a/lingucomponent/source/thesaurus/libnth/nthesimp.hxx +++ b/lingucomponent/source/thesaurus/libnth/nthesimp.hxx @@ -79,7 +79,7 @@ class Thesaurus : // cache for the Thesaurus dialog Sequence < Reference < css::linguistic2::XMeaning > > prevMeanings; OUString prevTerm; - sal_Int16 prevLocale; + LanguageType prevLocale; Thesaurus(const Thesaurus &) = delete; Thesaurus & operator = (const Thesaurus &) = delete; diff --git a/linguistic/source/convdic.cxx b/linguistic/source/convdic.cxx index f69fcc862b62..6ce6d04ce0c4 100644 --- a/linguistic/source/convdic.cxx +++ b/linguistic/source/convdic.cxx @@ -124,7 +124,7 @@ void ReadThroughDic( const OUString &rMainURL, ConvDicXMLImport &rImport ) } } -bool IsConvDic( const OUString &rFileURL, sal_Int16 &nLang, sal_Int16 &nConvType ) +bool IsConvDic( const OUString &rFileURL, LanguageType &nLang, sal_Int16 &nConvType ) { bool bRes = false; @@ -164,7 +164,7 @@ bool IsConvDic( const OUString &rFileURL, sal_Int16 &nLang, sal_Int16 &nConvType ConvDic::ConvDic( const OUString &rName, - sal_Int16 nLang, + LanguageType nLang, sal_Int16 nConvType, bool bBiDirectional, const OUString &rMainURL) : diff --git a/linguistic/source/convdic.hxx b/linguistic/source/convdic.hxx index 950df21b8099..53167b7123a7 100644 --- a/linguistic/source/convdic.hxx +++ b/linguistic/source/convdic.hxx @@ -39,7 +39,7 @@ #define SN_CONV_DICTIONARY "com.sun.star.linguistic2.ConversionDictionary" -bool IsConvDic( const OUString &rFileURL, sal_Int16 &nLang, sal_Int16 &nConvType ); +bool IsConvDic( const OUString &rFileURL, LanguageType &nLang, sal_Int16 &nConvType ); typedef std::unordered_multimap<OUString, OUString, const OUStringHash> ConvMap; @@ -69,7 +69,7 @@ protected: OUString aMainURL; // URL to file OUString aName; - sal_Int16 nLanguage; + LanguageType nLanguage; sal_Int16 nConversionType; sal_Int16 nMaxLeftCharCount; sal_Int16 nMaxRightCharCount; @@ -89,7 +89,7 @@ protected: public: ConvDic( const OUString &rName, - sal_Int16 nLanguage, + LanguageType nLanguage, sal_Int16 nConversionType, bool bBiDirectional, const OUString &rMainURL); diff --git a/linguistic/source/convdiclist.cxx b/linguistic/source/convdiclist.cxx index 36b357ce138c..b852077ab3e8 100644 --- a/linguistic/source/convdiclist.cxx +++ b/linguistic/source/convdiclist.cxx @@ -293,7 +293,7 @@ void ConvDicNameContainer::AddConvDics( if(aExt != aSearchExt) continue; // skip other files - sal_Int16 nLang; + LanguageType nLang; sal_Int16 nConvType; if (IsConvDic( aURL, nLang, nConvType )) { @@ -413,7 +413,7 @@ uno::Reference< XConversionDictionary > SAL_CALL ConvDicList::addNewDictionary( { MutexGuard aGuard( GetLinguMutex() ); - sal_Int16 nLang = LinguLocaleToLanguage( rLocale ); + LanguageType nLang = LinguLocaleToLanguage( rLocale ); if (GetNameContainer().hasByName( rName )) throw ElementExistException(); diff --git a/linguistic/source/convdicxml.cxx b/linguistic/source/convdicxml.cxx index 36bf36679c30..08c160c1b0a4 100644 --- a/linguistic/source/convdicxml.cxx +++ b/linguistic/source/convdicxml.cxx @@ -106,8 +106,8 @@ public: class ConvDicXMLDictionaryContext_Impl : public ConvDicXMLImportContext { - sal_Int16 nLanguage; - sal_Int16 nConversionType; + LanguageType nLanguage; + sal_Int16 nConversionType; public: ConvDicXMLDictionaryContext_Impl( ConvDicXMLImport &rImport, diff --git a/linguistic/source/convdicxml.hxx b/linguistic/source/convdicxml.hxx index c806e1b9f9c7..132d270f3fd2 100644 --- a/linguistic/source/convdicxml.hxx +++ b/linguistic/source/convdicxml.hxx @@ -72,7 +72,7 @@ class ConvDicXMLImport : public SvXMLImport // but the language and conversion type will // still be determined! - sal_Int16 nLanguage; // language of the dictionary + LanguageType nLanguage; // language of the dictionary sal_Int16 nConversionType; // conversion type the dictionary is used for public: @@ -92,12 +92,12 @@ public: sal_uInt16 nPrefix, const OUString &rLocalName, const css::uno::Reference < css::xml::sax::XAttributeList > &rxAttrList ) override; - ConvDic * GetDic() { return pDic; } - sal_Int16 GetLanguage() const { return nLanguage; } - sal_Int16 GetConversionType() const { return nConversionType; } + ConvDic * GetDic() { return pDic; } + LanguageType GetLanguage() const { return nLanguage; } + sal_Int16 GetConversionType() const { return nConversionType; } - void SetLanguage( sal_Int16 nLang ) { nLanguage = nLang; } - void SetConversionType( sal_Int16 nType ) { nConversionType = nType; } + void SetLanguage( LanguageType nLang ) { nLanguage = nLang; } + void SetConversionType( sal_Int16 nType ) { nConversionType = nType; } }; diff --git a/linguistic/source/dicimp.cxx b/linguistic/source/dicimp.cxx index 266ab5a9f7a8..488c62bf454a 100644 --- a/linguistic/source/dicimp.cxx +++ b/linguistic/source/dicimp.cxx @@ -83,7 +83,7 @@ static bool getTag(const OString &rLine, const sal_Char *pTagName, } -sal_Int16 ReadDicVersion( SvStreamPtr &rpStream, sal_uInt16 &nLng, bool &bNeg ) +sal_Int16 ReadDicVersion( SvStreamPtr &rpStream, LanguageType &nLng, bool &bNeg ) { // Sniff the header sal_Int16 nDicVersion = DIC_VERSION_DONTKNOW; @@ -167,9 +167,10 @@ sal_Int16 ReadDicVersion( SvStreamPtr &rpStream, sal_uInt16 &nLng, bool &bNeg ) DIC_VERSION_6 == nDicVersion) { // The language of the dictionary - rpStream->ReadUInt16( nLng ); - - if (VERS2_NOLANGUAGE == nLng) + sal_uInt16 nTmp = 0; + rpStream->ReadUInt16( nTmp ); + nLng = LanguageType(nTmp); + if (VERS2_NOLANGUAGE == static_cast<sal_uInt16>(nLng)) nLng = LANGUAGE_NONE; // Negative Flag @@ -181,7 +182,7 @@ sal_Int16 ReadDicVersion( SvStreamPtr &rpStream, sal_uInt16 &nLng, bool &bNeg ) } DictionaryNeo::DictionaryNeo(const OUString &rName, - sal_Int16 nLang, DictionaryType eType, + LanguageType nLang, DictionaryType eType, const OUString &rMainURL, bool bWriteable) : aDicEvtListeners( GetLinguMutex() ), @@ -259,7 +260,7 @@ sal_uLong DictionaryNeo::loadEntries(const OUString &rMainURL) // read header bool bNegativ; - sal_uInt16 nLang; + LanguageType nLang; nDicVersion = ReadDicVersion(pStream, nLang, bNegativ); sal_uLong nErr = pStream->GetError(); if (0 != nErr) @@ -753,7 +754,7 @@ Locale SAL_CALL DictionaryNeo::getLocale( ) void SAL_CALL DictionaryNeo::setLocale( const Locale& aLocale ) { MutexGuard aGuard( GetLinguMutex() ); - sal_Int16 nLanguageP = LinguLocaleToLanguage( aLocale ); + LanguageType nLanguageP = LinguLocaleToLanguage( aLocale ); if (!bIsReadonly && nLanguage != nLanguageP) { nLanguage = nLanguageP; diff --git a/linguistic/source/dicimp.hxx b/linguistic/source/dicimp.hxx index 6bc7e7853306..6fef2c4f10b1 100644 --- a/linguistic/source/dicimp.hxx +++ b/linguistic/source/dicimp.hxx @@ -33,7 +33,7 @@ #define DIC_MAX_ENTRIES 30000 -sal_Int16 ReadDicVersion( SvStreamPtr &rpStream, sal_uInt16 &nLng, bool &bNeg ); +sal_Int16 ReadDicVersion( SvStreamPtr &rpStream, LanguageType &nLng, bool &bNeg ); class DictionaryNeo : public ::cppu::WeakImplHelper @@ -49,7 +49,7 @@ class DictionaryNeo : OUString aDicName; OUString aMainURL; css::linguistic2::DictionaryType eDicType; - sal_Int16 nLanguage; + LanguageType nLanguage; sal_Int16 nDicVersion; bool bNeedEntries; bool bIsModified; @@ -75,7 +75,7 @@ class DictionaryNeo : bool bIsLoadEntries = false); public: - DictionaryNeo(const OUString &rName, sal_Int16 nLang, + DictionaryNeo(const OUString &rName, LanguageType nLang, css::linguistic2::DictionaryType eType, const OUString &rMainURL, bool bWriteable ); diff --git a/linguistic/source/dlistimp.cxx b/linguistic/source/dlistimp.cxx index 64bd279a95aa..5ac22f539e54 100644 --- a/linguistic/source/dlistimp.cxx +++ b/linguistic/source/dlistimp.cxx @@ -52,7 +52,7 @@ using namespace com::sun::star::linguistic2; using namespace linguistic; -static bool IsVers2OrNewer( const OUString& rFileURL, sal_uInt16& nLng, bool& bNeg ); +static bool IsVers2OrNewer( const OUString& rFileURL, LanguageType& nLng, bool& bNeg ); static void AddInternal( const uno::Reference< XDictionary > &rDic, const OUString& rNew ); @@ -295,9 +295,9 @@ void DicList::SearchForDictionaries( OUString aDCP("dcp"); for (sal_Int32 i = 0; i < nEntries; ++i) { - OUString aURL( pDirCnt[i] ); - sal_uInt16 nLang = LANGUAGE_NONE; - bool bNeg = false; + OUString aURL( pDirCnt[i] ); + LanguageType nLang = LANGUAGE_NONE; + bool bNeg = false; if(!::IsVers2OrNewer( aURL, nLang, bNeg )) { @@ -315,7 +315,7 @@ void DicList::SearchForDictionaries( // Record in the list of Dictionaries // When it already exists don't record - sal_Int16 nSystemLanguage = MsLangId::getSystemLanguage(); + LanguageType nSystemLanguage = MsLangId::getSystemLanguage(); OUString aTmp1 = ToLower( aURL, nSystemLanguage ); sal_Int32 nPos = aTmp1.lastIndexOf( '/' ); if (-1 != nPos) @@ -520,7 +520,7 @@ uno::Reference< XDictionary > SAL_CALL { osl::MutexGuard aGuard( GetLinguMutex() ); - sal_Int16 nLanguage = LinguLocaleToLanguage( rLocale ); + LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); bool bIsWriteablePath = rURL.match( GetDictionaryWriteablePath() ); return new DictionaryNeo( rName, nLanguage, eDicType, rURL, bIsWriteablePath ); } @@ -801,7 +801,7 @@ static void AddUserData( const uno::Reference< XDictionary > &rDic ) } } -static bool IsVers2OrNewer( const OUString& rFileURL, sal_uInt16& nLng, bool& bNeg ) +static bool IsVers2OrNewer( const OUString& rFileURL, LanguageType& nLng, bool& bNeg ) { if (rFileURL.isEmpty()) return false; diff --git a/linguistic/source/hyphdta.cxx b/linguistic/source/hyphdta.cxx index bef72839a1b3..9dcaceee26ab 100644 --- a/linguistic/source/hyphdta.cxx +++ b/linguistic/source/hyphdta.cxx @@ -40,7 +40,7 @@ namespace linguistic { -HyphenatedWord::HyphenatedWord(const OUString &rWord, sal_uInt16 nLang, sal_Int16 nHPos, +HyphenatedWord::HyphenatedWord(const OUString &rWord, LanguageType nLang, sal_Int16 nHPos, const OUString &rHyphWord, sal_Int16 nPos ) : aWord (rWord), aHyphenatedWord (rHyphWord), @@ -113,7 +113,7 @@ sal_Bool SAL_CALL HyphenatedWord::isAlternativeSpelling() } -PossibleHyphens::PossibleHyphens(const OUString &rWord, sal_uInt16 nLang, +PossibleHyphens::PossibleHyphens(const OUString &rWord, LanguageType nLang, const OUString &rHyphWord, const Sequence< sal_Int16 > &rPositions) : aWord (rWord), @@ -157,14 +157,14 @@ Sequence< sal_Int16 > SAL_CALL PossibleHyphens::getHyphenationPositions() } css::uno::Reference <css::linguistic2::XHyphenatedWord> HyphenatedWord::CreateHyphenatedWord( - const OUString &rWord, sal_Int16 nLang, sal_Int16 nHyphenationPos, + const OUString &rWord, LanguageType nLang, sal_Int16 nHyphenationPos, const OUString &rHyphenatedWord, sal_Int16 nHyphenPos ) { return new HyphenatedWord( rWord, nLang, nHyphenationPos, rHyphenatedWord, nHyphenPos ); } css::uno::Reference < css::linguistic2::XPossibleHyphens > PossibleHyphens::CreatePossibleHyphens - (const OUString &rWord, sal_Int16 nLang, + (const OUString &rWord, LanguageType nLang, const OUString &rHyphWord, const css::uno::Sequence< sal_Int16 > &rPositions) { diff --git a/linguistic/source/lngsvcmgr.cxx b/linguistic/source/lngsvcmgr.cxx index 1a3b732f21cb..380b30f61acf 100644 --- a/linguistic/source/lngsvcmgr.cxx +++ b/linguistic/source/lngsvcmgr.cxx @@ -146,31 +146,27 @@ static uno::Sequence< lang::Locale > GetAvailLocales( struct SvcInfo { const OUString aSvcImplName; - const uno::Sequence< sal_Int16 > aSuppLanguages; + const std::vector< LanguageType > aSuppLanguages; SvcInfo( const OUString &rSvcImplName, - const uno::Sequence< sal_Int16 > &rSuppLanguages ) : + const std::vector< LanguageType > &rSuppLanguages ) : aSvcImplName (rSvcImplName), aSuppLanguages (rSuppLanguages) { } - bool HasLanguage( sal_Int16 nLanguage ) const; + bool HasLanguage( LanguageType nLanguage ) const; }; -bool SvcInfo::HasLanguage( sal_Int16 nLanguage ) const +bool SvcInfo::HasLanguage( LanguageType nLanguage ) const { - sal_Int32 nCnt = aSuppLanguages.getLength(); - const sal_Int16 *pLang = aSuppLanguages.getConstArray(); - sal_Int32 i; - - for ( i = 0; i < nCnt; ++i) + for ( auto const & i : aSuppLanguages) { - if (nLanguage == pLang[i]) - break; + if (nLanguage == i) + return true; } - return i < nCnt; + return false; } class LngSvcMgrListenerHelper : @@ -1035,7 +1031,7 @@ void LngSvcMgr::GetAvailableSpellSvcs_Impl() if (xSvc.is()) { OUString aImplName; - uno::Sequence< sal_Int16 > aLanguages; + std::vector< LanguageType > aLanguages; uno::Reference< XServiceInfo > xInfo( xSvc, uno::UNO_QUERY ); if (xInfo.is()) aImplName = xInfo->getImplementationName(); @@ -1044,7 +1040,7 @@ void LngSvcMgr::GetAvailableSpellSvcs_Impl() SAL_WARN_IF( !xSuppLoc.is(), "linguistic", "interfaces not supported" ); if (xSuppLoc.is()) { uno::Sequence<lang::Locale> aLocaleSequence(xSuppLoc->getLocales()); - aLanguages = LocaleSeqToLangSeq( aLocaleSequence ); + aLanguages = LocaleSeqToLangVec( aLocaleSequence ); } pAvailSpellSvcs->push_back( o3tl::make_unique<SvcInfo>( aImplName, aLanguages ) ); @@ -1097,7 +1093,7 @@ void LngSvcMgr::GetAvailableGrammarSvcs_Impl() if (xSvc.is() && pAvailGrammarSvcs) { OUString aImplName; - uno::Sequence< sal_Int16 > aLanguages; + std::vector< LanguageType > aLanguages; uno::Reference< XServiceInfo > xInfo( xSvc, uno::UNO_QUERY ); if (xInfo.is()) aImplName = xInfo->getImplementationName(); @@ -1107,7 +1103,7 @@ void LngSvcMgr::GetAvailableGrammarSvcs_Impl() if (xSuppLoc.is()) { uno::Sequence<lang::Locale> aLocaleSequence(xSuppLoc->getLocales()); - aLanguages = LocaleSeqToLangSeq( aLocaleSequence ); + aLanguages = LocaleSeqToLangVec( aLocaleSequence ); } pAvailGrammarSvcs->push_back( o3tl::make_unique<SvcInfo>( aImplName, aLanguages ) ); @@ -1158,7 +1154,7 @@ void LngSvcMgr::GetAvailableHyphSvcs_Impl() if (xSvc.is()) { OUString aImplName; - uno::Sequence< sal_Int16 > aLanguages; + std::vector< LanguageType > aLanguages; uno::Reference< XServiceInfo > xInfo( xSvc, uno::UNO_QUERY ); if (xInfo.is()) aImplName = xInfo->getImplementationName(); @@ -1168,7 +1164,7 @@ void LngSvcMgr::GetAvailableHyphSvcs_Impl() if (xSuppLoc.is()) { uno::Sequence<lang::Locale> aLocaleSequence(xSuppLoc->getLocales()); - aLanguages = LocaleSeqToLangSeq( aLocaleSequence ); + aLanguages = LocaleSeqToLangVec( aLocaleSequence ); } pAvailHyphSvcs->push_back( o3tl::make_unique<SvcInfo>( aImplName, aLanguages ) ); } @@ -1219,7 +1215,7 @@ void LngSvcMgr::GetAvailableThesSvcs_Impl() if (xSvc.is()) { OUString aImplName; - uno::Sequence< sal_Int16 > aLanguages; + std::vector< LanguageType > aLanguages; uno::Reference< XServiceInfo > xInfo( xSvc, uno::UNO_QUERY ); if (xInfo.is()) aImplName = xInfo->getImplementationName(); @@ -1229,7 +1225,7 @@ void LngSvcMgr::GetAvailableThesSvcs_Impl() if (xSuppLoc.is()) { uno::Sequence<lang::Locale> aLocaleSequence(xSuppLoc->getLocales()); - aLanguages = LocaleSeqToLangSeq( aLocaleSequence ); + aLanguages = LocaleSeqToLangVec( aLocaleSequence ); } pAvailThesSvcs->push_back( o3tl::make_unique<SvcInfo>( aImplName, aLanguages ) ); diff --git a/linguistic/source/misc.cxx b/linguistic/source/misc.cxx index bacff91c643e..3ea5bf57c242 100644 --- a/linguistic/source/misc.cxx +++ b/linguistic/source/misc.cxx @@ -93,14 +93,10 @@ css::lang::Locale LinguLanguageToLocale( LanguageType nLanguage ) bool LinguIsUnspecified( LanguageType nLanguage ) { - switch (nLanguage) - { - case LANGUAGE_NONE: - case LANGUAGE_UNDETERMINED: - case LANGUAGE_MULTIPLE: - return true; - } - return false; + return nLanguage.anyOf( + LANGUAGE_NONE, + LANGUAGE_UNDETERMINED, + LANGUAGE_MULTIPLE); } // When adding anything keep both LinguIsUnspecified() methods in sync! @@ -264,7 +260,7 @@ static bool lcl_HasHyphInfo( const uno::Reference<XDictionaryEntry> &xEntry ) uno::Reference< XDictionaryEntry > SearchDicList( const uno::Reference< XSearchableDictionaryList > &xDicList, - const OUString &rWord, sal_Int16 nLanguage, + const OUString &rWord, LanguageType nLanguage, bool bSearchPosDics, bool bSearchSpellEntry ) { MutexGuard aGuard( GetLinguMutex() ); @@ -286,7 +282,7 @@ uno::Reference< XDictionaryEntry > SearchDicList( uno::Reference< XDictionary > axDic( pDic[i], UNO_QUERY ); DictionaryType eType = axDic->getDictionaryType(); - sal_Int16 nLang = LinguLocaleToLanguage( axDic->getLocale() ); + LanguageType nLang = LinguLocaleToLanguage( axDic->getLocale() ); if ( axDic.is() && axDic->isActive() && (nLang == nLanguage || LinguIsUnspecified( nLang)) ) @@ -343,7 +339,7 @@ bool SaveDictionaries( const uno::Reference< XSearchableDictionaryList > &xDicLi DictionaryError AddEntryToDic( uno::Reference< XDictionary > &rxDic, const OUString &rWord, bool bIsNeg, - const OUString &rRplcTxt, sal_Int16 /* nRplcLang */, + const OUString &rRplcTxt, bool bStripDot ) { if (!rxDic.is()) @@ -380,8 +376,23 @@ DictionaryError AddEntryToDic( return nRes; } +std::vector< LanguageType > + LocaleSeqToLangVec( uno::Sequence< Locale > &rLocaleSeq ) +{ + const Locale *pLocale = rLocaleSeq.getConstArray(); + sal_Int32 nCount = rLocaleSeq.getLength(); + + std::vector< LanguageType > aLangs; + for (sal_Int32 i = 0; i < nCount; ++i) + { + aLangs.push_back( LinguLocaleToLanguage( pLocale[i] ) ); + } + + return aLangs; +} + uno::Sequence< sal_Int16 > - LocaleSeqToLangSeq( uno::Sequence< Locale > &rLocaleSeq ) + LocaleSeqToLangSeq( uno::Sequence< Locale > &rLocaleSeq ) { const Locale *pLocale = rLocaleSeq.getConstArray(); sal_Int32 nCount = rLocaleSeq.getLength(); @@ -390,12 +401,11 @@ uno::Sequence< sal_Int16 > sal_Int16 *pLang = aLangs.getArray(); for (sal_Int32 i = 0; i < nCount; ++i) { - pLang[i] = LinguLocaleToLanguage( pLocale[i] ); + pLang[i] = (sal_uInt16)LinguLocaleToLanguage( pLocale[i] ); } return aLangs; } - bool IsReadOnly( const OUString &rURL, bool *pbExist ) { bool bRes = false; @@ -562,7 +572,7 @@ uno::Reference< XHyphenatedWord > RebuildHyphensAndControlChars( } else { - sal_Int16 nLang = LinguLocaleToLanguage( rxHyphWord->getLocale() ); + LanguageType nLang = LinguLocaleToLanguage( rxHyphWord->getLocale() ); xRes = new HyphenatedWord( rOrigWord, nLang, nOrigHyphenationPos, aOrigHyphenatedWord, nOrigHyphenPos ); @@ -584,7 +594,7 @@ osl::Mutex & lcl_GetCharClassMutex() return aMutex; } -bool IsUpper( const OUString &rText, sal_Int32 nPos, sal_Int32 nLen, sal_Int16 nLanguage ) +bool IsUpper( const OUString &rText, sal_Int32 nPos, sal_Int32 nLen, LanguageType nLanguage ) { MutexGuard aGuard( lcl_GetCharClassMutex() ); @@ -620,7 +630,7 @@ CapType SAL_CALL capitalType(const OUString& aTerm, CharClass * pCC) return CapType::UNKNOWN; } -OUString ToLower( const OUString &rText, sal_Int16 nLanguage ) +OUString ToLower( const OUString &rText, LanguageType nLanguage ) { MutexGuard aGuard( lcl_GetCharClassMutex() ); diff --git a/linguistic/source/spelldsp.cxx b/linguistic/source/spelldsp.cxx index 848b45aa8e69..d26993cabb5f 100644 --- a/linguistic/source/spelldsp.cxx +++ b/linguistic/source/spelldsp.cxx @@ -756,7 +756,7 @@ sal_Bool SAL_CALL SpellCheckerDispatcher::hasLanguage( sal_Int16 nLanguage ) { MutexGuard aGuard( GetLinguMutex() ); - return hasLocale( LanguageTag::convertToLocale( nLanguage) ); + return hasLocale( LanguageTag::convertToLocale( LanguageType(nLanguage)) ); } @@ -766,7 +766,7 @@ sal_Bool SAL_CALL SpellCheckerDispatcher::isValid( const uno::Sequence< beans::PropertyValue >& rProperties ) { MutexGuard aGuard( GetLinguMutex() ); - return isValid( rWord, LanguageTag::convertToLocale( nLanguage ), rProperties); + return isValid( rWord, LanguageTag::convertToLocale( LanguageType(nLanguage) ), rProperties); } @@ -776,7 +776,7 @@ uno::Reference< linguistic2::XSpellAlternatives > SAL_CALL SpellCheckerDispatche const uno::Sequence< beans::PropertyValue >& rProperties ) { MutexGuard aGuard( GetLinguMutex() ); - return spell( rWord, LanguageTag::convertToLocale( nLanguage), rProperties); + return spell( rWord, LanguageTag::convertToLocale( LanguageType(nLanguage) ), rProperties); } @@ -788,7 +788,7 @@ void SpellCheckerDispatcher::SetServiceList( const Locale &rLocale, if (m_pCache) m_pCache->Flush(); // new services may spell differently... - sal_Int16 nLanguage = LinguLocaleToLanguage( rLocale ); + LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); sal_Int32 nLen = rSvcImplNames.getLength(); if (0 == nLen) @@ -822,7 +822,7 @@ Sequence< OUString > Sequence< OUString > aRes; // search for entry with that language and use data from that - sal_Int16 nLanguage = LinguLocaleToLanguage( rLocale ); + LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); const SpellSvcByLangMap_t::const_iterator aIt( m_aSvcMap.find( nLanguage ) ); const LangSvcEntries_Spell *pEntry = aIt != m_aSvcMap.end() ? aIt->second.get() : nullptr; if (pEntry) diff --git a/linguistic/source/spelldta.cxx b/linguistic/source/spelldta.cxx index 9b22be11b472..ae025f364dad 100644 --- a/linguistic/source/spelldta.cxx +++ b/linguistic/source/spelldta.cxx @@ -60,7 +60,7 @@ bool SeqHasEntry( } -void SearchSimilarText( const OUString &rText, sal_Int16 nLanguage, +void SearchSimilarText( const OUString &rText, LanguageType nLanguage, Reference< XSearchableDictionaryList > &xDicList, std::vector< OUString > & rDicListProps ) { @@ -77,7 +77,7 @@ void SearchSimilarText( const OUString &rText, sal_Int16 nLanguage, { Reference< XDictionary > xDic( pDic[i], UNO_QUERY ); - sal_Int16 nLang = LinguLocaleToLanguage( xDic->getLocale() ); + LanguageType nLang = LinguLocaleToLanguage( xDic->getLocale() ); if ( xDic.is() && xDic->isActive() && (nLang == nLanguage || LinguIsUnspecified( nLang)) ) @@ -108,7 +108,7 @@ void SearchSimilarText( const OUString &rText, sal_Int16 nLanguage, void SeqRemoveNegEntries( std::vector< OUString > &rSeq, Reference< XSearchableDictionaryList > &rxDicList, - sal_Int16 nLanguage ) + LanguageType nLanguage ) { bool bSthRemoved = false; sal_Int32 nLen = rSeq.size(); @@ -179,7 +179,7 @@ SpellAlternatives::SpellAlternatives() SpellAlternatives::SpellAlternatives( - const OUString &rWord, sal_Int16 nLang, + const OUString &rWord, LanguageType nLang, const Sequence< OUString > &rAlternatives ) : aAlt (rAlternatives), aWord (rWord), @@ -243,7 +243,7 @@ void SAL_CALL SpellAlternatives::setFailureType( sal_Int16 nFailureType ) } -void SpellAlternatives::SetWordLanguage(const OUString &rWord, sal_Int16 nLang) +void SpellAlternatives::SetWordLanguage(const OUString &rWord, LanguageType nLang) { MutexGuard aGuard( GetLinguMutex() ); aWord = rWord; @@ -266,7 +266,7 @@ void SpellAlternatives::SetAlternatives( const Sequence< OUString > &rAlt ) css::uno::Reference < css::linguistic2::XSpellAlternatives > SpellAlternatives::CreateSpellAlternatives( - const OUString &rWord, sal_Int16 nLang, sal_Int16 nTypeP, const css::uno::Sequence< OUString > &rAlt ) + const OUString &rWord, LanguageType nLang, sal_Int16 nTypeP, const css::uno::Sequence< OUString > &rAlt ) { SpellAlternatives* pAlt = new SpellAlternatives; pAlt->SetWordLanguage( rWord, nLang ); diff --git a/linguistic/source/thesdsp.cxx b/linguistic/source/thesdsp.cxx index a967745bc938..2c40d196759b 100644 --- a/linguistic/source/thesdsp.cxx +++ b/linguistic/source/thesdsp.cxx @@ -110,7 +110,7 @@ Sequence< Reference< XMeaning > > SAL_CALL Sequence< Reference< XMeaning > > aMeanings; - sal_Int16 nLanguage = LinguLocaleToLanguage( rLocale ); + LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); if (LinguIsUnspecified( nLanguage) || rTerm.isEmpty()) return aMeanings; @@ -202,7 +202,7 @@ void ThesaurusDispatcher::SetServiceList( const Locale &rLocale, { MutexGuard aGuard( GetLinguMutex() ); - sal_Int16 nLanguage = LinguLocaleToLanguage( rLocale ); + LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); sal_Int32 nLen = rSvcImplNames.getLength(); if (0 == nLen) @@ -236,7 +236,7 @@ Sequence< OUString > Sequence< OUString > aRes; // search for entry with that language and use data from that - sal_Int16 nLanguage = LinguLocaleToLanguage( rLocale ); + LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); const ThesSvcByLangMap_t::const_iterator aIt( aSvcMap.find( nLanguage ) ); const LangSvcEntries_Thes *pEntry = aIt != aSvcMap.end() ? aIt->second.get() : nullptr; if (pEntry) diff --git a/rsc/source/parser/rscibas.cxx b/rsc/source/parser/rscibas.cxx index a0b677e7a1e6..6fd5070eae33 100644 --- a/rsc/source/parser/rscibas.cxx +++ b/rsc/source/parser/rscibas.cxx @@ -76,8 +76,8 @@ sal_uInt32 GetLangId(const OString &rLang) void RscLangEnum::Init( RscNameTable& rNames ) { - SetConstant( rNames.Put( "SYSTEM", CONSTNAME, (long)LANGUAGE_SYSTEM ), LANGUAGE_SYSTEM ); - SetConstant( rNames.Put( "DONTKNOW", CONSTNAME, LANGUAGE_DONTKNOW ), LANGUAGE_DONTKNOW ); + SetConstant( rNames.Put( "SYSTEM", CONSTNAME, (sal_uInt16)LANGUAGE_SYSTEM ), (sal_uInt16)LANGUAGE_SYSTEM ); + SetConstant( rNames.Put( "DONTKNOW", CONSTNAME, (sal_uInt16)LANGUAGE_DONTKNOW ), (sal_uInt16)LANGUAGE_DONTKNOW ); sal_Int32 nIndex = 0; mnLangId = 0x400; // stay away from selfdefined... diff --git a/sc/inc/scmod.hxx b/sc/inc/scmod.hxx index b57a208e297d..8eaccd2558e3 100644 --- a/sc/inc/scmod.hxx +++ b/sc/inc/scmod.hxx @@ -177,12 +177,12 @@ public: void SetPrintOptions ( const ScPrintOptions& rOpt ); void InsertEntryToLRUList(sal_uInt16 nFIndex); - static void GetSpellSettings( sal_uInt16& rDefLang, sal_uInt16& rCjkLang, sal_uInt16& rCtlLang, + static void GetSpellSettings( LanguageType& rDefLang, LanguageType& rCjkLang, LanguageType& rCtlLang, bool& rAutoSpell ); static void SetAutoSpellProperty( bool bSet ); - static bool HasThesaurusLanguage( sal_uInt16 nLang ); + static bool HasThesaurusLanguage( LanguageType nLang ); - sal_uInt16 GetOptDigitLanguage(); // from CTL options + LanguageType GetOptDigitLanguage(); // from CTL options ScNavipiCfg& GetNavipiCfg(); ScAddInCfg& GetAddInCfg(); diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx index de5d06c09ff4..e49a8cd2ca45 100644 --- a/sc/source/core/data/documen8.cxx +++ b/sc/source/core/data/documen8.cxx @@ -1188,7 +1188,7 @@ void ScDocument::TransliterateText( const ScMarkData& rMultiMark, Transliteratio utl::TransliterationWrapper aTransliterationWrapper( comphelper::getProcessComponentContext(), nType ); bool bConsiderLanguage = aTransliterationWrapper.needLanguageForTheMode(); - sal_uInt16 nLanguage = LANGUAGE_SYSTEM; + LanguageType nLanguage = LANGUAGE_SYSTEM; std::unique_ptr<ScEditEngineDefaulter> pEngine; // not using pEditEngine member because of defaults diff --git a/sc/source/core/tool/zforauto.cxx b/sc/source/core/tool/zforauto.cxx index 6551c9c3c4d5..ffd7cb39434c 100644 --- a/sc/source/core/tool/zforauto.cxx +++ b/sc/source/core/tool/zforauto.cxx @@ -50,8 +50,8 @@ void ScNumFormatAbbrev::Load( SvStream& rStream, rtl_TextEncoding eByteStrSet ) sal_uInt16 nSysLang, nLang; sFormatstring = rStream.ReadUniOrByteString( eByteStrSet ); rStream.ReadUInt16( nSysLang ).ReadUInt16( nLang ); - eLanguage = (LanguageType) nLang; - eSysLanguage = (LanguageType) nSysLang; + eLanguage = LanguageType(nLang); + eSysLanguage = LanguageType(nSysLang); if ( eSysLanguage == LANGUAGE_SYSTEM ) // old versions did write it eSysLanguage = Application::GetSettings().GetLanguageTag().getLanguageType(); } @@ -59,7 +59,7 @@ void ScNumFormatAbbrev::Load( SvStream& rStream, rtl_TextEncoding eByteStrSet ) void ScNumFormatAbbrev::Save( SvStream& rStream, rtl_TextEncoding eByteStrSet ) const { rStream.WriteUniOrByteString( sFormatstring, eByteStrSet ); - rStream.WriteUInt16( eSysLanguage ).WriteUInt16( eLanguage ); + rStream.WriteUInt16( (sal_uInt16)eSysLanguage ).WriteUInt16( (sal_uInt16)eLanguage ); } void ScNumFormatAbbrev::PutFormatIndex(sal_uInt32 nFormat, diff --git a/sc/source/filter/excel/xlstyle.cxx b/sc/source/filter/excel/xlstyle.cxx index 75ebe2d6dad2..4ca798fe0f11 100644 --- a/sc/source/filter/excel/xlstyle.cxx +++ b/sc/source/filter/excel/xlstyle.cxx @@ -758,11 +758,11 @@ namespace { const NfIndexTableOffset PRV_NF_INDEX_REUSE = NF_INDEX_TABLE_ENTRIES; /** German primary language not defined, LANGUAGE_GERMAN belongs to Germany. */ -const LanguageType PRV_LANGUAGE_GERMAN_PRIM = LANGUAGE_GERMAN & LANGUAGE_MASK_PRIMARY; +constexpr LanguageType PRV_LANGUAGE_GERMAN_PRIM = primary(LANGUAGE_GERMAN); /** French primary language not defined, LANGUAGE_FRENCH belongs to France. */ -const LanguageType PRV_LANGUAGE_FRENCH_PRIM = LANGUAGE_FRENCH & LANGUAGE_MASK_PRIMARY; +constexpr LanguageType PRV_LANGUAGE_FRENCH_PRIM = primary(LANGUAGE_FRENCH); /** Parent language identifier for Asian languages. */ -const LanguageType PRV_LANGUAGE_ASIAN_PRIM = LANGUAGE_CHINESE & LANGUAGE_MASK_PRIMARY; +constexpr LanguageType PRV_LANGUAGE_ASIAN_PRIM = primary(LANGUAGE_CHINESE); /** Stores the number format used in Calc for an Excel built-in number format. */ struct XclBuiltInFormat diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index c25910d55dc0..2c65b5c69944 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -912,7 +912,7 @@ SvtUserOptions& ScModule::GetUserOptions() return *pUserOptions; } -sal_uInt16 ScModule::GetOptDigitLanguage() +LanguageType ScModule::GetOptDigitLanguage() { SvtCTLOptions::TextNumerals eNumerals = GetCTLOptions().GetCTLTextNumerals(); return ( eNumerals == SvtCTLOptions::NUMERALS_ARABIC ) ? LANGUAGE_ENGLISH_US : @@ -927,7 +927,7 @@ sal_uInt16 ScModule::GetOptDigitLanguage() */ void ScModule::ModifyOptions( const SfxItemSet& rOptSet ) { - sal_uInt16 nOldSpellLang, nOldCjkLang, nOldCtlLang; + LanguageType nOldSpellLang, nOldCjkLang, nOldCtlLang; bool bOldAutoSpell; GetSpellSettings( nOldSpellLang, nOldCjkLang, nOldCtlLang, bOldAutoSpell ); @@ -2230,7 +2230,7 @@ using namespace com::sun::star; #define LINGUPROP_AUTOSPELL "IsSpellAuto" -void ScModule::GetSpellSettings( sal_uInt16& rDefLang, sal_uInt16& rCjkLang, sal_uInt16& rCtlLang, +void ScModule::GetSpellSettings( LanguageType& rDefLang, LanguageType& rCjkLang, LanguageType& rCtlLang, bool& rAutoSpell ) { // use SvtLinguConfig instead of service LinguProperties to avoid @@ -2255,7 +2255,7 @@ void ScModule::SetAutoSpellProperty( bool bSet ) aConfig.SetProperty( OUString( LINGUPROP_AUTOSPELL ), uno::Any(bSet) ); } -bool ScModule::HasThesaurusLanguage( sal_uInt16 nLang ) +bool ScModule::HasThesaurusLanguage( LanguageType nLang ) { if ( nLang == LANGUAGE_NONE ) return false; diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx index 1d91334c877c..acccdfb55bb3 100644 --- a/sc/source/ui/dbgui/asciiopt.cxx +++ b/sc/source/ui/dbgui/asciiopt.cxx @@ -304,7 +304,7 @@ OUString ScAsciiOptions::WriteToString() const aOutStr += "," + // Language - OUString::number(eLang) + "," + + OUString::number((sal_uInt16)eLang) + "," + // Import quoted field as text. OUString::boolean( bQuotedFieldAsText ) + "," + // Detect special numbers. diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx index ebf8ac90867f..feeed32efb77 100644 --- a/sc/source/ui/dbgui/scuiasciiopt.cxx +++ b/sc/source/ui/dbgui/scuiasciiopt.cxx @@ -596,7 +596,7 @@ void ScImportAsciiDlg::SaveParameters() pRbFixed->IsChecked(), static_cast<sal_Int32>(pNfRow->GetValue()), pLbCharSet->GetSelectEntryPos(), - static_cast<sal_Int32>(pLbCustomLang->GetSelectLanguage()), meCall ); + static_cast<sal_uInt16>(pLbCustomLang->GetSelectLanguage()), meCall ); } void ScImportAsciiDlg::SetSeparators() diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx index 3efd9f1c530d..8a75619c2157 100644 --- a/sc/source/ui/docshell/docsh3.cxx +++ b/sc/source/ui/docshell/docsh3.cxx @@ -404,7 +404,7 @@ void ScDocShell::InitOptions(bool bForLoading) // called from InitNew and L { // Settings from the SpellCheckCfg get into Doc- and ViewOptions - sal_uInt16 nDefLang, nCjkLang, nCtlLang; + LanguageType nDefLang, nCjkLang, nCtlLang; bool bAutoSpell; ScModule::GetSpellSettings( nDefLang, nCjkLang, nCtlLang, bAutoSpell ); ScModule* pScMod = SC_MOD(); @@ -437,7 +437,7 @@ void ScDocShell::InitOptions(bool bForLoading) // called from InitNew and L // print options are now set directly before the printing - aDocument.SetLanguage( (LanguageType) nDefLang, (LanguageType) nCjkLang, (LanguageType) nCtlLang ); + aDocument.SetLanguage( nDefLang, nCjkLang, nCtlLang ); } Printer* ScDocShell::GetDocumentPrinter() // for OLE diff --git a/sc/source/ui/inc/viewutil.hxx b/sc/source/ui/inc/viewutil.hxx index af37b9620edb..dc84c2880b1d 100644 --- a/sc/source/ui/inc/viewutil.hxx +++ b/sc/source/ui/inc/viewutil.hxx @@ -21,6 +21,7 @@ #include "address.hxx" #include <sal/types.h> +#include <i18nlangtag/lang.h> class SfxItemSet; class SfxBindings; @@ -54,7 +55,7 @@ public: static void PutItemScript( SfxItemSet& rShellSet, const SfxItemSet& rCoreSet, sal_uInt16 nWhichId, SvtScriptType nScript ); - static sal_uInt16 GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos ); + static LanguageType GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos ); static TransliterationFlags GetTransliterationType( sal_uInt16 nSlotID ); diff --git a/sc/source/ui/unoobj/filtuno.cxx b/sc/source/ui/unoobj/filtuno.cxx index b24219ae6017..451f3974189d 100644 --- a/sc/source/ui/unoobj/filtuno.cxx +++ b/sc/source/ui/unoobj/filtuno.cxx @@ -200,7 +200,7 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::execute() LanguageType eLang = pDlg->GetLanguageType(); OUStringBuffer aBuf; - aBuf.append(OUString::number(static_cast<sal_Int32>(eLang))); + aBuf.append(OUString::number(static_cast<sal_uInt16>(eLang))); aBuf.append(' '); aBuf.append(pDlg->IsDateConversionSet() ? sal_Unicode('1') : sal_Unicode('0')); aFilterOptions = aBuf.makeStringAndClear(); diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx index 40e9c650f0a7..4e286e323a4a 100644 --- a/sc/source/ui/view/cellsh.cxx +++ b/sc/source/ui/view/cellsh.cxx @@ -328,7 +328,7 @@ void ScCellShell::GetCellState( SfxItemSet& rSet ) if (!bDisable) { // test for available languages - sal_uInt16 nLang = ScViewUtil::GetEffLanguage( &rDoc, aCursor ); + LanguageType nLang = ScViewUtil::GetEffLanguage( &rDoc, aCursor ); bDisable = !ScModule::HasThesaurusLanguage( nLang ); } } diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 169ff3808d18..7225b78eac40 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -5396,7 +5396,7 @@ bool ScGridWindow::ContinueOnlineSpelling() } const ScPatternAttr* pPattern = pDoc->GetPattern(nCol, nRow, nTab); - sal_uInt16 nCellLang = + LanguageType nCellLang = static_cast<const SvxLanguageItem&>(pPattern->GetItem(ATTR_FONT_LANGUAGE)).GetValue(); if (nCellLang == LANGUAGE_SYSTEM) nCellLang = Application::GetSettings().GetLanguageTag().getLanguageType(); // never use SYSTEM for spelling diff --git a/sc/source/ui/view/spelleng.cxx b/sc/source/ui/view/spelleng.cxx index 4a64409ec8e0..8ad1f59c1c74 100644 --- a/sc/source/ui/view/spelleng.cxx +++ b/sc/source/ui/view/spelleng.cxx @@ -192,7 +192,7 @@ bool ScConversionEngineBase::FindNextConversionCell() const SfxPoolItem* pItem = mrDoc.GetAttr( nNewCol, nNewRow, mnStartTab, ATTR_FONT_LANGUAGE ); if( const SvxLanguageItem* pLangItem = dynamic_cast<const SvxLanguageItem*>( pItem ) ) { - LanguageType eLang = static_cast< LanguageType >( pLangItem->GetValue() ); + LanguageType eLang = pLangItem->GetValue(); if( eLang == LANGUAGE_SYSTEM ) eLang = Application::GetSettings().GetLanguageTag().getLanguageType(); // never use SYSTEM for spelling if( eLang != meCurrLang ) diff --git a/sc/source/ui/view/viewutil.cxx b/sc/source/ui/view/viewutil.cxx index 8c00d51c6028..30376f3529ac 100644 --- a/sc/source/ui/view/viewutil.cxx +++ b/sc/source/ui/view/viewutil.cxx @@ -69,7 +69,7 @@ void ScViewUtil::PutItemScript( SfxItemSet& rShellSet, const SfxItemSet& rCoreSe rShellSet.InvalidateItem( nWhichId ); } -sal_uInt16 ScViewUtil::GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos ) +LanguageType ScViewUtil::GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos ) { // used for thesaurus @@ -81,7 +81,7 @@ sal_uInt16 ScViewUtil::GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos ) LanguageType eLnge; if (pLangIt) { - eLnge = (LanguageType) pLangIt->GetValue(); + eLnge = pLangIt->GetValue(); if (eLnge == LANGUAGE_DONTKNOW) //! can this happen? { LanguageType eLatin, eCjk, eCtl; diff --git a/sd/inc/Outliner.hxx b/sd/inc/Outliner.hxx index 7c7fd80d6084..874bc3952668 100644 --- a/sd/inc/Outliner.hxx +++ b/sd/inc/Outliner.hxx @@ -172,7 +172,7 @@ public: /** Starts the text conversion (hangul/hanja or Chinese simplified/traditional) for the current viewshell */ - void StartConversion( sal_Int16 nSourceLanguage, sal_Int16 nTargetLanguage, + void StartConversion( LanguageType nSourceLanguage, LanguageType nTargetLanguage, const vcl::Font *pTargetFont, sal_Int32 nOptions, bool bIsInteractive ); /** This is called internally when text conversion is started. @@ -214,7 +214,7 @@ private: /** this is the language that is used for current text conversion. Only valid if meMode is TEXT_CONVERSION. */ - sal_Int16 mnConversionLanguage; + LanguageType mnConversionLanguage; /** While the value of this flag is greater than 0 changes of the current page do not lead to selecting the corresponding text in the outliner. diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx index 690d29756b1b..f2ce94fe6bca 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -3320,7 +3320,7 @@ void TextObjBinary::WriteTextSpecInfo( SvStream* pStrm ) pStrm ->WriteUInt32( nPortionSize ) .WriteInt32( nFlags ) .WriteInt16( 1 ) // spellinfo -> needs rechecking - .WriteInt16( LanguageTag( rPortion.meCharLocale ).makeFallback().getLanguageType() ) + .WriteInt16( (sal_uInt16)LanguageTag( rPortion.meCharLocale ).makeFallback().getLanguageType() ) .WriteInt16( 0 ); // alt language } } diff --git a/sd/source/ui/func/fuhhconv.cxx b/sd/source/ui/func/fuhhconv.cxx index 81a4ab23b393..cad5a7a59974 100644 --- a/sd/source/ui/func/fuhhconv.cxx +++ b/sd/source/ui/func/fuhhconv.cxx @@ -95,7 +95,7 @@ rtl::Reference<FuPoor> FuHangulHanjaConversion::Create( ViewShell* pViewSh, ::sd /** * Search and replace */ -void FuHangulHanjaConversion::StartConversion( sal_Int16 nSourceLanguage, sal_Int16 nTargetLanguage, +void FuHangulHanjaConversion::StartConversion( LanguageType nSourceLanguage, LanguageType nTargetLanguage, const vcl::Font *pTargetFont, sal_Int32 nOptions, bool bIsInteractive ) { @@ -147,7 +147,7 @@ void FuHangulHanjaConversion::StartConversion( sal_Int16 nSourceLanguage, sal_In mpView->EndUndo(); } -void FuHangulHanjaConversion::ConvertStyles( sal_Int16 nTargetLanguage, const vcl::Font *pTargetFont ) +void FuHangulHanjaConversion::ConvertStyles( LanguageType nTargetLanguage, const vcl::Font *pTargetFont ) { if( !mpDoc ) return; @@ -182,7 +182,7 @@ void FuHangulHanjaConversion::ConvertStyles( sal_Int16 nTargetLanguage, const vc pStyle = pStyleSheetPool->Next(); } - mpDoc->SetLanguage( EE_CHAR_LANGUAGE_CJK, nTargetLanguage ); + mpDoc->SetLanguage( nTargetLanguage, EE_CHAR_LANGUAGE_CJK ); } void FuHangulHanjaConversion::StartChineseConversion() @@ -234,9 +234,9 @@ void FuHangulHanjaConversion::StartChineseConversion() } //execute translation - sal_Int16 nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; - sal_Int16 nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; - sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; + LanguageType nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; + LanguageType nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; + sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; if( !bCommonTerms ) nOptions = nOptions | i18n::TextConversionOption::CHARACTER_BY_CHARACTER; diff --git a/sd/source/ui/inc/fuhhconv.hxx b/sd/source/ui/inc/fuhhconv.hxx index adf81223574b..44a9cdc15870 100644 --- a/sd/source/ui/inc/fuhhconv.hxx +++ b/sd/source/ui/inc/fuhhconv.hxx @@ -32,12 +32,12 @@ public: static rtl::Reference<FuPoor> Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); - void StartConversion( sal_Int16 nSourceLanguage, sal_Int16 nTargetLanguage, + void StartConversion( LanguageType nSourceLanguage, LanguageType nTargetLanguage, const vcl::Font *pTargetFont, sal_Int32 nOptions, bool bIsInteractive ); void StartChineseConversion(); - void ConvertStyles( sal_Int16 nTargetLanguage, const vcl::Font *pTargetFont ); + void ConvertStyles( LanguageType nTargetLanguage, const vcl::Font *pTargetFont ); protected: virtual ~FuHangulHanjaConversion() override; diff --git a/sd/source/ui/presenter/PresenterTextView.cxx b/sd/source/ui/presenter/PresenterTextView.cxx index 4da4289e0919..6b6673b1c96a 100644 --- a/sd/source/ui/presenter/PresenterTextView.cxx +++ b/sd/source/ui/presenter/PresenterTextView.cxx @@ -273,8 +273,8 @@ EditEngine* PresenterTextView::Implementation::CreateEditEngine() SvtLinguConfig().GetOptions( aOpt ); struct FontDta { - sal_Int16 nFallbackLang; - sal_Int16 nLang; + LanguageType nFallbackLang; + LanguageType nLang; DefaultFontType nFontType; sal_uInt16 nFontInfoId; } aTable[3] = diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx index cd38117db3da..e6b58ec9391e 100644 --- a/sd/source/ui/view/Outliner.cxx +++ b/sd/source/ui/view/Outliner.cxx @@ -1560,7 +1560,7 @@ void SdOutliner::HandleChangedSelection() } } -void SdOutliner::StartConversion( sal_Int16 nSourceLanguage, sal_Int16 nTargetLanguage, +void SdOutliner::StartConversion( LanguageType nSourceLanguage, LanguageType nTargetLanguage, const vcl::Font *pTargetFont, sal_Int32 nOptions, bool bIsInteractive ) { std::shared_ptr<sd::ViewShell> pViewShell (mpWeakViewShell.lock()); diff --git a/sfx2/source/bastyp/sfxhtml.cxx b/sfx2/source/bastyp/sfxhtml.cxx index 406bd63c5d24..70c2741d408e 100644 --- a/sfx2/source/bastyp/sfxhtml.cxx +++ b/sfx2/source/bastyp/sfxhtml.cxx @@ -322,13 +322,13 @@ double SfxHTMLParser::GetTableDataOptionsValNum( sal_uInt32& nNumForm, LanguageType& eNumLang, const OUString& aValStr, const OUString& aNumStr, SvNumberFormatter& rFormatter ) { - LanguageType eParseLang = (LanguageType )aNumStr.toInt32(); + LanguageType eParseLang(aNumStr.toInt32()); sal_uInt32 nParseForm = rFormatter.GetFormatForLanguageIfBuiltIn( 0, eParseLang ); double fVal; (void)rFormatter.IsNumberFormat(aValStr, nParseForm, fVal); if ( comphelper::string::getTokenCount(aNumStr, ';') > 2 ) { - eNumLang = (LanguageType)aNumStr.getToken( 1, ';' ).toInt32(); + eNumLang = LanguageType(aNumStr.getToken( 1, ';' ).toInt32()); sal_Int32 nPos = aNumStr.indexOf( ';' ); nPos = aNumStr.indexOf( ';', nPos + 1 ); OUString aFormat( aNumStr.copy( nPos + 1 ) ); diff --git a/shell/source/tools/lngconvex/lngconvex.cxx b/shell/source/tools/lngconvex/lngconvex.cxx index 079f0558194b..49edc07ad92c 100644 --- a/shell/source/tools/lngconvex/lngconvex.cxx +++ b/shell/source/tools/lngconvex/lngconvex.cxx @@ -289,7 +289,7 @@ void add_group_entries( aConfig.SetGroup(GroupName); size_t key_count = aConfig.GetKeyCount(); - std::map< unsigned short , std::string > map; + std::map< LanguageType, std::string > map; for (size_t i = 0; i < key_count; i++) { @@ -297,7 +297,7 @@ void add_group_entries( OString key_value_utf8 = aConfig.ReadKey(sal::static_int_cast<sal_uInt16>(i)); iso_lang_identifier myiso_lang( iso_lang ); LanguageType ltype = LanguageTag( myiso_lang.make_OUString()).makeFallback().getLanguageType(); - if( ( ltype & 0x0200 ) == 0 && map[ ltype ].empty() ) + if( ( (sal_uInt16)ltype & 0x0200 ) == 0 && map[ ltype ].empty() ) { Substitutor.set_language(iso_lang_identifier(iso_lang)); @@ -308,13 +308,13 @@ void add_group_entries( Substitutor.add_substitution( GroupName.getStr(), make_winrc_unicode_string(key_value_utf16)); - map[ static_cast<unsigned short>(ltype) ] = std::string( iso_lang.getStr() ); + map[ ltype ] = std::string( iso_lang.getStr() ); } else { if( !map[ ltype ].empty() ) { - printf("ERROR: Duplicated ms id %d found for the languages %s and %s !!!! This does not work in microsoft resources\nPlease remove one!\n", ltype , map[ ltype ].c_str() , iso_lang.getStr()); + printf("ERROR: Duplicated ms id %d found for the languages %s and %s !!!! This does not work in microsoft resources\nPlease remove one!\n", (sal_uInt16)ltype , map[ ltype ].c_str() , iso_lang.getStr()); exit( -1 ); } } diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx index f0a274c82de2..67ad58e7e498 100644 --- a/starmath/source/document.cxx +++ b/starmath/source/document.cxx @@ -272,7 +272,7 @@ void SmDocShell::ArrangeFormula() // and numbers should not be converted ComplexTextLayoutFlags nLayoutMode = pOutDev->GetLayoutMode(); pOutDev->SetLayoutMode( ComplexTextLayoutFlags::Default ); - sal_Int16 nDigitLang = pOutDev->GetDigitLanguage(); + LanguageType nDigitLang = pOutDev->GetDigitLanguage(); pOutDev->SetDigitLanguage( LANGUAGE_ENGLISH ); mpTree->Arrange(*pOutDev, rFormat); @@ -290,8 +290,8 @@ void SetEditEngineDefaultFonts(SfxItemPool &rEditEngineItemPool, const SvtLinguO { // set fonts to be used struct FontDta { - sal_Int16 nFallbackLang; - sal_Int16 nLang; + LanguageType nFallbackLang; + LanguageType nLang; DefaultFontType nFontType; sal_uInt16 nFontInfoId; } aTable[3] = @@ -419,7 +419,7 @@ void SmDocShell::DrawFormula(OutputDevice &rDev, Point &rPosition, bool bDrawSel // and numbers should not be converted ComplexTextLayoutFlags nLayoutMode = rDev.GetLayoutMode(); rDev.SetLayoutMode( ComplexTextLayoutFlags::Default ); - sal_Int16 nDigitLang = rDev.GetDigitLanguage(); + LanguageType nDigitLang = rDev.GetDigitLanguage(); rDev.SetDigitLanguage( LANGUAGE_ENGLISH ); //Set selection if any diff --git a/svl/qa/unit/svl.cxx b/svl/qa/unit/svl.cxx index 99a1626f37cd..10fcbd5672b6 100644 --- a/svl/qa/unit/svl.cxx +++ b/svl/qa/unit/svl.cxx @@ -405,7 +405,7 @@ void Test::checkPreviewString(SvNumberFormatter& aFormatter, aMessage += "\", "; aMessage += rtl::OString::number( fPreviewNumber ); aMessage += ", sStr, ppColor, "; - aMessage += rtl::OString::number( eLang ); + aMessage += rtl::OString::number( (sal_uInt16)eLang ); aMessage += " ) failed"; CPPUNIT_FAIL( aMessage.getStr() ); } diff --git a/svl/source/config/languageoptions.cxx b/svl/source/config/languageoptions.cxx index 3d2f5947c925..c7314aede9ce 100644 --- a/svl/source/config/languageoptions.cxx +++ b/svl/source/config/languageoptions.cxx @@ -134,7 +134,7 @@ bool SvtLanguageOptions::IsReadOnly(SvtLanguageOptions::EOption eOption) const } // returns for a language the scripttype -SvtScriptType SvtLanguageOptions::GetScriptTypeOfLanguage( sal_uInt16 nLang ) +SvtScriptType SvtLanguageOptions::GetScriptTypeOfLanguage( LanguageType nLang ) { if( LANGUAGE_DONTKNOW == nLang ) nLang = LANGUAGE_ENGLISH_US; @@ -184,7 +184,7 @@ sal_Int16 SvtLanguageOptions::FromSvtScriptTypeToI18N( SvtScriptType nItemType ) return 0; } -sal_Int16 SvtLanguageOptions::GetI18NScriptTypeOfLanguage( sal_uInt16 nLang ) +sal_Int16 SvtLanguageOptions::GetI18NScriptTypeOfLanguage( LanguageType nLang ) { return FromSvtScriptTypeToI18N( GetScriptTypeOfLanguage( nLang ) ); } @@ -237,7 +237,7 @@ bool SvtSystemLanguageOptions::isKeyboardLayoutTypeInstalled(sal_Int16 scriptTyp for(int i = 0; i < nLayouts; ++i) { LCID lang = MAKELCID((WORD)(reinterpret_cast<DWORD_PTR>(lpList[i]) & 0xffff), SORT_DEFAULT); - if (MsLangId::getScriptType(lang) == scriptType) + if (MsLangId::getScriptType(LanguageType(lang)) == scriptType) { isInstalled = true; break; diff --git a/svl/source/items/srchitem.cxx b/svl/source/items/srchitem.cxx index 32806948fc29..32440a4cd7d0 100644 --- a/svl/source/items/srchitem.cxx +++ b/svl/source/items/srchitem.cxx @@ -481,12 +481,12 @@ bool SvxSearchItem::QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId ) const rVal <<= (sal_Int32)m_aSearchOpt.transliterateFlags; break; case MID_SEARCH_LOCALE: { - sal_Int16 nLocale; + LanguageType nLocale; if (!m_aSearchOpt.Locale.Language.isEmpty() || !m_aSearchOpt.Locale.Country.isEmpty() ) nLocale = LanguageTag::convertToLanguageType( m_aSearchOpt.Locale ); else nLocale = LANGUAGE_NONE; - rVal <<= nLocale; + rVal <<= (sal_Int16)(sal_uInt16)nLocale; break; } @@ -655,13 +655,13 @@ bool SvxSearchItem::PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) bRet = (rVal >>= nInt); if ( bRet ) { - if ( nInt == LANGUAGE_NONE ) + if ( LanguageType(nInt) == LANGUAGE_NONE ) { m_aSearchOpt.Locale = css::lang::Locale(); } else { - m_aSearchOpt.Locale = LanguageTag::convertToLocale( nInt); + m_aSearchOpt.Locale = LanguageTag::convertToLocale( LanguageType(nInt) ); } } break; diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index e2284f83782d..decaa845640a 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -748,7 +748,7 @@ void SvNumberFormatter::DeleteEntry(sal_uInt32 nKey) aFTable.erase(nKey); } -void SvNumberFormatter::GetUsedLanguages( std::vector<sal_uInt16>& rList ) +void SvNumberFormatter::GetUsedLanguages( std::vector<LanguageType>& rList ) { rList.clear(); @@ -3593,7 +3593,7 @@ const NfCurrencyEntry* SvNumberFormatter::GetCurrencyEntry( bool & bFoundBank, } else { - eExtLang = (LanguageType) ((nExtLang < 0) ? -nExtLang : nExtLang); + eExtLang = LanguageType((nExtLang < 0) ? -nExtLang : nExtLang); } } else @@ -4091,7 +4091,7 @@ OUString NfCurrencyEntry::BuildSymbolString(bool bBank, } if ( !bWithoutExtension && eLanguage != LANGUAGE_DONTKNOW && eLanguage != LANGUAGE_SYSTEM ) { - sal_Int32 nLang = static_cast<sal_Int32>(eLanguage); + sal_Int32 nLang = static_cast<sal_uInt16>(eLanguage); aBuf.append('-').append( OUString::number(nLang, 16).toAsciiUpperCase()); } } diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index b180eb384bee..cf2a245755f1 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -142,10 +142,10 @@ sal_uInt8 SvNumberNatNum::MapDBNumToNatNum( sal_uInt8 nDBNum, LanguageType eLang { sal_uInt8 nNatNum = 0; eLang = MsLangId::getRealLanguage( eLang ); // resolve SYSTEM etc. - eLang &= 0x03FF; // 10 bit primary language + eLang = primary(eLang); // 10 bit primary language if ( bDate ) { - if ( nDBNum == 4 && eLang == (LANGUAGE_KOREAN & 0x03FF) ) + if ( nDBNum == 4 && eLang == primary(LANGUAGE_KOREAN) ) { nNatNum = 9; } @@ -159,57 +159,34 @@ sal_uInt8 SvNumberNatNum::MapDBNumToNatNum( sal_uInt8 nDBNum, LanguageType eLang switch ( nDBNum ) { case 1: - switch ( eLang ) - { - case (LANGUAGE_CHINESE & 0x03FF): + if ( eLang == primary(LANGUAGE_CHINESE) ) nNatNum = 4; - break; - case (LANGUAGE_JAPANESE & 0x03FF): + else if ( eLang == primary(LANGUAGE_JAPANESE) ) nNatNum = 1; - break; - case (LANGUAGE_KOREAN & 0x03FF): + else if ( eLang == primary(LANGUAGE_KOREAN) ) nNatNum = 1; - break; - } break; case 2: - switch ( eLang ) - { - case (LANGUAGE_CHINESE & 0x03FF): + if ( eLang == primary(LANGUAGE_CHINESE)) nNatNum = 5; - break; - case (LANGUAGE_JAPANESE & 0x03FF): + else if ( eLang == primary(LANGUAGE_JAPANESE) ) nNatNum = 4; - break; - case (LANGUAGE_KOREAN & 0x03FF): + else if ( eLang == primary(LANGUAGE_KOREAN) ) nNatNum = 2; - break; - } break; case 3: - switch ( eLang ) - { - case (LANGUAGE_CHINESE & 0x03FF): + if ( eLang == primary(LANGUAGE_CHINESE) ) nNatNum = 6; - break; - case (LANGUAGE_JAPANESE & 0x03FF): + else if ( eLang == primary(LANGUAGE_JAPANESE) ) nNatNum = 5; - break; - case (LANGUAGE_KOREAN & 0x03FF): + else if ( eLang == primary(LANGUAGE_KOREAN) ) nNatNum = 3; - break; - } break; case 4: - switch ( eLang ) - { - case (LANGUAGE_JAPANESE & 0x03FF): + if ( eLang == primary(LANGUAGE_JAPANESE) ) nNatNum = 7; - break; - case (LANGUAGE_KOREAN & 0x03FF): + else if ( eLang == primary(LANGUAGE_KOREAN) ) nNatNum = 9; - break; - } break; } } @@ -221,10 +198,10 @@ sal_uInt8 SvNumberNatNum::MapNatNumToDBNum( sal_uInt8 nNatNum, LanguageType eLan { sal_uInt8 nDBNum = 0; eLang = MsLangId::getRealLanguage( eLang ); // resolve SYSTEM etc. - eLang &= 0x03FF; // 10 bit primary language + eLang = primary(eLang); // 10 bit primary language if ( bDate ) { - if ( nNatNum == 9 && eLang == (LANGUAGE_KOREAN & 0x03FF) ) + if ( nNatNum == 9 && eLang == primary(LANGUAGE_KOREAN) ) { nDBNum = 4; } @@ -238,79 +215,44 @@ sal_uInt8 SvNumberNatNum::MapNatNumToDBNum( sal_uInt8 nNatNum, LanguageType eLan switch ( nNatNum ) { case 1: - switch ( eLang ) - { - case (LANGUAGE_JAPANESE & 0x03FF): + if ( eLang == primary(LANGUAGE_JAPANESE) ) nDBNum = 1; - break; - case (LANGUAGE_KOREAN & 0x03FF): + else if ( eLang == primary(LANGUAGE_KOREAN) ) nDBNum = 1; - break; - } break; case 2: - switch ( eLang ) - { - case (LANGUAGE_KOREAN & 0x03FF): + if ( eLang == primary(LANGUAGE_KOREAN) ) nDBNum = 2; - break; - } break; case 3: - switch ( eLang ) - { - case (LANGUAGE_KOREAN & 0x03FF): + if ( eLang == primary(LANGUAGE_KOREAN) ) nDBNum = 3; - break; - } break; case 4: - switch ( eLang ) - { - case (LANGUAGE_CHINESE & 0x03FF): + if ( eLang == primary(LANGUAGE_CHINESE) ) nDBNum = 1; - break; - case (LANGUAGE_JAPANESE & 0x03FF): + else if ( eLang == primary(LANGUAGE_JAPANESE) ) nDBNum = 2; - break; - } break; case 5: - switch ( eLang ) - { - case (LANGUAGE_CHINESE & 0x03FF): + if ( eLang == primary(LANGUAGE_CHINESE) ) nDBNum = 2; - break; - case (LANGUAGE_JAPANESE & 0x03FF): + else if ( eLang == primary(LANGUAGE_JAPANESE) ) nDBNum = 3; - break; - } break; case 6: - switch ( eLang ) - { - case (LANGUAGE_CHINESE & 0x03FF): + if ( eLang == primary(LANGUAGE_CHINESE) ) nDBNum = 3; - break; - } break; case 7: - switch ( eLang ) - { - case (LANGUAGE_JAPANESE & 0x03FF): + if ( eLang == primary(LANGUAGE_JAPANESE) ) nDBNum = 4; - break; - } break; case 8: break; case 9: - switch ( eLang ) - { - case (LANGUAGE_KOREAN & 0x03FF): + if ( eLang == primary(LANGUAGE_KOREAN) ) nDBNum = 4; - break; - } break; case 10: break; @@ -577,10 +519,10 @@ OUString SvNumberformat::ImpObtainCalendarAndNumerals( OUStringBuffer& rString, case 0x17 : // same? sCalendar = "[~hijri]"; // Only Arabic or Farsi languages support Hijri calendar - if ( ( ( nLocaleLang & LANGUAGE_MASK_PRIMARY ) != LANGUAGE_ARABIC_PRIMARY_ONLY ) + if ( ( primary( nLocaleLang ) != LANGUAGE_ARABIC_PRIMARY_ONLY ) && nLocaleLang != LANGUAGE_FARSI ) { - if ( ( ( nTmpLocaleLang & LANGUAGE_MASK_PRIMARY ) == LANGUAGE_ARABIC_PRIMARY_ONLY ) + if ( ( primary( nTmpLocaleLang ) == LANGUAGE_ARABIC_PRIMARY_ONLY ) || nTmpLocaleLang == LANGUAGE_FARSI ) { nLang = maLocale.meLanguage = aTmpLocale.meLanguage; @@ -686,9 +628,9 @@ OUString SvNumberformat::ImpObtainCalendarAndNumerals( OUStringBuffer& rString, case 0x10 : // Burmese (Myanmar) numerals case 0x11 : // Tigrigna (Ethiopia) numerals case 0x12 : // Khmer numerals - if ( ( nLocaleLang & LANGUAGE_MASK_PRIMARY ) != ( nReferenceLanguage & LANGUAGE_MASK_PRIMARY ) ) + if ( primary( nLocaleLang ) != primary( nReferenceLanguage ) ) { - if ( ( nTmpLocaleLang & LANGUAGE_MASK_PRIMARY ) == ( nReferenceLanguage & LANGUAGE_MASK_PRIMARY ) ) + if ( primary( nTmpLocaleLang ) == primary( nReferenceLanguage ) ) { nLang = maLocale.meLanguage = aTmpLocale.meLanguage; } @@ -702,10 +644,10 @@ OUString SvNumberformat::ImpObtainCalendarAndNumerals( OUStringBuffer& rString, case 0x04 : // Devanagari (Hindi) numerals // same numerals (Devanagari) for languages with different primary masks if ( nLocaleLang != LANGUAGE_HINDI && nLocaleLang != LANGUAGE_MARATHI - && ( nLocaleLang & LANGUAGE_MASK_PRIMARY ) != ( LANGUAGE_NEPALI & LANGUAGE_MASK_PRIMARY ) ) + && primary( nLocaleLang ) != primary( LANGUAGE_NEPALI ) ) { if ( nTmpLocaleLang == LANGUAGE_HINDI || nTmpLocaleLang == LANGUAGE_MARATHI - || ( nTmpLocaleLang & LANGUAGE_MASK_PRIMARY ) == ( LANGUAGE_NEPALI & LANGUAGE_MASK_PRIMARY ) ) + || primary( nTmpLocaleLang ) == primary( LANGUAGE_NEPALI ) ) { nLang = maLocale.meLanguage = aTmpLocale.meLanguage; } @@ -735,10 +677,10 @@ OUString SvNumberformat::ImpObtainCalendarAndNumerals( OUStringBuffer& rString, break; case 0x02 : // Eastern-Arabic numerals // all arabic primary mask + LANGUAGE_PUNJABI_ARABIC_LSO - if ( ( nLocaleLang & LANGUAGE_MASK_PRIMARY ) != LANGUAGE_ARABIC_PRIMARY_ONLY + if ( primary( nLocaleLang ) != LANGUAGE_ARABIC_PRIMARY_ONLY && nLocaleLang != LANGUAGE_PUNJABI_ARABIC_LSO ) { - if ( ( nTmpLocaleLang & LANGUAGE_MASK_PRIMARY ) == LANGUAGE_ARABIC_PRIMARY_ONLY + if ( primary( nTmpLocaleLang ) == LANGUAGE_ARABIC_PRIMARY_ONLY || nTmpLocaleLang != LANGUAGE_PUNJABI_ARABIC_LSO ) { nLang = maLocale.meLanguage = aTmpLocale.meLanguage; @@ -758,9 +700,9 @@ OUString SvNumberformat::ImpObtainCalendarAndNumerals( OUStringBuffer& rString, case 0x26 : // Arabic fullwidth numerals, Korean case 0x27 : // Korean Hangul numerals // Japanese and Korean are regular - if ( ( nLocaleLang & LANGUAGE_MASK_PRIMARY ) != ( nReferenceLanguage & LANGUAGE_MASK_PRIMARY ) ) + if ( primary( nLocaleLang ) != primary( nReferenceLanguage ) ) { - if ( ( nTmpLocaleLang & LANGUAGE_MASK_PRIMARY ) == ( nReferenceLanguage & LANGUAGE_MASK_PRIMARY ) ) + if ( primary( nTmpLocaleLang ) == primary( nReferenceLanguage ) ) { nLang = maLocale.meLanguage = aTmpLocale.meLanguage; } @@ -1057,7 +999,7 @@ SvNumberformat::SvNumberformat(OUString& rString, // result in an unknown (empty) language // listbox entry and the user would never see // this format. - if (nIndex == 0 && (aTmpLocale.meLanguage == 0 || + if (nIndex == 0 && (aTmpLocale.meLanguage == LANGUAGE_SYSTEM || SvNumberFormatter::IsLocaleInstalled( aTmpLocale.meLanguage))) { maLocale = aTmpLocale; @@ -1173,7 +1115,7 @@ SvNumberformat::SvNumberformat(OUString& rString, ((eLanguage = MsLangId::getRealLanguage( eLan)) == LANGUAGE_THAI) && NumFor[nIndex].GetNatNum().GetLang() == LANGUAGE_DONTKNOW) { - sStr = "[$-" + OUString::number( eLanguage, 16 ).toAsciiUpperCase() + "]" + sStr; + sStr = "[$-" + OUString::number( sal_uInt16(eLanguage), 16 ).toAsciiUpperCase() + "]" + sStr; NumFor[nIndex].SetNatNumLang( eLanguage); } sBuff.remove(nPosOld, nPos - nPosOld); @@ -1551,7 +1493,7 @@ SvNumberformat::LocaleType SvNumberformat::ImpGetLocaleType(const OUString& rStr } else { - return LANGUAGE_DONTKNOW; + return LocaleType(); // LANGUAGE_DONTKNOW; } ++nPos; } @@ -5159,7 +5101,7 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords, } } sal_uInt32 nAlphabetID = 0x0000000; // Excel ID of alphabet used for numerals see tdf#36038 - sal_uInt32 nLanguageID = 0x0000000; + LanguageType nLanguageID = LANGUAGE_SYSTEM; if ( aNatNum.IsComplete() ) { nLanguageID = MsLangId::getRealLanguage( aNatNum.GetLang()); @@ -5171,115 +5113,105 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords, { // if no DBNum code then use long LCID // if DBNum value != NatNum value, use DBNum and not extended LCID // if calendar, then DBNum will be removed - switch ( nLanguageID & LANGUAGE_MASK_PRIMARY ) - { - case LANGUAGE_ARABIC_PRIMARY_ONLY: + LanguageType pri = primary(nLanguageID); + if ( pri == LANGUAGE_ARABIC_PRIMARY_ONLY ) nAlphabetID = 0x02000000; // Arabic-indic numerals - break; - case LANGUAGE_FARSI & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_FARSI) ) nAlphabetID = 0x03000000; // Farsi numerals - break; - case LANGUAGE_HINDI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_MARATHI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_NEPALI & LANGUAGE_MASK_PRIMARY: + else if ( pri.anyOf( + primary(LANGUAGE_HINDI), + primary(LANGUAGE_MARATHI), + primary(LANGUAGE_NEPALI) )) nAlphabetID = 0x04000000; // Devanagari numerals - break; - case LANGUAGE_BENGALI & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_BENGALI) ) nAlphabetID = 0x05000000; // Bengali numerals - break; - case LANGUAGE_PUNJABI & LANGUAGE_MASK_PRIMARY: - if ( nLanguageID == LANGUAGE_PUNJABI_ARABIC_LSO ) - nAlphabetID = 0x02000000; // Arabic-indic numerals - else - nAlphabetID = 0x06000000; // Punjabi numerals - break; - case LANGUAGE_GUJARATI & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_PUNJABI) ) + { + if ( nLanguageID == LANGUAGE_PUNJABI_ARABIC_LSO ) + nAlphabetID = 0x02000000; // Arabic-indic numerals + else + nAlphabetID = 0x06000000; // Punjabi numerals + } + else if ( pri == primary(LANGUAGE_GUJARATI) ) nAlphabetID = 0x07000000; // Gujarati numerals - break; - case LANGUAGE_ODIA & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_ODIA)) nAlphabetID = 0x08000000; // Odia (Oriya) numerals - break; - case LANGUAGE_TAMIL & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_TAMIL)) nAlphabetID = 0x09000000; // Tamil numerals - break; - case LANGUAGE_TELUGU & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_TELUGU)) nAlphabetID = 0x0A000000; // Telugu numerals - break; - case LANGUAGE_KANNADA & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_KANNADA)) nAlphabetID = 0x0B000000; // Kannada numerals - break; - case LANGUAGE_MALAYALAM & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_MALAYALAM)) nAlphabetID = 0x0C000000; // Malayalam numerals - break; - case LANGUAGE_THAI & LANGUAGE_MASK_PRIMARY: - // The Thai T NatNum modifier during Xcl export. - if ( rKeywords[NF_KEY_THAI_T] == "T" ) - nAlphabetID = 0x0D000000; // Thai numerals - break; - case LANGUAGE_LAO & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_THAI)) + { + // The Thai T NatNum modifier during Xcl export. + if ( rKeywords[NF_KEY_THAI_T] == "T" ) + nAlphabetID = 0x0D000000; // Thai numerals + } + else if ( pri == primary(LANGUAGE_LAO)) nAlphabetID = 0x0E000000; // Lao numerals - break; - case LANGUAGE_TIBETAN & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_TIBETAN)) nAlphabetID = 0x0F000000; // Tibetan numerals - break; - case LANGUAGE_BURMESE & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_BURMESE)) nAlphabetID = 0x10000000; // Burmese numerals - break; - case LANGUAGE_TIGRIGNA_ETHIOPIA & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_TIGRIGNA_ETHIOPIA)) nAlphabetID = 0x11000000; // Tigrigna numerals - break; - case LANGUAGE_KHMER & LANGUAGE_MASK_PRIMARY: + else if ( pri == primary(LANGUAGE_KHMER)) nAlphabetID = 0x12000000; // Khmer numerals - break; - case LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA & LANGUAGE_MASK_PRIMARY: - if ( nLanguageID != LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA - && nLanguageID != LANGUAGE_MONGOLIAN_CYRILLIC_LSO ) - nAlphabetID = 0x13000000; // Mongolian numerals - break; + else if ( pri == primary(LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA)) + { + if ( nLanguageID != LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA + && nLanguageID != LANGUAGE_MONGOLIAN_CYRILLIC_LSO ) + nAlphabetID = 0x13000000; // Mongolian numerals + } // CJK numerals - case LANGUAGE_JAPANESE & LANGUAGE_MASK_PRIMARY: - nAlphabetID = 0x1B; + else if ( pri == primary(LANGUAGE_JAPANESE)) + { + nAlphabetID = 0x1B; + lcl_incrementAlphabetWithNatNum ( nAlphabetID, aNatNum.GetNatNum() ); + } + else if ( pri == primary(LANGUAGE_CHINESE)) + { + if ( nLanguageID == LANGUAGE_CHINESE_TRADITIONAL + || nLanguageID == LANGUAGE_CHINESE_HONGKONG + || nLanguageID == LANGUAGE_CHINESE_MACAU ) + { + nAlphabetID = 0x21; lcl_incrementAlphabetWithNatNum ( nAlphabetID, aNatNum.GetNatNum() ); - break; - case LANGUAGE_CHINESE & LANGUAGE_MASK_PRIMARY: - if ( nLanguageID == LANGUAGE_CHINESE_TRADITIONAL - || nLanguageID == LANGUAGE_CHINESE_HONGKONG - || nLanguageID == LANGUAGE_CHINESE_MACAU ) - { - nAlphabetID = 0x21; - lcl_incrementAlphabetWithNatNum ( nAlphabetID, aNatNum.GetNatNum() ); - } - else // LANGUAGE_CHINESE_SIMPLIFIED - { - nAlphabetID = 0x1E; - lcl_incrementAlphabetWithNatNum ( nAlphabetID, aNatNum.GetNatNum() ); - } - break; - case LANGUAGE_KOREAN & LANGUAGE_MASK_PRIMARY: - if ( aNatNum.GetNatNum() == 9 ) // Hangul - { - nAlphabetID = 0x27000000; - } - else - { - nAlphabetID = 0x24; - lcl_incrementAlphabetWithNatNum ( nAlphabetID, aNatNum.GetNatNum() ); - } - break; + } + else // LANGUAGE_CHINESE_SIMPLIFIED + { + nAlphabetID = 0x1E; + lcl_incrementAlphabetWithNatNum ( nAlphabetID, aNatNum.GetNatNum() ); + } + } + else if ( pri == primary(LANGUAGE_KOREAN)) + { + if ( aNatNum.GetNatNum() == 9 ) // Hangul + { + nAlphabetID = 0x27000000; + } + else + { + nAlphabetID = 0x24; + lcl_incrementAlphabetWithNatNum ( nAlphabetID, aNatNum.GetNatNum() ); + } } } // Add LCID to DBNum - if ( aNatNum.GetDBNum() > 0 && nLanguageID == 0 ) + if ( aNatNum.GetDBNum() > 0 && nLanguageID == LANGUAGE_SYSTEM ) nLanguageID = MsLangId::getRealLanguage( aNatNum.GetLang()); } if ( nCalendarID > 0 ) { // Add alphabet and language to calendar if ( nAlphabetID == 0 ) nAlphabetID = 0x01000000; - if ( nLanguageID == 0 && nOriginalLang != LANGUAGE_DONTKNOW ) + if ( nLanguageID == LANGUAGE_SYSTEM && nOriginalLang != LANGUAGE_DONTKNOW ) nLanguageID = nOriginalLang; } - lcl_insertLCID( aStr, nAlphabetID + nCalendarID + nLanguageID, nPosInsertLCID ); + lcl_insertLCID( aStr, nAlphabetID + nCalendarID + (sal_uInt16)nLanguageID, nPosInsertLCID ); } for ( ; nSub<4 && bDefault[nSub]; ++nSub ) { // append empty subformats diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx index 4bf7f4838604..16d5f31bd65b 100644 --- a/svl/source/numbers/zforscan.cxx +++ b/svl/source/numbers/zforscan.cxx @@ -228,13 +228,13 @@ void ImpSvNumberformatScan::SetDependentKeywords() { sKeyword[NF_KEY_THAI_T] = "t"; } - switch ( eLang ) + if ( eLang.anyOf( + LANGUAGE_GERMAN, + LANGUAGE_GERMAN_SWISS, + LANGUAGE_GERMAN_AUSTRIAN, + LANGUAGE_GERMAN_LUXEMBOURG, + LANGUAGE_GERMAN_LIECHTENSTEIN)) { - case LANGUAGE_GERMAN: - case LANGUAGE_GERMAN_SWISS: - case LANGUAGE_GERMAN_AUSTRIAN: - case LANGUAGE_GERMAN_LUXEMBOURG: - case LANGUAGE_GERMAN_LIECHTENSTEIN: //! all capital letters sKeyword[NF_KEY_M] = "M"; // month 1 sKeyword[NF_KEY_MM] = "MM"; // month 01 @@ -261,13 +261,14 @@ void ImpSvNumberformatScan::SetDependentKeywords() sKeyword[NF_KEY_GREY] = "GRAU"; sKeyword[NF_KEY_YELLOW] = "GELB"; sKeyword[NF_KEY_WHITE] = "WEISS"; - break; - default: + } + else + { // day - switch ( eLang ) + if ( eLang.anyOf( + LANGUAGE_ITALIAN, + LANGUAGE_ITALIAN_SWISS)) { - case LANGUAGE_ITALIAN: - case LANGUAGE_ITALIAN_SWISS: sKeyword[NF_KEY_D] = "G"; sKeyword[NF_KEY_DD] = "GG"; sKeyword[NF_KEY_DDD] = "GGG"; @@ -276,41 +277,45 @@ void ImpSvNumberformatScan::SetDependentKeywords() sKeyword[NF_KEY_G] = "X"; sKeyword[NF_KEY_GG] = "XX"; sKeyword[NF_KEY_GGG] = "XXX"; - break; - case LANGUAGE_FRENCH: - case LANGUAGE_FRENCH_BELGIAN: - case LANGUAGE_FRENCH_CANADIAN: - case LANGUAGE_FRENCH_SWISS: - case LANGUAGE_FRENCH_LUXEMBOURG: - case LANGUAGE_FRENCH_MONACO: + } + else if ( eLang.anyOf( + LANGUAGE_FRENCH, + LANGUAGE_FRENCH_BELGIAN, + LANGUAGE_FRENCH_CANADIAN, + LANGUAGE_FRENCH_SWISS, + LANGUAGE_FRENCH_LUXEMBOURG, + LANGUAGE_FRENCH_MONACO)) + { sKeyword[NF_KEY_D] = "J"; sKeyword[NF_KEY_DD] = "JJ"; sKeyword[NF_KEY_DDD] = "JJJ"; sKeyword[NF_KEY_DDDD] = "JJJJ"; - break; - case LANGUAGE_FINNISH: + } + else if ( eLang == LANGUAGE_FINNISH ) + { sKeyword[NF_KEY_D] = "P"; sKeyword[NF_KEY_DD] = "PP"; sKeyword[NF_KEY_DDD] = "PPP"; sKeyword[NF_KEY_DDDD] = "PPPP"; - break; - default: + } + else + { sKeyword[NF_KEY_D] = "D"; sKeyword[NF_KEY_DD] = "DD"; sKeyword[NF_KEY_DDD] = "DDD"; sKeyword[NF_KEY_DDDD] = "DDDD"; } // month - switch ( eLang ) + if ( eLang == LANGUAGE_FINNISH ) { - case LANGUAGE_FINNISH: sKeyword[NF_KEY_M] = "K"; sKeyword[NF_KEY_MM] = "KK"; sKeyword[NF_KEY_MMM] = "KKK"; sKeyword[NF_KEY_MMMM] = "KKKK"; sKeyword[NF_KEY_MMMMM] = "KKKKK"; - break; - default: + } + else + { sKeyword[NF_KEY_M] = "M"; sKeyword[NF_KEY_MM] = "MM"; sKeyword[NF_KEY_MMM] = "MMM"; @@ -318,76 +323,83 @@ void ImpSvNumberformatScan::SetDependentKeywords() sKeyword[NF_KEY_MMMMM] = "MMMMM"; } // year - switch ( eLang ) - { - case LANGUAGE_ITALIAN: - case LANGUAGE_ITALIAN_SWISS: - case LANGUAGE_FRENCH: - case LANGUAGE_FRENCH_BELGIAN: - case LANGUAGE_FRENCH_CANADIAN: - case LANGUAGE_FRENCH_SWISS: - case LANGUAGE_FRENCH_LUXEMBOURG: - case LANGUAGE_FRENCH_MONACO: - case LANGUAGE_PORTUGUESE: - case LANGUAGE_PORTUGUESE_BRAZILIAN: - case LANGUAGE_SPANISH_MODERN: - case LANGUAGE_SPANISH_DATED: - case LANGUAGE_SPANISH_MEXICAN: - case LANGUAGE_SPANISH_GUATEMALA: - case LANGUAGE_SPANISH_COSTARICA: - case LANGUAGE_SPANISH_PANAMA: - case LANGUAGE_SPANISH_DOMINICAN_REPUBLIC: - case LANGUAGE_SPANISH_VENEZUELA: - case LANGUAGE_SPANISH_COLOMBIA: - case LANGUAGE_SPANISH_PERU: - case LANGUAGE_SPANISH_ARGENTINA: - case LANGUAGE_SPANISH_ECUADOR: - case LANGUAGE_SPANISH_CHILE: - case LANGUAGE_SPANISH_URUGUAY: - case LANGUAGE_SPANISH_PARAGUAY: - case LANGUAGE_SPANISH_BOLIVIA: - case LANGUAGE_SPANISH_EL_SALVADOR: - case LANGUAGE_SPANISH_HONDURAS: - case LANGUAGE_SPANISH_NICARAGUA: - case LANGUAGE_SPANISH_PUERTO_RICO: + if ( eLang.anyOf( + LANGUAGE_ITALIAN, + LANGUAGE_ITALIAN_SWISS, + LANGUAGE_FRENCH, + LANGUAGE_FRENCH_BELGIAN, + LANGUAGE_FRENCH_CANADIAN, + LANGUAGE_FRENCH_SWISS, + LANGUAGE_FRENCH_LUXEMBOURG, + LANGUAGE_FRENCH_MONACO, + LANGUAGE_PORTUGUESE, + LANGUAGE_PORTUGUESE_BRAZILIAN, + LANGUAGE_SPANISH_MODERN, + LANGUAGE_SPANISH_DATED, + LANGUAGE_SPANISH_MEXICAN, + LANGUAGE_SPANISH_GUATEMALA, + LANGUAGE_SPANISH_COSTARICA, + LANGUAGE_SPANISH_PANAMA, + LANGUAGE_SPANISH_DOMINICAN_REPUBLIC, + LANGUAGE_SPANISH_VENEZUELA, + LANGUAGE_SPANISH_COLOMBIA, + LANGUAGE_SPANISH_PERU, + LANGUAGE_SPANISH_ARGENTINA, + LANGUAGE_SPANISH_ECUADOR, + LANGUAGE_SPANISH_CHILE, + LANGUAGE_SPANISH_URUGUAY, + LANGUAGE_SPANISH_PARAGUAY, + LANGUAGE_SPANISH_BOLIVIA, + LANGUAGE_SPANISH_EL_SALVADOR, + LANGUAGE_SPANISH_HONDURAS, + LANGUAGE_SPANISH_NICARAGUA, + LANGUAGE_SPANISH_PUERTO_RICO)) + { sKeyword[NF_KEY_YY] = "AA"; sKeyword[NF_KEY_YYYY] = "AAAA"; // must exchange the day of week name code, same as Xcl sKeyword[NF_KEY_AAA] = "OOO"; sKeyword[NF_KEY_AAAA] = "OOOO"; - break; - case LANGUAGE_DUTCH: - case LANGUAGE_DUTCH_BELGIAN: + } + else if ( eLang.anyOf( + LANGUAGE_DUTCH, + LANGUAGE_DUTCH_BELGIAN)) + { sKeyword[NF_KEY_YY] = "JJ"; sKeyword[NF_KEY_YYYY] = "JJJJ"; - break; - case LANGUAGE_FINNISH: + } + else if ( eLang == LANGUAGE_FINNISH ) + { sKeyword[NF_KEY_YY] = "VV"; sKeyword[NF_KEY_YYYY] = "VVVV"; - break; - default: + } + else + { sKeyword[NF_KEY_YY] = "YY"; sKeyword[NF_KEY_YYYY] = "YYYY"; } // hour - switch ( eLang ) + if ( eLang.anyOf( + LANGUAGE_DUTCH, + LANGUAGE_DUTCH_BELGIAN)) { - case LANGUAGE_DUTCH: - case LANGUAGE_DUTCH_BELGIAN: sKeyword[NF_KEY_H] = "U"; sKeyword[NF_KEY_HH] = "UU"; - break; - case LANGUAGE_FINNISH: - case LANGUAGE_SWEDISH: - case LANGUAGE_SWEDISH_FINLAND: - case LANGUAGE_DANISH: - case LANGUAGE_NORWEGIAN: - case LANGUAGE_NORWEGIAN_BOKMAL: - case LANGUAGE_NORWEGIAN_NYNORSK: + } + else if ( eLang.anyOf( + LANGUAGE_FINNISH, + LANGUAGE_SWEDISH, + LANGUAGE_SWEDISH_FINLAND, + LANGUAGE_DANISH, + LANGUAGE_NORWEGIAN, + LANGUAGE_NORWEGIAN_BOKMAL, + LANGUAGE_NORWEGIAN_NYNORSK)) + { sKeyword[NF_KEY_H] = "T"; sKeyword[NF_KEY_HH] = "TT"; - break; - default: + } + else + { sKeyword[NF_KEY_H] = "H"; sKeyword[NF_KEY_HH] = "HH"; } @@ -405,7 +417,6 @@ void ImpSvNumberformatScan::SetDependentKeywords() sKeyword[NF_KEY_GREY] = "GREY"; sKeyword[NF_KEY_YELLOW] = "YELLOW"; sKeyword[NF_KEY_WHITE] = "WHITE"; - break; } // boolean keywords diff --git a/svtools/source/misc/langtab.cxx b/svtools/source/misc/langtab.cxx index 74497609e08d..bfbbad62bb23 100644 --- a/svtools/source/misc/langtab.cxx +++ b/svtools/source/misc/langtab.cxx @@ -150,9 +150,9 @@ SvtLanguageTableImpl::SvtLanguageTableImpl() : LanguageType nLangType = aLang.getLanguageType(); if (nType <= LanguageTag::ScriptType::RTL && nType > LanguageTag::ScriptType::UNKNOWN) aLang.setScriptType(LanguageTag::ScriptType(nType)); - sal_uInt32 nPos = FindIndex(nLangType); + sal_uInt32 nPos = FindIndex((sal_uInt16)nLangType); if (nPos == RESARRAY_INDEX_NOTFOUND) - AddItem((aName.isEmpty() ? rElementNames[i] : aName), nLangType); + AddItem((aName.isEmpty() ? rElementNames[i] : aName), (sal_uInt16)nLangType); } } } @@ -165,7 +165,7 @@ SvtLanguageTableImpl::~SvtLanguageTableImpl() bool SvtLanguageTableImpl::HasType( const LanguageType eType ) const { LanguageType eLang = MsLangId::getReplacementForObsoleteLanguage( eType ); - sal_uInt32 nPos = FindIndex( eLang ); + sal_uInt32 nPos = FindIndex( (sal_uInt16)eLang ); return RESARRAY_INDEX_NOTFOUND != nPos && nPos < Count(); } @@ -190,7 +190,7 @@ OUString lcl_getDescription( const OUString& rBcp47 ) const OUString SvtLanguageTableImpl::GetString( const LanguageType eType ) const { LanguageType eLang = MsLangId::getReplacementForObsoleteLanguage( eType ); - sal_uInt32 nPos = FindIndex( eLang ); + sal_uInt32 nPos = FindIndex( (sal_uInt16)eLang ); if ( RESARRAY_INDEX_NOTFOUND != nPos && nPos < Count() ) return ResStringArray::GetString( nPos ); @@ -205,7 +205,7 @@ const OUString SvtLanguageTableImpl::GetString( const LanguageType eType ) const // And add it to the table if it is an on-the-fly-id, which it usually is, // so it is available in all subsequent language boxes. if (LanguageTag::isOnTheFlyID( eType)) - const_cast<SvtLanguageTableImpl*>(this)->AddItem( sLangTag, eType); + const_cast<SvtLanguageTableImpl*>(this)->AddItem( sLangTag, (sal_uInt16)eType); return sLangTag; } @@ -265,7 +265,7 @@ LanguageType SvtLanguageTable::GetLanguageTypeAtIndex( sal_uInt32 nIndex ) sal_uInt32 SvtLanguageTable::AddLanguageTag( const LanguageTag& rLanguageTag, const OUString& rString ) { return theLanguageTable::get().AddItem( (rString.isEmpty() ? lcl_getDescription(rLanguageTag.getBcp47()) : rString), - rLanguageTag.getLanguageType()); + (sal_uInt16)rLanguageTag.getLanguageType()); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/source/misc/sampletext.cxx b/svtools/source/misc/sampletext.cxx index 75014b031cfb..cb131e28d85c 100644 --- a/svtools/source/misc/sampletext.cxx +++ b/svtools/source/misc/sampletext.cxx @@ -618,121 +618,85 @@ OUString makeMinimalTextForScript(UScriptCode eScript) OUString makeRepresentativeTextForLanguage(LanguageType eLang) { OUString sRet; - switch( eLang & LANGUAGE_MASK_PRIMARY ) + LanguageType pri = primary(eLang); + if( pri == primary(LANGUAGE_ARMENIAN) ) + sRet = makeRepresentativeTextForScript(USCRIPT_ARMENIAN); + else if( pri == primary(LANGUAGE_CHINESE) ) + sRet = makeRepresentativeTextForScript(USCRIPT_HAN); + else if( pri == primary(LANGUAGE_GREEK) ) + sRet = makeRepresentativeTextForScript(USCRIPT_GREEK); + else if( pri.anyOf( + primary(LANGUAGE_HEBREW), + primary(LANGUAGE_YIDDISH)) ) + sRet = makeRepresentativeTextForScript(USCRIPT_HEBREW); + else if( pri == primary(LANGUAGE_ARABIC_SAUDI_ARABIA) ) + sRet = makeRepresentativeTextForScript(USCRIPT_ARABIC); + else if( pri == primary(LANGUAGE_HINDI) ) + sRet = makeRepresentativeTextForScript(USCRIPT_DEVANAGARI); + else if( pri == primary(LANGUAGE_ASSAMESE) ) { - case LANGUAGE_ARMENIAN & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_ARMENIAN); - break; - case LANGUAGE_CHINESE & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_HAN); - break; - case LANGUAGE_GREEK & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_GREEK); - break; - case LANGUAGE_HEBREW & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_YIDDISH & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_HEBREW); - break; - case LANGUAGE_ARABIC_SAUDI_ARABIA & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_ARABIC); - break; - case LANGUAGE_HINDI & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_DEVANAGARI); - break; - case LANGUAGE_ASSAMESE & LANGUAGE_MASK_PRIMARY: - { - static const sal_Unicode aAs[] = { - 0x0985, 0x09B8, 0x09AE, 0x09C0, 0x09AF, 0x09BC, 0x09BE, - 0x0020, 0x0986, 0x0996, 0x09F0 - }; - sRet = OUString(aAs, SAL_N_ELEMENTS(aAs)); - break; - } - case LANGUAGE_BENGALI & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_BENGALI); - break; - case LANGUAGE_PUNJABI & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_GURMUKHI); - break; - case LANGUAGE_GUJARATI & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_GUJARATI); - break; - case LANGUAGE_ODIA & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_ORIYA); - break; - case LANGUAGE_TAMIL & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_TAMIL); - break; - case LANGUAGE_TELUGU & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_TELUGU); - break; - case LANGUAGE_KANNADA & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_KANNADA); - break; - case LANGUAGE_MALAYALAM & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_MALAYALAM); - break; - case LANGUAGE_THAI & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_THAI); - break; - case LANGUAGE_LAO & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_LAO); - break; - case LANGUAGE_GEORGIAN & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_GEORGIAN); - break; - case LANGUAGE_KOREAN & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_KOREAN); - break; - case LANGUAGE_TIBETAN & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_TIBETAN); - break; - case LANGUAGE_SYRIAC & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_SYRIAC); - break; - case LANGUAGE_SINHALESE_SRI_LANKA & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_SINHALA); - break; - case LANGUAGE_BURMESE & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_MYANMAR); - break; - case LANGUAGE_AMHARIC_ETHIOPIA & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_ETHIOPIC); - break; - case LANGUAGE_CHEROKEE_UNITED_STATES & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_CHEROKEE); - break; - case LANGUAGE_KHMER & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_KHMER); - break; - case LANGUAGE_MONGOLIAN_MONGOLIAN_LSO & LANGUAGE_MASK_PRIMARY: - switch (eLang) - { - case LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA: - case LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA: - case LANGUAGE_MONGOLIAN_MONGOLIAN_LSO: - sRet = makeRepresentativeTextForScript(USCRIPT_MONGOLIAN); - break; - default: - break; - } - break; - case LANGUAGE_JAPANESE & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_JAPANESE); - break; - case LANGUAGE_YI & LANGUAGE_MASK_PRIMARY: - sRet = makeRepresentativeTextForScript(USCRIPT_YI); - break; - case LANGUAGE_GAELIC_IRELAND & LANGUAGE_MASK_PRIMARY: - { - static const sal_Unicode aGa[] = { - 'T', 0x00E9, 'a', 'c', 's', ' ', 'S', 'a', 'm', 'p', 'l', 'a', 'c', 'h' - }; - sRet = OUString(aGa, SAL_N_ELEMENTS(aGa)); - break; - } - default: - break; + static const sal_Unicode aAs[] = { + 0x0985, 0x09B8, 0x09AE, 0x09C0, 0x09AF, 0x09BC, 0x09BE, + 0x0020, 0x0986, 0x0996, 0x09F0 + }; + sRet = OUString(aAs, SAL_N_ELEMENTS(aAs)); + } + else if( pri == primary(LANGUAGE_BENGALI) ) + sRet = makeRepresentativeTextForScript(USCRIPT_BENGALI); + else if( pri == primary(LANGUAGE_PUNJABI) ) + sRet = makeRepresentativeTextForScript(USCRIPT_GURMUKHI); + else if( pri == primary(LANGUAGE_GUJARATI) ) + sRet = makeRepresentativeTextForScript(USCRIPT_GUJARATI); + else if( pri == primary(LANGUAGE_ODIA) ) + sRet = makeRepresentativeTextForScript(USCRIPT_ORIYA); + else if( pri == primary(LANGUAGE_TAMIL) ) + sRet = makeRepresentativeTextForScript(USCRIPT_TAMIL); + else if( pri == primary(LANGUAGE_TELUGU) ) + sRet = makeRepresentativeTextForScript(USCRIPT_TELUGU); + else if( pri == primary(LANGUAGE_KANNADA) ) + sRet = makeRepresentativeTextForScript(USCRIPT_KANNADA); + else if( pri == primary(LANGUAGE_MALAYALAM) ) + sRet = makeRepresentativeTextForScript(USCRIPT_MALAYALAM); + else if( pri == primary(LANGUAGE_THAI) ) + sRet = makeRepresentativeTextForScript(USCRIPT_THAI); + else if( pri == primary(LANGUAGE_LAO) ) + sRet = makeRepresentativeTextForScript(USCRIPT_LAO); + else if( pri == primary(LANGUAGE_GEORGIAN) ) + sRet = makeRepresentativeTextForScript(USCRIPT_GEORGIAN); + else if( pri == primary(LANGUAGE_KOREAN) ) + sRet = makeRepresentativeTextForScript(USCRIPT_KOREAN); + else if( pri == primary(LANGUAGE_TIBETAN) ) + sRet = makeRepresentativeTextForScript(USCRIPT_TIBETAN); + else if( pri == primary(LANGUAGE_SYRIAC) ) + sRet = makeRepresentativeTextForScript(USCRIPT_SYRIAC); + else if( pri == primary(LANGUAGE_SINHALESE_SRI_LANKA) ) + sRet = makeRepresentativeTextForScript(USCRIPT_SINHALA); + else if( pri == primary(LANGUAGE_BURMESE) ) + sRet = makeRepresentativeTextForScript(USCRIPT_MYANMAR); + else if( pri == primary(LANGUAGE_AMHARIC_ETHIOPIA) ) + sRet = makeRepresentativeTextForScript(USCRIPT_ETHIOPIC); + else if( pri == primary(LANGUAGE_CHEROKEE_UNITED_STATES) ) + sRet = makeRepresentativeTextForScript(USCRIPT_CHEROKEE); + else if( pri == primary(LANGUAGE_KHMER) ) + sRet = makeRepresentativeTextForScript(USCRIPT_KHMER); + else if( pri == primary(LANGUAGE_MONGOLIAN_MONGOLIAN_LSO) ) + { + if (eLang.anyOf( + LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA, + LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA, + LANGUAGE_MONGOLIAN_MONGOLIAN_LSO)) + sRet = makeRepresentativeTextForScript(USCRIPT_MONGOLIAN); + } + else if( pri == primary(LANGUAGE_JAPANESE) ) + sRet = makeRepresentativeTextForScript(USCRIPT_JAPANESE); + else if( pri == primary(LANGUAGE_YI) ) + sRet = makeRepresentativeTextForScript(USCRIPT_YI); + else if( pri == primary(LANGUAGE_GAELIC_IRELAND) ) + { + static const sal_Unicode aGa[] = { + 'T', 0x00E9, 'a', 'c', 's', ' ', 'S', 'a', 'm', 'p', 'l', 'a', 'c', 'h' + }; + sRet = OUString(aGa, SAL_N_ELEMENTS(aGa)); } return sRet; diff --git a/svtools/source/svhtml/htmlout.cxx b/svtools/source/svhtml/htmlout.cxx index 1038b6f4a42a..ccfd5da20a82 100644 --- a/svtools/source/svhtml/htmlout.cxx +++ b/svtools/source/svhtml/htmlout.cxx @@ -955,7 +955,7 @@ OString HTMLOutFuncs::CreateTableDataOptionsValNum( aStrTD.append(' '). append(OOO_STRING_SVTOOLS_HTML_O_SDnum). append("=\""). - append(static_cast<sal_Int32>( + append((sal_Int32)static_cast<sal_uInt16>( Application::GetSettings().GetLanguageTag().getLanguageType())). append(';'); // Language for Format 0 if ( nFormat ) @@ -971,7 +971,7 @@ OString HTMLOutFuncs::CreateTableDataOptionsValNum( } else nLang = LANGUAGE_SYSTEM; - aStrTD.append(static_cast<sal_Int32>(nLang)).append(';'). + aStrTD.append((sal_Int32)static_cast<sal_uInt16>(nLang)).append(';'). append(aNumStr); } aStrTD.append('\"'); diff --git a/svx/source/dialog/langbox.cxx b/svx/source/dialog/langbox.cxx index 8839c45b552d..d4fe8611f1b3 100644 --- a/svx/source/dialog/langbox.cxx +++ b/svx/source/dialog/langbox.cxx @@ -41,7 +41,7 @@ using namespace ::com::sun::star::uno; static_assert((LISTBOX_APPEND == COMBOBOX_APPEND) && (LISTBOX_ENTRY_NOTFOUND == COMBOBOX_ENTRY_NOTFOUND), "If these ever dispersed we'd need a solution"); -OUString GetDicInfoStr( const OUString& rName, const sal_uInt16 nLang, bool bNeg ) +OUString GetDicInfoStr( const OUString& rName, const LanguageType nLang, bool bNeg ) { INetURLObject aURLObj; aURLObj.SetSmartProtocol( INetProtocol::File ); @@ -59,7 +59,7 @@ OUString GetDicInfoStr( const OUString& rName, const sal_uInt16 nLang, bool bNeg else { aTmp += "["; - aTmp += SvtLanguageTable::GetLanguageString( (LanguageType)nLang ); + aTmp += SvtLanguageTable::GetLanguageString( nLang ); aTmp += "]"; } @@ -70,16 +70,15 @@ OUString GetDicInfoStr( const OUString& rName, const sal_uInt16 nLang, bool bNeg // misc local helper functions -static Sequence< sal_Int16 > lcl_LocaleSeqToLangSeq( Sequence< css::lang::Locale > &rSeq ) +static std::vector< LanguageType > lcl_LocaleSeqToLangSeq( Sequence< css::lang::Locale > &rSeq ) { const css::lang::Locale *pLocale = rSeq.getConstArray(); sal_Int32 nCount = rSeq.getLength(); - Sequence< sal_Int16 > aLangs( nCount ); - sal_Int16 *pLang = aLangs.getArray(); + std::vector< LanguageType > aLangs; for (sal_Int32 i = 0; i < nCount; ++i) { - pLang[i] = LanguageTag::convertToLanguageType( pLocale[i] ); + aLangs.push_back( LanguageTag::convertToLanguageType( pLocale[i] ) ); } @@ -87,6 +86,13 @@ static Sequence< sal_Int16 > lcl_LocaleSeqToLangSeq( Sequence< css::lang::Locale } +static bool lcl_SeqHasLang( const std::vector< LanguageType > & rLangSeq, LanguageType nLang ) +{ + for (auto const & i : rLangSeq) + if (i == nLang) + return true; + return false; +} static bool lcl_SeqHasLang( const Sequence< sal_Int16 > & rLangSeq, sal_Int16 nLang ) { sal_Int32 i = -1; @@ -197,14 +203,11 @@ bool lcl_isScriptTypeRequested( LanguageType nLangType, SvxLanguageListFlags nLa (SvtLanguageOptions::GetScriptTypeOfLanguage(nLangType) == SvtScriptType::ASIAN)); } -void SvxLanguageBoxBase::AddLanguages( const css::uno::Sequence< sal_Int16 >& rLanguageTypes, +void SvxLanguageBoxBase::AddLanguages( const std::vector< LanguageType >& rLanguageTypes, SvxLanguageListFlags nLangList ) { - sal_Int16 const * pLang = rLanguageTypes.getConstArray(); - sal_Int16 const * const pStop = pLang + rLanguageTypes.getLength(); - for ( ; pLang < pStop; ++pLang ) + for ( auto const & nLangType : rLanguageTypes ) { - LanguageType nLangType = static_cast<LanguageType>(*pLang); if (lcl_isPrerequisite( nLangType, nLangList)) { LanguageType nLang = MsLangId::getReplacementForObsoleteLanguage( nLangType ); @@ -235,12 +238,12 @@ void SvxLanguageBoxBase::SetLanguageList( SvxLanguageListFlags nLangList, (nLangList & SvxLanguageListFlags::WESTERN) || (nLangList & SvxLanguageListFlags::CTL) || (nLangList & SvxLanguageListFlags::CJK))); - Sequence< sal_Int16 > aSpellAvailLang; - Sequence< sal_Int16 > aHyphAvailLang; - Sequence< sal_Int16 > aThesAvailLang; + std::vector< LanguageType > aSpellAvailLang; + std::vector< LanguageType > aHyphAvailLang; + std::vector< LanguageType > aThesAvailLang; Sequence< sal_Int16 > aSpellUsedLang; - Sequence< sal_Int16 > aHyphUsedLang; - Sequence< sal_Int16 > aThesUsedLang; + std::vector< LanguageType > aHyphUsedLang; + std::vector< LanguageType > aThesUsedLang; Reference< XAvailableLocales > xAvail( LinguMgr::GetLngSvcMgr(), UNO_QUERY ); if (xAvail.is()) { @@ -285,25 +288,22 @@ void SvxLanguageBoxBase::SetLanguageList( SvxLanguageListFlags nLangList, } } - css::uno::Sequence< sal_uInt16 > xKnown; - const sal_uInt16* pKnown; + std::vector<LanguageType> aKnown; sal_uInt32 nCount; if ( nLangList & SvxLanguageListFlags::ONLY_KNOWN ) { - xKnown = LocaleDataWrapper::getInstalledLanguageTypes(); - pKnown = xKnown.getConstArray(); - nCount = xKnown.getLength(); + aKnown = LocaleDataWrapper::getInstalledLanguageTypes(); + nCount = aKnown.size(); } else { nCount = SvtLanguageTable::GetLanguageEntryCount(); - pKnown = nullptr; } for ( sal_uInt32 i = 0; i < nCount; i++ ) { LanguageType nLangType; if ( nLangList & SvxLanguageListFlags::ONLY_KNOWN ) - nLangType = pKnown[i]; + nLangType = aKnown[i]; else nLangType = SvtLanguageTable::GetLanguageTypeAtIndex( i ); if ( lcl_isPrerequisite( nLangType, nLangList) && @@ -317,7 +317,7 @@ void SvxLanguageBoxBase::SetLanguageList( SvxLanguageListFlags nLangList, (bool(nLangList & SvxLanguageListFlags::THES_AVAIL) && lcl_SeqHasLang(aThesAvailLang, nLangType)) || (bool(nLangList & SvxLanguageListFlags::SPELL_USED) && - lcl_SeqHasLang(aSpellUsedLang, nLangType)) || + lcl_SeqHasLang(aSpellUsedLang, (sal_uInt16)nLangType)) || (bool(nLangList & SvxLanguageListFlags::HYPH_USED) && lcl_SeqHasLang(aHyphUsedLang, nLangType)) || (bool(nLangList & SvxLanguageListFlags::THES_USED) && @@ -389,14 +389,14 @@ sal_Int32 SvxLanguageBoxBase::ImplInsertLanguage( const LanguageType nLangType, m_pSpellUsedLang.reset( new Sequence< sal_Int16 >( xSpell->getLanguages() ) ); } bFound = m_pSpellUsedLang && - lcl_SeqHasLang( *m_pSpellUsedLang, nRealLang ); + lcl_SeqHasLang( *m_pSpellUsedLang, (sal_uInt16)nRealLang ); nAt = ImplInsertImgEntry( aStrEntry, nPos, bFound ); } else nAt = ImplInsertEntry( aStrEntry, nPos ); - ImplSetEntryData( nAt, reinterpret_cast<void*>(nLangType) ); + ImplSetEntryData( nAt, reinterpret_cast<void*>((sal_uInt16)nLangType) ); return nAt; } @@ -432,7 +432,7 @@ void SvxLanguageBoxBase::InsertLanguage( const LanguageType nLangType, aStrEntry = m_aAllString; sal_Int32 nAt = ImplInsertImgEntry( aStrEntry, LISTBOX_APPEND, bCheckEntry ); - ImplSetEntryData( nAt, reinterpret_cast<void*>(nLang) ); + ImplSetEntryData( nAt, reinterpret_cast<void*>((sal_uInt16)nLang) ); } @@ -488,7 +488,7 @@ bool SvxLanguageBoxBase::IsLanguageSelected( const LanguageType eLangType ) cons sal_Int32 SvxLanguageBoxBase::ImplTypeToPos( LanguageType eType ) const { - return ImplGetEntryPos( reinterpret_cast<void*>(eType) ); + return ImplGetEntryPos( reinterpret_cast<void*>((sal_uInt16)eType) ); } diff --git a/svx/source/svdraw/svdmodel.cxx b/svx/source/svdraw/svdmodel.cxx index 7df859647579..f8c03fc614de 100644 --- a/svx/source/svdraw/svdmodel.cxx +++ b/svx/source/svdraw/svdmodel.cxx @@ -712,7 +712,7 @@ void SdrModel::SetTextDefaults( SfxItemPool* pItemPool, sal_uIntPtr nDefTextHgt SvxFontItem aSvxFontItem( EE_CHAR_FONTINFO) ; SvxFontItem aSvxFontItemCJK(EE_CHAR_FONTINFO_CJK); SvxFontItem aSvxFontItemCTL(EE_CHAR_FONTINFO_CTL); - sal_uInt16 nLanguage; + LanguageType nLanguage; if (!utl::ConfigManager::IsAvoidConfig()) nLanguage = Application::GetSettings().GetLanguageTag().getLanguageType(); else diff --git a/sw/inc/IDocumentSettingAccess.hxx b/sw/inc/IDocumentSettingAccess.hxx index cc0466b85da4..7822215057d7 100644 --- a/sw/inc/IDocumentSettingAccess.hxx +++ b/sw/inc/IDocumentSettingAccess.hxx @@ -23,6 +23,7 @@ #include <tools/solar.h> #include <rtl/ref.hxx> #include <fldupde.hxx> +#include <i18nlangtag/lang.h> class SvxForbiddenCharactersTable; namespace com { namespace sun { namespace star { namespace i18n { struct ForbiddenCharacters; } } } } @@ -136,7 +137,7 @@ enum class DocumentSettingId a list of forbidden characters. */ virtual const css::i18n::ForbiddenCharacters* - getForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ bool bLocaleData ) const = 0; + getForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ bool bLocaleData ) const = 0; /** Set the forbidden characters. @@ -146,7 +147,7 @@ enum class DocumentSettingId @param rForbiddenCharacters [in] the new list of forbidden characters for language lang. */ - virtual void setForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, + virtual void setForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ const css::i18n::ForbiddenCharacters& rForbiddenCharacters ) = 0; /** Get the forbidden character table and creates one if necessary. diff --git a/sw/inc/dbmgr.hxx b/sw/inc/dbmgr.hxx index 3cf00ef249a9..6d3357333864 100644 --- a/sw/inc/dbmgr.hxx +++ b/sw/inc/dbmgr.hxx @@ -21,6 +21,7 @@ #include <rtl/ustring.hxx> #include <tools/link.hxx> +#include <i18nlangtag/lang.h> #include <com/sun/star/util/Date.hpp> #include "swdllapi.h" #include <swdbdata.hxx> @@ -329,13 +330,13 @@ public: css::uno::Reference< css::sdbc::XConnection> const & xConnection, css::uno::Reference< css::beans::XPropertySet> const & xColumn, SvNumberFormatter* pNFormatr, - long nLanguage ); + LanguageType nLanguage ); sal_uLong GetColumnFormat( const OUString& rDBName, const OUString& rTableName, const OUString& rColNm, SvNumberFormatter* pNFormatr, - long nLanguage ); + LanguageType nLanguage ); sal_Int32 GetColumnType( const OUString& rDBName, const OUString& rTableName, const OUString& rColNm ); @@ -356,7 +357,7 @@ public: bool OpenDataSource(const OUString& rDataSource, const OUString& rTableOrQuery); sal_uInt32 GetSelectedRecordId(const OUString& rDataSource, const OUString& rTableOrQuery, sal_Int32 nCommandType = -1); bool GetColumnCnt(const OUString& rSourceName, const OUString& rTableName, - const OUString& rColumnName, sal_uInt32 nAbsRecordId, long nLanguage, + const OUString& rColumnName, sal_uInt32 nAbsRecordId, LanguageType nLanguage, OUString& rResult, double* pNumber); /** create and store or find an already stored connection to a data source for use in SwFieldMgr and SwDBTreeList */ @@ -370,10 +371,10 @@ public: /// close all data sources - after fields were updated void CloseAll(bool bIncludingMerge = true); - bool GetMergeColumnCnt(const OUString& rColumnName, sal_uInt16 nLanguage, + bool GetMergeColumnCnt(const OUString& rColumnName, LanguageType nLanguage, OUString &rResult, double *pNumber); bool FillCalcWithMergeData(SvNumberFormatter *pDocFormatter, - sal_uInt16 nLanguage, SwCalc &aCalc); + LanguageType nLanguage, SwCalc &aCalc); bool ToNextRecord(const OUString& rDataSource, const OUString& rTableOrQuery); sal_uInt32 GetSelectedRecordId(); diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx index d1ad7ecbf232..5cdeb3ff9030 100644 --- a/sw/inc/docufld.hxx +++ b/sw/inc/docufld.hxx @@ -496,7 +496,7 @@ class SwDocInfoFieldType : public SwValueFieldType public: SwDocInfoFieldType(SwDoc* pDc); - OUString Expand(sal_uInt16 nSubType, sal_uInt32 nFormat, sal_uInt16 nLang, const OUString& rName) const; + OUString Expand(sal_uInt16 nSubType, sal_uInt32 nFormat, LanguageType nLang, const OUString& rName) const; virtual SwFieldType* Copy() const override; }; @@ -515,7 +515,7 @@ public: virtual void SetSubType(sal_uInt16) override; virtual sal_uInt16 GetSubType() const override; - virtual void SetLanguage(sal_uInt16 nLng) override; + virtual void SetLanguage(LanguageType nLng) override; virtual OUString GetFieldName() const override; const OUString& GetName() const { return aName; } void SetName( const OUString& rName ) { aName = rName; } diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx index d706e823c607..7ffcf379365a 100644 --- a/sw/inc/editsh.hxx +++ b/sw/inc/editsh.hxx @@ -288,7 +288,7 @@ public: SvtScriptType GetScriptType() const; /// @return the language at current cursor position. - sal_uInt16 GetCurLang() const; + LanguageType GetCurLang() const; /// TABLE size_t GetTableFrameFormatCount( bool bUsed = false ) const; diff --git a/sw/inc/expfld.hxx b/sw/inc/expfld.hxx index 9c5e00dc3f25..a74734191cb5 100644 --- a/sw/inc/expfld.hxx +++ b/sw/inc/expfld.hxx @@ -99,7 +99,7 @@ public: sal_uInt16 nSubType, sal_uLong nFormat = 0); virtual void SetValue( const double& rVal ) override; - virtual void SetLanguage(sal_uInt16 nLng) override; + virtual void SetLanguage(LanguageType nLng) override; inline void ChgExpStr(const OUString& rExpand); diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx index 59bd4b00b05b..91aa97657955 100644 --- a/sw/inc/fldbas.hxx +++ b/sw/inc/fldbas.hxx @@ -275,7 +275,7 @@ class SW_DLLPUBLIC SwField private: mutable OUString m_Cache; ///< Cached expansion (for clipboard). bool m_bUseFieldValueCache; /// control the usage of the cached field value - sal_uInt16 m_nLang; ///< Always change via SetLanguage! + LanguageType m_nLang; ///< Always change via SetLanguage! bool m_bIsAutomaticLanguage; sal_uInt32 m_nFormat; /// this can be either SvxNumType or SwChapterFormat depending on the subtype SwFieldType* m_pType; @@ -290,7 +290,7 @@ protected: SwField( SwFieldType* pTyp, sal_uInt32 nFormat = 0, - sal_uInt16 nLang = LANGUAGE_SYSTEM, + LanguageType nLang = LANGUAGE_SYSTEM, bool m_bUseFieldValueCache = true ); public: @@ -332,8 +332,8 @@ public: virtual void SetSubType(sal_uInt16); /// Language at field position. - inline sal_uInt16 GetLanguage() const; - virtual void SetLanguage(sal_uInt16 nLng); + inline LanguageType GetLanguage() const; + virtual void SetLanguage(LanguageType nLng); /// Query parameters for dialog and for BASIC. inline sal_uInt32 GetFormat() const; @@ -376,7 +376,7 @@ inline sal_uInt32 SwField::GetFormat() const return m_nFormat; } -inline sal_uInt16 SwField::GetLanguage() const +inline LanguageType SwField::GetLanguage() const { return m_nLang; } @@ -407,7 +407,7 @@ public: m_bUseFormat = bFormat; } - OUString ExpandValue(const double& rVal, sal_uInt32 nFormat, sal_uInt16 nLng) const; + OUString ExpandValue(const double& rVal, sal_uInt32 nFormat, LanguageType nLng) const; OUString DoubleToString(const double &rVal, LanguageType eLng) const; OUString DoubleToString(const double &rVal, sal_uInt32 nFormat) const; }; @@ -418,14 +418,14 @@ private: double m_fValue; protected: - SwValueField( SwValueFieldType* pFieldType, sal_uInt32 nFormat, sal_uInt16 nLang = LANGUAGE_SYSTEM, const double fVal = 0.0 ); + SwValueField( SwValueFieldType* pFieldType, sal_uInt32 nFormat, LanguageType nLang = LANGUAGE_SYSTEM, const double fVal = 0.0 ); SwValueField( const SwValueField& rField ); public: virtual ~SwValueField() override; virtual SwFieldType* ChgTyp( SwFieldType* ) override; - virtual void SetLanguage(sal_uInt16 nLng) override; + virtual void SetLanguage(LanguageType nLng) override; SwDoc* GetDoc() const { return static_cast<const SwValueFieldType*>(GetTyp())->GetDoc(); @@ -434,7 +434,7 @@ public: virtual double GetValue() const; virtual void SetValue( const double& rVal ); - OUString ExpandValue(const double& rVal, sal_uInt32 nFormat, sal_uInt16 nLng) const { + OUString ExpandValue(const double& rVal, sal_uInt32 nFormat, LanguageType nLng) const { return static_cast<SwValueFieldType*>(GetTyp())->ExpandValue(rVal, nFormat, nLng); } diff --git a/sw/inc/flddat.hxx b/sw/inc/flddat.hxx index 825f08b7ab89..dc5d2d6ee0db 100644 --- a/sw/inc/flddat.hxx +++ b/sw/inc/flddat.hxx @@ -50,7 +50,7 @@ class SW_DLLPUBLIC SwDateTimeField : public SwValueField public: SwDateTimeField(SwDateTimeFieldType* pType, sal_uInt16 nSubType = DATEFLD, - sal_uLong nFormat = 0, sal_uInt16 nLng = 0); + sal_uLong nFormat = 0, LanguageType nLng = LANGUAGE_SYSTEM); virtual sal_uInt16 GetSubType() const override; virtual void SetSubType(sal_uInt16 nSub) override; diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx index 0f1dc5225a6a..6a4b563a519c 100644 --- a/sw/inc/ndtxt.hxx +++ b/sw/inc/ndtxt.hxx @@ -658,7 +658,7 @@ public: void fillSoftPageBreakList( SwSoftPageBreakList& rBreak ) const; - sal_uInt16 GetLang( const sal_Int32 nBegin, const sal_Int32 nLen = 0, + LanguageType GetLang( const sal_Int32 nBegin, const sal_Int32 nLen = 0, sal_uInt16 nScript = 0 ) const; /// in ndcopy.cxx diff --git a/sw/inc/poolfmt.hxx b/sw/inc/poolfmt.hxx index 4c8958aac9a9..6830faeee1ac 100644 --- a/sw/inc/poolfmt.hxx +++ b/sw/inc/poolfmt.hxx @@ -22,6 +22,7 @@ #include <limits.h> #include <tools/solar.h> #include <editeng/frmdir.hxx> +#include <i18nlangtag/lang.h> /** POOLCOLL-IDs: // +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ @@ -431,7 +432,7 @@ RES_POOLCOLL_HTML_END the parent in all other cases. */ sal_uInt16 GetPoolParent( sal_uInt16 nId ); -SvxFrameDirection GetDefaultFrameDirection(sal_uLong nLanguage); +SvxFrameDirection GetDefaultFrameDirection(LanguageType nLanguage); bool IsConditionalByPoolId(sal_uInt16 nId); diff --git a/sw/inc/shellio.hxx b/sw/inc/shellio.hxx index 92b47eb19e93..7410fe5307ed 100644 --- a/sw/inc/shellio.hxx +++ b/sw/inc/shellio.hxx @@ -63,7 +63,7 @@ class SW_DLLPUBLIC SwAsciiOptions { OUString sFont; rtl_TextEncoding eCharSet; - sal_uInt16 nLanguage; + LanguageType nLanguage; LineEnd eCRLF_Flag; public: @@ -74,8 +74,8 @@ public: rtl_TextEncoding GetCharSet() const { return eCharSet; } void SetCharSet( rtl_TextEncoding nVal ) { eCharSet = nVal; } - sal_uInt16 GetLanguage() const { return nLanguage; } - void SetLanguage( sal_uInt16 nVal ) { nLanguage = nVal; } + LanguageType GetLanguage() const { return nLanguage; } + void SetLanguage( LanguageType nVal ) { nLanguage = nVal; } LineEnd GetParaFlags() const { return eCRLF_Flag; } void SetParaFlags( LineEnd eVal ) { eCRLF_Flag = eVal; } @@ -85,7 +85,7 @@ public: sFont.clear(); eCRLF_Flag = GetSystemLineEnd(); eCharSet = ::osl_getThreadTextEncoding(); - nLanguage = 0; + nLanguage = LANGUAGE_SYSTEM; } // for the automatic conversion (mail/news/...) void ReadUserData( const OUString& ); diff --git a/sw/inc/sortopt.hxx b/sw/inc/sortopt.hxx index 3871b6b09fa1..964f55c3dd5b 100644 --- a/sw/inc/sortopt.hxx +++ b/sw/inc/sortopt.hxx @@ -47,7 +47,7 @@ struct SW_DLLPUBLIC SwSortOptions std::vector<SwSortKey*> aKeys; SwSortDirection eDirection; sal_Unicode cDeli; - sal_uInt16 nLanguage; + LanguageType nLanguage; bool bTable; bool bIgnoreCase; }; diff --git a/sw/inc/swcalwrp.hxx b/sw/inc/swcalwrp.hxx index e8ed1cb4e5bc..24bfeec16b63 100644 --- a/sw/inc/swcalwrp.hxx +++ b/sw/inc/swcalwrp.hxx @@ -28,14 +28,14 @@ class SwCalendarWrapper : public CalendarWrapper { OUString sUniqueId; - sal_uInt16 nLang; + LanguageType nLang; public: SwCalendarWrapper( const css::uno::Reference< css::uno::XComponentContext > & rxContext = ::comphelper::getProcessComponentContext() ) : CalendarWrapper( rxContext ), nLang( LANGUAGE_SYSTEM ) {} - void LoadDefaultCalendar( sal_uInt16 nLang ); + void LoadDefaultCalendar( LanguageType nLang ); }; salhelper::SingletonRef<SwCalendarWrapper>* s_getCalendarWrapper(); diff --git a/sw/inc/txatritr.hxx b/sw/inc/txatritr.hxx index 178bf94cf4f6..4e82794a4c8d 100644 --- a/sw/inc/txatritr.hxx +++ b/sw/inc/txatritr.hxx @@ -67,7 +67,7 @@ public: bool Next(); sal_Int32 GetChgPos() const { return nChgPos; } - sal_uInt16 GetLanguage() const + LanguageType GetLanguage() const { return static_cast<const SvxLanguageItem&>(*pCurItem).GetValue(); } }; diff --git a/sw/inc/usrfld.hxx b/sw/inc/usrfld.hxx index e2490f9990cd..9d241df8a118 100644 --- a/sw/inc/usrfld.hxx +++ b/sw/inc/usrfld.hxx @@ -41,7 +41,7 @@ public: virtual OUString GetName() const override; virtual SwFieldType* Copy() const override; - OUString Expand(sal_uInt32 nFormat, sal_uInt16 nSubType, sal_uInt16 nLng); + OUString Expand(sal_uInt32 nFormat, sal_uInt16 nSubType, LanguageType nLng); OUString GetContent( sal_uInt32 nFormat = 0 ); void SetContent( const OUString& rStr, sal_uInt32 nFormat = 0 ); diff --git a/sw/source/core/bastyp/calc.cxx b/sw/source/core/bastyp/calc.cxx index 0ea4b140f250..35882054a097 100644 --- a/sw/source/core/bastyp/calc.cxx +++ b/sw/source/core/bastyp/calc.cxx @@ -536,7 +536,7 @@ SwCalcExp* SwCalc::VarLook( const OUString& rStr, bool bIns ) OUString sResult; double nNumber = DBL_MAX; - long nLang = m_pLocaleDataWrapper->getLanguageTag().getLanguageType(); + LanguageType nLang = m_pLocaleDataWrapper->getLanguageTag().getLanguageType(); if(pMgr->GetColumnCnt( sSourceName, sTableName, sColumnName, nTmpRec, nLang, sResult, &nNumber )) { diff --git a/sw/source/core/bastyp/init.cxx b/sw/source/core/bastyp/init.cxx index 862e46aade0c..6e58c7e423be 100644 --- a/sw/source/core/bastyp/init.cxx +++ b/sw/source/core/bastyp/init.cxx @@ -847,7 +847,7 @@ CharClass& GetAppCharClass() return *pAppCharClass; } -void SwCalendarWrapper::LoadDefaultCalendar( sal_uInt16 eLang ) +void SwCalendarWrapper::LoadDefaultCalendar( LanguageType eLang ) { sUniqueId.clear(); if( eLang != nLang ) @@ -906,7 +906,7 @@ namespace TransliterationFlags::IGNORE_KANA | TransliterationFlags::IGNORE_WIDTH )); - xTransWrp->loadModuleIfNeeded( static_cast<sal_uInt16>(GetAppLanguage()) ); + xTransWrp->loadModuleIfNeeded( GetAppLanguage() ); } const ::utl::TransliterationWrapper& getTransliterationWrapper() const { diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx index 2522d36d9f21..01fb86ba1253 100644 --- a/sw/source/core/crsr/findtxt.cxx +++ b/sw/source/core/crsr/findtxt.cxx @@ -479,7 +479,7 @@ bool SwPaM::DoSearch( const i18nutil::SearchOptions2& rSearchOpt, utl::TextSearc const SwNode* pSttNd = &rNdIdx.GetNode(); OUString sCleanStr; std::vector<sal_Int32> aFltArr; - LanguageType eLastLang = 0; + LanguageType eLastLang = LANGUAGE_SYSTEM; // if the search string contains a soft hyphen, // we don't strip them from the text: bool bRemoveSoftHyphens = true; diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx index a050745d31ad..7fa153a04e4d 100644 --- a/sw/source/core/doc/DocumentFieldsManager.cxx +++ b/sw/source/core/doc/DocumentFieldsManager.cxx @@ -871,7 +871,7 @@ void DocumentFieldsManager::UpdateExpFields( SwTextField* pUpdateField, bool bUp // Entry present? sal_uInt16 nPos; const OUString& rNm = pFieldType->GetName(); - OUString sExpand(const_cast<SwUserFieldType*>(static_cast<const SwUserFieldType*>(pFieldType))->Expand(nsSwGetSetExpType::GSE_STRING, 0, 0)); + OUString sExpand(const_cast<SwUserFieldType*>(static_cast<const SwUserFieldType*>(pFieldType))->Expand(nsSwGetSetExpType::GSE_STRING, 0, LANGUAGE_SYSTEM)); SwHash* pFnd = Find( rNm, pHashStrTable, nStrFormatCnt, &nPos ); if( pFnd ) // modify entry in the hash table @@ -901,7 +901,7 @@ void DocumentFieldsManager::UpdateExpFields( SwTextField* pUpdateField, bool bUp SvtSysLocale aSysLocale; const LocaleDataWrapper* pLclData = aSysLocale.GetLocaleDataPtr(); - const long nLang = pLclData->getLanguageTag().getLanguageType(); + const LanguageType nLang = pLclData->getLanguageTag().getLanguageType(); bool bCanFill = pMgr->FillCalcWithMergeData( m_rDoc.GetNumberFormatter(), nLang, aCalc ); #endif diff --git a/sw/source/core/doc/DocumentSettingManager.cxx b/sw/source/core/doc/DocumentSettingManager.cxx index 1103cf441bd3..dd41cb6e7b47 100644 --- a/sw/source/core/doc/DocumentSettingManager.cxx +++ b/sw/source/core/doc/DocumentSettingManager.cxx @@ -418,17 +418,17 @@ void sw::DocumentSettingManager::set(/*[in]*/ DocumentSettingId id, /*[in]*/ boo } const css::i18n::ForbiddenCharacters* - sw::DocumentSettingManager::getForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ bool bLocaleData ) const + sw::DocumentSettingManager::getForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ bool bLocaleData ) const { const css::i18n::ForbiddenCharacters* pRet = nullptr; if( mxForbiddenCharsTable.is() ) pRet = mxForbiddenCharsTable->GetForbiddenCharacters( nLang, false ); if( bLocaleData && !pRet && g_pBreakIt ) - pRet = &g_pBreakIt->GetForbidden( (LanguageType)nLang ); + pRet = &g_pBreakIt->GetForbidden( nLang ); return pRet; } -void sw::DocumentSettingManager::setForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, +void sw::DocumentSettingManager::setForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ const css::i18n::ForbiddenCharacters& rFChars ) { if( !mxForbiddenCharsTable.is() ) diff --git a/sw/source/core/doc/DocumentStylePoolManager.cxx b/sw/source/core/doc/DocumentStylePoolManager.cxx index 5dab3be1472d..cb7f4dd0848f 100644 --- a/sw/source/core/doc/DocumentStylePoolManager.cxx +++ b/sw/source/core/doc/DocumentStylePoolManager.cxx @@ -121,7 +121,7 @@ namespace }; for(const auto & n : aArr) { - sal_uInt16 nLng = static_cast<const SvxLanguageItem&>(rSet.GetPool()->GetDefaultItem( + LanguageType nLng = static_cast<const SvxLanguageItem&>(rSet.GetPool()->GetDefaultItem( n.nResLngId )).GetLanguage(); vcl::Font aFnt( OutputDevice::GetDefaultFont( nFntType, nLng, GetDefaultFontFlags::OnlyOne ) ); @@ -150,7 +150,7 @@ namespace for(const auto & n : aArr) { - sal_uInt16 nLng = static_cast<const SvxLanguageItem&>(rSet.GetPool()->GetDefaultItem( + LanguageType nLng = static_cast<const SvxLanguageItem&>(rSet.GetPool()->GetDefaultItem( n.nResLngId )).GetLanguage(); vcl::Font aFnt( OutputDevice::GetDefaultFont( n.nFntType, nLng, GetDefaultFontFlags::OnlyOne ) ); @@ -354,7 +354,7 @@ SwTextFormatColl* DocumentStylePoolManager::GetTextCollFromPool( sal_uInt16 nId, /* koreans do not like SvxScriptItem(TRUE) */ if (bRegardLanguage) { - sal_uLong nAppLanguage = GetAppLanguage(); + LanguageType nAppLanguage = GetAppLanguage(); if (GetDefaultFrameDirection(nAppLanguage) == SvxFrameDirection::Horizontal_RL_TB) { @@ -440,7 +440,7 @@ SwTextFormatColl* DocumentStylePoolManager::GetTextCollFromPool( sal_uInt16 nId, RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CTL_LANGUAGE }; - static const sal_uInt16 aLangs[] = + static const LanguageType aLangs[] = { LANGUAGE_ENGLISH_US, LANGUAGE_ENGLISH_US, @@ -455,7 +455,7 @@ SwTextFormatColl* DocumentStylePoolManager::GetTextCollFromPool( sal_uInt16 nId, for( int i = 0; i < 3; ++i ) { - sal_uInt16 nLng = static_cast<const SvxLanguageItem&>(m_rDoc.GetDefault( aLangTypes[i] )).GetLanguage(); + LanguageType nLng = static_cast<const SvxLanguageItem&>(m_rDoc.GetDefault( aLangTypes[i] )).GetLanguage(); if( LANGUAGE_DONTKNOW == nLng ) nLng = aLangs[i]; diff --git a/sw/source/core/doc/docsort.cxx b/sw/source/core/doc/docsort.cxx index f3e1095f8333..e08b6987a8d5 100644 --- a/sw/source/core/doc/docsort.cxx +++ b/sw/source/core/doc/docsort.cxx @@ -74,13 +74,10 @@ void SwSortElement::Init( SwDoc* pD, const SwSortOptions& rOpt, pBox = pFltBx; LanguageType nLang = rOpt.nLanguage; - switch ( nLang ) - { - case LANGUAGE_NONE: - case LANGUAGE_DONTKNOW: + if ( nLang.anyOf( + LANGUAGE_NONE, + LANGUAGE_DONTKNOW)) nLang = GetAppLanguage(); - break; - } pLocale = new lang::Locale( LanguageTag::convertToLocale( nLang ) ); pSortCollator = new CollatorWrapper( ::comphelper::getProcessComponentContext() ); diff --git a/sw/source/core/doc/poolfmt.cxx b/sw/source/core/doc/poolfmt.cxx index ecb1d13efa98..2a4485934f6c 100644 --- a/sw/source/core/doc/poolfmt.cxx +++ b/sw/source/core/doc/poolfmt.cxx @@ -118,11 +118,10 @@ void SetAllScriptItem( SfxItemSet& rSet, const SfxPoolItem& rItem ) /// exist yet, create it. /// If the String pointer is defined, then only query for /// the Attribute descriptions. It doesn't create a style! -SvxFrameDirection GetDefaultFrameDirection(sal_uLong nLanguage) +SvxFrameDirection GetDefaultFrameDirection(LanguageType nLanguage) { - SvxFrameDirection eResult = (MsLangId::isRightToLeft( static_cast<LanguageType>(nLanguage)) ? - SvxFrameDirection::Horizontal_RL_TB : SvxFrameDirection::Horizontal_LR_TB); - return eResult; + return MsLangId::isRightToLeft(nLanguage) ? + SvxFrameDirection::Horizontal_RL_TB : SvxFrameDirection::Horizontal_LR_TB; } // See if the Paragraph/Character/Frame/Page style is in use diff --git a/sw/source/core/doc/tblafmt.cxx b/sw/source/core/doc/tblafmt.cxx index 13c0e7383834..1864b6e1d6ba 100644 --- a/sw/source/core/doc/tblafmt.cxx +++ b/sw/source/core/doc/tblafmt.cxx @@ -487,8 +487,8 @@ bool SwBoxAutoFormat::Load( SvStream& rStream, const SwAfVersions& rVersions, sa rtl_TextEncoding eCharSet = (nVer >= AUTOFORMAT_ID_680DR25) ? RTL_TEXTENCODING_UTF8 : rStream.GetStreamCharSet(); m_sNumFormatString = rStream.ReadUniOrByteString( eCharSet ); rStream.ReadUInt16( eSys ).ReadUInt16( eLge ); - m_eSysLanguage = (LanguageType) eSys; - m_eNumFormatLanguage = (LanguageType) eLge; + m_eSysLanguage = LanguageType(eSys); + m_eNumFormatLanguage = LanguageType(eLge); if ( m_eSysLanguage == LANGUAGE_SYSTEM ) // from old versions (Calc) m_eSysLanguage = ::GetAppLanguage(); } @@ -547,7 +547,7 @@ bool SwBoxAutoFormat::Save( SvStream& rStream, sal_uInt16 fileVersion ) const // --- from 680/dr25 on: store strings as UTF-8 write_uInt16_lenPrefixed_uInt8s_FromOUString(rStream, m_sNumFormatString, RTL_TEXTENCODING_UTF8); - rStream.WriteUInt16( m_eSysLanguage ).WriteUInt16( m_eNumFormatLanguage ); + rStream.WriteUInt16( (sal_uInt16)m_eSysLanguage ).WriteUInt16( (sal_uInt16)m_eNumFormatLanguage ); return 0 == rStream.GetError(); } diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx index fc6a4df0be70..5e01ee4008a7 100644 --- a/sw/source/core/edit/edattr.cxx +++ b/sw/source/core/edit/edattr.cxx @@ -747,12 +747,12 @@ SvtScriptType SwEditShell::GetScriptType() const return nRet; } -sal_uInt16 SwEditShell::GetCurLang() const +LanguageType SwEditShell::GetCurLang() const { const SwPaM* pCursor = GetCursor(); const SwPosition& rPos = *pCursor->GetPoint(); const SwTextNode* pTNd = rPos.nNode.GetNode().GetTextNode(); - sal_uInt16 nLang; + LanguageType nLang; if( pTNd ) { //JP 24.9.2001: if exist no selection, then get the language before diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx index 28619ca5c059..46967a4eb069 100644 --- a/sw/source/core/edit/edlingu.cxx +++ b/sw/source/core/edit/edlingu.cxx @@ -863,8 +863,8 @@ uno::Reference< XSpellAlternatives > uno::Reference< XSpellChecker1 > xSpell( ::GetSpellChecker() ); if( xSpell.is() ) { - LanguageType eActLang = (LanguageType)pNode->GetLang( nBegin, nLen ); - if( xSpell->hasLanguage( eActLang )) + LanguageType eActLang = pNode->GetLang( nBegin, nLen ); + if( xSpell->hasLanguage( (sal_uInt16)eActLang )) { // restrict the maximal number of suggestions displayed // in the context menu. @@ -881,7 +881,7 @@ uno::Reference< XSpellAlternatives > rVal.Name = UPN_MAX_NUMBER_OF_SUGGESTIONS; rVal.Value <<= (sal_Int16) 7; - xSpellAlt = xSpell->spell( aWord, eActLang, aPropVals ); + xSpellAlt = xSpell->spell( aWord, (sal_uInt16)eActLang, aPropVals ); } } diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx index 5067407b2359..38cc39218c16 100644 --- a/sw/source/core/fields/docufld.cxx +++ b/sw/source/core/fields/docufld.cxx @@ -846,7 +846,7 @@ SwFieldType* SwDocInfoFieldType::Copy() const return pTyp; } -static void lcl_GetLocalDataWrapper( sal_uLong nLang, +static void lcl_GetLocalDataWrapper( LanguageType nLang, const LocaleDataWrapper **ppAppLocalData, const LocaleDataWrapper **ppLocalData ) { @@ -854,12 +854,11 @@ static void lcl_GetLocalDataWrapper( sal_uLong nLang, *ppAppLocalData = &aLocale.GetLocaleData(); *ppLocalData = *ppAppLocalData; if( nLang != (*ppLocalData)->getLanguageTag().getLanguageType() ) - *ppLocalData = new LocaleDataWrapper( - LanguageTag( static_cast<LanguageType>(nLang) )); + *ppLocalData = new LocaleDataWrapper(LanguageTag( nLang )); } OUString SwDocInfoFieldType::Expand( sal_uInt16 nSub, sal_uInt32 nFormat, - sal_uInt16 nLang, const OUString& rName ) const + LanguageType nLang, const OUString& rName ) const { const LocaleDataWrapper *pAppLocalData = nullptr, *pLocalData = nullptr; SwDocShell *pDocShell(GetDoc()->GetDocShell()); @@ -1153,7 +1152,7 @@ void SwDocInfoField::SetSubType(sal_uInt16 nSub) nSubType = nSub; } -void SwDocInfoField::SetLanguage(sal_uInt16 nLng) +void SwDocInfoField::SetLanguage(LanguageType nLng) { if (!GetFormat()) SwField::SetLanguage(nLng); diff --git a/sw/source/core/fields/expfld.cxx b/sw/source/core/fields/expfld.cxx index 6899b5c99177..3bd8d906f10e 100644 --- a/sw/source/core/fields/expfld.cxx +++ b/sw/source/core/fields/expfld.cxx @@ -398,7 +398,7 @@ void SwGetExpField::SetSubType(sal_uInt16 nType) nSubType = nType; } -void SwGetExpField::SetLanguage(sal_uInt16 nLng) +void SwGetExpField::SetLanguage(LanguageType nLng) { if (nSubType & nsSwExtendedSubType::SUB_CMD) SwField::SetLanguage(nLng); diff --git a/sw/source/core/fields/fldbas.cxx b/sw/source/core/fields/fldbas.cxx index b24f6c1057de..4dcb10a43843 100644 --- a/sw/source/core/fields/fldbas.cxx +++ b/sw/source/core/fields/fldbas.cxx @@ -52,7 +52,7 @@ using namespace ::com::sun::star; using namespace nsSwDocInfoSubType; -static sal_uInt16 lcl_GetLanguageOfFormat( sal_uInt16 nLng, sal_uLong nFormat, +static LanguageType lcl_GetLanguageOfFormat( LanguageType nLng, sal_uLong nFormat, const SvNumberFormatter& rFormatter ) { if( nLng == LANGUAGE_NONE ) // Bug #60010 @@ -174,7 +174,7 @@ void SwFieldTypes::dumpAsXml(xmlTextWriterPtr pWriter) const SwField::SwField( SwFieldType* pType, sal_uInt32 nFormat, - sal_uInt16 nLang, + LanguageType nLang, bool bUseFieldValueCache) : m_Cache() , m_bUseFieldValueCache( bUseFieldValueCache ) @@ -361,7 +361,7 @@ bool SwField::HasClickHdl() const return bRet; } -void SwField::SetLanguage(sal_uInt16 const nLang) +void SwField::SetLanguage(LanguageType const nLang) { m_nLang = nLang; } @@ -462,7 +462,7 @@ SwValueFieldType::SwValueFieldType( const SwValueFieldType& rTyp ) /// return value formatted as string OUString SwValueFieldType::ExpandValue( const double& rVal, - sal_uInt32 nFormat, sal_uInt16 nLng) const + sal_uInt32 nFormat, LanguageType nLng) const { if (rVal >= DBL_MAX) // error string for calculator return SwViewShell::GetShellRes()->aCalc_Error; @@ -472,7 +472,7 @@ OUString SwValueFieldType::ExpandValue( const double& rVal, Color* pCol = nullptr; // Bug #60010 - sal_uInt16 nFormatLng = ::lcl_GetLanguageOfFormat( nLng, nFormat, *pFormatter ); + LanguageType nFormatLng = ::lcl_GetLanguageOfFormat( nLng, nFormat, *pFormatter ); if( nFormat < SV_COUNTRY_LANGUAGE_OFFSET && LANGUAGE_SYSTEM != nFormatLng ) { @@ -484,7 +484,7 @@ OUString SwValueFieldType::ExpandValue( const double& rVal, if (pEntry && nLng != pEntry->GetLanguage()) { sal_uInt32 nNewFormat = pFormatter->GetFormatForLanguageIfBuiltIn(nFormat, - (LanguageType)nFormatLng); + nFormatLng); if (nNewFormat == nFormat) { @@ -525,7 +525,7 @@ OUString SwValueFieldType::DoubleToString(const double &rVal, } OUString SwValueFieldType::DoubleToString( const double &rVal, - sal_uInt16 nLng ) const + LanguageType nLng ) const { SvNumberFormatter* pFormatter = m_pDoc->GetNumberFormatter(); @@ -539,7 +539,7 @@ OUString SwValueFieldType::DoubleToString( const double &rVal, } SwValueField::SwValueField( SwValueFieldType* pFieldType, sal_uInt32 nFormat, - sal_uInt16 nLng, const double fVal ) + LanguageType nLng, const double fVal ) : SwField(pFieldType, nFormat, nLng) , m_fValue(fVal) { @@ -583,12 +583,12 @@ SwFieldType* SwValueField::ChgTyp( SwFieldType* pNewType ) sal_uInt32 SwValueField::GetSystemFormat(SvNumberFormatter* pFormatter, sal_uInt32 nFormat) { const SvNumberformat* pEntry = pFormatter->GetEntry(nFormat); - sal_uInt16 nLng = SvtSysLocale().GetLanguageTag().getLanguageType(); + LanguageType nLng = SvtSysLocale().GetLanguageTag().getLanguageType(); if (pEntry && nLng != pEntry->GetLanguage()) { sal_uInt32 nNewFormat = pFormatter->GetFormatForLanguageIfBuiltIn(nFormat, - (LanguageType)nLng); + nLng); if (nNewFormat == nFormat) { @@ -611,7 +611,7 @@ sal_uInt32 SwValueField::GetSystemFormat(SvNumberFormatter* pFormatter, sal_uInt } /// set language of the format -void SwValueField::SetLanguage( sal_uInt16 nLng ) +void SwValueField::SetLanguage( LanguageType nLng ) { if( IsAutomaticLanguage() && static_cast<SwValueFieldType *>(GetTyp())->UseFormat() && @@ -619,7 +619,7 @@ void SwValueField::SetLanguage( sal_uInt16 nLng ) { // Bug #60010 SvNumberFormatter* pFormatter = GetDoc()->GetNumberFormatter(); - sal_uInt16 nFormatLng = ::lcl_GetLanguageOfFormat( nLng, GetFormat(), + LanguageType nFormatLng = ::lcl_GetLanguageOfFormat( nLng, GetFormat(), *pFormatter ); if( (GetFormat() >= SV_COUNTRY_LANGUAGE_OFFSET || @@ -631,7 +631,7 @@ void SwValueField::SetLanguage( sal_uInt16 nLng ) if( pEntry && nFormatLng != pEntry->GetLanguage() ) { sal_uInt32 nNewFormat = pFormatter->GetFormatForLanguageIfBuiltIn( - GetFormat(), (LanguageType)nFormatLng ); + GetFormat(), nFormatLng ); if( nNewFormat == GetFormat() ) { diff --git a/sw/source/core/fields/flddat.cxx b/sw/source/core/fields/flddat.cxx index 549c9771ba3c..56c532c66b8c 100644 --- a/sw/source/core/fields/flddat.cxx +++ b/sw/source/core/fields/flddat.cxx @@ -40,7 +40,7 @@ SwFieldType* SwDateTimeFieldType::Copy() const return pTmp; } -SwDateTimeField::SwDateTimeField(SwDateTimeFieldType* pInitType, sal_uInt16 nSub, sal_uLong nFormat, sal_uInt16 nLng) +SwDateTimeField::SwDateTimeField(SwDateTimeFieldType* pInitType, sal_uInt16 nSub, sal_uLong nFormat, LanguageType nLng) : SwValueField(pInitType, nFormat, nLng, 0.0), nSubType(nSub), nOffset(0) diff --git a/sw/source/core/fields/usrfld.cxx b/sw/source/core/fields/usrfld.cxx index 245ef8f35afc..080dcfc77bd1 100644 --- a/sw/source/core/fields/usrfld.cxx +++ b/sw/source/core/fields/usrfld.cxx @@ -167,7 +167,7 @@ SwUserFieldType::SwUserFieldType( SwDoc* pDocPtr, const OUString& aNam ) EnableFormat(false); // Do not use a Numberformatter } -OUString SwUserFieldType::Expand(sal_uInt32 nFormat, sal_uInt16 nSubType, sal_uInt16 nLng) +OUString SwUserFieldType::Expand(sal_uInt32 nFormat, sal_uInt16 nSubType, LanguageType nLng) { if((nType & nsSwGetSetExpType::GSE_EXPR) && !(nSubType & nsSwExtendedSubType::SUB_CMD)) { @@ -309,7 +309,7 @@ bool SwUserFieldType::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) // The following line is in fact wrong, since the language is unknown (is part of the // field) and, thus, aContent should also belong to the field. Each field can have a // different language, but the same content with just different formatting. - aContent = DoubleToString(nValue, static_cast<sal_uInt32>(LANGUAGE_SYSTEM)); + aContent = DoubleToString(nValue, static_cast<sal_uInt16>(LANGUAGE_SYSTEM)); } break; case FIELD_PROP_PAR2: diff --git a/sw/source/core/inc/DocumentSettingManager.hxx b/sw/source/core/inc/DocumentSettingManager.hxx index a71966d4c3a0..9c0094910be2 100644 --- a/sw/source/core/inc/DocumentSettingManager.hxx +++ b/sw/source/core/inc/DocumentSettingManager.hxx @@ -163,8 +163,8 @@ public: // IDocumentSettingAccess virtual bool get(/*[in]*/ DocumentSettingId id) const override; virtual void set(/*[in]*/ DocumentSettingId id, /*[in]*/ bool value) override; - virtual const css::i18n::ForbiddenCharacters* getForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ bool bLocaleData ) const override; - virtual void setForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ const css::i18n::ForbiddenCharacters& rForbiddenCharacters ) override; + virtual const css::i18n::ForbiddenCharacters* getForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ bool bLocaleData ) const override; + virtual void setForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ const css::i18n::ForbiddenCharacters& rForbiddenCharacters ) override; virtual rtl::Reference<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() override; virtual const rtl::Reference<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() const override; virtual sal_uInt16 getLinkUpdateMode( /*[in]*/bool bGlobalSettings ) const override; diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx index e4639c609222..6598abff9463 100644 --- a/sw/source/core/text/EnhancedPDFExportHelper.cxx +++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx @@ -87,7 +87,7 @@ NumListIdMap SwEnhancedPDFExportHelper::aNumListIdMap; NumListBodyIdMap SwEnhancedPDFExportHelper::aNumListBodyIdMap; FrameTagIdMap SwEnhancedPDFExportHelper::aFrameTagIdMap; -LanguageType SwEnhancedPDFExportHelper::eLanguageDefault = 0; +LanguageType SwEnhancedPDFExportHelper::eLanguageDefault = LANGUAGE_SYSTEM; #if OSL_DEBUG_LEVEL > 1 @@ -802,7 +802,7 @@ void SwTaggedPDFHelper::SetAttributes( vcl::PDFWriter::StructElement eType ) const LanguageType nDefaultLang = SwEnhancedPDFExportHelper::GetDefaultLanguage(); if ( nDefaultLang != nCurrentLanguage ) - mpPDFExtOutDevData->SetStructureAttributeNumerical( vcl::PDFWriter::Language, nCurrentLanguage ); + mpPDFExtOutDevData->SetStructureAttributeNumerical( vcl::PDFWriter::Language, (sal_uInt16)nCurrentLanguage ); } if ( bLinkAttribute ) diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx index 53ef42eb8992..2b3fcecc436d 100644 --- a/sw/source/core/text/porlay.cxx +++ b/sw/source/core/text/porlay.cxx @@ -1325,7 +1325,7 @@ sal_Int16 SwScriptInfo::ScriptType(const sal_Int32 nPos) const } // the default is the application language script - return SvtLanguageOptions::GetI18NScriptTypeOfLanguage( (sal_uInt16)GetAppLanguage() ); + return SvtLanguageOptions::GetI18NScriptTypeOfLanguage( GetAppLanguage() ); } sal_Int32 SwScriptInfo::NextDirChg( const sal_Int32 nPos, diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx index 904cef00612d..e5cb1022e812 100644 --- a/sw/source/core/txtnode/thints.cxx +++ b/sw/source/core/txtnode/thints.cxx @@ -3344,10 +3344,10 @@ void SwTextNode::ClearSwpHintsArr( bool bDelFields ) } } -sal_uInt16 SwTextNode::GetLang( const sal_Int32 nBegin, const sal_Int32 nLen, +LanguageType SwTextNode::GetLang( const sal_Int32 nBegin, const sal_Int32 nLen, sal_uInt16 nScript ) const { - sal_uInt16 nRet = LANGUAGE_DONTKNOW; + LanguageType nRet = LANGUAGE_DONTKNOW; if ( ! nScript ) { @@ -3390,7 +3390,7 @@ sal_uInt16 SwTextNode::GetLang( const sal_Int32 nBegin, const sal_Int32 nLen, continue; } const SfxPoolItem* pItem = CharFormat::GetItem( *pHt, nWhichId ); - const sal_uInt16 nLng = static_cast<const SvxLanguageItem*>(pItem)->GetLanguage(); + const LanguageType nLng = static_cast<const SvxLanguageItem*>(pItem)->GetLanguage(); // does the attribute completely cover the range? if( nAttrStart <= nBegin && nEnd <= *pEndIdx ) @@ -3404,7 +3404,7 @@ sal_uInt16 SwTextNode::GetLang( const sal_Int32 nBegin, const sal_Int32 nLen, { nRet = static_cast<const SvxLanguageItem&>(GetSwAttrSet().Get( nWhichId )).GetLanguage(); if( LANGUAGE_DONTKNOW == nRet ) - nRet = static_cast<sal_uInt16>(GetAppLanguage()); + nRet = GetAppLanguage(); } return nRet; } diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index f509ffea7c54..55a0664b30d5 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -1037,7 +1037,7 @@ bool SwTextNode::Spell(SwSpellArgs* pArgs) if (pArgs->xSpeller.is()) { SvxSpellWrapper::CheckSpellLang( pArgs->xSpeller, eActLang ); - pArgs->xSpellAlt = pArgs->xSpeller->spell( rWord, eActLang, + pArgs->xSpellAlt = pArgs->xSpeller->spell( rWord, (sal_uInt16)eActLang, Sequence< PropertyValue >() ); } if( (pArgs->xSpellAlt).is() ) @@ -1348,13 +1348,13 @@ SwRect SwTextFrame::AutoSpell_( const SwContentNode* pActNode, sal_Int32 nActPos // within the word LanguageType eActLang = aScanner.GetCurrentLanguage(); - bool bSpell = xSpell.is() && xSpell->hasLanguage( eActLang ); + bool bSpell = xSpell.is() && xSpell->hasLanguage( (sal_uInt16)eActLang ); if( bSpell && !rWord.isEmpty() ) { // check for: bAlter => xHyphWord.is() OSL_ENSURE(!bSpell || xSpell.is(), "NULL pointer"); - if( !xSpell->isValid( rWord, eActLang, Sequence< PropertyValue >() ) ) + if( !xSpell->isValid( rWord, (sal_uInt16)eActLang, Sequence< PropertyValue >() ) ) { sal_Int32 nSmartTagStt = nBegin; sal_Int32 nDummy = 1; @@ -1615,8 +1615,8 @@ void SwTextFrame::CollectAutoCmplWrds( SwContentNode* pActNode, sal_Int32 nActPo bool SwTextNode::Hyphenate( SwInterHyphInfo &rHyphInf ) { // shortcut: paragraph doesn't have a language set: - if ( LANGUAGE_NONE == sal_uInt16( GetSwAttrSet().GetLanguage().GetLanguage() ) - && USHRT_MAX == GetLang(0, m_Text.getLength())) + if ( LANGUAGE_NONE == GetSwAttrSet().GetLanguage().GetLanguage() + && LanguageType(USHRT_MAX) == GetLang(0, m_Text.getLength())) { if( !rHyphInf.IsCheck() ) rHyphInf.SetNoLang( true ); @@ -1858,7 +1858,7 @@ void SwTextNode::TransliterateText( pIter = nullptr; sal_Int32 nEndPos = 0; - sal_uInt16 nLang = LANGUAGE_NONE; + LanguageType nLang = LANGUAGE_NONE; do { if( pIter ) { diff --git a/sw/source/filter/ascii/parasc.cxx b/sw/source/filter/ascii/parasc.cxx index e3045b0edee8..39d36874efc9 100644 --- a/sw/source/filter/ascii/parasc.cxx +++ b/sw/source/filter/ascii/parasc.cxx @@ -108,8 +108,7 @@ SwASCIIParser::SwASCIIParser(SwDoc* pD, const SwPaM& rCursor, SvStream& rIn, // set defaults from the options if( rOpt.GetLanguage() ) { - SvxLanguageItem aLang( (LanguageType)rOpt.GetLanguage(), - RES_CHRATR_LANGUAGE ); + SvxLanguageItem aLang( rOpt.GetLanguage(), RES_CHRATR_LANGUAGE ); pItemSet->Put( aLang ); aLang.SetWhich(RES_CHRATR_CJK_LANGUAGE); pItemSet->Put( aLang ); diff --git a/sw/source/filter/inc/msfilter.hxx b/sw/source/filter/inc/msfilter.hxx index 559e63d7c57e..3a432681343b 100644 --- a/sw/source/filter/inc/msfilter.hxx +++ b/sw/source/filter/inc/msfilter.hxx @@ -109,7 +109,7 @@ namespace sw @author <a href="mailto:mmaher@openoffice.org">Martin Maher</a */ - sal_uLong MSDateTimeFormatToSwFormat(OUString& rParams, SvNumberFormatter *pFormatter, sal_uInt16 &rLang, bool bHijri, sal_uInt16 nDocLang); + sal_uLong MSDateTimeFormatToSwFormat(OUString& rParams, SvNumberFormatter *pFormatter, LanguageType &rLang, bool bHijri, LanguageType nDocLang); /*Used to identify if the previous token is AM time field*/ bool IsPreviousAM(OUString& rParams, sal_Int32 nPos); diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index 2f78e3977b26..597316b2002c 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -2325,15 +2325,15 @@ void RtfAttributeOutput::CharLanguage(const SvxLanguageItem& rLanguage) { case RES_CHRATR_LANGUAGE: m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_LANG); - m_aStylesEnd.append((sal_Int32)rLanguage.GetLanguage()); + m_aStylesEnd.append((sal_Int32)static_cast<sal_uInt16>(rLanguage.GetLanguage())); break; case RES_CHRATR_CJK_LANGUAGE: m_aStyles.append(OOO_STRING_SVTOOLS_RTF_LANGFE); - m_aStyles.append((sal_Int32)rLanguage.GetLanguage()); + m_aStyles.append((sal_Int32)static_cast<sal_uInt16>(rLanguage.GetLanguage())); break; case RES_CHRATR_CTL_LANGUAGE: m_aStyles.append(OOO_STRING_SVTOOLS_RTF_ALANG); - m_aStyles.append((sal_Int32)rLanguage.GetLanguage()); + m_aStyles.append((sal_Int32)static_cast<sal_uInt16>(rLanguage.GetLanguage())); break; } } diff --git a/sw/source/filter/ww8/writerwordglue.cxx b/sw/source/filter/ww8/writerwordglue.cxx index a2a6aa29c454..ed06ad119548 100644 --- a/sw/source/filter/ww8/writerwordglue.cxx +++ b/sw/source/filter/ww8/writerwordglue.cxx @@ -834,8 +834,8 @@ namespace sw } sal_uLong MSDateTimeFormatToSwFormat(OUString& rParams, - SvNumberFormatter *pFormatter, sal_uInt16 &rLang, bool bHijri, - sal_uInt16 nDocLang) + SvNumberFormatter *pFormatter, LanguageType &rLang, bool bHijri, + LanguageType nDocLang) { // tell the Formatter about the new entry sal_Int32 nCheckPos = 0; @@ -906,14 +906,10 @@ namespace sw sal_Unicode nChar = rParams[nI]; // Change the localized word string to english - switch ( nDocLang ) + if ( nDocLang == LANGUAGE_FRENCH ) { - case LANGUAGE_FRENCH: - if ( ( nChar == 'a' || nChar == 'A' ) && IsNotAM(rParams, nI) ) - rParams = rParams.replaceAt(nI, 1, "Y"); - break; - default: - ; + if ( ( nChar == 'a' || nChar == 'A' ) && IsNotAM(rParams, nI) ) + rParams = rParams.replaceAt(nI, 1, "Y"); } if (nChar == '/') { @@ -934,111 +930,103 @@ namespace sw if ( !bForceJapanese && !bForceNatNum ) { // Convert to the localized equivalent for OOo - switch ( rLang ) + if ( rLang == LANGUAGE_FINNISH ) { - case LANGUAGE_FINNISH: - { - if (nChar == 'y' || nChar == 'Y') - rParams = rParams.replaceAt(nI, 1, "V"); - else if (nChar == 'm' || nChar == 'M') - rParams = rParams.replaceAt(nI, 1, "K"); - else if (nChar == 'd' || nChar == 'D') - rParams = rParams.replaceAt(nI, 1, "P"); - else if (nChar == 'h' || nChar == 'H') - rParams = rParams.replaceAt(nI, 1, "T"); - } - break; - case LANGUAGE_DANISH: - case LANGUAGE_NORWEGIAN: - case LANGUAGE_NORWEGIAN_BOKMAL: - case LANGUAGE_NORWEGIAN_NYNORSK: - case LANGUAGE_SWEDISH: - case LANGUAGE_SWEDISH_FINLAND: - { - if (nChar == 'h' || nChar == 'H') - rParams = rParams.replaceAt(nI, 1, "T"); - } - break; - case LANGUAGE_PORTUGUESE: - case LANGUAGE_PORTUGUESE_BRAZILIAN: - case LANGUAGE_SPANISH_MODERN: - case LANGUAGE_SPANISH_DATED: - case LANGUAGE_SPANISH_MEXICAN: - case LANGUAGE_SPANISH_GUATEMALA: - case LANGUAGE_SPANISH_COSTARICA: - case LANGUAGE_SPANISH_PANAMA: - case LANGUAGE_SPANISH_DOMINICAN_REPUBLIC: - case LANGUAGE_SPANISH_VENEZUELA: - case LANGUAGE_SPANISH_COLOMBIA: - case LANGUAGE_SPANISH_PERU: - case LANGUAGE_SPANISH_ARGENTINA: - case LANGUAGE_SPANISH_ECUADOR: - case LANGUAGE_SPANISH_CHILE: - case LANGUAGE_SPANISH_URUGUAY: - case LANGUAGE_SPANISH_PARAGUAY: - case LANGUAGE_SPANISH_BOLIVIA: - case LANGUAGE_SPANISH_EL_SALVADOR: - case LANGUAGE_SPANISH_HONDURAS: - case LANGUAGE_SPANISH_NICARAGUA: - case LANGUAGE_SPANISH_PUERTO_RICO: - { - if (nChar == 'a' || nChar == 'A') - rParams = rParams.replaceAt(nI, 1, "O"); - else if (nChar == 'y' || nChar == 'Y') - rParams = rParams.replaceAt(nI, 1, "A"); - } - break; - case LANGUAGE_DUTCH: - case LANGUAGE_DUTCH_BELGIAN: - { - if (nChar == 'y' || nChar == 'Y') - rParams = rParams.replaceAt(nI, 1, "J"); - else if (nChar == 'u' || nChar == 'U') - rParams = rParams.replaceAt(nI, 1, "H"); - } - break; - case LANGUAGE_ITALIAN: - case LANGUAGE_ITALIAN_SWISS: - { - if (nChar == 'a' || nChar == 'A') - rParams = rParams.replaceAt(nI, 1, "O"); - else if (nChar == 'g' || nChar == 'G') - rParams = rParams.replaceAt(nI, 1, "X"); - else if (nChar == 'y' || nChar == 'Y') - rParams = rParams.replaceAt(nI, 1, "A"); - else if (nChar == 'd' || nChar == 'D') - rParams = rParams.replaceAt(nI, 1, "G"); - } - break; - case LANGUAGE_GERMAN: - case LANGUAGE_GERMAN_SWISS: - case LANGUAGE_GERMAN_AUSTRIAN: - case LANGUAGE_GERMAN_LUXEMBOURG: - case LANGUAGE_GERMAN_LIECHTENSTEIN: - { - if (nChar == 'y' || nChar == 'Y') - rParams = rParams.replaceAt(nI, 1, "J"); - else if (nChar == 'd' || nChar == 'D') - rParams = rParams.replaceAt(nI, 1, "T"); - } - break; - case LANGUAGE_FRENCH: - case LANGUAGE_FRENCH_BELGIAN: - case LANGUAGE_FRENCH_CANADIAN: - case LANGUAGE_FRENCH_SWISS: - case LANGUAGE_FRENCH_LUXEMBOURG: - case LANGUAGE_FRENCH_MONACO: - { - if (nChar == 'y' || nChar == 'Y' || nChar == 'a') - rParams = rParams.replaceAt(nI, 1, "A"); - else if (nChar == 'd' || nChar == 'D' || nChar == 'j') - rParams = rParams.replaceAt(nI, 1, "J"); - } - break; - default: - { - ; // Nothing - } + if (nChar == 'y' || nChar == 'Y') + rParams = rParams.replaceAt(nI, 1, "V"); + else if (nChar == 'm' || nChar == 'M') + rParams = rParams.replaceAt(nI, 1, "K"); + else if (nChar == 'd' || nChar == 'D') + rParams = rParams.replaceAt(nI, 1, "P"); + else if (nChar == 'h' || nChar == 'H') + rParams = rParams.replaceAt(nI, 1, "T"); + } + else if ( rLang.anyOf( + LANGUAGE_DANISH, + LANGUAGE_NORWEGIAN, + LANGUAGE_NORWEGIAN_BOKMAL, + LANGUAGE_NORWEGIAN_NYNORSK, + LANGUAGE_SWEDISH, + LANGUAGE_SWEDISH_FINLAND)) + { + if (nChar == 'h' || nChar == 'H') + rParams = rParams.replaceAt(nI, 1, "T"); + } + else if ( rLang.anyOf( + LANGUAGE_PORTUGUESE, + LANGUAGE_PORTUGUESE_BRAZILIAN, + LANGUAGE_SPANISH_MODERN, + LANGUAGE_SPANISH_DATED, + LANGUAGE_SPANISH_MEXICAN, + LANGUAGE_SPANISH_GUATEMALA, + LANGUAGE_SPANISH_COSTARICA, + LANGUAGE_SPANISH_PANAMA, + LANGUAGE_SPANISH_DOMINICAN_REPUBLIC, + LANGUAGE_SPANISH_VENEZUELA, + LANGUAGE_SPANISH_COLOMBIA, + LANGUAGE_SPANISH_PERU, + LANGUAGE_SPANISH_ARGENTINA, + LANGUAGE_SPANISH_ECUADOR, + LANGUAGE_SPANISH_CHILE, + LANGUAGE_SPANISH_URUGUAY, + LANGUAGE_SPANISH_PARAGUAY, + LANGUAGE_SPANISH_BOLIVIA, + LANGUAGE_SPANISH_EL_SALVADOR, + LANGUAGE_SPANISH_HONDURAS, + LANGUAGE_SPANISH_NICARAGUA, + LANGUAGE_SPANISH_PUERTO_RICO)) + { + if (nChar == 'a' || nChar == 'A') + rParams = rParams.replaceAt(nI, 1, "O"); + else if (nChar == 'y' || nChar == 'Y') + rParams = rParams.replaceAt(nI, 1, "A"); + } + else if ( rLang.anyOf( + LANGUAGE_DUTCH, + LANGUAGE_DUTCH_BELGIAN)) + { + if (nChar == 'y' || nChar == 'Y') + rParams = rParams.replaceAt(nI, 1, "J"); + else if (nChar == 'u' || nChar == 'U') + rParams = rParams.replaceAt(nI, 1, "H"); + } + else if ( rLang.anyOf( + LANGUAGE_ITALIAN, + LANGUAGE_ITALIAN_SWISS)) + { + if (nChar == 'a' || nChar == 'A') + rParams = rParams.replaceAt(nI, 1, "O"); + else if (nChar == 'g' || nChar == 'G') + rParams = rParams.replaceAt(nI, 1, "X"); + else if (nChar == 'y' || nChar == 'Y') + rParams = rParams.replaceAt(nI, 1, "A"); + else if (nChar == 'd' || nChar == 'D') + rParams = rParams.replaceAt(nI, 1, "G"); + } + else if ( rLang.anyOf( + LANGUAGE_GERMAN, + LANGUAGE_GERMAN_SWISS, + LANGUAGE_GERMAN_AUSTRIAN, + LANGUAGE_GERMAN_LUXEMBOURG, + LANGUAGE_GERMAN_LIECHTENSTEIN)) + { + if (nChar == 'y' || nChar == 'Y') + rParams = rParams.replaceAt(nI, 1, "J"); + else if (nChar == 'd' || nChar == 'D') + rParams = rParams.replaceAt(nI, 1, "T"); + } + else if ( rLang.anyOf( + LANGUAGE_FRENCH, + LANGUAGE_FRENCH_BELGIAN, + LANGUAGE_FRENCH_CANADIAN, + LANGUAGE_FRENCH_SWISS, + LANGUAGE_FRENCH_LUXEMBOURG, + LANGUAGE_FRENCH_MONACO)) + { + if (nChar == 'y' || nChar == 'Y' || nChar == 'a') + rParams = rParams.replaceAt(nI, 1, "A"); + else if (nChar == 'd' || nChar == 'D' || nChar == 'j') + rParams = rParams.replaceAt(nI, 1, "J"); } } } diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 7da2c6f353cc..5047e4f0d0bd 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -1290,19 +1290,19 @@ void WW8AttributeOutput::CharLanguage( const SvxLanguageItem& rLanguage ) { // use sprmCRgLid0_80 rather than sprmCLid m_rWW8Export.InsUInt16( nId ); - m_rWW8Export.InsUInt16( rLanguage.GetLanguage() ); + m_rWW8Export.InsUInt16( (sal_uInt16)rLanguage.GetLanguage() ); // Word 2000 and above apparently require both old and new versions of // these sprms to be set, without it spellchecking doesn't work if ( nId == NS_sprm::sprmCRgLid0_80 ) { m_rWW8Export.InsUInt16( NS_sprm::sprmCRgLid0 ); - m_rWW8Export.InsUInt16( rLanguage.GetLanguage() ); + m_rWW8Export.InsUInt16( (sal_uInt16)rLanguage.GetLanguage() ); } else if ( nId == NS_sprm::sprmCRgLid1_80 ) { m_rWW8Export.InsUInt16( NS_sprm::sprmCRgLid1 ); - m_rWW8Export.InsUInt16( rLanguage.GetLanguage() ); + m_rWW8Export.InsUInt16( (sal_uInt16)rLanguage.GetLanguage() ); } } } @@ -2293,7 +2293,7 @@ bool MSWordExportBase::GetNumberFormat(const SwField& rField, OUString& rStr) const SvNumberformat* pNumFormat = pNFormatr->GetEntry( nFormatIdx ); if( pNumFormat ) { - sal_uInt16 nLng = rField.GetLanguage(); + LanguageType nLng = rField.GetLanguage(); LocaleDataWrapper aLocDat(pNFormatr->GetComponentContext(), LanguageTag(nLng)); diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 1cb9d41845ad..702232035341 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -2858,11 +2858,11 @@ std::size_t Custom8BitToUnicode(rtl_TextToUnicodeConverter hConverter, return nDestChars; } -bool SwWW8ImplReader::LangUsesHindiNumbers(sal_uInt16 nLang) +bool SwWW8ImplReader::LangUsesHindiNumbers(LanguageType nLang) { bool bResult = false; - switch (nLang) + switch ((sal_uInt16)nLang) { case 0x1401: // Arabic(Algeria) case 0x3c01: // Arabic(Bahrain) @@ -3014,7 +3014,7 @@ bool SwWW8ImplReader::ReadPlainChars(WW8_CP& rPos, sal_Int32 nEnd, sal_Int32 nCp sal_uInt8 nBCode = 0; sal_uInt16 nUCode; - sal_uInt16 nCTLLang = 0; + LanguageType nCTLLang = LANGUAGE_SYSTEM; const SfxPoolItem * pItem = GetFormatAttr(RES_CHRATR_CTL_LANGUAGE); if (pItem != nullptr) nCTLLang = static_cast<const SvxLanguageItem *>(pItem)->GetLanguage(); diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx index 9c3d471f645b..d3658d3e6bfd 100644 --- a/sw/source/filter/ww8/ww8par.hxx +++ b/sw/source/filter/ww8/ww8par.hxx @@ -1391,7 +1391,7 @@ private: bool ReadChar(long nPosCp, long nCpOfs); bool ReadPlainChars(WW8_CP& rPos, sal_Int32 nEnd, sal_Int32 nCpOfs); bool ReadChars(WW8_CP& rPos, WW8_CP nNextAttr, long nTextEnd, long nCpOfs); - static bool LangUsesHindiNumbers(sal_uInt16 nLang); + static bool LangUsesHindiNumbers(LanguageType nLang); static sal_Unicode TranslateToHindiNumbers(sal_Unicode); void SetDocumentGrid(SwFrameFormat &rFormat, const wwSection &rSection); @@ -1805,9 +1805,9 @@ public: // really private, but can only be done public eF_ResT Read_F_DocInfo( WW8FieldDesc* pF, OUString& rStr ); eF_ResT Read_F_Author( WW8FieldDesc*, OUString& ); eF_ResT Read_F_TemplName( WW8FieldDesc*, OUString& ); - short GetTimeDatePara(OUString& rStr, sal_uInt32& rFormat, sal_uInt16 &rLang, + short GetTimeDatePara(OUString& rStr, sal_uInt32& rFormat, LanguageType &rLang, int nWhichDefault, bool bHijri = false); - bool ForceFieldLanguage(SwField &rField, sal_uInt16 nLang); + bool ForceFieldLanguage(SwField &rField, LanguageType nLang); eF_ResT Read_F_DateTime( WW8FieldDesc*, OUString& rStr ); eF_ResT Read_F_FileName( WW8FieldDesc*, OUString& rStr); eF_ResT Read_F_Num( WW8FieldDesc* pF, OUString& ); diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx index 51d46b9bbc49..a2be43e0e82a 100644 --- a/sw/source/filter/ww8/ww8par5.cxx +++ b/sw/source/filter/ww8/ww8par5.cxx @@ -389,14 +389,14 @@ static SvxNumType GetNumberPara(const OUString& rStr, bool bAllowPageDesc = fals return aType; } -bool SwWW8ImplReader::ForceFieldLanguage(SwField &rField, sal_uInt16 nLang) +bool SwWW8ImplReader::ForceFieldLanguage(SwField &rField, LanguageType nLang) { bool bRet(false); const SvxLanguageItem *pLang = static_cast<const SvxLanguageItem*>(GetFormatAttr(RES_CHRATR_LANGUAGE)); OSL_ENSURE(pLang, "impossible"); - sal_uInt16 nDefault = pLang ? pLang->GetValue() : LANGUAGE_ENGLISH_US; + LanguageType nDefault = pLang ? pLang->GetValue() : LANGUAGE_ENGLISH_US; if (nLang != nDefault) { @@ -408,7 +408,7 @@ bool SwWW8ImplReader::ForceFieldLanguage(SwField &rField, sal_uInt16 nLang) return bRet; } -OUString GetWordDefaultDateStringAsUS(SvNumberFormatter* pFormatter, sal_uInt16 nLang) +OUString GetWordDefaultDateStringAsUS(SvNumberFormatter* pFormatter, LanguageType nLang) { //Get the system date in the correct final language layout, convert to //a known language and modify the 2 digit year part to be 4 digit, and @@ -432,7 +432,7 @@ OUString GetWordDefaultDateStringAsUS(SvNumberFormatter* pFormatter, sal_uInt16 } short SwWW8ImplReader::GetTimeDatePara(OUString& rStr, sal_uInt32& rFormat, - sal_uInt16 &rLang, int nWhichDefault, bool bHijri) + LanguageType &rLang, int nWhichDefault, bool bHijri) { bool bRTL = false; if (m_pPlcxMan && !m_bVer67) @@ -1655,7 +1655,7 @@ eF_ResT SwWW8ImplReader::Read_F_DocInfo( WW8FieldDesc* pF, OUString& rStr ) sal_uInt32 nFormat = 0; - sal_uInt16 nLang(0); + LanguageType nLang(LANGUAGE_SYSTEM); if (bDateTime) { short nDT = GetTimeDatePara(rStr, nFormat, nLang, pF->nId); @@ -1758,7 +1758,7 @@ eF_ResT SwWW8ImplReader::Read_F_DateTime( WW8FieldDesc*pF, OUString& rStr ) sal_uInt32 nFormat = 0; - sal_uInt16 nLang(0); + LanguageType nLang(LANGUAGE_SYSTEM); short nDT = GetTimeDatePara(rStr, nFormat, nLang, ww::eDATE, bHijri); if( css::util::NumberFormat::UNDEFINED == nDT ) // no D/T-Formatstring diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx index f430a140ccab..8c80b6f2c332 100644 --- a/sw/source/filter/ww8/ww8par6.cxx +++ b/sw/source/filter/ww8/ww8par6.cxx @@ -842,7 +842,7 @@ void wwSectionManager::CreateSep(const long nTextPos, bool /*bMustHaveBreak*/) aLastSection = maSegments.back(); //Here - sal_uInt16 nLIdx = ( ( mrReader.m_pWwFib->m_lid & 0xff ) == 0x9 ) ? 1 : 0; + sal_uInt16 nLIdx = ( ( (sal_uInt16)mrReader.m_pWwFib->m_lid & 0xff ) == 0x9 ) ? 1 : 0; //BEGIN read section values wwSection aNewSection(*mrReader.m_pPaM->GetPoint()); @@ -3867,7 +3867,7 @@ void SwWW8ImplReader::Read_Language( sal_uInt16 nId, const sal_uInt8* pData, sho else { sal_uInt16 nLang = SVBT16ToShort( pData ); // Language-Id - NewAttr(SvxLanguageItem((const LanguageType)nLang, nId)); + NewAttr(SvxLanguageItem(LanguageType(nLang), nId)); } } @@ -4513,7 +4513,7 @@ void SwWW8ImplReader::Read_Emphasis( sal_uInt16, const sal_uInt8* pData, short n aLang = m_pPlcxMan->GetChpPLCF()->HasSprm(0x486E); if (aLang.pSprm && aLang.nRemainingData >= 2) - nLang = SVBT16ToShort(aLang.pSprm); + nLang = LanguageType(SVBT16ToShort(aLang.pSprm)); else { nLang = static_cast<const SvxLanguageItem *>( diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx index 8f51cc10d9db..1410d42dab34 100644 --- a/sw/source/filter/ww8/ww8scan.cxx +++ b/sw/source/filter/ww8/ww8scan.cxx @@ -5531,7 +5531,9 @@ WW8Fib::WW8Fib(SvStream& rSt, sal_uInt8 nWantedVersion, sal_uInt32 nOffset) sal_Int16 cpnBtePap_Ver67=0; // read FIB - rSt.ReadInt16( m_lid ); + sal_Int16 nTmpLid = 0; + rSt.ReadInt16( nTmpLid ); + m_lid = LanguageType(nTmpLid); rSt.ReadInt16( m_pnNext ); rSt.ReadUChar( aBits1 ); rSt.ReadUChar( aBits2 ); @@ -5577,7 +5579,9 @@ WW8Fib::WW8Fib(SvStream& rSt, sal_uInt8 nWantedVersion, sal_uInt32 nOffset) && (bVer67 || WW8ReadINT16( rSt, pnLvcFirst_W6 )) // 8 && (bVer67 || WW8ReadINT16( rSt, cpnBteLvc_W6 )) // 9 */ - rSt.ReadInt16( m_lidFE ); + sal_Int16 nTmpFE = 0; + rSt.ReadInt16( nTmpFE ); + m_lidFE = LanguageType(nTmpFE); rSt.ReadUInt16( m_clw ); } @@ -5926,7 +5930,7 @@ WW8Fib::WW8Fib(sal_uInt8 nVer, bool bDot) m_cQuickSaves = m_nFib >= 0x00D9 ? 0xF : 0; // --> #i90932# - m_lid = 0x409; // LANGUAGE_ENGLISH_US + m_lid = LanguageType(0x409); // LANGUAGE_ENGLISH_US LanguageType nLang = Application::GetSettings().GetLanguageTag().getLanguageType(); m_fFarEast = MsLangId::isCJK(nLang); @@ -5957,7 +5961,7 @@ void WW8Fib::WriteHeader(SvStream& rStrm) Set_UInt16( pData, m_wIdent ); Set_UInt16( pData, m_nFib ); Set_UInt16( pData, m_nProduct ); - Set_UInt16( pData, m_lid ); + Set_UInt16( pData, (sal_uInt16)m_lid ); Set_UInt16( pData, m_pnNext ); sal_uInt16 nBits16 = 0; @@ -6013,7 +6017,7 @@ void WW8Fib::WriteHeader(SvStream& rStrm) Set_UInt16( pData, m_wMagicCreatedPrivate ); Set_UInt16( pData, m_wMagicRevisedPrivate ); pData += 9 * sizeof( sal_Int16 ); - Set_UInt16( pData, m_lidFE ); + Set_UInt16( pData, (sal_uInt16)m_lidFE ); Set_UInt16( pData, m_clw ); } @@ -6268,12 +6272,12 @@ void WW8Fib::Write(SvStream& rStrm) rStrm.WriteBytes(pDataPtr.get(), m_fcMin - nUnencryptedHdr); } -rtl_TextEncoding WW8Fib::GetFIBCharset(sal_uInt16 chs, sal_uInt16 nLidLocale) +rtl_TextEncoding WW8Fib::GetFIBCharset(sal_uInt16 chs, LanguageType nLidLocale) { OSL_ENSURE(chs <= 0x100, "overflowed winword charset set"); if (chs == 0x0100) return RTL_TEXTENCODING_APPLE_ROMAN; - if (chs == 0 && nLidLocale >= 999) + if (chs == 0 && (sal_uInt16)nLidLocale >= 999) { /* nLidLocale: @@ -7859,9 +7863,9 @@ void WW8DopTypography::WriteToMem(sal_uInt8 *&pData) const Set_UInt16(pData,rgxchLPunct[i]); } -sal_uInt16 WW8DopTypography::GetConvertedLang() const +LanguageType WW8DopTypography::GetConvertedLang() const { - sal_uInt16 nLang; + LanguageType nLang; //I have assumed peoples republic/taiwan == simplified/traditional //This isn't a documented issue, so we might have it all wrong, diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx index c3b9cd284e0b..9a1b277c8480 100644 --- a/sw/source/filter/ww8/ww8scan.hxx +++ b/sw/source/filter/ww8/ww8scan.hxx @@ -1135,7 +1135,7 @@ public: */ sal_uInt16 m_nFib; // 0x2 FIB version written sal_uInt16 m_nProduct; // 0x4 product version written by - sal_Int16 m_lid; // 0x6 language stamp---localized version; + LanguageType m_lid; // 0x6 language stamp---localized version; WW8_PN m_pnNext; // 0x8 bool m_fDot :1; // 0xa 0001 @@ -1190,8 +1190,8 @@ public: sal_uInt16 m_wMagicCreatedPrivate; // private data sal_uInt16 m_wMagicRevisedPrivate; // private data - sal_Int16 m_lidFE; // Language id if document was written by Far East version - // of Word (i.e. FIB.fFarEast is on) + LanguageType m_lidFE; // Language id if document was written by Far East version + // of Word (i.e. FIB.fFarEast is on) sal_uInt16 m_clw; // Number of fields in the array of longs // end of WW8 section @@ -1529,7 +1529,7 @@ public: void WriteHeader(SvStream& rStrm); void Write(SvStream& rStrm); - static rtl_TextEncoding GetFIBCharset(sal_uInt16 chs, sal_uInt16 nLidLocale); + static rtl_TextEncoding GetFIBCharset(sal_uInt16 chs, LanguageType nLidLocale); ww::WordVersion GetFIBVersion() const; bool GetBaseCp(ManTypes nType, WW8_CP * cp) const; sal_Unicode getNumDecimalSep() const { return m_nNumDecimalSep;} diff --git a/sw/source/filter/ww8/ww8struc.hxx b/sw/source/filter/ww8/ww8struc.hxx index ba7768caac0b..9eb87651695b 100644 --- a/sw/source/filter/ww8/ww8struc.hxx +++ b/sw/source/filter/ww8/ww8struc.hxx @@ -375,7 +375,7 @@ public: void WriteToMem(sal_uInt8 *&pData) const; //Maps what I think is the language this is to affect to the OOo language - sal_uInt16 GetConvertedLang() const; + LanguageType GetConvertedLang() const; sal_uInt16 fKerningPunct : 1; // true if we're kerning punctuation sal_uInt16 iJustification : 2; // Kinsoku method of justification: diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx index 91d0ba84fb7a..a939175d7b3d 100644 --- a/sw/source/ui/dbui/dbinsdlg.cxx +++ b/sw/source/ui/dbui/dbinsdlg.cxx @@ -1610,7 +1610,7 @@ void SwInsertDBColAutoPilot::ImplCommit() sNewNode += "/ColumnSet"; - LanguageType ePrevLang = (LanguageType)-1; + LanguageType ePrevLang(0xffff); SvNumberFormatter& rNFormatr = *pView->GetWrtShell().GetNumberFormatter(); for(size_t nCol = 0; nCol < aDBColumns.size(); nCol++) diff --git a/sw/source/ui/dialog/ascfldlg.cxx b/sw/source/ui/dialog/ascfldlg.cxx index b1afb05cbd6c..75e518af1657 100644 --- a/sw/source/ui/dialog/ascfldlg.cxx +++ b/sw/source/ui/dialog/ascfldlg.cxx @@ -263,7 +263,7 @@ void SwAsciiFilterDlg::FillOptions( SwAsciiOptions& rOptions ) { sal_uLong nCCode = m_pCharSetLB->GetSelectTextEncoding(); OUString sFont; - LanguageType nLng = 0; + LanguageType nLng = LANGUAGE_SYSTEM; if( m_pFontLB->IsVisible() ) { sFont = m_pFontLB->GetSelectEntry(); @@ -272,7 +272,7 @@ void SwAsciiFilterDlg::FillOptions( SwAsciiOptions& rOptions ) rOptions.SetFontName( sFont ); rOptions.SetCharSet( rtl_TextEncoding( nCCode ) ); - rOptions.SetLanguage( sal_uInt16( nLng ) ); + rOptions.SetLanguage( nLng ); rOptions.SetParaFlags( GetCRLF() ); // save the user settings diff --git a/sw/source/ui/misc/srtdlg.cxx b/sw/source/ui/misc/srtdlg.cxx index caa6b906eb12..ab338be9ce13 100644 --- a/sw/source/ui/misc/srtdlg.cxx +++ b/sw/source/ui/misc/srtdlg.cxx @@ -56,7 +56,7 @@ static sal_uInt16 nType1 = 0; static sal_uInt16 nType2 = 0; static sal_uInt16 nType3 = 0; -static sal_uInt16 nLang = LANGUAGE_NONE; +static LanguageType nLang = LANGUAGE_NONE; static bool bAsc1 = true; static bool bAsc2 = true; @@ -196,7 +196,7 @@ SwSortDlg::SwSortDlg(vcl::Window* pParent, SwWrtShell &rShell) // first initialise the language, then select the if( LANGUAGE_NONE == nLang || LANGUAGE_DONTKNOW == nLang ) - nLang = (sal_uInt16)GetAppLanguage(); + nLang = GetAppLanguage(); m_pLangLB->SetLanguageList( SvxLanguageListFlags::ALL | SvxLanguageListFlags::ONLY_KNOWN, true ); m_pLangLB->SelectLanguage( nLang ); diff --git a/sw/source/ui/vba/vbarange.cxx b/sw/source/ui/vba/vbarange.cxx index a76cd1cdce51..65bf25b63ed5 100644 --- a/sw/source/ui/vba/vbarange.cxx +++ b/sw/source/ui/vba/vbarange.cxx @@ -310,13 +310,13 @@ SwVbaRange::getListFormat() ::sal_Int32 SAL_CALL SwVbaRange::getLanguageID() { uno::Reference< beans::XPropertySet > xParaProps( mxTextCursor, uno::UNO_QUERY_THROW ); - return SwVbaStyle::getLanguageID( xParaProps ); + return (sal_uInt16)SwVbaStyle::getLanguageID( xParaProps ); } void SAL_CALL SwVbaRange::setLanguageID( ::sal_Int32 _languageid ) { uno::Reference< beans::XPropertySet > xParaProps( mxTextCursor, uno::UNO_QUERY_THROW ); - SwVbaStyle::setLanguageID( xParaProps, _languageid ); + SwVbaStyle::setLanguageID( xParaProps, LanguageType(_languageid) ); } uno::Any SAL_CALL diff --git a/sw/source/ui/vba/vbastyle.cxx b/sw/source/ui/vba/vbastyle.cxx index 663f0be39a43..7fc026d2f3c3 100644 --- a/sw/source/ui/vba/vbastyle.cxx +++ b/sw/source/ui/vba/vbastyle.cxx @@ -48,27 +48,27 @@ SwVbaStyle::getName() return mxStyle->getName(); } -sal_Int32 SwVbaStyle::getLanguageID( const uno::Reference< beans::XPropertySet >& xTCProps ) +LanguageType SwVbaStyle::getLanguageID( const uno::Reference< beans::XPropertySet >& xTCProps ) { lang::Locale aLocale; xTCProps->getPropertyValue("CharLocale") >>= aLocale; return LanguageTag::convertToLanguageType( aLocale, false); } -void SwVbaStyle::setLanguageID( const uno::Reference< beans::XPropertySet >& xTCProps, sal_Int32 _languageid ) +void SwVbaStyle::setLanguageID( const uno::Reference< beans::XPropertySet >& xTCProps, LanguageType _languageid ) { - lang::Locale aLocale = LanguageTag( static_cast<LanguageType>(_languageid) ).getLocale(); + lang::Locale aLocale = LanguageTag( _languageid ).getLocale(); xTCProps->setPropertyValue("CharLocale", uno::makeAny( aLocale ) ) ; } ::sal_Int32 SAL_CALL SwVbaStyle::getLanguageID() { - return getLanguageID( mxStyleProps ); + return (sal_uInt16)getLanguageID( mxStyleProps ); } void SAL_CALL SwVbaStyle::setLanguageID( ::sal_Int32 _languageid ) { - setLanguageID( mxStyleProps, _languageid ); + setLanguageID( mxStyleProps, LanguageType(_languageid) ); } ::sal_Int32 SAL_CALL SwVbaStyle::getType() diff --git a/sw/source/ui/vba/vbastyle.hxx b/sw/source/ui/vba/vbastyle.hxx index 334fd7525fc8..21d94d3ed3d8 100644 --- a/sw/source/ui/vba/vbastyle.hxx +++ b/sw/source/ui/vba/vbastyle.hxx @@ -18,8 +18,10 @@ */ #ifndef INCLUDED_SW_SOURCE_UI_VBA_VBASTYLE_HXX #define INCLUDED_SW_SOURCE_UI_VBA_VBASTYLE_HXX + #include <ooo/vba/word/XStyle.hpp> #include <vbahelper/vbahelperinterface.hxx> +#include <i18nlangtag/lang.h> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/frame/XModel.hpp> #include <com/sun/star/container/XNameContainer.hpp> @@ -43,9 +45,9 @@ public: /// @throws css::uno::RuntimeException static void setStyle( const css::uno::Reference< css::beans::XPropertySet >& xParaProps, const css::uno::Any& xStyle ); /// @throws css::uno::RuntimeException - static sal_Int32 getLanguageID( const css::uno::Reference< css::beans::XPropertySet >& xTCProps ); + static LanguageType getLanguageID( const css::uno::Reference< css::beans::XPropertySet >& xTCProps ); /// @throws css::uno::RuntimeException - static void setLanguageID( const css::uno::Reference< css::beans::XPropertySet >& xTCProps, sal_Int32 _languageid ); + static void setLanguageID( const css::uno::Reference< css::beans::XPropertySet >& xTCProps, LanguageType _languageid ); // Attributes virtual OUString SAL_CALL getName() override; diff --git a/sw/source/uibase/app/docshini.cxx b/sw/source/uibase/app/docshini.cxx index 958985974a94..a670ff8eb7a0 100644 --- a/sw/source/uibase/app/docshini.cxx +++ b/sw/source/uibase/app/docshini.cxx @@ -672,9 +672,9 @@ void SwDocShell::SubInitNew() if (!utl::ConfigManager::IsAvoidConfig()) SvtLinguConfig().GetOptions(aLinguOpt); - sal_Int16 nVal = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), - eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), - eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); + LanguageType nVal = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), + eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), + eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); aDfltSet.Put( SvxLanguageItem( nVal, RES_CHRATR_LANGUAGE ) ); aDfltSet.Put( SvxLanguageItem( eCJK, RES_CHRATR_CJK_LANGUAGE ) ); aDfltSet.Put( SvxLanguageItem( eCTL, RES_CHRATR_CTL_LANGUAGE ) ); diff --git a/sw/source/uibase/config/fontcfg.cxx b/sw/source/uibase/config/fontcfg.cxx index d6607b496eb9..31a02531bf3c 100644 --- a/sw/source/uibase/config/fontcfg.cxx +++ b/sw/source/uibase/config/fontcfg.cxx @@ -31,11 +31,11 @@ using namespace utl; using namespace com::sun::star::uno; -static inline LanguageType lcl_LanguageOfType(sal_Int16 nType, sal_Int16 eWestern, sal_Int16 eCJK, sal_Int16 eCTL) +static inline LanguageType lcl_LanguageOfType(sal_Int16 nType, LanguageType eWestern, LanguageType eCJK, LanguageType eCTL) { - return LanguageType( - nType < FONT_STANDARD_CJK ? eWestern : - nType >= FONT_STANDARD_CTL ? eCTL : eCJK); + return nType < FONT_STANDARD_CJK + ? eWestern + : nType >= FONT_STANDARD_CTL ? eCTL : eCJK; } Sequence<OUString> SwStdFontConfig::GetPropertyNames() @@ -95,9 +95,9 @@ SwStdFontConfig::SwStdFontConfig() : if (!utl::ConfigManager::IsAvoidConfig()) SvtLinguConfig().GetOptions( aLinguOpt ); - sal_Int16 eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), - eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), - eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); + LanguageType eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), + eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), + eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); for(sal_Int16 i = 0; i < DEF_FONT_COUNT; i++) { @@ -141,9 +141,9 @@ void SwStdFontConfig::ImplCommit() SvtLinguConfig().GetOptions( aLinguOpt ); - sal_Int16 eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), - eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), - eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); + LanguageType eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), + eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), + eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); for(sal_uInt16 nProp = 0; nProp < sal::static_int_cast< sal_uInt16, sal_Int32 >( aNames.getLength() ); @@ -175,9 +175,9 @@ bool SwStdFontConfig::IsFontDefault(sal_uInt16 nFontType) const if (!utl::ConfigManager::IsAvoidConfig()) SvtLinguConfig().GetOptions(aLinguOpt); - sal_Int16 eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), - eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), - eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); + LanguageType eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), + eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), + eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); OUString sDefFont(GetDefaultFor(FONT_STANDARD, eWestern)); OUString sDefFontCJK(GetDefaultFor(FONT_STANDARD_CJK, eCJK)); @@ -289,9 +289,9 @@ void SwStdFontConfig::ChangeInt( sal_uInt16 nFontType, sal_Int32 nHeight ) if (!utl::ConfigManager::IsAvoidConfig()) SvtLinguConfig().GetOptions( aLinguOpt ); - sal_Int16 eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), - eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), - eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); + LanguageType eWestern = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN), + eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN), + eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); // #i92090# default height value sets back to -1 const sal_Int32 nDefaultHeight = GetDefaultHeightFor(nFontType, lcl_LanguageOfType(nFontType, eWestern, eCJK, eCTL)); diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index 1012e1896598..02edbcaeb0a5 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -384,7 +384,7 @@ static bool lcl_MoveAbsolute(SwDSParam* pParam, long nAbsPos) static void lcl_GetColumnCnt(SwDSParam *pParam, const uno::Reference< beans::XPropertySet > &rColumnProps, - long nLanguage, OUString &rResult, double* pNumber) + LanguageType nLanguage, OUString &rResult, double* pNumber) { SwDBFormatData aFormatData; if(!pParam->xFormatter.is()) @@ -396,13 +396,13 @@ static void lcl_GetColumnCnt(SwDSParam *pParam, aFormatData.aNullDate = pParam->aNullDate; aFormatData.xFormatter = pParam->xFormatter; - aFormatData.aLocale = LanguageTag( (LanguageType)nLanguage ).getLocale(); + aFormatData.aLocale = LanguageTag( nLanguage ).getLocale(); rResult = SwDBManager::GetDBField( rColumnProps, aFormatData, pNumber); } static bool lcl_GetColumnCnt(SwDSParam* pParam, const OUString& rColumnName, - long nLanguage, OUString& rResult, double* pNumber) + LanguageType nLanguage, OUString& rResult, double* pNumber) { uno::Reference< sdbcx::XColumnsSupplier > xColsSupp( pParam->xResultSet, uno::UNO_QUERY ); uno::Reference<container::XNameAccess> xCols; @@ -1689,7 +1689,7 @@ sal_uLong SwDBManager::GetColumnFormat( const OUString& rDBName, const OUString& rTableName, const OUString& rColNm, SvNumberFormatter* pNFormatr, - long nLanguage ) + LanguageType nLanguage ) { sal_uLong nRet = 0; if(pNFormatr) @@ -1768,7 +1768,7 @@ sal_uLong SwDBManager::GetColumnFormat( uno::Reference< sdbc::XDataSource> const uno::Reference< sdbc::XConnection> const & xConnection, uno::Reference< beans::XPropertySet> const & xColumn, SvNumberFormatter* pNFormatr, - long nLanguage ) + LanguageType nLanguage ) { auto xSource = xSource_in; @@ -1788,7 +1788,7 @@ sal_uLong SwDBManager::GetColumnFormat( uno::Reference< sdbc::XDataSource> const uno::Reference< util::XNumberFormats > xDocNumberFormats = xDocNumFormatsSupplier->getNumberFormats(); uno::Reference< util::XNumberFormatTypes > xDocNumberFormatTypes(xDocNumberFormats, uno::UNO_QUERY); - css::lang::Locale aLocale( LanguageTag( (LanguageType)nLanguage ).getLocale()); + css::lang::Locale aLocale( LanguageTag( nLanguage ).getLocale()); //get the number formatter of the data source uno::Reference<beans::XPropertySet> xSourceProps(xSource, uno::UNO_QUERY); @@ -2061,7 +2061,7 @@ bool SwDBManager::IsDataSourceOpen(const OUString& rDataSource, // read column data at a specified position bool SwDBManager::GetColumnCnt(const OUString& rSourceName, const OUString& rTableName, const OUString& rColumnName, sal_uInt32 nAbsRecordId, - long nLanguage, + LanguageType nLanguage, OUString& rResult, double* pNumber) { bool bRet = false; @@ -2123,7 +2123,7 @@ bool SwDBManager::GetColumnCnt(const OUString& rSourceName, const OUString& rTab } // reads the column data at the current position -bool SwDBManager::GetMergeColumnCnt(const OUString& rColumnName, sal_uInt16 nLanguage, +bool SwDBManager::GetMergeColumnCnt(const OUString& rColumnName, LanguageType nLanguage, OUString &rResult, double *pNumber) { if( !IsValidMergeRecord() ) @@ -2143,7 +2143,7 @@ bool SwDBManager::ToNextMergeRecord() } bool SwDBManager::FillCalcWithMergeData( SvNumberFormatter *pDocFormatter, - sal_uInt16 nLanguage, SwCalc &rCalc ) + LanguageType nLanguage, SwCalc &rCalc ) { if( !IsValidMergeRecord() ) return false; diff --git a/sw/source/uibase/fldui/fldmgr.cxx b/sw/source/uibase/fldui/fldmgr.cxx index 253872f847d9..e16e3ac21b36 100644 --- a/sw/source/uibase/fldui/fldmgr.cxx +++ b/sw/source/uibase/fldui/fldmgr.cxx @@ -1318,7 +1318,7 @@ bool SwFieldMgr::InsertField( //the auto language flag has to be set prior to the language! pField->SetAutomaticLanguage(rData.m_bIsAutomaticLanguage); - sal_uInt16 nLang = GetCurrLanguage(); + LanguageType nLang = GetCurrLanguage(); pField->SetLanguage(nLang); // insert @@ -1544,7 +1544,7 @@ void SwFieldMgr::EvalExpFields(SwWrtShell* pSh) pSh->EndAllAction(); } } -sal_uInt16 SwFieldMgr::GetCurrLanguage() const +LanguageType SwFieldMgr::GetCurrLanguage() const { SwWrtShell* pSh = pWrtShell ? pWrtShell : ::lcl_GetShell(); if( pSh ) diff --git a/sw/source/uibase/inc/fldmgr.hxx b/sw/source/uibase/inc/fldmgr.hxx index 25193aafa835..6302a84355c2 100644 --- a/sw/source/uibase/inc/fldmgr.hxx +++ b/sw/source/uibase/inc/fldmgr.hxx @@ -108,7 +108,7 @@ private: sal_uLong nCurFormat; bool bEvalExp; - SAL_DLLPRIVATE sal_uInt16 GetCurrLanguage() const; + SAL_DLLPRIVATE LanguageType GetCurrLanguage() const; css::uno::Reference<css::text::XNumberingTypeInfo> xNumberingInfo; SAL_DLLPRIVATE css::uno::Reference<css::text::XNumberingTypeInfo> const & GetNumberingInfo()const; diff --git a/sw/source/uibase/lingu/olmenu.cxx b/sw/source/uibase/lingu/olmenu.cxx index ef30e272192a..c375865d9365 100644 --- a/sw/source/uibase/lingu/olmenu.cxx +++ b/sw/source/uibase/lingu/olmenu.cxx @@ -743,7 +743,7 @@ void SwSpellPopup::Execute( sal_uInt16 nId ) } else { OUString sWord(m_xSpellAlt->getWord()); linguistic::DictionaryError nAddRes = linguistic::AddEntryToDic( xDictionary, - sWord, false, OUString(), LANGUAGE_NONE ); + sWord, false, OUString() ); if (linguistic::DictionaryError::NONE != nAddRes && !xDictionary->getEntry(sWord).is()) { SvxDicError(&m_pSh->GetView().GetViewFrame()->GetWindow(), nAddRes); @@ -770,7 +770,7 @@ void SwSpellPopup::Execute( sal_uInt16 nId ) if (xDic.is()) { - linguistic::DictionaryError nAddRes = linguistic::AddEntryToDic(xDic, sWord, false, OUString(), LANGUAGE_NONE); + linguistic::DictionaryError nAddRes = linguistic::AddEntryToDic(xDic, sWord, false, OUString()); // save modified user-dictionary if it is persistent uno::Reference< frame::XStorable > xSavDic( xDic, uno::UNO_QUERY ); if (xSavDic.is()) diff --git a/sw/source/uibase/shells/annotsh.cxx b/sw/source/uibase/shells/annotsh.cxx index a4a3c8f78204..1de04845a67c 100644 --- a/sw/source/uibase/shells/annotsh.cxx +++ b/sw/source/uibase/shells/annotsh.cxx @@ -1324,9 +1324,9 @@ void SwAnnotationShell::ExecLingu(SfxRequest &rReq) } //execute translation - sal_Int16 nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; - sal_Int16 nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; - sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; + LanguageType nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; + LanguageType nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; + sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; if( !bCommonTerms ) nOptions = nOptions | i18n::TextConversionOption::CHARACTER_BY_CHARACTER; diff --git a/sw/source/uibase/shells/drwtxtsh.cxx b/sw/source/uibase/shells/drwtxtsh.cxx index af9becb17a1b..da1cf8147b5e 100644 --- a/sw/source/uibase/shells/drwtxtsh.cxx +++ b/sw/source/uibase/shells/drwtxtsh.cxx @@ -337,9 +337,9 @@ void SwDrawTextShell::ExecDrawLingu(SfxRequest &rReq) } //execute translation - sal_Int16 nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; - sal_Int16 nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; - sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; + LanguageType nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; + LanguageType nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; + sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; if(!bCommonTerms) nOptions = nOptions | i18n::TextConversionOption::CHARACTER_BY_CHARACTER; diff --git a/sw/source/uibase/uiview/viewling.cxx b/sw/source/uibase/uiview/viewling.cxx index a55d4ee19017..3accf548d0da 100644 --- a/sw/source/uibase/uiview/viewling.cxx +++ b/sw/source/uibase/uiview/viewling.cxx @@ -159,9 +159,9 @@ void SwView::ExecLingu(SfxRequest &rReq) } //execute translation - sal_Int16 nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; - sal_Int16 nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; - sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; + LanguageType nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED; + LanguageType nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL; + sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0; if( !bCommonTerms ) nOptions = nOptions | i18n::TextConversionOption::CHARACTER_BY_CHARACTER; diff --git a/unotools/source/config/lingucfg.cxx b/unotools/source/config/lingucfg.cxx index 77e46b7881b0..9dfc019b19ac 100644 --- a/unotools/source/config/lingucfg.cxx +++ b/unotools/source/config/lingucfg.cxx @@ -51,14 +51,14 @@ namespace public rtl::Static< osl::Mutex, theSvtLinguConfigItemMutex > {}; } -static bool lcl_SetLocale( sal_Int16 &rLanguage, const uno::Any &rVal ) +static bool lcl_SetLocale( LanguageType &rLanguage, const uno::Any &rVal ) { bool bSucc = false; lang::Locale aNew; if (rVal >>= aNew) // conversion successful? { - sal_Int16 nNew = LanguageTag::convertToLanguageType( aNew, false); + LanguageType nNew = LanguageTag::convertToLanguageType( aNew, false); if (nNew != rLanguage) { rLanguage = nNew; @@ -68,7 +68,7 @@ static bool lcl_SetLocale( sal_Int16 &rLanguage, const uno::Any &rVal ) return bSucc; } -static inline const OUString lcl_LanguageToCfgLocaleStr( sal_Int16 nLanguage ) +static inline const OUString lcl_LanguageToCfgLocaleStr( LanguageType nLanguage ) { OUString aRes; if (LANGUAGE_SYSTEM != nLanguage) @@ -76,7 +76,7 @@ static inline const OUString lcl_LanguageToCfgLocaleStr( sal_Int16 nLanguage ) return aRes; } -static sal_Int16 lcl_CfgAnyToLanguage( const uno::Any &rVal ) +static LanguageType lcl_CfgAnyToLanguage( const uno::Any &rVal ) { OUString aTmp; rVal >>= aTmp; @@ -326,6 +326,7 @@ uno::Any SvtLinguConfigItem::GetProperty( sal_Int32 nPropertyHandle ) const uno::Any aRes; const sal_Int16 *pnVal = nullptr; + const LanguageType *plVal = nullptr; const bool *pbVal = nullptr; const sal_Int32 *pnInt32Val = nullptr; @@ -339,7 +340,7 @@ uno::Any SvtLinguConfigItem::GetProperty( sal_Int32 nPropertyHandle ) const case UPH_IS_SPELL_AUTO : pbVal = &rOpt.bIsSpellAuto; break; case UPH_IS_SPELL_SPECIAL : pbVal = &rOpt.bIsSpellSpecial; break; case UPH_IS_WRAP_REVERSE : pbVal = &rOpt.bIsSpellReverse; break; - case UPH_DEFAULT_LANGUAGE : pnVal = &rOpt.nDefaultLanguage; break; + case UPH_DEFAULT_LANGUAGE : plVal = &rOpt.nDefaultLanguage; break; case UPH_IS_SPELL_CAPITALIZATION : pbVal = &rOpt.bIsSpellCapitalization; break; case UPH_IS_SPELL_WITH_DIGITS : pbVal = &rOpt.bIsSpellWithDigits; break; case UPH_IS_SPELL_UPPER_CASE : pbVal = &rOpt.bIsSpellUpperCase; break; @@ -392,6 +393,8 @@ uno::Any SvtLinguConfigItem::GetProperty( sal_Int32 nPropertyHandle ) const aRes <<= *pbVal; else if (pnVal) aRes <<= *pnVal; + else if (plVal) + aRes <<= (sal_Int16)(sal_uInt16)*plVal; else if (pnInt32Val) aRes <<= *pnInt32Val; @@ -420,6 +423,7 @@ bool SvtLinguConfigItem::SetProperty( sal_Int32 nPropertyHandle, const uno::Any bool bMod = false; sal_Int16 *pnVal = nullptr; + LanguageType *plVal = nullptr; bool *pbVal = nullptr; sal_Int32 *pnInt32Val = nullptr; @@ -433,7 +437,7 @@ bool SvtLinguConfigItem::SetProperty( sal_Int32 nPropertyHandle, const uno::Any case UPH_IS_SPELL_AUTO : pbVal = &rOpt.bIsSpellAuto; break; case UPH_IS_SPELL_SPECIAL : pbVal = &rOpt.bIsSpellSpecial; break; case UPH_IS_WRAP_REVERSE : pbVal = &rOpt.bIsSpellReverse; break; - case UPH_DEFAULT_LANGUAGE : pnVal = &rOpt.nDefaultLanguage; break; + case UPH_DEFAULT_LANGUAGE : plVal = &rOpt.nDefaultLanguage; break; case UPH_IS_SPELL_CAPITALIZATION : pbVal = &rOpt.bIsSpellCapitalization; break; case UPH_IS_SPELL_WITH_DIGITS : pbVal = &rOpt.bIsSpellWithDigits; break; case UPH_IS_SPELL_UPPER_CASE : pbVal = &rOpt.bIsSpellUpperCase; break; @@ -513,6 +517,19 @@ bool SvtLinguConfigItem::SetProperty( sal_Int32 nPropertyHandle, const uno::Any bSucc = true; } } + else if (plVal) + { + sal_Int16 nNew = sal_Int16(); + if (rValue >>= nNew) + { + if (nNew != (sal_uInt16)*plVal) + { + *plVal = LanguageType(nNew); + bMod = true; + } + bSucc = true; + } + } else if (pnInt32Val) { sal_Int32 nNew = sal_Int32(); diff --git a/unotools/source/config/useroptions.cxx b/unotools/source/config/useroptions.cxx index e9c20cfd0abd..625a925b4095 100644 --- a/unotools/source/config/useroptions.cxx +++ b/unotools/source/config/useroptions.cxx @@ -183,33 +183,33 @@ void SvtUserOptions::Impl::SetToken (UserOptToken nToken, OUString const& sToken OUString SvtUserOptions::Impl::GetFullName () const { OUString sFullName; - switch (LanguageType const eLang = SvtSysLocale().GetUILanguageTag().getLanguageType()) + LanguageType const eLang = SvtSysLocale().GetUILanguageTag().getLanguageType(); + if (eLang == LANGUAGE_RUSSIAN) { - case LANGUAGE_RUSSIAN: - sFullName = GetToken(UserOptToken::FirstName).trim(); + sFullName = GetToken(UserOptToken::FirstName).trim(); + if (!sFullName.isEmpty()) + sFullName += " "; + sFullName += GetToken(UserOptToken::FathersName).trim(); + if (!sFullName.isEmpty()) + sFullName += " "; + sFullName += GetToken(UserOptToken::LastName).trim(); + } + else + { + if (MsLangId::isFamilyNameFirst(eLang)) + { + sFullName = GetToken(UserOptToken::LastName).trim(); if (!sFullName.isEmpty()) sFullName += " "; - sFullName += GetToken(UserOptToken::FathersName).trim(); + sFullName += GetToken(UserOptToken::FirstName).trim(); + } + else + { + sFullName = GetToken(UserOptToken::FirstName).trim(); if (!sFullName.isEmpty()) sFullName += " "; sFullName += GetToken(UserOptToken::LastName).trim(); - break; - default: - if (MsLangId::isFamilyNameFirst(eLang)) - { - sFullName = GetToken(UserOptToken::LastName).trim(); - if (!sFullName.isEmpty()) - sFullName += " "; - sFullName += GetToken(UserOptToken::FirstName).trim(); - } - else - { - sFullName = GetToken(UserOptToken::FirstName).trim(); - if (!sFullName.isEmpty()) - sFullName += " "; - sFullName += GetToken(UserOptToken::LastName).trim(); - } - break; + } } return sFullName; diff --git a/unotools/source/i18n/localedatawrapper.cxx b/unotools/source/i18n/localedatawrapper.cxx index 147125c38a83..5df0206ff681 100644 --- a/unotools/source/i18n/localedatawrapper.cxx +++ b/unotools/source/i18n/localedatawrapper.cxx @@ -58,7 +58,7 @@ namespace struct InstalledLanguageTypes : public rtl::Static< - uno::Sequence< sal_uInt16 >, InstalledLanguageTypes > + std::vector< LanguageType >, InstalledLanguageTypes > {}; } @@ -288,18 +288,18 @@ css::uno::Sequence< css::lang::Locale > LocaleDataWrapper::getInstalledLocaleNam } // static -css::uno::Sequence< sal_uInt16 > LocaleDataWrapper::getInstalledLanguageTypes() +std::vector< LanguageType > LocaleDataWrapper::getInstalledLanguageTypes() { - uno::Sequence< sal_uInt16 > &rInstalledLanguageTypes = + std::vector< LanguageType > &rInstalledLanguageTypes = InstalledLanguageTypes::get(); - if ( rInstalledLanguageTypes.getLength() ) + if ( !rInstalledLanguageTypes.empty() ) return rInstalledLanguageTypes; css::uno::Sequence< css::lang::Locale > xLoc = getInstalledLocaleNames(); sal_Int32 nCount = xLoc.getLength(); - css::uno::Sequence< sal_uInt16 > xLang( nCount ); - sal_Int32 nLanguages = 0; + std::vector< LanguageType > xLang; + xLang.reserve(nCount); for ( sal_Int32 i=0; i<nCount; i++ ) { LanguageTag aLanguageTag( xLoc[i] ); @@ -317,12 +317,8 @@ css::uno::Sequence< sal_uInt16 > LocaleDataWrapper::getInstalledLanguageTypes() outputCheckMessage(aMsg.makeStringAndClear()); } - switch ( eLang ) - { - case LANGUAGE_NORWEGIAN : // no_NO, not Bokmal (nb_NO), not Nynorsk (nn_NO) - eLang = LANGUAGE_DONTKNOW; // don't offer "Unknown" language - break; - } + if ( eLang == LANGUAGE_NORWEGIAN) // no_NO, not Bokmal (nb_NO), not Nynorsk (nn_NO) + eLang = LANGUAGE_DONTKNOW; // don't offer "Unknown" language if ( eLang != LANGUAGE_DONTKNOW ) { LanguageTag aBackLanguageTag( eLang); @@ -340,7 +336,7 @@ css::uno::Sequence< sal_uInt16 > LocaleDataWrapper::getInstalledLanguageTypes() OUStringBuffer aMsg("ConvertIsoNamesToLanguage/ConvertLanguageToIsoNames: ambiguous locale (MS-LCID?)\n"); aMsg.append(aDebugLocale); aMsg.append(" -> 0x"); - aMsg.append(static_cast<sal_Int32>(eLang), 16); + aMsg.append((sal_Int32)(sal_uInt16)eLang, 16); aMsg.append(" -> "); aMsg.append(aBackLanguageTag.getBcp47()); outputCheckMessage( aMsg.makeStringAndClear() ); @@ -349,10 +345,8 @@ css::uno::Sequence< sal_uInt16 > LocaleDataWrapper::getInstalledLanguageTypes() } } if ( eLang != LANGUAGE_DONTKNOW ) - xLang[ nLanguages++ ] = eLang; + xLang.push_back(eLang); } - if ( nLanguages < nCount ) - xLang.realloc( nLanguages ); rInstalledLanguageTypes = xLang; return rInstalledLanguageTypes; diff --git a/unotools/source/i18n/transliterationwrapper.cxx b/unotools/source/i18n/transliterationwrapper.cxx index 6e0cd7b521b3..d2d037a482f2 100644 --- a/unotools/source/i18n/transliterationwrapper.cxx +++ b/unotools/source/i18n/transliterationwrapper.cxx @@ -44,7 +44,7 @@ TransliterationWrapper::~TransliterationWrapper() { } -OUString TransliterationWrapper::transliterate(const OUString& rStr, sal_uInt16 nLang, +OUString TransliterationWrapper::transliterate(const OUString& rStr, LanguageType nLang, sal_Int32 nStart, sal_Int32 nLen, Sequence <sal_Int32>* pOffset ) { @@ -96,14 +96,14 @@ bool TransliterationWrapper::needLanguageForTheMode() const TransliterationFlags::TOGGLE_CASE == nType; } -void TransliterationWrapper::setLanguageLocaleImpl( sal_uInt16 nLang ) +void TransliterationWrapper::setLanguageLocaleImpl( LanguageType nLang ) { if( LANGUAGE_NONE == nLang ) nLang = LANGUAGE_SYSTEM; aLanguageTag.reset( nLang); } -void TransliterationWrapper::loadModuleIfNeeded( sal_uInt16 nLang ) +void TransliterationWrapper::loadModuleIfNeeded( LanguageType nLang ) { bool bLoad = bFirstCall; bFirstCall = false; @@ -155,7 +155,7 @@ void TransliterationWrapper::loadModuleImpl() const } void TransliterationWrapper::loadModuleByImplName(const OUString& rModuleName, - sal_uInt16 nLang ) + LanguageType nLang ) { try { diff --git a/vcl/inc/sallayout.hxx b/vcl/inc/sallayout.hxx index 9dbe269a82b1..d4a960d63432 100644 --- a/vcl/inc/sallayout.hxx +++ b/vcl/inc/sallayout.hxx @@ -35,7 +35,6 @@ #define MAX_FALLBACK 16 -typedef unsigned short LanguageType; class SalGraphics; class PhysicalFontFace; diff --git a/vcl/inc/sft.hxx b/vcl/inc/sft.hxx index e1375cf6af20..17efc970fa9b 100644 --- a/vcl/inc/sft.hxx +++ b/vcl/inc/sft.hxx @@ -48,6 +48,7 @@ #include <vcl/dllapi.h> #include <vcl/fontcapabilities.hxx> +#include <i18nlangtag/lang.h> #include <vector> #include <cstdint> @@ -147,7 +148,7 @@ namespace vcl typedef struct { sal_uInt16 platformID; /**< Platform ID */ sal_uInt16 encodingID; /**< Platform-specific encoding ID */ - sal_uInt16 languageID; /**< Language ID */ + LanguageType languageID; /**< Language ID */ sal_uInt16 nameID; /**< Name ID */ sal_uInt16 slen; /**< String length in bytes */ sal_uInt8 *sptr; /**< Pointer to string data (not zero-terminated!) */ diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx index 84aeb02baabe..872963a5d96a 100644 --- a/vcl/source/font/font.cxx +++ b/vcl/source/font/font.cxx @@ -377,7 +377,7 @@ SvStream& ReadImplFont( SvStream& rIStm, ImplFont& rImplFont ) rIStm.ReadUInt16( nTmp16 ); rImplFont.meUnderline = (FontLineStyle) nTmp16; rIStm.ReadUInt16( nTmp16 ); rImplFont.meStrikeout = (FontStrikeout) nTmp16; rIStm.ReadUInt16( nTmp16 ); rImplFont.SetItalic( (FontItalic) nTmp16 ); - rIStm.ReadUInt16( nTmp16 ); rImplFont.maLanguageTag.reset( (LanguageType) nTmp16); + rIStm.ReadUInt16( nTmp16 ); rImplFont.maLanguageTag.reset( LanguageType(nTmp16) ); rIStm.ReadUInt16( nTmp16 ); rImplFont.meWidthType = (FontWidth) nTmp16; rIStm.ReadInt16( rImplFont.mnOrientation ); @@ -390,7 +390,7 @@ SvStream& ReadImplFont( SvStream& rIStm, ImplFont& rImplFont ) if( aCompat.GetVersion() >= 2 ) { rIStm.ReadUChar( nTmp8 ); rImplFont.meRelief = (FontRelief)nTmp8; - rIStm.ReadUInt16( nTmp16 ); rImplFont.maCJKLanguageTag.reset( (LanguageType)nTmp16); + rIStm.ReadUInt16( nTmp16 ); rImplFont.maCJKLanguageTag.reset( LanguageType(nTmp16) ); rIStm.ReadCharAsBool( bTmp ); rImplFont.mbVertical = bTmp; rIStm.ReadUInt16( nTmp16 ); rImplFont.meEmphasisMark = (FontEmphasisMark)nTmp16; } @@ -420,7 +420,7 @@ SvStream& WriteImplFont( SvStream& rOStm, const ImplFont& rImplFont ) rOStm.WriteUInt16( rImplFont.meUnderline ); rOStm.WriteUInt16( rImplFont.meStrikeout ); rOStm.WriteUInt16( rImplFont.GetItalicNoAsk() ); - rOStm.WriteUInt16( rImplFont.maLanguageTag.getLanguageType( false) ); + rOStm.WriteUInt16( (sal_uInt16)rImplFont.maLanguageTag.getLanguageType( false) ); rOStm.WriteUInt16( rImplFont.GetWidthTypeNoAsk() ); rOStm.WriteInt16( rImplFont.mnOrientation ); @@ -432,7 +432,7 @@ SvStream& WriteImplFont( SvStream& rOStm, const ImplFont& rImplFont ) // new in version 2 rOStm.WriteUChar( (sal_uChar)rImplFont.meRelief ); - rOStm.WriteUInt16( rImplFont.maCJKLanguageTag.getLanguageType( false) ); + rOStm.WriteUInt16( (sal_uInt16)rImplFont.maCJKLanguageTag.getLanguageType( false) ); rOStm.WriteBool( rImplFont.mbVertical ); rOStm.WriteUInt16( (sal_uInt16)rImplFont.meEmphasisMark ); diff --git a/vcl/source/font/fontselect.cxx b/vcl/source/font/fontselect.cxx index f4b4f77ca3a5..8141c859ba94 100644 --- a/vcl/source/font/fontselect.cxx +++ b/vcl/source/font/fontselect.cxx @@ -118,7 +118,7 @@ size_t FontSelectPatternAttributes::hashCode() const nHash += 19 * GetWeight(); nHash += 29 * GetItalic(); nHash += 37 * mnOrientation; - nHash += 41 * meLanguage; + nHash += 41 * (sal_uInt16)meLanguage; if( mbVertical ) nHash += 53; return nHash; diff --git a/vcl/source/fontsubset/sft.cxx b/vcl/source/fontsubset/sft.cxx index f18622cbcc7b..713494c640b3 100644 --- a/vcl/source/fontsubset/sft.cxx +++ b/vcl/source/fontsubset/sft.cxx @@ -2613,7 +2613,7 @@ int GetTTNameRecords(TrueTypeFont *ttf, NameRecord **nr) rec[i].platformID = GetUInt16(table, 6 + 0 + 12 * i); rec[i].encodingID = GetUInt16(table, 6 + 2 + 12 * i); - rec[i].languageID = GetUInt16(table, 6 + 4 + 12 * i); + rec[i].languageID = LanguageType(GetUInt16(table, 6 + 4 + 12 * i)); rec[i].nameID = GetUInt16(table, 6 + 6 + 12 * i); rec[i].slen = GetUInt16(table, 6 + 8 + 12 * i); int nStrOffset = GetUInt16(table, nLargestFixedOffsetPos); diff --git a/vcl/source/fontsubset/ttcr.cxx b/vcl/source/fontsubset/ttcr.cxx index ac335512a6bc..a29dd9f61944 100644 --- a/vcl/source/fontsubset/ttcr.cxx +++ b/vcl/source/fontsubset/ttcr.cxx @@ -779,7 +779,7 @@ static int GetRawData_name(TrueTypeTable *_this, sal_uInt8 **ptr, sal_uInt32 *le for (i = 0; i < n; i++) { PutUInt16(nr[i].platformID, p1, 0, 1); PutUInt16(nr[i].encodingID, p1, 2, 1); - PutUInt16(nr[i].languageID, p1, 4, 1); + PutUInt16((sal_uInt16)nr[i].languageID, p1, 4, 1); PutUInt16(nr[i].nameID, p1, 6, 1); PutUInt16(nr[i].slen, p1, 8, 1); PutUInt16((sal_uInt16)(p2 - (name + 6 + 12 * n)), p1, 10, 1); diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx index e8d86b8b018e..d339f7f5ff46 100644 --- a/vcl/source/gdi/gdimtf.cxx +++ b/vcl/source/gdi/gdimtf.cxx @@ -346,7 +346,7 @@ void GDIMetaFile::Play( OutputDevice* pOut, size_t nPos ) // those states. pOut->Push( PushFlags::TEXTLAYOUTMODE|PushFlags::TEXTLANGUAGE ); pOut->SetLayoutMode( ComplexTextLayoutFlags::Default ); - pOut->SetDigitLanguage( 0 ); + pOut->SetDigitLanguage( LANGUAGE_SYSTEM ); SAL_INFO( "vcl.gdi", "GDIMetaFile::Play on device of size: " << pOut->GetOutputSizePixel().Width() << " " << pOut->GetOutputSizePixel().Height()); @@ -499,7 +499,7 @@ void GDIMetaFile::Play( OutputDevice* pOut, const Point& rPos, // recent add-ons. Newer metafiles must of course explicitly set // those states. pOut->SetLayoutMode( ComplexTextLayoutFlags::Default ); - pOut->SetDigitLanguage( 0 ); + pOut->SetDigitLanguage( LANGUAGE_SYSTEM ); Play( pOut ); diff --git a/vcl/source/gdi/metaact.cxx b/vcl/source/gdi/metaact.cxx index 1ce4182bafa4..1376476634c2 100644 --- a/vcl/source/gdi/metaact.cxx +++ b/vcl/source/gdi/metaact.cxx @@ -3443,13 +3443,15 @@ void MetaTextLanguageAction::Write( SvStream& rOStm, ImplMetaWriteData* pData ) { MetaAction::Write(rOStm, pData); VersionCompat aCompat(rOStm, StreamMode::WRITE, 1); - rOStm.WriteUInt16( meTextLanguage ); + rOStm.WriteUInt16( (sal_uInt16)meTextLanguage ); } void MetaTextLanguageAction::Read( SvStream& rIStm, ImplMetaReadData* ) { VersionCompat aCompat(rIStm, StreamMode::READ); - rIStm.ReadUInt16( meTextLanguage ); + sal_uInt16 nTmp = 0; + rIStm.ReadUInt16( nTmp ); + meTextLanguage = static_cast<LanguageType>(nTmp); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index bf250518495c..aaa8f9710ef2 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -13148,7 +13148,7 @@ bool PDFWriterImpl::setStructureAttributeNumerical( enum PDFWriter::StructAttrib { if( eAttr == PDFWriter::Language ) { - m_aStructure[ m_nCurrentStructElement ].m_aLocale = LanguageTag( (LanguageType)nValue ).getLocale(); + m_aStructure[ m_nCurrentStructElement ].m_aLocale = LanguageTag( LanguageType(nValue) ).getLocale(); return true; } diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx index 764ad4ce75e1..bf362a034b06 100644 --- a/vcl/source/gdi/sallayout.cxx +++ b/vcl/source/gdi/sallayout.cxx @@ -148,82 +148,63 @@ sal_UCS4 GetLocalizedChar( sal_UCS4 nChar, LanguageType eLang ) // eLang & LANGUAGE_MASK_PRIMARY catches language independent of region. // CAVEAT! To some like Mongolian MS assigned the same primary language // although the script type is different! - switch( eLang & LANGUAGE_MASK_PRIMARY ) - { - default: - nOffset = 0; - break; - case LANGUAGE_ARABIC_SAUDI_ARABIA & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0660 - '0'; // arabic-indic digits - break; - case LANGUAGE_FARSI & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_URDU_PAKISTAN & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_PUNJABI & LANGUAGE_MASK_PRIMARY: //??? - case LANGUAGE_SINDHI & LANGUAGE_MASK_PRIMARY: - nOffset = 0x06F0 - '0'; // eastern arabic-indic digits - break; - case LANGUAGE_BENGALI & LANGUAGE_MASK_PRIMARY: - nOffset = 0x09E6 - '0'; // bengali - break; - case LANGUAGE_HINDI & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0966 - '0'; // devanagari - break; - case LANGUAGE_AMHARIC_ETHIOPIA & LANGUAGE_MASK_PRIMARY: - case LANGUAGE_TIGRIGNA_ETHIOPIA & LANGUAGE_MASK_PRIMARY: + LanguageType pri = primary(eLang); + if( pri == primary(LANGUAGE_ARABIC_SAUDI_ARABIA) ) + nOffset = 0x0660 - '0'; // arabic-indic digits + else if ( pri.anyOf( + primary(LANGUAGE_FARSI), + primary(LANGUAGE_URDU_PAKISTAN), + primary(LANGUAGE_PUNJABI), //??? + primary(LANGUAGE_SINDHI))) + nOffset = 0x06F0 - '0'; // eastern arabic-indic digits + else if ( pri == primary(LANGUAGE_BENGALI) ) + nOffset = 0x09E6 - '0'; // bengali + else if ( pri == primary(LANGUAGE_HINDI) ) + nOffset = 0x0966 - '0'; // devanagari + else if ( pri.anyOf( + primary(LANGUAGE_AMHARIC_ETHIOPIA), + primary(LANGUAGE_TIGRIGNA_ETHIOPIA))) // TODO case: - nOffset = 0x1369 - '0'; // ethiopic - break; - case LANGUAGE_GUJARATI & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0AE6 - '0'; // gujarati - break; + nOffset = 0x1369 - '0'; // ethiopic + else if ( pri == primary(LANGUAGE_GUJARATI) ) + nOffset = 0x0AE6 - '0'; // gujarati #ifdef LANGUAGE_GURMUKHI // TODO case: - case LANGUAGE_GURMUKHI & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0A66 - '0'; // gurmukhi - break; + else if ( pri == primary(LANGUAGE_GURMUKHI) ) + nOffset = 0x0A66 - '0'; // gurmukhi #endif - case LANGUAGE_KANNADA & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0CE6 - '0'; // kannada - break; - case LANGUAGE_KHMER & LANGUAGE_MASK_PRIMARY: - nOffset = 0x17E0 - '0'; // khmer - break; - case LANGUAGE_LAO & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0ED0 - '0'; // lao - break; - case LANGUAGE_MALAYALAM & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0D66 - '0'; // malayalam - break; - case LANGUAGE_MONGOLIAN_MONGOLIAN_LSO & LANGUAGE_MASK_PRIMARY: - switch (eLang) - { - case LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA: - case LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA: - case LANGUAGE_MONGOLIAN_MONGOLIAN_LSO: - nOffset = 0x1810 - '0'; // mongolian - break; - default: - nOffset = 0; // mongolian cyrillic - break; - } - break; - case LANGUAGE_BURMESE & LANGUAGE_MASK_PRIMARY: - nOffset = 0x1040 - '0'; // myanmar - break; - case LANGUAGE_ODIA & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0B66 - '0'; // odia - break; - case LANGUAGE_TAMIL & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0BE7 - '0'; // tamil - break; - case LANGUAGE_TELUGU & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0C66 - '0'; // telugu - break; - case LANGUAGE_THAI & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0E50 - '0'; // thai - break; - case LANGUAGE_TIBETAN & LANGUAGE_MASK_PRIMARY: - nOffset = 0x0F20 - '0'; // tibetan - break; + else if ( pri == primary(LANGUAGE_KANNADA) ) + nOffset = 0x0CE6 - '0'; // kannada + else if ( pri == primary(LANGUAGE_KHMER)) + nOffset = 0x17E0 - '0'; // khmer + else if ( pri == primary(LANGUAGE_LAO) ) + nOffset = 0x0ED0 - '0'; // lao + else if ( pri == primary(LANGUAGE_MALAYALAM) ) + nOffset = 0x0D66 - '0'; // malayalam + else if ( pri == primary(LANGUAGE_MONGOLIAN_MONGOLIAN_LSO)) + { + if (eLang.anyOf( + LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA, + LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA, + LANGUAGE_MONGOLIAN_MONGOLIAN_LSO)) + nOffset = 0x1810 - '0'; // mongolian + else + nOffset = 0; // mongolian cyrillic + } + else if ( pri == primary(LANGUAGE_BURMESE) ) + nOffset = 0x1040 - '0'; // myanmar + else if ( pri == primary(LANGUAGE_ODIA) ) + nOffset = 0x0B66 - '0'; // odia + else if ( pri == primary(LANGUAGE_TAMIL) ) + nOffset = 0x0BE7 - '0'; // tamil + else if ( pri == primary(LANGUAGE_TELUGU) ) + nOffset = 0x0C66 - '0'; // telugu + else if ( pri == primary(LANGUAGE_THAI) ) + nOffset = 0x0E50 - '0'; // thai + else if ( pri == primary(LANGUAGE_TIBETAN) ) + nOffset = 0x0F20 - '0'; // tibetan + else + { + nOffset = 0; } nChar += nOffset; diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx index 31449f224342..27752f25b47b 100644 --- a/vcl/source/outdev/outdev.cxx +++ b/vcl/source/outdev/outdev.cxx @@ -96,7 +96,7 @@ OutputDevice::OutputDevice() : meTextAlign = maFont.GetAlignment(); meRasterOp = RasterOp::OverPaint; mnAntialiasing = AntialiasingFlags::NONE; - meTextLanguage = 0; // TODO: get default from configuration? + meTextLanguage = LANGUAGE_SYSTEM; // TODO: get default from configuration? mbLineColor = true; mbFillColor = true; mbInitLineColor = true; diff --git a/vcl/unx/generic/fontmanager/fontmanager.cxx b/vcl/unx/generic/fontmanager/fontmanager.cxx index 1130715872d4..a64bd9a843a6 100644 --- a/vcl/unx/generic/fontmanager/fontmanager.cxx +++ b/vcl/unx/generic/fontmanager/fontmanager.cxx @@ -522,7 +522,7 @@ void PrintFontManager::analyzeSfntFamilyName( void* pTTFont, ::std::list< OUStri } else if (pNameRecords[i].platformID == 1) { - AppleLanguageId aAppleId = static_cast<AppleLanguageId>(pNameRecords[i].languageID); + AppleLanguageId aAppleId = static_cast<AppleLanguageId>((sal_uInt16)pNameRecords[i].languageID); LanguageTag aApple(makeLanguageTagFromAppleLanguageId(aAppleId)); if (aApple == aSystem) nMatch = 8000; diff --git a/vcl/unx/generic/glyphs/glyphcache.cxx b/vcl/unx/generic/glyphs/glyphcache.cxx index f5978ba35c2f..7709ece77b69 100644 --- a/vcl/unx/generic/glyphs/glyphcache.cxx +++ b/vcl/unx/generic/glyphs/glyphcache.cxx @@ -93,7 +93,7 @@ size_t GlyphCache::IFSD_Hash::operator()( const FontSelectPattern& rFontSelData nHash += size_t(rFontSelData.mbVertical); nHash += rFontSelData.GetItalic(); nHash += rFontSelData.GetWeight(); - nHash += rFontSelData.meLanguage; + nHash += (sal_uInt16)rFontSelData.meLanguage; return nHash; } diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx index 1a12c416a21c..75cfacde11ac 100644 --- a/vcl/win/window/salframe.cxx +++ b/vcl/win/window/salframe.cxx @@ -3297,13 +3297,13 @@ LanguageType WinSalFrame::GetInputLanguage() if( !mnInputLang ) return LANGUAGE_DONTKNOW; else - return (LanguageType) mnInputLang; + return LanguageType(mnInputLang); } bool WinSalFrame::MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangType, vcl::KeyCode& rKeyCode ) { bool bRet = FALSE; - sal_IntPtr nLangType = aLangType; + sal_IntPtr nLangType = (sal_uInt16)aLangType; // just use the passed language identifier, do not try to load additional keyboard support HKL hkl = reinterpret_cast<HKL>(nLangType); diff --git a/writerfilter/source/dmapper/ThemeTable.cxx b/writerfilter/source/dmapper/ThemeTable.cxx index 657753c7a59d..9c162c4d5489 100644 --- a/writerfilter/source/dmapper/ThemeTable.cxx +++ b/writerfilter/source/dmapper/ThemeTable.cxx @@ -263,7 +263,7 @@ OUString ThemeTable::fromLCIDToScriptTag(LanguageType lang) { // conversion list from: // http://blogs.msdn.com/b/officeinteroperability/archive/2013/04/22/office-open-xml-themes-schemes-and-fonts.aspx - switch (lang) + switch ((sal_uInt16)lang) { case 0x429 : // lidFarsi case 0x401 : // lidArabic diff --git a/writerfilter/source/rtftok/rtfdispatchvalue.cxx b/writerfilter/source/rtftok/rtfdispatchvalue.cxx index 6e4724d3ab07..bba6d4d29c83 100644 --- a/writerfilter/source/rtftok/rtfdispatchvalue.cxx +++ b/writerfilter/source/rtftok/rtfdispatchvalue.cxx @@ -215,7 +215,7 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) } if (nSprm > 0) { - LanguageTag aTag((LanguageType)nParam); + LanguageTag aTag((LanguageType(nParam))); auto pValue = std::make_shared<RTFValue>(aTag.getBcp47()); putNestedAttribute(m_aStates.top().aCharacterSprms, NS_ooxml::LN_EG_RPrBase_lang, nSprm, pValue); // Language is a character property, but we should store it at a paragraph level as well for fields. @@ -473,7 +473,7 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) case RTF_DEFLANG: case RTF_ADEFLANG: { - LanguageTag aTag((LanguageType)nParam); + LanguageTag aTag((LanguageType(nParam))); auto pValue = std::make_shared<RTFValue>(aTag.getBcp47()); putNestedAttribute(m_aStates.top().aCharacterSprms, (nKeyword == RTF_DEFLANG ? NS_ooxml::LN_EG_RPrBase_lang : NS_ooxml::LN_CT_Language_bidi), nSprm, pValue); } diff --git a/xmloff/source/style/xmlnumfe.cxx b/xmloff/source/style/xmlnumfe.cxx index 07e4ac23c126..1b2b42b120c9 100644 --- a/xmloff/source/style/xmlnumfe.cxx +++ b/xmloff/source/style/xmlnumfe.cxx @@ -316,12 +316,12 @@ void SvXMLNumFmtExport::AddStyleAttr_Impl( bool bLong ) } } -void SvXMLNumFmtExport::AddLanguageAttr_Impl( sal_Int32 nLang ) +void SvXMLNumFmtExport::AddLanguageAttr_Impl( LanguageType nLang ) { if ( nLang != LANGUAGE_SYSTEM ) { rExport.AddLanguageTagAttributes( XML_NAMESPACE_NUMBER, XML_NAMESPACE_NUMBER, - LanguageTag( (LanguageType)nLang), false); + LanguageTag( nLang), false); } } @@ -372,7 +372,7 @@ void SvXMLNumFmtExport::WriteCurrencyElement_Impl( const OUString& rString, sal_Int32 nLang = rExt.toInt32(16); if ( nLang < 0 ) nLang = -nLang; - AddLanguageAttr_Impl( nLang ); // adds to pAttrList + AddLanguageAttr_Impl( LanguageType(nLang) ); // adds to pAttrList } SvXMLElementExport aElem( rExport, @@ -1836,9 +1836,9 @@ void SvXMLNumFmtExport::Export( bool bIsAutoStyle ) } if (!bIsAutoStyle) { - std::vector<sal_uInt16> aLanguages; + std::vector<LanguageType> aLanguages; pFormatter->GetUsedLanguages( aLanguages ); - for (std::vector<sal_uInt16>::const_iterator it(aLanguages.begin()); it != aLanguages.end(); ++it) + for (std::vector<LanguageType>::const_iterator it(aLanguages.begin()); it != aLanguages.end(); ++it) { LanguageType nLang = *it; diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx index 7bb2e30862d0..e0a2cd09dc3b 100644 --- a/xmloff/source/style/xmlnumfi.cxx +++ b/xmloff/source/style/xmlnumfi.cxx @@ -1486,7 +1486,7 @@ SvXMLNumFormatContext::SvXMLNumFormatContext( SvXMLImport& rImport, { aFormatCode.append( "][$-" ); // language code in upper hex: - aFormatCode.append(OUString::number(eLang, 16).toAsciiUpperCase()); + aFormatCode.append(OUString::number((sal_uInt16)eLang, 16).toAsciiUpperCase()); } aFormatCode.append( ']' ); } @@ -2037,7 +2037,7 @@ void SvXMLNumFormatContext::AddCurrency( const OUString& rContent, LanguageType if ( nLang != LANGUAGE_SYSTEM ) { // '-' sign and language code in hex: - aFormatCode.append("-" + OUString::number(sal_Int32(nLang), 16).toAsciiUpperCase()); + aFormatCode.append("-" + OUString::number(sal_uInt16(nLang), 16).toAsciiUpperCase()); } aFormatCode.append( ']' ); // end of "new" currency symbol |