summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2017-04-17 21:35:35 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-04-26 08:50:54 +0200
commitc70d49c7c888da8cfd73db8585e7be1f37fc398a (patch)
treec0e540401850018464ca76300536faf9aa7e27d2
parentcd4344d3bdef631b3e64ac12a9e64bc9670c1b7c (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>
-rw-r--r--basic/source/runtime/methods.cxx2
-rw-r--r--cui/source/dialogs/SpellDialog.cxx12
-rw-r--r--cui/source/factory/dlgfact.cxx2
-rw-r--r--cui/source/factory/dlgfact.hxx2
-rw-r--r--cui/source/inc/optdict.hxx2
-rw-r--r--cui/source/options/optasian.cxx4
-rw-r--r--cui/source/options/optdict.cxx10
-rw-r--r--cui/source/options/optgenrl.cxx17
-rw-r--r--cui/source/options/optlingu.cxx57
-rw-r--r--cui/source/tabpages/autocdlg.cxx6
-rw-r--r--cui/source/tabpages/chardlg.cxx6
-rw-r--r--cui/source/tabpages/numfmt.cxx2
-rw-r--r--editeng/source/editeng/editdbg.cxx2
-rw-r--r--editeng/source/editeng/editview.cxx10
-rw-r--r--editeng/source/editeng/impedit4.cxx10
-rw-r--r--editeng/source/items/textitem.cxx12
-rw-r--r--editeng/source/misc/forbiddencharacterstable.cxx6
-rw-r--r--editeng/source/misc/splwrap.cxx6
-rw-r--r--editeng/source/misc/svxacorr.cxx65
-rw-r--r--editeng/source/rtf/rtfitem.cxx9
-rw-r--r--editeng/source/uno/UnoForbiddenCharsTable.cxx4
-rw-r--r--filter/source/msfilter/countryid.cxx2
-rw-r--r--filter/source/msfilter/svdfppt.cxx14
-rw-r--r--forms/source/component/FormattedField.cxx4
-rw-r--r--framework/source/services/substitutepathvars.cxx2
-rw-r--r--i18nlangtag/qa/cppunit/test_languagetag.cxx62
-rw-r--r--i18nlangtag/source/isolang/isolang.cxx1075
-rw-r--r--i18nlangtag/source/isolang/mslangid.cxx564
-rw-r--r--i18nlangtag/source/languagetag/languagetag.cxx10
-rw-r--r--include/editeng/edtdlg.hxx2
-rw-r--r--include/editeng/forbiddencharacterstable.hxx11
-rw-r--r--include/editeng/splwrap.hxx4
-rw-r--r--include/filter/msfilter/svdfppt.hxx4
-rw-r--r--include/i18nlangtag/lang.h1151
-rw-r--r--include/i18nlangtag/mslangid.hxx6
-rw-r--r--include/linguistic/hyphdta.hxx13
-rw-r--r--include/linguistic/misc.hxx14
-rw-r--r--include/linguistic/spelldta.hxx13
-rw-r--r--include/o3tl/strong_int.hxx11
-rw-r--r--include/svl/languageoptions.hxx4
-rw-r--r--include/svl/ondemand.hxx35
-rw-r--r--include/svl/zforlist.hxx2
-rw-r--r--include/svx/langbox.hxx4
-rw-r--r--include/unotools/lingucfg.hxx6
-rw-r--r--include/unotools/localedatawrapper.hxx2
-rw-r--r--include/unotools/transliterationwrapper.hxx8
-rw-r--r--include/xmloff/xmlnumfe.hxx3
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macspellimp.mm4
-rw-r--r--lingucomponent/source/spellcheck/spell/sspellimp.cxx4
-rw-r--r--lingucomponent/source/thesaurus/libnth/nthesimp.cxx12
-rw-r--r--lingucomponent/source/thesaurus/libnth/nthesimp.hxx2
-rw-r--r--linguistic/source/convdic.cxx4
-rw-r--r--linguistic/source/convdic.hxx6
-rw-r--r--linguistic/source/convdiclist.cxx4
-rw-r--r--linguistic/source/convdicxml.cxx4
-rw-r--r--linguistic/source/convdicxml.hxx12
-rw-r--r--linguistic/source/dicimp.cxx15
-rw-r--r--linguistic/source/dicimp.hxx6
-rw-r--r--linguistic/source/dlistimp.cxx14
-rw-r--r--linguistic/source/hyphdta.cxx8
-rw-r--r--linguistic/source/lngsvcmgr.cxx36
-rw-r--r--linguistic/source/misc.cxx44
-rw-r--r--linguistic/source/spelldsp.cxx10
-rw-r--r--linguistic/source/spelldta.cxx12
-rw-r--r--linguistic/source/thesdsp.cxx6
-rw-r--r--rsc/source/parser/rscibas.cxx4
-rw-r--r--sc/inc/scmod.hxx6
-rw-r--r--sc/source/core/data/documen8.cxx2
-rw-r--r--sc/source/core/tool/zforauto.cxx6
-rw-r--r--sc/source/filter/excel/xlstyle.cxx6
-rw-r--r--sc/source/ui/app/scmod.cxx8
-rw-r--r--sc/source/ui/dbgui/asciiopt.cxx2
-rw-r--r--sc/source/ui/dbgui/scuiasciiopt.cxx2
-rw-r--r--sc/source/ui/docshell/docsh3.cxx4
-rw-r--r--sc/source/ui/inc/viewutil.hxx3
-rw-r--r--sc/source/ui/unoobj/filtuno.cxx2
-rw-r--r--sc/source/ui/view/cellsh.cxx2
-rw-r--r--sc/source/ui/view/gridwin.cxx2
-rw-r--r--sc/source/ui/view/spelleng.cxx2
-rw-r--r--sc/source/ui/view/viewutil.cxx4
-rw-r--r--sd/inc/Outliner.hxx4
-rw-r--r--sd/source/filter/eppt/epptso.cxx2
-rw-r--r--sd/source/ui/func/fuhhconv.cxx12
-rw-r--r--sd/source/ui/inc/fuhhconv.hxx4
-rw-r--r--sd/source/ui/presenter/PresenterTextView.cxx4
-rw-r--r--sd/source/ui/view/Outliner.cxx2
-rw-r--r--sfx2/source/bastyp/sfxhtml.cxx4
-rw-r--r--shell/source/tools/lngconvex/lngconvex.cxx8
-rw-r--r--starmath/source/document.cxx8
-rw-r--r--svl/qa/unit/svl.cxx2
-rw-r--r--svl/source/config/languageoptions.cxx6
-rw-r--r--svl/source/items/srchitem.cxx8
-rw-r--r--svl/source/numbers/zforlist.cxx6
-rw-r--r--svl/source/numbers/zformat.cxx290
-rw-r--r--svl/source/numbers/zforscan.cxx169
-rw-r--r--svtools/source/misc/langtab.cxx12
-rw-r--r--svtools/source/misc/sampletext.cxx192
-rw-r--r--svtools/source/svhtml/htmlout.cxx4
-rw-r--r--svx/source/dialog/langbox.cxx56
-rw-r--r--svx/source/svdraw/svdmodel.cxx2
-rw-r--r--sw/inc/IDocumentSettingAccess.hxx5
-rw-r--r--sw/inc/dbmgr.hxx11
-rw-r--r--sw/inc/docufld.hxx4
-rw-r--r--sw/inc/editsh.hxx2
-rw-r--r--sw/inc/expfld.hxx2
-rw-r--r--sw/inc/fldbas.hxx18
-rw-r--r--sw/inc/flddat.hxx2
-rw-r--r--sw/inc/ndtxt.hxx2
-rw-r--r--sw/inc/poolfmt.hxx3
-rw-r--r--sw/inc/shellio.hxx8
-rw-r--r--sw/inc/sortopt.hxx2
-rw-r--r--sw/inc/swcalwrp.hxx4
-rw-r--r--sw/inc/txatritr.hxx2
-rw-r--r--sw/inc/usrfld.hxx2
-rw-r--r--sw/source/core/bastyp/calc.cxx2
-rw-r--r--sw/source/core/bastyp/init.cxx4
-rw-r--r--sw/source/core/crsr/findtxt.cxx2
-rw-r--r--sw/source/core/doc/DocumentFieldsManager.cxx4
-rw-r--r--sw/source/core/doc/DocumentSettingManager.cxx6
-rw-r--r--sw/source/core/doc/DocumentStylePoolManager.cxx10
-rw-r--r--sw/source/core/doc/docsort.cxx9
-rw-r--r--sw/source/core/doc/poolfmt.cxx7
-rw-r--r--sw/source/core/doc/tblafmt.cxx6
-rw-r--r--sw/source/core/edit/edattr.cxx4
-rw-r--r--sw/source/core/edit/edlingu.cxx6
-rw-r--r--sw/source/core/fields/docufld.cxx9
-rw-r--r--sw/source/core/fields/expfld.cxx2
-rw-r--r--sw/source/core/fields/fldbas.cxx26
-rw-r--r--sw/source/core/fields/flddat.cxx2
-rw-r--r--sw/source/core/fields/usrfld.cxx4
-rw-r--r--sw/source/core/inc/DocumentSettingManager.hxx4
-rw-r--r--sw/source/core/text/EnhancedPDFExportHelper.cxx4
-rw-r--r--sw/source/core/text/porlay.cxx2
-rw-r--r--sw/source/core/txtnode/thints.cxx8
-rw-r--r--sw/source/core/txtnode/txtedt.cxx12
-rw-r--r--sw/source/filter/ascii/parasc.cxx3
-rw-r--r--sw/source/filter/inc/msfilter.hxx2
-rw-r--r--sw/source/filter/ww8/rtfattributeoutput.cxx6
-rw-r--r--sw/source/filter/ww8/writerwordglue.cxx214
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx8
-rw-r--r--sw/source/filter/ww8/ww8par.cxx6
-rw-r--r--sw/source/filter/ww8/ww8par.hxx6
-rw-r--r--sw/source/filter/ww8/ww8par5.cxx12
-rw-r--r--sw/source/filter/ww8/ww8par6.cxx6
-rw-r--r--sw/source/filter/ww8/ww8scan.cxx22
-rw-r--r--sw/source/filter/ww8/ww8scan.hxx8
-rw-r--r--sw/source/filter/ww8/ww8struc.hxx2
-rw-r--r--sw/source/ui/dbui/dbinsdlg.cxx2
-rw-r--r--sw/source/ui/dialog/ascfldlg.cxx4
-rw-r--r--sw/source/ui/misc/srtdlg.cxx4
-rw-r--r--sw/source/ui/vba/vbarange.cxx4
-rw-r--r--sw/source/ui/vba/vbastyle.cxx10
-rw-r--r--sw/source/ui/vba/vbastyle.hxx6
-rw-r--r--sw/source/uibase/app/docshini.cxx6
-rw-r--r--sw/source/uibase/config/fontcfg.cxx32
-rw-r--r--sw/source/uibase/dbui/dbmgr.cxx18
-rw-r--r--sw/source/uibase/fldui/fldmgr.cxx4
-rw-r--r--sw/source/uibase/inc/fldmgr.hxx2
-rw-r--r--sw/source/uibase/lingu/olmenu.cxx4
-rw-r--r--sw/source/uibase/shells/annotsh.cxx6
-rw-r--r--sw/source/uibase/shells/drwtxtsh.cxx6
-rw-r--r--sw/source/uibase/uiview/viewling.cxx6
-rw-r--r--unotools/source/config/lingucfg.cxx29
-rw-r--r--unotools/source/config/useroptions.cxx42
-rw-r--r--unotools/source/i18n/localedatawrapper.cxx26
-rw-r--r--unotools/source/i18n/transliterationwrapper.cxx8
-rw-r--r--vcl/inc/sallayout.hxx1
-rw-r--r--vcl/inc/sft.hxx3
-rw-r--r--vcl/source/font/font.cxx8
-rw-r--r--vcl/source/font/fontselect.cxx2
-rw-r--r--vcl/source/fontsubset/sft.cxx2
-rw-r--r--vcl/source/fontsubset/ttcr.cxx2
-rw-r--r--vcl/source/gdi/gdimtf.cxx4
-rw-r--r--vcl/source/gdi/metaact.cxx6
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx2
-rw-r--r--vcl/source/gdi/sallayout.cxx127
-rw-r--r--vcl/source/outdev/outdev.cxx2
-rw-r--r--vcl/unx/generic/fontmanager/fontmanager.cxx2
-rw-r--r--vcl/unx/generic/glyphs/glyphcache.cxx2
-rw-r--r--vcl/win/window/salframe.cxx4
-rw-r--r--writerfilter/source/dmapper/ThemeTable.cxx2
-rw-r--r--writerfilter/source/rtftok/rtfdispatchvalue.cxx4
-rw-r--r--xmloff/source/style/xmlnumfe.cxx10
-rw-r--r--xmloff/source/style/xmlnumfi.cxx4
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