Use LanguageTag::getFallbackStrings() instead of old dumb hard coded stuff
So finding correct offline help will actually work with language tags containing scripts or variants. Change-Id: I493041fbfe62dc7cd2e035592fe94ef9fe3c2480 Reviewed-on: https://gerrit.libreoffice.org/74855 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
This commit is contained in:
@@ -400,23 +400,23 @@ OUString Databases::processLang( const OUString& Language )
|
|||||||
|
|
||||||
if( it == m_aLangSet.end() )
|
if( it == m_aLangSet.end() )
|
||||||
{
|
{
|
||||||
sal_Int32 idx;
|
// XXX the old code looked for '-' and '_' as separator between
|
||||||
osl::DirectoryItem aDirItem;
|
// language and country, no idea if '_' actually still can happen
|
||||||
|
// (probably not), but play safe and keep that and transform to proper
|
||||||
|
// BCP47.
|
||||||
|
const OUString aBcp47( Language.replaceAll( "_", "-"));
|
||||||
|
|
||||||
if( osl::FileBase::E_None == osl::DirectoryItem::get( getInstallPathAsURL() + Language,aDirItem ) )
|
// Try if language tag or fallbacks are installed.
|
||||||
|
osl::DirectoryItem aDirItem;
|
||||||
|
std::vector<OUString> aFallbacks( LanguageTag( aBcp47).getFallbackStrings(true));
|
||||||
|
for (auto const & rFB : aFallbacks)
|
||||||
{
|
{
|
||||||
ret = Language;
|
if (osl::FileBase::E_None == osl::DirectoryItem::get( getInstallPathAsURL() + rFB, aDirItem))
|
||||||
m_aLangSet[ Language ] = ret;
|
{
|
||||||
}
|
ret = rFB;
|
||||||
/* FIXME-BCP47: this is wrong, does not work as soon as script or
|
m_aLangSet[ Language ] = ret;
|
||||||
* variant is involved in the language tag. */
|
break; // for
|
||||||
else if( ( ( idx = Language.indexOf( '-' ) ) != -1 ||
|
}
|
||||||
( idx = Language.indexOf( '_' ) ) != -1 ) &&
|
|
||||||
osl::FileBase::E_None == osl::DirectoryItem::get( getInstallPathAsURL() + Language.copy( 0,idx ),
|
|
||||||
aDirItem ) )
|
|
||||||
{
|
|
||||||
ret = Language.copy( 0,idx );
|
|
||||||
m_aLangSet[ Language ] = ret;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user