[Libreoffice-commits] core.git: tools/source
Caolán McNamara
caolanm at redhat.com
Mon Jul 31 15:46:58 UTC 2017
tools/source/rc/resmgr.cxx | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
New commits:
commit 6ea9062d233e153a5df0e7368af4c6a49d955485
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Jul 31 11:45:07 2017 +0100
Related: tdf#109427 cache std::locales
Change-Id: I9c2f3372334a70039abbd851568e37a69deeb311
Reviewed-on: https://gerrit.libreoffice.org/40592
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/tools/source/rc/resmgr.cxx b/tools/source/rc/resmgr.cxx
index 293a78d24ab9..842e58cee3b9 100644
--- a/tools/source/rc/resmgr.cxx
+++ b/tools/source/rc/resmgr.cxx
@@ -91,6 +91,12 @@ namespace Translate
{
std::locale Create(const sal_Char* pPrefixName, const LanguageTag& rLocale)
{
+ static std::unordered_map<OString, std::locale, OStringHash> aCache;
+ OString sIdentifier = rLocale.getGlibcLocaleString(".UTF-8").toUtf8();
+ OString sUnique = sIdentifier + OString(pPrefixName);
+ auto aFind = aCache.find(sUnique);
+ if (aFind != aCache.end())
+ return aFind->second;
boost::locale::generator gen;
gen.characters(boost::locale::char_facet);
gen.categories(boost::locale::message_facet | boost::locale::information_facet);
@@ -100,8 +106,9 @@ namespace Translate
osl::File::getSystemPathFromFileURL(uri, path);
gen.add_messages_path(OUStringToOString(path, osl_getThreadTextEncoding()).getStr());
gen.add_messages_domain(pPrefixName);
- OString sIdentifier = rLocale.getGlibcLocaleString(".UTF-8").toUtf8();
- return gen(sIdentifier.getStr());
+ std::locale aRet(gen(sIdentifier.getStr()));
+ aCache[sUnique] = aRet;
+ return aRet;
}
OUString get(const char* pContextAndId, const std::locale &loc)
More information about the Libreoffice-commits
mailing list