Kaydet (Commit) 82f291d2 authored tarafından Julien Nabet's avatar Julien Nabet Kaydeden (comit) Caolán McNamara

Resolves fdo#79276 Add fallback system for autocorrection of French variants

1) Replace the creation of acor_fr-FR.dat by acor_fr.dat since there's no specific for variants of fr
2) Add a fallback system to use it

Change-Id: Ia3e11fff0f266839dc148077b50c1b2f798d1c50
Reviewed-on: https://gerrit.libreoffice.org/9825Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst bc383058
...@@ -1544,7 +1544,7 @@ bool SvxAutoCorrect::CreateLanguageFile( const LanguageTag& rLanguageTag, bool b ...@@ -1544,7 +1544,7 @@ bool SvxAutoCorrect::CreateLanguageFile( const LanguageTag& rLanguageTag, bool b
{ {
OSL_ENSURE(pLangTable->find(rLanguageTag) == pLangTable->end(), "Language already exists "); OSL_ENSURE(pLangTable->find(rLanguageTag) == pLangTable->end(), "Language already exists ");
OUString sUserDirFile( GetAutoCorrFileName( rLanguageTag, true, false )); OUString sUserDirFile( GetAutoCorrFileName( rLanguageTag, true, false, false ));
OUString sShareDirFile( sUserDirFile ); OUString sShareDirFile( sUserDirFile );
SvxAutoCorrectLanguageListsPtr pLists = 0; SvxAutoCorrectLanguageListsPtr pLists = 0;
...@@ -1567,10 +1567,15 @@ bool SvxAutoCorrect::CreateLanguageFile( const LanguageTag& rLanguageTag, bool b ...@@ -1567,10 +1567,15 @@ bool SvxAutoCorrect::CreateLanguageFile( const LanguageTag& rLanguageTag, bool b
aLastFileTable.erase(nFndPos); aLastFileTable.erase(nFndPos);
} }
} }
else if( ( FStatHelper::IsDocument( sUserDirFile ) || else if(
FStatHelper::IsDocument( sShareDirFile = ( FStatHelper::IsDocument( sUserDirFile ) ||
GetAutoCorrFileName( rLanguageTag, false, false ) ) ) || FStatHelper::IsDocument( sShareDirFile =
( sShareDirFile = sUserDirFile, bNewFile )) GetAutoCorrFileName( rLanguageTag, false, false, false ) ) ||
FStatHelper::IsDocument( sShareDirFile =
GetAutoCorrFileName( rLanguageTag, false, false, true) )
) ||
( sShareDirFile = sUserDirFile, bNewFile )
)
{ {
pLists = new SvxAutoCorrectLanguageLists( *this, sShareDirFile, sUserDirFile ); pLists = new SvxAutoCorrectLanguageLists( *this, sShareDirFile, sUserDirFile );
LanguageTag aTmp(rLanguageTag); // this insert() needs a non-const reference LanguageTag aTmp(rLanguageTag); // this insert() needs a non-const reference
...@@ -1886,9 +1891,16 @@ bool SvxAutoCorrect::FindInCplSttExceptList(LanguageType eLang, ...@@ -1886,9 +1891,16 @@ bool SvxAutoCorrect::FindInCplSttExceptList(LanguageType eLang,
} }
OUString SvxAutoCorrect::GetAutoCorrFileName( const LanguageTag& rLanguageTag, OUString SvxAutoCorrect::GetAutoCorrFileName( const LanguageTag& rLanguageTag,
bool bNewFile, bool bTst ) const bool bNewFile, bool bTst, bool bUnlocalized ) const
{ {
OUString sRet, sExt( rLanguageTag.getBcp47() ); OUString sRet, sExt( rLanguageTag.getBcp47() );
if (bUnlocalized)
{
// we don't want variant, so we'll take "fr" instead of "fr-CA" for example
::std::vector< OUString > vecFallBackStrings = rLanguageTag.getFallbackStrings(false);
if (!vecFallBackStrings.empty())
sExt = vecFallBackStrings[0];
}
sExt = "_" + sExt + ".dat"; sExt = "_" + sExt + ".dat";
if( bNewFile ) if( bNewFile )
......
...@@ -23,7 +23,7 @@ extras_AUTOCORR_LANGS := \ ...@@ -23,7 +23,7 @@ extras_AUTOCORR_LANGS := \
es:es-ES \ es:es-ES \
fa:fa-IR \ fa:fa-IR \
fi:fi-FI \ fi:fi-FI \
fr:fr-FR \ fr:fr \
ga-IE:ga-IE \ ga-IE:ga-IE \
hr:hr-HR \ hr:hr-HR \
hu:hu-HU \ hu:hu-HU \
......
...@@ -23,7 +23,7 @@ $(eval $(call gb_Package_add_files,extras_autocorr,$(LIBO_SHARE_FOLDER)/autocorr ...@@ -23,7 +23,7 @@ $(eval $(call gb_Package_add_files,extras_autocorr,$(LIBO_SHARE_FOLDER)/autocorr
acor_es-ES.dat \ acor_es-ES.dat \
acor_fa-IR.dat \ acor_fa-IR.dat \
acor_fi-FI.dat \ acor_fi-FI.dat \
acor_fr-FR.dat \ acor_fr.dat \
acor_ga-IE.dat \ acor_ga-IE.dat \
acor_hr-HR.dat \ acor_hr-HR.dat \
acor_hu-HU.dat \ acor_hu-HU.dat \
......
...@@ -329,7 +329,8 @@ public: ...@@ -329,7 +329,8 @@ public:
// the default is "autocorr.dat" // the default is "autocorr.dat"
OUString GetAutoCorrFileName( const LanguageTag& rLanguageTag /* = LANGUAGE_SYSTEM */ , OUString GetAutoCorrFileName( const LanguageTag& rLanguageTag /* = LANGUAGE_SYSTEM */ ,
bool bNewFile = false, bool bNewFile = false,
bool bTstUserExist = false ) const; bool bTstUserExist = false,
bool bUnlocalized = false ) const;
// Query/Set the current settings of AutoCorrect // Query/Set the current settings of AutoCorrect
long GetFlags() const { return nFlags; } long GetFlags() const { return nFlags; }
......
...@@ -340,7 +340,7 @@ bool SwAutoCorrDoc::ChgAutoCorrWord( sal_Int32& rSttPos, sal_Int32 nEndPos, ...@@ -340,7 +340,7 @@ bool SwAutoCorrDoc::ChgAutoCorrWord( sal_Int32& rSttPos, sal_Int32 nEndPos,
} }
else else
{ {
SwTextBlocks aTBlks( rACorrect.GetAutoCorrFileName( aLanguageTag, false, true )); SwTextBlocks aTBlks( rACorrect.GetAutoCorrFileName( aLanguageTag, false, true, false ));
sal_uInt16 nPos = aTBlks.GetIndex( pFnd->GetShort() ); sal_uInt16 nPos = aTBlks.GetIndex( pFnd->GetShort() );
if( USHRT_MAX != nPos && aTBlks.BeginGetDoc( nPos ) ) if( USHRT_MAX != nPos && aTBlks.BeginGetDoc( nPos ) )
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment