loleaflet/build/deps.js                                   |    7 
 loleaflet/dist/admin/adminSettings.html                   |    2 
 loleaflet/dist/images/lc_insertsymbol.png                 |binary
 loleaflet/dist/loleaflet.css                              |   16 
 loleaflet/dist/toolbar.css                                |    1 
 loleaflet/dist/toolbar/toolbar.js                         |    8 
 loleaflet/po/styles/ab.po                                 |    4 
 loleaflet/po/styles/af.po                                 |  312 ++++
 loleaflet/po/styles/am.po                                 |  236 +++
 loleaflet/po/styles/an.po                                 |    4 
 loleaflet/po/styles/ar.po                                 |  896 +++++++++++
 loleaflet/po/styles/as.po                                 |  892 +++++++++++
 loleaflet/po/styles/ast.po                                |  712 +++++++++
 loleaflet/po/styles/be.po                                 |  400 +++++
 loleaflet/po/styles/bg.po                                 | 1072 ++++++++++++++
 loleaflet/po/styles/bn-IN.po                              |  812 ++++++++++
 loleaflet/po/styles/bn.po                                 |  384 +++++
 loleaflet/po/styles/bo.po                                 |  380 ++++
 loleaflet/po/styles/br.po                                 |  956 ++++++++++++
 loleaflet/po/styles/brx.po                                |   12 
 loleaflet/po/styles/bs.po                                 |  772 ++++++++++
 loleaflet/po/styles/ca-valencia.po                        |  856 +++++++++++
 loleaflet/po/styles/ca.po                                 |  856 +++++++++++
 loleaflet/po/styles/cs.po                                 |  908 +++++++++++
 loleaflet/po/styles/cy.po                                 |  720 +++++++++
 loleaflet/po/styles/da.po                                 |  768 ++++++++++
 loleaflet/po/styles/de.po                                 |  856 +++++++++++
 loleaflet/po/styles/dgo.po                                |  368 ++++
 loleaflet/po/styles/dz.po                                 |  380 ++++
 loleaflet/po/styles/el.po                                 | 1068 +++++++++++++
 loleaflet/po/styles/en-GB.po                              |   16 
 loleaflet/po/styles/en-ZA.po                              |    4 
 loleaflet/po/styles/eo.po                                 | 1012 +++++++++++++
 loleaflet/po/styles/es.po                                 |  896 +++++++++++
 loleaflet/po/styles/et.po                                 |  976 ++++++++++++
 loleaflet/po/styles/eu.po                                 |  828 ++++++++++
 loleaflet/po/styles/fa.po                                 |   64 
 loleaflet/po/styles/fi.po                                 |  812 ++++++++++
 loleaflet/po/styles/fr.po                                 |  804 ++++++++++
 loleaflet/po/styles/ga.po                                 |  744 +++++++++
 loleaflet/po/styles/gd.po                                 |  812 ++++++++++
 loleaflet/po/styles/gl.po                                 |  832 ++++++++++
 loleaflet/po/styles/gu.po                                 |  896 +++++++++++
 loleaflet/po/styles/gug.po                                |   68 
 loleaflet/po/styles/he.po                                 |  496 ++++++
 loleaflet/po/styles/hi.po                                 |  892 +++++++++++
 loleaflet/po/styles/hr.po                                 |  752 +++++++++
 loleaflet/po/styles/hu.po                                 |  776 ++++++++++
 loleaflet/po/styles/id.po                                 |  672 ++++++++
 loleaflet/po/styles/is.po                                 |  820 ++++++++++
 loleaflet/po/styles/it.po                                 |  776 ++++++++++
 loleaflet/po/styles/ja.po                                 |  928 ++++++++++++
 loleaflet/po/styles/ka.po                                 |  336 ++++
 loleaflet/po/styles/kk.po                                 | 1064 +++++++++++++
 loleaflet/po/styles/kl.po                                 |    4 
 loleaflet/po/styles/km.po                                 |  696 +++++++++
 loleaflet/po/styles/kmr-Latn.po                           |  220 ++
 loleaflet/po/styles/kn.po                                 |  892 +++++++++++
 loleaflet/po/styles/ko.po                                 |  696 +++++++++
 loleaflet/po/styles/kok.po                                |  356 ++++
 loleaflet/po/styles/ks.po                                 |   12 
 loleaflet/po/styles/ky.po                                 |    4 
 loleaflet/po/styles/lb.po                                 |   60 
 loleaflet/po/styles/lo.po                                 |   16 
 loleaflet/po/styles/lt.po                                 |  468 ++++++
 loleaflet/po/styles/lv.po                                 |  956 ++++++++++++
 loleaflet/po/styles/mai.po                                |   52 
 loleaflet/po/styles/mk.po                                 |   56 
 loleaflet/po/styles/ml.po                                 |  892 +++++++++++
 loleaflet/po/styles/mn.po                                 |   56 
 loleaflet/po/styles/mni.po                                |   12 
 loleaflet/po/styles/mr.po                                 |  892 +++++++++++
 loleaflet/po/styles/my.po                                 |  392 +++++
 loleaflet/po/styles/nb.po                                 |  784 ++++++++++
 loleaflet/po/styles/ne.po                                 |  108 +
 loleaflet/po/styles/nl.po                                 |  780 ++++++++++
 loleaflet/po/styles/nn.po                                 |  784 ++++++++++
 loleaflet/po/styles/nr.po                                 |  384 +++++
 loleaflet/po/styles/nso.po                                |  360 ++++
 loleaflet/po/styles/oc.po                                 |  768 ++++++++++
 loleaflet/po/styles/om.po                                 |  380 ++++
 loleaflet/po/styles/or.po                                 |  888 +++++++++++
 loleaflet/po/styles/pa-IN.po                              |  396 +++++
 loleaflet/po/styles/pl.po                                 |  880 +++++++++++
 loleaflet/po/styles/pt-BR.po                              |  828 ++++++++++
 loleaflet/po/styles/pt.po                                 |  796 ++++++++++
 loleaflet/po/styles/ro.po                                 |  692 +++++++++
 loleaflet/po/styles/ru.po                                 | 1044 +++++++++++++
 loleaflet/po/styles/rw.po                                 |   44 
 loleaflet/po/styles/sa-IN.po                              |  368 ++++
 loleaflet/po/styles/sat.po                                |  356 ++++
 loleaflet/po/styles/sd.po                                 |  376 ++++
 loleaflet/po/styles/si.po                                 |  360 ++++
 loleaflet/po/styles/sid.po                                |  888 +++++++++++
 loleaflet/po/styles/sk.po                                 |  856 +++++++++++
 loleaflet/po/styles/sl.po                                 | 1044 +++++++++++++
 loleaflet/po/styles/sq.po                                 |  212 ++
 loleaflet/po/styles/sr-Latn.po                            |  368 ++++
 loleaflet/po/styles/sr.po                                 |  388 +++++
 loleaflet/po/styles/ss.po                                 |  384 +++++
 loleaflet/po/styles/st.po                                 |  352 ++++
 loleaflet/po/styles/sv.po                                 |  764 +++++++++
 loleaflet/po/styles/sw-TZ.po                              |   16 
 loleaflet/po/styles/ta.po                                 | 1072 ++++++++++++++
 loleaflet/po/styles/te.po                                 |  884 +++++++++++
 loleaflet/po/styles/tg.po                                 |   52 
 loleaflet/po/styles/th.po                                 |  244 +++
 loleaflet/po/styles/ti.po                                 |    4 
 loleaflet/po/styles/tn.po                                 |  284 +++
 loleaflet/po/styles/tr.po                                 |  784 ++++++++++
 loleaflet/po/styles/ts.po                                 |  312 ++++
 loleaflet/po/styles/tt.po                                 |  332 ++++
 loleaflet/po/styles/ug.po                                 |  884 +++++++++++
 loleaflet/po/styles/uk.po                                 | 1072 ++++++++++++++
 loleaflet/po/styles/ur.po                                 |    4 
 loleaflet/po/styles/uz.po                                 |  276 +++
 loleaflet/po/styles/ve.po                                 |  356 ++++
 loleaflet/po/styles/vi.po                                 |  380 ++++
 loleaflet/po/styles/xh.po                                 |  384 +++++
 loleaflet/po/styles/zh-CN.po                              |  968 ++++++++++++
 loleaflet/po/styles/zh-TW.po                              | 1064 +++++++++++++
 loleaflet/po/styles/zu.po                                 |  360 ++++
 loleaflet/src/admin/AdminSocketSettings.js                |   10 
 loleaflet/src/control/Control.CharacterMap.js             |  256 +++
 loleaflet/src/control/Control.ColumnHeader.js             |    8 
 loleaflet/src/control/Control.DocumentRepair.js           |    7 
 loleaflet/src/control/Control.Menubar.js                  |  392 ++---
 loleaflet/src/control/Control.RowHeader.js                |    8 
 loleaflet/src/control/Control.Tabs.js                     |    2 
 loleaflet/src/control/Control.js                          |    8 
 loleaflet/src/control/Parts.js                            |    1 
 loleaflet/src/layer/tile/TileLayer.js                     |   16 
 loleaflet/src/map/Map.js                                  |   14 
 loleaflet/src/map/handler/Map.WOPI.js                     |    4 
 loolwsd/Admin.cpp                                         |   23 
 loolwsd/ChildSession.cpp                                  |  163 +-
 loolwsd/ChildSession.hpp                                  |   30 
 loolwsd/ClientSession.cpp                                 |   32 
 loolwsd/ClientSession.hpp                                 |    5 
 loolwsd/Common.hpp                                        |    4 
 loolwsd/DocumentBroker.cpp                                |   13 
 loolwsd/DocumentBroker.hpp                                |   19 
 loolwsd/IoUtil.cpp                                        |  107 -
 loolwsd/IoUtil.hpp                                        |    6 
 loolwsd/LOOLForKit.cpp                                    |   23 
 loolwsd/LOOLKit.cpp                                       |  114 -
 loolwsd/LOOLProtocol.hpp                                  |    6 
 loolwsd/LOOLSession.cpp                                   |    4 
 loolwsd/LOOLStress.cpp                                    |    6 
 loolwsd/LOOLWSD.cpp                                       |   89 -
 loolwsd/LOOLWebSocket.hpp                                 |   89 -
 loolwsd/LibreOfficeKit.hpp                                |  645 --------
 loolwsd/Log.hpp                                           |    2 
 loolwsd/Makefile.am                                       |    7 
 loolwsd/PrisonerSession.cpp                               |   24 
 loolwsd/PrisonerSession.hpp                               |   10 
 loolwsd/Storage.cpp                                       |  110 +
 loolwsd/TileCache.cpp                                     |   11 
 loolwsd/Unit.cpp                                          |    2 
 loolwsd/Util.cpp                                          |  366 ----
 loolwsd/Util.hpp                                          |   75 
 loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h   |    2 
 loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx |  610 +++++++
 loolwsd/common/FileUtil.cpp                               |  202 ++
 loolwsd/common/FileUtil.hpp                               |   93 +
 loolwsd/common/SigUtil.cpp                                |  288 +++
 loolwsd/common/SigUtil.hpp                                |   51 
 loolwsd/test/Makefile.am                                  |    2 
 loolwsd/test/WhiteBoxTests.cpp                            |   28 
 loolwsd/test/countloolkits.hpp                            |   21 
 loolwsd/test/helpers.hpp                                  |   17 
 loolwsd/test/httpcrashtest.cpp                            |   50 
 loolwsd/test/integration-http-server.cpp                  |    5 
 rename.patch                                              |  195 ++
 rename.sh                                                 |   58 
 175 files changed, 66659 insertions(+), 1704 deletions(-)

New commits:
commit daa58dc963a5e4dacc016ee946082fb9801471f4
Author: Jan Holesovsky <ke...@collabora.com>
Date:   Tue Nov 15 12:50:58 2016 +0100

    LibreOfficeKit.hpp changed meaning of getPart(), update accordingly.
    
    Change-Id: Ia346f4f838856040fa9aea26b3ac9c0b596b9218
    (cherry picked from commit 72a5f35f30d2e9250795abf910a1456d7b62b78e)

diff --git a/loolwsd/ChildSession.cpp b/loolwsd/ChildSession.cpp
index ecd98c9..07b3a4c 100644
--- a/loolwsd/ChildSession.cpp
+++ b/loolwsd/ChildSession.cpp
@@ -100,7 +100,9 @@ bool ChildSession::_handleInput(const char *buffer, int 
length)
         std::vector<int> viewIds(viewCount);
         getLOKitDocument()->getViewIds(viewIds.data(), viewCount);
 
-        const int curPart = getLOKitDocument()->getPart();
+        int curPart = 0;
+        if (getLOKitDocument()->getDocumentType() != LOK_DOCTYPE_TEXT)
+            curPart = getLOKitDocument()->getPart();
 
         lockLokDoc.unlock();
 
@@ -919,7 +921,7 @@ bool ChildSession::setClientPart(const char* /*buffer*/, 
int /*length*/, StringT
 
     getLOKitDocument()->setView(_viewId);
 
-    if (part != getLOKitDocument()->getPart())
+    if (getLOKitDocument()->getDocumentType() != LOK_DOCTYPE_TEXT && part != 
getLOKitDocument()->getPart())
     {
         getLOKitDocument()->setPart(part);
     }
commit d4e3d55cd2d8524bafc364fb955984792c148f21
Author: Jan Holesovsky <ke...@collabora.com>
Date:   Tue Nov 15 11:37:47 2016 +0100

    Get rid of LibreOfficeKit.hpp, it's mostly a copy of LibreOfficeKit.hxx.
    
    Change-Id: I55f9c28a3ac1ef2a36c18c29cc16209bedd48770
    (cherry picked from commit 2069650ba64bf9bbb8a4b8f28add7502e1d24dc5)

diff --git a/loolwsd/ChildSession.cpp b/loolwsd/ChildSession.cpp
index c28cfbf..ecd98c9 100644
--- a/loolwsd/ChildSession.cpp
+++ b/loolwsd/ChildSession.cpp
@@ -83,7 +83,7 @@ bool ChildSession::_handleInput(const char *buffer, int 
length)
         updateLastActivityTime();
     }
 
-    if (tokens.count() > 0 && tokens[0] == "useractive" && _loKitDocument != 
nullptr)
+    if (tokens.count() > 0 && tokens[0] == "useractive" && getLOKitDocument() 
!= nullptr)
     {
         LOG_DBG("Handling message after inactivity of " << getInactivityMS() 
<< "ms.");
         setIsActive(true);
@@ -91,16 +91,16 @@ bool ChildSession::_handleInput(const char *buffer, int 
length)
         // Client is getting active again.
         // Send invalidation and other sync-up messages.
         std::unique_lock<std::recursive_mutex> lock(Mutex); //TODO: Move to 
top of function?
-        auto lockLokDoc(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> 
lockLokDoc(_docManager.getDocumentMutex());
 
-        _loKitDocument->setView(_viewId);
+        getLOKitDocument()->setView(_viewId);
 
         // Get the list of view ids from the core
-        const int viewCount = _loKitDocument->getViewsCount();
+        const int viewCount = getLOKitDocument()->getViewsCount();
         std::vector<int> viewIds(viewCount);
-        _loKitDocument->getViewIds(viewIds.data(), viewCount);
+        getLOKitDocument()->getViewIds(viewIds.data(), viewCount);
 
-        const int curPart = _loKitDocument->getPart();
+        const int curPart = getLOKitDocument()->getPart();
 
         lockLokDoc.unlock();
 
@@ -311,8 +311,8 @@ bool ChildSession::loadDocument(const char * /*buffer*/, 
int /*length*/, StringT
 
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
-    _loKitDocument = _docManager.onLoad(getId(), _jailedFilePath, _userName, 
_docPassword, renderOpts, _haveDocPassword);
-    if (!_loKitDocument || _viewId < 0)
+    bool loaded = _docManager.onLoad(getId(), _jailedFilePath, _userName, 
_docPassword, renderOpts, _haveDocPassword);
+    if (!loaded || _viewId < 0)
     {
         LOG_ERR("Failed to get LoKitDocument instance.");
         return false;
@@ -321,19 +321,19 @@ bool ChildSession::loadDocument(const char * /*buffer*/, 
int /*length*/, StringT
     LOG_INF("Created new view with viewid: [" << _viewId << + "] for username: 
[" <<
             _userName << "] in session: [" << getId() << "].");
 
-    auto lockLokDoc(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lockLokDoc(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _docType = LOKitHelper::getDocumentTypeAsString(_loKitDocument->get());
+    _docType = LOKitHelper::getDocumentTypeAsString(getLOKitDocument()->get());
     if (_docType != "text" && part != -1)
     {
-        _loKitDocument->setPart(part);
+        getLOKitDocument()->setPart(part);
     }
 
     // Respond by the document status
     LOG_DBG("Sending status after loading view " << _viewId << ".");
-    const auto status = LOKitHelper::documentStatus(_loKitDocument->get());
+    const auto status = LOKitHelper::documentStatus(getLOKitDocument()->get());
     if (status.empty() || !sendTextFrame("status: " + status))
     {
         LOG_ERR("Failed to get/forward document status [" << status << "].");
@@ -341,9 +341,9 @@ bool ChildSession::loadDocument(const char * /*buffer*/, 
int /*length*/, StringT
     }
 
     // Get the list of view ids from the core
-    const int viewCount = _loKitDocument->getViewsCount();
+    const int viewCount = getLOKitDocument()->getViewsCount();
     std::vector<int> viewIds(viewCount);
-    _loKitDocument->getViewIds(viewIds.data(), viewCount);
+    getLOKitDocument()->getViewIds(viewIds.data(), viewCount);
 
     lockLokDoc.unlock();
 
@@ -379,11 +379,11 @@ bool ChildSession::sendFontRendering(const char* 
/*buffer*/, int /*length*/, Str
     unsigned char* ptrFont = nullptr;
 
     {
-        auto lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-        _loKitDocument->setView(_viewId);
+        getLOKitDocument()->setView(_viewId);
 
-        ptrFont = _loKitDocument->renderFont(decodedFont.c_str(), 
text.c_str(), &width, &height);
+        ptrFont = getLOKitDocument()->renderFont(decodedFont.c_str(), 
text.c_str(), &width, &height);
     }
 
     LOG_TRC("renderFont [" << font << "] rendered in " << 
(timestamp.elapsed()/1000.) << "ms");
@@ -403,11 +403,11 @@ bool ChildSession::getStatus(const char* /*buffer*/, int 
/*length*/)
 {
     std::string status;
     {
-        auto lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-        _loKitDocument->setView(_viewId);
+        getLOKitDocument()->setView(_viewId);
 
-        status = LOKitHelper::documentStatus(_loKitDocument->get());
+        status = LOKitHelper::documentStatus(getLOKitDocument()->get());
     }
 
     if (status.empty())
@@ -462,16 +462,16 @@ bool ChildSession::getCommandValues(const char* 
/*buffer*/, int /*length*/, Stri
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
     if (command == ".uno:DocumentRepair")
     {
         char* pUndo;
         const std::string 
jsonTemplate("{\"commandName\":\".uno:DocumentRepair\",\"Redo\":%s,\"Undo\":%s}");
-        pValues = _loKitDocument->getCommandValues(".uno:Redo");
-        pUndo = _loKitDocument->getCommandValues(".uno:Undo");
+        pValues = getLOKitDocument()->getCommandValues(".uno:Redo");
+        pUndo = getLOKitDocument()->getCommandValues(".uno:Undo");
         std::string json = Poco::format(jsonTemplate,
                                         std::string(pValues == nullptr ? "" : 
pValues),
                                         std::string(pUndo == nullptr ? "" : 
pUndo));
@@ -484,7 +484,7 @@ bool ChildSession::getCommandValues(const char* /*buffer*/, 
int /*length*/, Stri
     }
     else
     {
-        pValues = _loKitDocument->getCommandValues(command.c_str());
+        pValues = getLOKitDocument()->getCommandValues(command.c_str());
         success = sendTextFrame("commandvalues: " + std::string(pValues == 
nullptr ? "" : pValues));
         std::free(pValues);
     }
@@ -496,10 +496,10 @@ bool ChildSession::getPartPageRectangles(const char* 
/*buffer*/, int /*length*/)
 {
     char* partPage = nullptr;
     {
-        auto lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-        _loKitDocument->setView(_viewId);
-        partPage = _loKitDocument->getPartPageRectangles();
+        getLOKitDocument()->setView(_viewId);
+        partPage = getLOKitDocument()->getPartPageRectangles();
     }
 
     sendTextFrame("partpagerectangles: " + std::string(partPage));
@@ -521,11 +521,11 @@ bool ChildSession::clientZoom(const char* /*buffer*/, int 
/*length*/, StringToke
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->setClientZoom(tilePixelWidth, tilePixelHeight, 
tileTwipWidth, tileTwipHeight);
+    getLOKitDocument()->setClientZoom(tilePixelWidth, tilePixelHeight, 
tileTwipWidth, tileTwipHeight);
     return true;
 }
 
@@ -546,11 +546,11 @@ bool ChildSession::clientVisibleArea(const char* 
/*buffer*/, int /*length*/, Str
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->setClientVisibleArea(x, y, width, height);
+    getLOKitDocument()->setClientVisibleArea(x, y, width, height);
     return true;
 }
 
@@ -584,9 +584,9 @@ bool ChildSession::downloadAs(const char* /*buffer*/, int 
/*length*/, StringToke
     const auto url = JAILED_DOCUMENT_ROOT + tmpDir + "/" + 
filenameParam.getFileName();
 
     {
-        auto lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-        _loKitDocument->saveAs(url.c_str(),
+        getLOKitDocument()->saveAs(url.c_str(),
                 format.size() == 0 ? nullptr :format.c_str(),
                 filterOptions.size() == 0 ? nullptr : filterOptions.c_str());
     }
@@ -615,11 +615,11 @@ bool ChildSession::getTextSelection(const char* 
/*buffer*/, int /*length*/, Stri
 
     char* textSelection = nullptr;
     {
-        auto lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-        _loKitDocument->setView(_viewId);
+        getLOKitDocument()->setView(_viewId);
 
-        textSelection = _loKitDocument->getTextSelection(mimeType.c_str(), 
nullptr);
+        textSelection = getLOKitDocument()->getTextSelection(mimeType.c_str(), 
nullptr);
     }
 
     sendTextFrame("textselectioncontent: " + std::string(textSelection));
@@ -641,11 +641,11 @@ bool ChildSession::paste(const char* buffer, int length, 
StringTokenizer& tokens
     const char* data = buffer + firstLine.size() + 1;
     const size_t size = length - firstLine.size() - 1;
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->paste(mimeType.c_str(), data, size);
+    getLOKitDocument()->paste(mimeType.c_str(), data, size);
 
     return true;
 }
@@ -671,11 +671,11 @@ bool ChildSession::insertFile(const char* /*buffer*/, int 
/*length*/, StringToke
                 "\"value\":\"" + fileName + "\""
             "}}";
 
-        auto lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-        _loKitDocument->setView(_viewId);
+        getLOKitDocument()->setView(_viewId);
 
-        _loKitDocument->postUnoCommand(command.c_str(), arguments.c_str(), 
false);
+        getLOKitDocument()->postUnoCommand(command.c_str(), arguments.c_str(), 
false);
     }
 
     return true;
@@ -711,11 +711,11 @@ bool ChildSession::keyEvent(const char* /*buffer*/, int 
/*length*/, StringTokeni
         return true;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->postKeyEvent(type, charcode, keycode);
+    getLOKitDocument()->postKeyEvent(type, charcode, keycode);
 
     return true;
 }
@@ -756,11 +756,11 @@ bool ChildSession::mouseEvent(const char* /*buffer*/, int 
/*length*/, StringToke
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->postMouseEvent(type, x, y, count, buttons, modifier);
+    getLOKitDocument()->postMouseEvent(type, x, y, count, buttons, modifier);
 
     return true;
 }
@@ -776,9 +776,9 @@ bool ChildSession::unoCommand(const char* /*buffer*/, int 
/*length*/, StringToke
     // we need to get LOK_CALLBACK_UNO_COMMAND_RESULT callback when saving
     const bool bNotify = (tokens[1] == ".uno:Save");
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
     if (tokens.count() == 2 && tokens[1] == ".uno:fakeDiskFull")
     {
@@ -786,11 +786,11 @@ bool ChildSession::unoCommand(const char* /*buffer*/, int 
/*length*/, StringToke
     }
     else if (tokens.count() == 2)
     {
-        _loKitDocument->postUnoCommand(tokens[1].c_str(), nullptr, bNotify);
+        getLOKitDocument()->postUnoCommand(tokens[1].c_str(), nullptr, 
bNotify);
     }
     else
     {
-        _loKitDocument->postUnoCommand(tokens[1].c_str(),
+        getLOKitDocument()->postUnoCommand(tokens[1].c_str(),
                                        Poco::cat(std::string(" "), 
tokens.begin() + 2, tokens.end()).c_str(),
                                        bNotify);
     }
@@ -814,11 +814,11 @@ bool ChildSession::selectText(const char* /*buffer*/, int 
/*length*/, StringToke
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->setTextSelection(type, x, y);
+    getLOKitDocument()->setTextSelection(type, x, y);
 
     return true;
 }
@@ -838,11 +838,11 @@ bool ChildSession::selectGraphic(const char* /*buffer*/, 
int /*length*/, StringT
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->setGraphicSelection(type, x, y);
+    getLOKitDocument()->setGraphicSelection(type, x, y);
 
     return true;
 }
@@ -855,11 +855,11 @@ bool ChildSession::resetSelection(const char* /*buffer*/, 
int /*length*/, String
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->resetSelection();
+    getLOKitDocument()->resetSelection();
 
     return true;
 }
@@ -887,11 +887,11 @@ bool ChildSession::saveAs(const char* /*buffer*/, int 
/*length*/, StringTokenize
 
     bool success = false;
     {
-        auto lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-        _loKitDocument->setView(_viewId);
+        getLOKitDocument()->setView(_viewId);
 
-        success = _loKitDocument->saveAs(url.c_str(),
+        success = getLOKitDocument()->saveAs(url.c_str(),
                 format.size() == 0 ? nullptr :format.c_str(),
                 filterOptions.size() == 0 ? nullptr : filterOptions.c_str());
     }
@@ -915,13 +915,13 @@ bool ChildSession::setClientPart(const char* /*buffer*/, 
int /*length*/, StringT
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    if (part != _loKitDocument->getPart())
+    if (part != getLOKitDocument()->getPart())
     {
-        _loKitDocument->setPart(part);
+        getLOKitDocument()->setPart(part);
     }
 
     return true;
@@ -937,11 +937,11 @@ bool ChildSession::setPage(const char* /*buffer*/, int 
/*length*/, StringTokeniz
         return false;
     }
 
-    auto lock(_loKitDocument->getLock());
+    std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    _loKitDocument->setView(_viewId);
+    getLOKitDocument()->setView(_viewId);
 
-    _loKitDocument->setPart(page);
+    getLOKitDocument()->setPart(page);
     return true;
 }
 
diff --git a/loolwsd/ChildSession.hpp b/loolwsd/ChildSession.hpp
index 624090c..871de23 100644
--- a/loolwsd/ChildSession.hpp
+++ b/loolwsd/ChildSession.hpp
@@ -12,13 +12,15 @@
 
 #include <mutex>
 
+#define LOK_USE_UNSTABLE_API
+#include <LibreOfficeKit/LibreOfficeKit.hxx>
+
 #include <Poco/NotificationQueue.h>
 #include <Poco/Thread.h>
 
 #include "Common.hpp"
 #include "LOOLKit.hpp"
 #include "LOOLSession.hpp"
-#include "LibreOfficeKit.hpp"
 
 class ChildSession;
 
@@ -28,23 +30,31 @@ class IDocumentManager
 {
 public:
     /// Reqest loading a document, or a new view, if one exists.
-    virtual std::shared_ptr<lok::Document> onLoad(const std::string& sessionId,
-                                                  const std::string& 
jailedFilePath,
-                                                  const std::string& userName,
-                                                  const std::string& 
docPassword,
-                                                  const std::string& 
renderOpts,
-                                                  const bool haveDocPassword)
+    virtual bool onLoad(const std::string& sessionId,
+                        const std::string& jailedFilePath,
+                        const std::string& userName,
+                        const std::string& docPassword,
+                        const std::string& renderOpts,
+                        const bool haveDocPassword)
         = 0;
 
     /// Unload a client session, which unloads the document
     /// if it is the last and only.
     virtual void onUnload(const ChildSession& session) = 0;
 
+    /// Access to the document instance.
+    virtual std::shared_ptr<lok::Document> getLOKitDocument() = 0;
+
     /// Send updated view info to all active sessions
     virtual void notifyViewInfo(const std::vector<int>& viewIds) = 0;
     /// Get a view ID <-> UserInfo map.
     virtual std::map<int, UserInfo> getViewInfo() = 0;
     virtual std::mutex& getMutex() = 0;
+
+    /// Mutex guarding the document - so that we can lock operations like
+    /// setting a view followed by a tile render, etc.
+    virtual std::mutex& getDocumentMutex() = 0;
+
     virtual std::shared_ptr<TileQueue>& getTileQueue() = 0;
 
     virtual bool sendTextFrame(const std::string& message) = 0;
@@ -115,6 +125,11 @@ private:
     virtual void disconnect() override;
     virtual bool _handleInput(const char* buffer, int length) override;
 
+    std::shared_ptr<lok::Document> getLOKitDocument()
+    {
+        return _docManager.getLOKitDocument();
+    }
+
 private:
     const std::string _jailId;
     IDocumentManager& _docManager;
@@ -125,7 +140,6 @@ private:
     /// Whether document has been opened succesfuly
     bool _isDocLoaded;
 
-    std::shared_ptr<lok::Document> _loKitDocument;
     std::string _docType;
     std::map<std::string, std::string> _lastDocStates;
     std::map<int, std::string> _lastDocEvents;
diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index 48902cb..4577003 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -31,6 +31,7 @@
 
 #define LOK_USE_UNSTABLE_API
 #include <LibreOfficeKit/LibreOfficeKitInit.h>
+#include <LibreOfficeKit/LibreOfficeKit.hxx>
 
 #include <Poco/Exception.h>
 #include <Poco/JSON/Object.h>
@@ -55,7 +56,6 @@
 #include "LOOLKit.hpp"
 #include "LOOLProtocol.hpp"
 #include "LOOLWebSocket.hpp"
-#include "LibreOfficeKit.hpp"
 #include "Log.hpp"
 #include "Png.hpp"
 #include "Rectangle.hpp"
@@ -295,10 +295,11 @@ public:
         _docPasswordType(PasswordType::ToView),
         _stop(false),
         _mutex(),
+        _documentMutex(),
         _isLoading(0)
     {
         LOG_INF("Document ctor for url [" << _url << "] on child [" << _jailId 
<< "].");
-        assert(_loKit && _loKit->get());
+        assert(_loKit);
 
         _callbackThread.start(*this);
     }
@@ -479,7 +480,7 @@ public:
             return;
         }
 
-        std::unique_lock<std::mutex> lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_documentMutex);
         if (_loKitDocument->getViewsCount() <= 0)
         {
             LOG_ERR("Tile rendering requested without views.");
@@ -550,7 +551,7 @@ public:
             return;
         }
 
-        std::unique_lock<std::mutex> lock(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lock(_documentMutex);
         if (_loKitDocument->getViewsCount() <= 0)
         {
             LOG_ERR("Tile rendering requested without views.");
@@ -739,12 +740,12 @@ private:
     }
 
     /// Load a document (or view) and register callbacks.
-    std::shared_ptr<lok::Document> onLoad(const std::string& sessionId,
-                                          const std::string& uri,
-                                          const std::string& userName,
-                                          const std::string& docPassword,
-                                          const std::string& renderOpts,
-                                          const bool haveDocPassword) override
+    bool onLoad(const std::string& sessionId,
+                const std::string& uri,
+                const std::string& userName,
+                const std::string& docPassword,
+                const std::string& renderOpts,
+                const bool haveDocPassword) override
     {
         std::unique_lock<std::mutex> lock(_mutex);
 
@@ -765,13 +766,13 @@ private:
             load(sessionId, uri, userName, docPassword, renderOpts, 
haveDocPassword);
             if (!_loKitDocument || !_loKitDocument->get())
             {
-                return nullptr;
+                return false;
             }
         }
         catch (const std::exception& exc)
         {
             LOG_ERR("Exception while loading [" << uri << "] : " << 
exc.what());
-            return nullptr;
+            return false;
         }
 
         // Done loading, let the next one in (if any).
@@ -780,7 +781,7 @@ private:
         --_isLoading;
         _cvLoading.notify_one();
 
-        return _loKitDocument;
+        return true;
     }
 
     void onUnload(const ChildSession& session) override
@@ -797,7 +798,7 @@ private:
             return;
         }
 
-        std::unique_lock<std::mutex> lockLokDoc(_loKitDocument->getLock());
+        std::unique_lock<std::mutex> lockLokDoc(_documentMutex);
 
         _loKitDocument->setView(viewId);
         _loKitDocument->registerCallback(nullptr, nullptr);
@@ -907,7 +908,7 @@ private:
         std::map<std::string, int> viewColors;
 
         {
-            auto lock(_loKitDocument->getLock());
+            std::unique_lock<std::mutex> lock(_documentMutex);
 
             char* pValues = 
_loKitDocument->getCommandValues(".uno:TrackedChangeAuthors");
             colorValues = std::string(pValues == nullptr ? "" : pValues);
@@ -965,16 +966,12 @@ private:
             // This is the first time we are loading the document
             LOG_INF("Loading new document from URI: [" << uri << "] for 
session [" << sessionId << "].");
 
-            auto lock(_loKit->getLock());
+            _loKit->registerCallback(GlobalCallback, this);
 
-            if (LIBREOFFICEKIT_HAS(_loKit->get(), registerCallback))
-            {
-                _loKit->get()->pClass->registerCallback(_loKit->get(), 
GlobalCallback, this);
-                const auto flags = LOK_FEATURE_DOCUMENT_PASSWORD
-                                 | LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY
-                                 | LOK_FEATURE_PART_IN_INVALIDATION_CALLBACK;
-                _loKit->setOptionalFeatures(flags);
-            }
+            const auto flags = LOK_FEATURE_DOCUMENT_PASSWORD
+                             | LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY
+                             | LOK_FEATURE_PART_IN_INVALIDATION_CALLBACK;
+            _loKit->setOptionalFeatures(flags);
 
             // Save the provided password with us and the jailed url
             _haveDocPassword = haveDocPassword;
@@ -983,9 +980,9 @@ private:
             _isDocPasswordProtected = false;
 
             LOG_DBG("Calling lokit::documentLoad.");
-            _loKitDocument = _loKit->documentLoad(uri.c_str());
+            _loKitDocument.reset(_loKit->documentLoad(uri.c_str()));
             LOG_DBG("Returned lokit::documentLoad.");
-            auto l(_loKitDocument->getLock());
+            std::unique_lock<std::mutex> l(_documentMutex);
             lockLokDoc.swap(l);
 
             if (!_loKitDocument || !_loKitDocument->get())
@@ -1022,7 +1019,7 @@ private:
         }
         else
         {
-            auto l(_loKitDocument->getLock());
+            std::unique_lock<std::mutex> l(_documentMutex);
             lockLokDoc.swap(l);
 
             // Check if this document requires password
@@ -1236,6 +1233,18 @@ private:
         LOG_DBG("Thread finished.");
     }
 
+    /// Return access to the lok::Document instance.
+    std::shared_ptr<lok::Document> getLOKitDocument() override
+    {
+        return _loKitDocument;
+    }
+
+    /// Return access to the lok::Document instance.
+    std::mutex& getDocumentMutex() override
+    {
+        return _documentMutex;
+    }
+
 private:
     std::shared_ptr<lok::Office> _loKit;
     const std::string _jailId;
@@ -1259,6 +1268,11 @@ private:
 
     std::atomic<bool> _stop;
     mutable std::mutex _mutex;
+
+    /// Mutex guarding the lok::Document so that we can lock operations
+    /// like setting a view followed by a tile render, etc.
+    std::mutex _documentMutex;
+
     std::condition_variable _cvLoading;
     std::atomic_size_t _isLoading;
     std::map<int, std::unique_ptr<CallbackDescriptor>> _viewIdToCallbackDescr;
@@ -1435,14 +1449,14 @@ void lokit_main(const std::string& childRoot,
             }
 
             loKit = std::make_shared<lok::Office>(kit);
-            if (!loKit || !loKit->get())
+            if (!loKit)
             {
                 LOG_FTL("LibreOfficeKit initialization failed. Exiting.");
                 std::_Exit(Application::EXIT_SOFTWARE);
             }
         }
 
-        assert(loKit && loKit->get());
+        assert(loKit);
         LOG_INF("Process is ready.");
 
         // Open websocket connection between the child process and WSD.
diff --git a/loolwsd/Makefile.am b/loolwsd/Makefile.am
index a87599d..865d3e7 100644
--- a/loolwsd/Makefile.am
+++ b/loolwsd/Makefile.am
@@ -98,7 +98,6 @@ noinst_HEADERS = Admin.hpp \
                  common/FileUtil.hpp \
                  common/SigUtil.hpp \
                  IoUtil.hpp \
-                 LibreOfficeKit.hpp \
                  Log.hpp \
                  LOKitHelper.hpp \
                  LOOLKit.hpp \
diff --git a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h 
b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h
index c7a2130..0b9535a 100644
--- a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h
@@ -61,6 +61,7 @@ struct _LibreOfficeKitClass
     void (*freeError) (char* pFree);
 
 #if defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY
+    /// @see lok::Office::registerCallback().
     void (*registerCallback) (LibreOfficeKit* pThis,
                               LibreOfficeKitCallback pCallback,
                               void* pData);
diff --git a/loolwsd/LibreOfficeKit.hpp 
b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx
similarity index 69%
rename from loolwsd/LibreOfficeKit.hpp
rename to loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx
index fe54938..447f44b 100644
--- a/loolwsd/LibreOfficeKit.hpp
+++ b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx
@@ -7,15 +7,20 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
-#ifndef INCLUDED_LIBREOFFICEKIT_HPP
-#define INCLUDED_LIBREOFFICEKIT_HPP
+#ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_HXX
+#define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_HXX
 
-#define LOK_USE_UNSTABLE_API
-#include <LibreOfficeKit/LibreOfficeKit.h>
-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <cstddef>
 
-#include "Log.hpp"
+#include "LibreOfficeKit.h"
+#include "LibreOfficeKitInit.h"
 
+/*
+ * The reasons this C++ code is not as pretty as it could be are:
+ *  a) provide a pure C API - that's useful for some people
+ *  b) allow ABI stability - C++ vtables are not good for that.
+ *  c) avoid C++ types as part of the API.
+ */
 namespace lok
 {
 
@@ -23,31 +28,17 @@ namespace lok
 class Document
 {
 private:
-    LibreOfficeKitDocument* _pDoc;
-    std::mutex _mutex;
+    LibreOfficeKitDocument* mpDoc;
 
 public:
     /// A lok::Document is typically created by the 
lok::Office::documentLoad() method.
     inline Document(LibreOfficeKitDocument* pDoc) :
-        _pDoc(pDoc),
-        _mutex()
-    {
-        Log::trace("lok::Document ctor.");
-    }
+        mpDoc(pDoc)
+    {}
 
     inline ~Document()
     {
-        Log::trace("lok::~Document dtor.");
-        _pDoc->pClass->destroy(_pDoc);
-    }
-
-    /// This lock must be held while calling
-    /// one or more members of this class if
-    /// the client is multi-threaded.
-    /// No member function takes this lock otherwise.
-    std::unique_lock<std::mutex> getLock()
-    {
-        return std::unique_lock<std::mutex>(_mutex);
+        mpDoc->pClass->destroy(mpDoc);
     }
 
     /**
@@ -65,16 +56,11 @@ public:
      */
     inline bool saveAs(const char* pUrl, const char* pFormat = NULL, const 
char* pFilterOptions = NULL)
     {
-        Log::trace() << "lok::Document: saveAs: URL: [" << pUrl << "], Format: 
[" << pFormat
-                     << "], FilterOptions: " << pFilterOptions << "." << 
Log::end;
-        return _pDoc->pClass->saveAs(_pDoc, pUrl, pFormat, pFilterOptions) != 
0;
+        return mpDoc->pClass->saveAs(mpDoc, pUrl, pFormat, pFilterOptions) != 
0;
     }
 
     /// Gives access to the underlying C pointer.
-    inline LibreOfficeKitDocument *get()
-    {
-        return _pDoc;
-    }
+    inline LibreOfficeKitDocument *get() { return mpDoc; }
 
 #if defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY
     /**
@@ -84,7 +70,7 @@ public:
      */
     inline int getDocumentType()
     {
-        return _pDoc->pClass->getDocumentType(_pDoc);
+        return mpDoc->pClass->getDocumentType(mpDoc);
     }
 
     /**
@@ -95,7 +81,7 @@ public:
      */
     inline int getParts()
     {
-        return _pDoc->pClass->getParts(_pDoc);
+        return mpDoc->pClass->getParts(mpDoc);
     }
 
     /**
@@ -109,40 +95,36 @@ public:
      */
     inline char* getPartPageRectangles()
     {
-        return _pDoc->pClass->getPartPageRectangles(_pDoc);
+        return mpDoc->pClass->getPartPageRectangles(mpDoc);
     }
 
     /// Get the current part of the document.
-    /// Note: For Writer documents this always returns 0
-    /// since text docs have a single coordinate system.
     inline int getPart()
     {
-        return getDocumentType() == LOK_DOCTYPE_TEXT ? 0 : 
_pDoc->pClass->getPart(_pDoc);
+        return mpDoc->pClass->getPart(mpDoc);
     }
 
     /// Set the current part of the document.
     inline void setPart(int nPart)
     {
-        Log::trace() << "lok::Document: setPart: Part: " << nPart << "." << 
Log::end;
-        _pDoc->pClass->setPart(_pDoc, nPart);
+        mpDoc->pClass->setPart(mpDoc, nPart);
     }
 
     /// Get the current part's name.
     inline char* getPartName(int nPart)
     {
-        return _pDoc->pClass->getPartName(_pDoc, nPart);
+        return mpDoc->pClass->getPartName(mpDoc, nPart);
     }
 
     /// Get the current part's hash.
     inline char* getPartHash(int nPart)
     {
-        return _pDoc->pClass->getPartHash(_pDoc, nPart);
+        return mpDoc->pClass->getPartHash(mpDoc, nPart);
     }
 
     inline void setPartMode(int nMode)
     {
-        Log::trace() << "lok::Document: setPartMode: Mode: " << nMode << "." 
<< Log::end;
-        _pDoc->pClass->setPartMode(_pDoc, nMode);
+        mpDoc->pClass->setPartMode(mpDoc, nMode);
     }
 
     /**
@@ -168,7 +150,7 @@ public:
                           const int nTileWidth,
                           const int nTileHeight)
     {
-        return _pDoc->pClass->paintTile(_pDoc, pBuffer, nCanvasWidth, 
nCanvasHeight,
+        return mpDoc->pClass->paintTile(mpDoc, pBuffer, nCanvasWidth, 
nCanvasHeight,
                                 nTilePosX, nTilePosY, nTileWidth, nTileHeight);
     }
 
@@ -179,13 +161,13 @@ public:
      */
     inline int getTileMode()
     {
-        return _pDoc->pClass->getTileMode(_pDoc);
+        return mpDoc->pClass->getTileMode(mpDoc);
     }
 
     /// Get the document sizes in TWIPs.
     inline void getDocumentSize(long* pWidth, long* pHeight)
     {
-        _pDoc->pClass->getDocumentSize(_pDoc, pWidth, pHeight);
+        mpDoc->pClass->getDocumentSize(mpDoc, pWidth, pHeight);
     }
 
     /**
@@ -210,8 +192,7 @@ public:
      */
     inline void initializeForRendering(const char* pArguments = NULL)
     {
-        Log::trace() << "lok::Document: initializeForRendering: Arguments: [" 
<< pArguments << "]." << Log::end;
-        _pDoc->pClass->initializeForRendering(_pDoc, pArguments);
+        mpDoc->pClass->initializeForRendering(mpDoc, pArguments);
     }
 
     /**
@@ -223,7 +204,7 @@ public:
      */
     inline void registerCallback(LibreOfficeKitCallback pCallback, void* pData)
     {
-        _pDoc->pClass->registerCallback(_pDoc, pCallback, pData);
+        mpDoc->pClass->registerCallback(mpDoc, pCallback, pData);
     }
 
     /**
@@ -235,9 +216,7 @@ public:
      */
     inline void postKeyEvent(int nType, int nCharCode, int nKeyCode)
     {
-        Log::trace() << "lok::Document: postKeyEvent: Type=" << nType
-                     << ", CharCode=" << nCharCode << ", KeyCode=" << nKeyCode 
<< Log::end;
-        _pDoc->pClass->postKeyEvent(_pDoc, nType, nCharCode, nKeyCode);
+        mpDoc->pClass->postKeyEvent(mpDoc, nType, nCharCode, nKeyCode);
     }
 
     /**
@@ -252,10 +231,7 @@ public:
      */
     inline void postMouseEvent(int nType, int nX, int nY, int nCount, int 
nButtons, int nModifier)
     {
-        Log::trace() << "lok::Document: postMouseEvent: Type=" << nType
-                     << ", X=" << nX << ", nY=" << nY << ", Count=" << nCount
-                     << ", Buttons=" << nButtons << ", Modifier=" << nModifier 
<< Log::end;
-        _pDoc->pClass->postMouseEvent(_pDoc, nType, nX, nY, nCount, nButtons, 
nModifier);
+        mpDoc->pClass->postMouseEvent(mpDoc, nType, nX, nY, nCount, nButtons, 
nModifier);
     }
 
     /**
@@ -281,10 +257,7 @@ public:
      */
     inline void postUnoCommand(const char* pCommand, const char* pArguments = 
NULL, bool bNotifyWhenFinished = false)
     {
-        Log::trace() << "lok::Document: postUnoCommand: Command=" << pCommand
-                     << ", Args=" << (pArguments ? pArguments : "''")
-                     << ", NotifyWhenFinished=" << bNotifyWhenFinished << 
Log::end;
-        _pDoc->pClass->postUnoCommand(_pDoc, pCommand, pArguments, 
bNotifyWhenFinished);
+        mpDoc->pClass->postUnoCommand(mpDoc, pCommand, pArguments, 
bNotifyWhenFinished);
     }
 
     /**
@@ -296,7 +269,7 @@ public:
      */
     inline void setTextSelection(int nType, int nX, int nY)
     {
-        _pDoc->pClass->setTextSelection(_pDoc, nType, nX, nY);
+        mpDoc->pClass->setTextSelection(mpDoc, nType, nX, nY);
     }
 
     /**
@@ -307,7 +280,7 @@ public:
      */
     inline char* getTextSelection(const char* pMimeType, char** pUsedMimeType 
= NULL)
     {
-        return _pDoc->pClass->getTextSelection(_pDoc, pMimeType, 
pUsedMimeType);
+        return mpDoc->pClass->getTextSelection(mpDoc, pMimeType, 
pUsedMimeType);
     }
 
     /**
@@ -319,7 +292,7 @@ public:
      */
     inline bool paste(const char* pMimeType, const char* pData, size_t nSize)
     {
-        return _pDoc->pClass->paste(_pDoc, pMimeType, pData, nSize);
+        return mpDoc->pClass->paste(mpDoc, pMimeType, pData, nSize);
     }
 
     /**
@@ -331,7 +304,7 @@ public:
      */
     inline void setGraphicSelection(int nType, int nX, int nY)
     {
-        _pDoc->pClass->setGraphicSelection(_pDoc, nType, nX, nY);
+        mpDoc->pClass->setGraphicSelection(mpDoc, nType, nX, nY);
     }
 
     /**
@@ -339,7 +312,7 @@ public:
      */
     inline void resetSelection()
     {
-        _pDoc->pClass->resetSelection(_pDoc);
+        mpDoc->pClass->resetSelection(mpDoc);
     }
 
     /**
@@ -350,7 +323,7 @@ public:
      */
     inline char* getCommandValues(const char* pCommand)
     {
-        return _pDoc->pClass->getCommandValues(_pDoc, pCommand);
+        return mpDoc->pClass->getCommandValues(mpDoc, pCommand);
     }
 
     /**
@@ -367,11 +340,7 @@ public:
             int nTileTwipWidth,
             int nTileTwipHeight)
     {
-        Log::trace() << "lok::Document: setClientZoom: TilePixelWidth: " << 
nTilePixelWidth
-                     << ", TilePixelHeight: " << nTileTwipHeight
-                     <<  ", TileTwipWidth: " << nTileTwipWidth
-                     << ", TileTwipHeight: " << nTileTwipHeight << "." << 
Log::end;
-        _pDoc->pClass->setClientZoom(_pDoc, nTilePixelWidth, nTilePixelHeight, 
nTileTwipWidth, nTileTwipHeight);
+        mpDoc->pClass->setClientZoom(mpDoc, nTilePixelWidth, nTilePixelHeight, 
nTileTwipWidth, nTileTwipHeight);
     }
 
     /**
@@ -386,10 +355,7 @@ public:
      */
     inline void setClientVisibleArea(int nX, int nY, int nWidth, int nHeight)
     {
-        Log::trace() << "lok::Document: setClientVisibleArea: X: " << nX
-                     << ", Y: " << nY << ", Width: " << nWidth
-                     << ", Height: " << nHeight << "." << Log::end;
-        _pDoc->pClass->setClientVisibleArea(_pDoc, nX, nY, nWidth, nHeight);
+        mpDoc->pClass->setClientVisibleArea(mpDoc, nX, nY, nWidth, nHeight);
     }
 
     /**
@@ -399,8 +365,7 @@ public:
      */
     int createView()
     {
-        Log::trace() << "lok::Document: createView" << Log::end;
-        return _pDoc->pClass->createView(_pDoc);
+        return mpDoc->pClass->createView(mpDoc);
     }
 
     /**
@@ -409,8 +374,7 @@ public:
      */
     void destroyView(int nId)
     {
-        Log::trace() << "lok::Document: destroyView: " << nId << Log::end;
-        _pDoc->pClass->destroyView(_pDoc, nId);
+        mpDoc->pClass->destroyView(mpDoc, nId);
     }
 
     /**
@@ -419,9 +383,7 @@ public:
      */
     void setView(int nId)
     {
-        Log::trace() << "lok::Document: setView: " << nId << Log::end;
-        assert(nId >= 0 && "ViewID must be non-negative.");
-        _pDoc->pClass->setView(_pDoc, nId);
+        mpDoc->pClass->setView(mpDoc, nId);
     }
 
     /**
@@ -430,7 +392,7 @@ public:
      */
     int getView()
     {
-        return _pDoc->pClass->getView(_pDoc);
+        return mpDoc->pClass->getView(mpDoc);
     }
 
     /**
@@ -438,26 +400,11 @@ public:
      */
     inline int getViewsCount()
     {
-        return _pDoc->pClass->getViewsCount(_pDoc);
-    }
-
-    /**
-     * Returns the viewID for each existing view. Since viewIDs are not reused,
-     * viewIDs are not the same as the index of the view in the view array over
-     * time. Use getViewsCount() to know the minimal nSize that's large enough.
-     *
-     * @param pArray the array to write the viewIDs into
-     * @param nSize the size of pArray
-     * @returns true if pArray was large enough and result is written, false
-     * otherwise.
-     */
-    inline int getViewIds(int* pArray, size_t nSize)
-    {
-        return _pDoc->pClass->getViewIds(_pDoc, pArray, nSize);
+        return mpDoc->pClass->getViewsCount(mpDoc);
     }
 
     /**
-     * Paints a font name to be displayed in the font list
+     * Paints a font name or character if provided to be displayed in the font 
list
      * @param pFontName the font to be painted
      */
     inline unsigned char* renderFont(const char *pFontName,
@@ -465,7 +412,7 @@ public:
                           int *pFontWidth,
                           int *pFontHeight)
     {
-        return _pDoc->pClass->renderFont(_pDoc, pFontName, pChar, pFontWidth, 
pFontHeight);
+        return mpDoc->pClass->renderFont(mpDoc, pFontName, pChar, pFontWidth, 
pFontHeight);
     }
 
     /**
@@ -483,12 +430,28 @@ public:
                               const int nTileWidth,
                               const int nTileHeight)
     {
-        return _pDoc->pClass->paintPartTile(_pDoc, pBuffer, nPart,
+        return mpDoc->pClass->paintPartTile(mpDoc, pBuffer, nPart,
                                             nCanvasWidth, nCanvasHeight,
                                             nTilePosX, nTilePosY,
                                             nTileWidth, nTileHeight);
     }
 
+    /**
+     * Returns the viewID for each existing view. Since viewIDs are not reused,
+     * viewIDs are not the same as the index of the view in the view array over
+     * time. Use getViewsCount() to know the minimal nSize that's large enough.
+     *
+     * @param pArray the array to write the viewIDs into
+     * @param nSize the size of pArray
+     * @returns true if pArray was large enough and result is written, false
+     * otherwise.
+     */
+    inline bool getViewIds(int* pArray,
+                           size_t nSize)
+    {
+        return mpDoc->pClass->getViewIds(mpDoc, pArray, nSize);
+    }
+
 #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY
 };
 
@@ -496,44 +459,17 @@ public:
 class Office
 {
 private:
-    LibreOfficeKit* _pOffice;
-    std::mutex _mutex;
+    LibreOfficeKit* mpThis;
 
 public:
     /// A lok::Office is typically created by the lok_cpp_init() function.
     inline Office(LibreOfficeKit* pThis) :
-        _pOffice(pThis),
-        _mutex()
-    {
-        Log::trace("lok::Office ctor.");
-        assert(_pOffice);
-    }
+        mpThis(pThis)
+    {}
 
     inline ~Office()
     {
-        std::unique_lock<std::mutex> lock(_mutex);
-        Log::trace("lok::~Office dtor.");
-        try
-        {
-            _pOffice->pClass->destroy(_pOffice);
-        }
-        catch (const std::exception& ex)
-        {
-            LOG_ERR("Exception while destroying LibreOfficeKit instance: " << 
ex.what());
-        }
-    }
-
-    /// This lock must be held while calling
-    /// one or more member of this class.
-    std::unique_lock<std::mutex> getLock()
-    {
-        return std::unique_lock<std::mutex>(_mutex);
-    }
-
-    /// Gives access to the underlying C pointer.
-    inline LibreOfficeKit* get()
-    {
-        return _pOffice;
+        mpThis->pClass->destroy(mpThis);
     }
 
     /**
@@ -541,37 +477,53 @@ public:
      *
      * @param pUrl the URL of the document to load
      * @param pFilterOptions options for the import filter, e.g. SkipImages.
+     * @since pFilterOptions argument added in LibreOffice 5.0
      */
-    inline std::shared_ptr<Document> documentLoad(const char* pUrl, const 
char* pFilterOptions = NULL)
+    inline Document* documentLoad(const char* pUrl, const char* pFilterOptions 
= NULL)
     {
-        Log::trace() << "lok::Office: documentLoad: URL: [" << pUrl
-                     << "], FilterOptions: [" << pFilterOptions
-                     << "]." << Log::end;
         LibreOfficeKitDocument* pDoc = NULL;
 
-        if (LIBREOFFICEKIT_HAS(_pOffice, documentLoadWithOptions))
-            pDoc = _pOffice->pClass->documentLoadWithOptions(_pOffice, pUrl, 
pFilterOptions);
+        if (LIBREOFFICEKIT_HAS(mpThis, documentLoadWithOptions))
+            pDoc = mpThis->pClass->documentLoadWithOptions(mpThis, pUrl, 
pFilterOptions);
         else
-            pDoc = _pOffice->pClass->documentLoad(_pOffice, pUrl);
+            pDoc = mpThis->pClass->documentLoad(mpThis, pUrl);
 
-        return std::make_shared<lok::Document>(pDoc);
+        if (pDoc == NULL)
+            return NULL;
+
+        return new Document(pDoc);
     }
 
     /// Returns the last error as a string, the returned pointer has to be 
freed by the caller.
     inline char* getError()
     {
-        return _pOffice->pClass->getError(_pOffice);
+        return mpThis->pClass->getError(mpThis);
     }
 
-    /// Frees the memory pointed to by pFree.
+    /**
+     * Frees the memory pointed to by pFree.
+     *
+     * @since LibreOffice 5.2
+     */
     inline void freeError(char* pFree)
     {
-        _pOffice->pClass->freeError(pFree);
+        mpThis->pClass->freeError(pFree);
     }
 
-
 #if defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY
     /**
+     * Registers a callback. LOK will invoke this function when it wants to
+     * inform the client about events.
+     *
+     * @param pCallback the callback to invoke
+     * @param pData the user data, will be passed to the callback on invocation
+     */
+    inline void registerCallback(LibreOfficeKitCallback pCallback, void* pData)
+    {
+        mpThis->pClass->registerCallback(mpThis, pCallback, pData);
+    }
+
+    /**
      * Returns details of filter types.
      *
      * Example returned string:
@@ -587,7 +539,7 @@ public:
      */
     inline char* getFilterTypes()
     {
-        return _pOffice->pClass->getFilterTypes(_pOffice);
+        return mpThis->pClass->getFilterTypes(mpThis);
     }
 
     /**
@@ -597,7 +549,7 @@ public:
      */
     void setOptionalFeatures(uint64_t features)
     {
-        return _pOffice->pClass->setOptionalFeatures(_pOffice, features);
+        return mpThis->pClass->setOptionalFeatures(mpThis, features);
     }
 
     /**
@@ -621,26 +573,38 @@ public:
      */
     inline void setDocumentPassword(char const* pURL, char const* pPassword)
     {
-        _pOffice->pClass->setDocumentPassword(_pOffice, pURL, pPassword);
+        mpThis->pClass->setDocumentPassword(mpThis, pURL, pPassword);
     }
 
     /**
      * Get version information of the LOKit process
      *
-     * @returns string containing version information in format:
-     * PRODUCT_NAME PRODUCT_VERSION PRODUCT_EXTENSION BUILD_ID
+     * @returns JSON string containing version information in format:
+     * {ProductName: <>, ProductVersion: <>, ProductExtension: <>, BuildId: <>}
      *
-     * Eg: LibreOffice 5.3 .0.0 alpha0 <commit hash>
+     * Eg: {"ProductName": "LibreOffice",
+     * "ProductVersion": "5.3",
+     * "ProductExtension": ".0.0.alpha0",
+     * "BuildId": "<full 40 char git hash>"}
      */
     inline char* getVersionInfo()
     {
-        return _pOffice->pClass->getVersionInfo(_pOffice);
+        return mpThis->pClass->getVersionInfo(mpThis);
     }
 #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY
 };
 
+/// Factory method to create a lok::Office instance.
+inline Office* lok_cpp_init(const char* pInstallPath, const char* 
pUserProfileUrl = NULL)
+{
+    LibreOfficeKit* pThis = lok_init_2(pInstallPath, pUserProfileUrl);
+    if (pThis == NULL || pThis->pClass->nSize == 0)
+        return NULL;
+    return new ::lok::Office(pThis);
+}
+
 }
 
-#endif // INCLUDED_LIBREOFFICEKIT_HPP
+#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/loolwsd/test/WhiteBoxTests.cpp b/loolwsd/test/WhiteBoxTests.cpp
index fd3814a..2224619 100644
--- a/loolwsd/test/WhiteBoxTests.cpp
+++ b/loolwsd/test/WhiteBoxTests.cpp
@@ -154,26 +154,33 @@ class DummyDocument : public IDocumentManager
 {
     std::shared_ptr<TileQueue> _tileQueue;
     std::mutex _mutex;
+    std::mutex _documentMutex;
 public:
     DummyDocument()
         : _tileQueue(new TileQueue()),
-        _mutex()
+        _mutex(),
+        _documentMutex()
     {
     }
-    std::shared_ptr<lok::Document> onLoad(const std::string& /*sessionId*/,
-                                          const std::string& 
/*jailedFilePath*/,
-                                          const std::string& /*userName*/,
-                                          const std::string& /*docPassword*/,
-                                          const std::string& /*renderOpts*/,
-                                          const bool /*haveDocPassword*/) 
override
+    bool onLoad(const std::string& /*sessionId*/,
+                const std::string& /*jailedFilePath*/,
+                const std::string& /*userName*/,
+                const std::string& /*docPassword*/,
+                const std::string& /*renderOpts*/,
+                const bool /*haveDocPassword*/) override
     {
-        return nullptr;
+        return false;
     }
 
     void onUnload(const ChildSession& /*session*/) override
     {
     }
 
+    std::shared_ptr<lok::Document> getLOKitDocument() override
+    {
+        return nullptr;
+    }
+
     void notifyViewInfo(const std::vector<int>& /*viewIds*/) override
     {
     }
@@ -188,6 +195,11 @@ public:
         return _mutex;
     }
 
+    std::mutex& getDocumentMutex() override
+    {
+        return _mutex;
+    }
+
     std::shared_ptr<TileQueue>& getTileQueue() override
     {
         return _tileQueue;
commit cba0d38db64c97e7b5fd5a24f731d0836722f68f
Author: Andras Timar <andras.ti...@collabora.com>
Date:   Tue Nov 15 10:27:45 2016 +0100

    loleaflet: Translation of Special Characters dialog from LibreOffice core
    
    (cherry picked from commit d02f4bf753cceb575677d248edf36b89f83983f9)

diff --git a/loleaflet/po/styles/ab.po b/loleaflet/po/styles/ab.po
index 16be6d2..1243e06 100644
--- a/loleaflet/po/styles/ab.po
+++ b/loleaflet/po/styles/ab.po
@@ -1904,3 +1904,5 @@ msgid "Last column"
 msgstr ""
 
 # Translations of Unicode subsets from LibreOffice core
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/af.po b/loleaflet/po/styles/af.po
index 015b0e7..7510056 100644
--- a/loleaflet/po/styles/af.po
+++ b/loleaflet/po/styles/af.po
@@ -2260,3 +2260,13 @@ msgstr "Bopomofo uitgebrei"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "Katakana fonetiese simbole"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Fontnaam:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Spesiale karakters"
diff --git a/loleaflet/po/styles/am.po b/loleaflet/po/styles/am.po
index c74c68e..658a307 100644
--- a/loleaflet/po/styles/am.po
+++ b/loleaflet/po/styles/am.po
@@ -2231,3 +2231,17 @@ msgstr "Shorthand አቀራረብ መቆጣጠሪያ"
 #: ucsubset.src
 msgid "Supplemental Arrows-C"
 msgstr "ተጨማሪ ቀስቶች-C"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "የፊደሉ ስም:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "የተለዩ ባህሪዎች"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "ቅድመ እይታ:"
diff --git a/loleaflet/po/styles/an.po b/loleaflet/po/styles/an.po
index 711a1c3..8cc53fc 100644
--- a/loleaflet/po/styles/an.po
+++ b/loleaflet/po/styles/an.po
@@ -1944,3 +1944,5 @@ msgid "Last column"
 msgstr ""
 
 # Translations of Unicode subsets from LibreOffice core
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/ar.po b/loleaflet/po/styles/ar.po
index 40641a7..c2fd110 100644
--- a/loleaflet/po/styles/ar.po
+++ b/loleaflet/po/styles/ar.po
@@ -2900,3 +2900,17 @@ msgstr "سُنداني تكميلي"
 #: ucsubset.src
 msgid "Takri"
 msgstr "تاكري"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "اسم الخط:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "أحرف خاصة"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "معاينة:"
diff --git a/loleaflet/po/styles/as.po b/loleaflet/po/styles/as.po
index 5418693..9a06e20 100644
--- a/loleaflet/po/styles/as.po
+++ b/loleaflet/po/styles/as.po
@@ -2884,3 +2884,13 @@ msgstr "চুণ্ডানিচ 
পৰিপূৰিকা"
 #: ucsubset.src
 msgid "Takri"
 msgstr "টাক্ৰি"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ফন্টৰ নাম:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "বিশেষ আখৰসমূহ"
diff --git a/loleaflet/po/styles/ast.po b/loleaflet/po/styles/ast.po
index ad3fd18..ee81f3a 100644
--- a/loleaflet/po/styles/ast.po
+++ b/loleaflet/po/styles/ast.po
@@ -2704,3 +2704,13 @@ msgstr "Xeroglíficos meroíticos"
 #: ucsubset.src
 msgid "Sundanese Supplement"
 msgstr "Suplementu de sundanés"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nome de fonte:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caráuteres especiales"
diff --git a/loleaflet/po/styles/be.po b/loleaflet/po/styles/be.po
index 8b9e97a..0a7afbf 100644
--- a/loleaflet/po/styles/be.po
+++ b/loleaflet/po/styles/be.po
@@ -2361,3 +2361,9 @@ msgstr "Старажытнагрэчаскія лічбы"
 #: ucsubset.src
 msgid "Arabic Supplement"
 msgstr "Арабскія, дадатак"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Адмысловыя знакі"
diff --git a/loleaflet/po/styles/bg.po b/loleaflet/po/styles/bg.po
index 9f4b606..afef181 100644
--- a/loleaflet/po/styles/bg.po
+++ b/loleaflet/po/styles/bg.po
@@ -3063,3 +3063,21 @@ msgstr "Допълнителни символи и 
пиктограми"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Жестово писмо на Сътън"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Име на шрифт:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Специални знаци"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Шестнайсетично:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Мостра:"
diff --git a/loleaflet/po/styles/bn-IN.po b/loleaflet/po/styles/bn-IN.po
index 3856972..9017b2f 100644
--- a/loleaflet/po/styles/bn-IN.po
+++ b/loleaflet/po/styles/bn-IN.po
@@ -2796,3 +2796,17 @@ msgstr "সুদানিজ 
সাপ্লিমেন্ট"
 #: ucsubset.src
 msgid "Takri"
 msgstr "টাকরি"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ফন্টের নাম:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "বিশেষ অক্ষর"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "প্রাকদর্শন:"
diff --git a/loleaflet/po/styles/bn.po b/loleaflet/po/styles/bn.po
index 370cf89..e199c9b 100644
--- a/loleaflet/po/styles/bn.po
+++ b/loleaflet/po/styles/bn.po
@@ -2367,3 +2367,13 @@ msgstr "বোপোমোফো বর্ধিত"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "কাটাকানা ফনেটিক্স"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ফন্টের নাম:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "বিশেষ অক্ষর"
diff --git a/loleaflet/po/styles/bo.po b/loleaflet/po/styles/bo.po
index ddc96a8..8b4e234 100644
--- a/loleaflet/po/styles/bo.po
+++ b/loleaflet/po/styles/bo.po
@@ -2223,3 +2223,9 @@ msgstr 
"ཞོར་སྣོན་གྱི་སྒྲ་སྦྱོར་མ
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr 
"སྒྲ་བཀོད་ཀྱི་གཞུང་སྤྱོད་ཀྱི་ཡི་གེ།"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ཡིག་གཟུགས།:"
diff --git a/loleaflet/po/styles/br.po b/loleaflet/po/styles/br.po
index d975fa2..ae27928 100644
--- a/loleaflet/po/styles/br.po
+++ b/loleaflet/po/styles/br.po
@@ -2956,3 +2956,21 @@ msgstr "Arouezioù ha keallunioù ouzhpenn"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Skrivadur an arouezioù mod Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Anv an nodrezh:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Arouezennoù arbennik"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "C'hwezekredel :"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Alberz :"
diff --git a/loleaflet/po/styles/brx.po b/loleaflet/po/styles/brx.po
index 6083c15..a6ce800 100644
--- a/loleaflet/po/styles/brx.po
+++ b/loleaflet/po/styles/brx.po
@@ -1934,3 +1934,9 @@ msgstr "थोंगोरै थानाय 
बिमुं, थोंगो
 #: ucsubset.src
 msgid "Thai"
 msgstr "थाइ"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "फन्टनि मुं:"
diff --git a/loleaflet/po/styles/bs.po b/loleaflet/po/styles/bs.po
index dfe978c..18330f6 100644
--- a/loleaflet/po/styles/bs.po
+++ b/loleaflet/po/styles/bs.po
@@ -2754,3 +2754,13 @@ msgstr "Å arada"
 #: ucsubset.src
 msgid "Sundanese Supplement"
 msgstr "Sundanski dodatni"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Vrsta slova:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Posebni znakovi"
diff --git a/loleaflet/po/styles/ca-valencia.po 
b/loleaflet/po/styles/ca-valencia.po
index 9f5babd..2b0d3f4 100644
--- a/loleaflet/po/styles/ca-valencia.po
+++ b/loleaflet/po/styles/ca-valencia.po
@@ -2860,3 +2860,17 @@ msgstr "Símbols i pictogrames suplementaris"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Transcripció Sutton de llengües de signes"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nom del tipus de lletra:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caràcters especials"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Previsualització:"
diff --git a/loleaflet/po/styles/ca.po b/loleaflet/po/styles/ca.po
index d2471aa..7b25fae 100644
--- a/loleaflet/po/styles/ca.po
+++ b/loleaflet/po/styles/ca.po
@@ -2860,3 +2860,17 @@ msgstr "Símbols i pictogrames suplementaris"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Transcripció Sutton de llengües de signes"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nom del tipus de lletra:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caràcters especials"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Previsualització:"
diff --git a/loleaflet/po/styles/cs.po b/loleaflet/po/styles/cs.po
index 800dd4d..879897f 100644
--- a/loleaflet/po/styles/cs.po
+++ b/loleaflet/po/styles/cs.po
@@ -2899,3 +2899,21 @@ msgstr "Doplňkové symboly a piktogramy"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Znakopis Suttonové"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Název písma:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Speciální znaky"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Še_stnáctkově:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Náhled:"
diff --git a/loleaflet/po/styles/cy.po b/loleaflet/po/styles/cy.po
index 819e369..564b7b5 100644
--- a/loleaflet/po/styles/cy.po
+++ b/loleaflet/po/styles/cy.po
@@ -2720,3 +2720,21 @@ msgstr "Symbolau a Phictograffau Ychwanegol"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Ysgrif Arwydd Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Enw Ffont:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Nodau Arbennig"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Hecsadegol:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Rhagolwg:"
diff --git a/loleaflet/po/styles/da.po b/loleaflet/po/styles/da.po
index 2a9a710..0f80e28 100644
--- a/loleaflet/po/styles/da.po
+++ b/loleaflet/po/styles/da.po
@@ -2768,3 +2768,17 @@ msgstr "Supplerende symboler og pictogrammer"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton tegnsprogskrift"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Skrifttypenavn:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Specialtegn"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Forhåndsvisning:"
diff --git a/loleaflet/po/styles/de.po b/loleaflet/po/styles/de.po
index 7f1c17e..36f5ade 100644
--- a/loleaflet/po/styles/de.po
+++ b/loleaflet/po/styles/de.po
@@ -2843,3 +2843,21 @@ msgstr "Verschiedene piktografische Symbole, Ergänzung"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton-Zeichenschrift"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Schriftart:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Sonderzeichen"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Hexadezimal:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Vorschau:"
diff --git a/loleaflet/po/styles/dgo.po b/loleaflet/po/styles/dgo.po
index 6fa33b5..5e2c43d 100644
--- a/loleaflet/po/styles/dgo.po
+++ b/loleaflet/po/styles/dgo.po
@@ -2341,3 +2341,9 @@ msgstr "कोप्टिक"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "भाव-आइकन"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "फॉट-नांऽ :"
diff --git a/loleaflet/po/styles/dz.po b/loleaflet/po/styles/dz.po
index e78450c..c91fb53 100644
--- a/loleaflet/po/styles/dz.po
+++ b/loleaflet/po/styles/dz.po
@@ -2329,3 +2329,9 @@ msgstr 
"བོ་པོ་མོ་ཕོ་རྒྱ་བསྐྱེད་ཅ
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "ཀ་ཊ་ཀ་ན་སྒྲ་རྟགས་ཚུ།"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ཡིག་གཟུགས་མིང་།:"
diff --git a/loleaflet/po/styles/el.po b/loleaflet/po/styles/el.po
index 0d39340..80deea4 100644
--- a/loleaflet/po/styles/el.po
+++ b/loleaflet/po/styles/el.po
@@ -3068,3 +3068,21 @@ msgstr "Συμπλήρωμα συμβόλων και 
εικονογραμμάτ
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Γραφή συμβόλων Σάτον"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Όνομα γραμματοσειράς:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Ειδικοί χαρακτήρες"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Δεκαεξαδικό:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Προεπισκόπηση:"
diff --git a/loleaflet/po/styles/en-GB.po b/loleaflet/po/styles/en-GB.po
index 4263d97..cc43ef0 100644
--- a/loleaflet/po/styles/en-GB.po
+++ b/loleaflet/po/styles/en-GB.po
@@ -1920,3 +1920,5 @@ msgstr "Canadian Aboriginal Syllables"
 #: ucsubset.src
 msgid "Kangxi Radicals"
 msgstr "Kanxi Radicals"
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/en-ZA.po b/loleaflet/po/styles/en-ZA.po
index 3f1e509..3968d02 100644
--- a/loleaflet/po/styles/en-ZA.po
+++ b/loleaflet/po/styles/en-ZA.po
@@ -1923,3 +1923,5 @@ msgid "Last column"
 msgstr "Last column"
 
 # Translations of Unicode subsets from LibreOffice core
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/eo.po b/loleaflet/po/styles/eo.po
index fcad752..00096d6 100644
--- a/loleaflet/po/styles/eo.po
+++ b/loleaflet/po/styles/eo.po
@@ -3012,3 +3012,21 @@ msgstr "Suplementaj simboloj kaj bildsimboloj"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton-gestoskribo"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Tipara nomo:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Specialaj signoj"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Deksesuma:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "AntaÅ­vido:"
diff --git a/loleaflet/po/styles/es.po b/loleaflet/po/styles/es.po
index 83ef998..3b7e237 100644
--- a/loleaflet/po/styles/es.po
+++ b/loleaflet/po/styles/es.po
@@ -2900,3 +2900,17 @@ msgstr "Símbolos y pictogramas suplementarios"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Transcripción de lenguas de señas de Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nombre del tipo de letra:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caracteres especiales"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Previsualización:"
diff --git a/loleaflet/po/styles/et.po b/loleaflet/po/styles/et.po
index c4b5937..846ced1 100644
--- a/loleaflet/po/styles/et.po
+++ b/loleaflet/po/styles/et.po
@@ -2976,3 +2976,21 @@ msgstr "Täiendavad sümbolid ja piktogrammid"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Suttoni viipekiri"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Fondi nimi:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Erimärgid"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "16ndkood:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Eelvaade:"
diff --git a/loleaflet/po/styles/eu.po b/loleaflet/po/styles/eu.po
index 2735f40..28ebd0e 100644
--- a/loleaflet/po/styles/eu.po
+++ b/loleaflet/po/styles/eu.po
@@ -2828,3 +2828,21 @@ msgstr "Ikur eta piktografia osagarriak"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton keinu-idazkera"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Letra-tipoaren izena:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Karaktere bereziak"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Hexadezimala:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Aurrebista:"
diff --git a/loleaflet/po/styles/fa.po b/loleaflet/po/styles/fa.po
index 0a2427a..dbb4456 100644
--- a/loleaflet/po/styles/fa.po
+++ b/loleaflet/po/styles/fa.po
@@ -2037,3 +2037,13 @@ msgstr "خمری"
 #: ucsubset.src
 msgid "Mongolian"
 msgstr "مغولی"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "نام قلم:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "نویسه‌های ویژه"
diff --git a/loleaflet/po/styles/fi.po b/loleaflet/po/styles/fi.po
index 41c5293..e03a28a 100644
--- a/loleaflet/po/styles/fi.po
+++ b/loleaflet/po/styles/fi.po
@@ -2812,3 +2812,21 @@ msgstr "Symboleita ja piktogrammeja (laajennus)"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Suttonin viittomakirjoitus"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Fontin nimi:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Lisää erikoismerkki"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Heksadesimaali:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Esikatselu:"
diff --git a/loleaflet/po/styles/fr.po b/loleaflet/po/styles/fr.po
index 1406191..dbb036c 100644
--- a/loleaflet/po/styles/fr.po
+++ b/loleaflet/po/styles/fr.po
@@ -2795,3 +2795,21 @@ msgstr "Hongrois ancien"
 #: ucsubset.src
 msgid "Supplemental Symbols And Pictographs"
 msgstr "Symboles et pictogrammes additionnels"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nom de police:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caractères spéciaux"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Hexadécimal :"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Aperçu :"
diff --git a/loleaflet/po/styles/ga.po b/loleaflet/po/styles/ga.po
index 7244bab..2854c8e 100644
--- a/loleaflet/po/styles/ga.po
+++ b/loleaflet/po/styles/ga.po
@@ -2724,3 +2724,17 @@ msgstr "Mongais"
 #: ucsubset.src
 msgid "Sundanese Supplement"
 msgstr "Forlíonadh Sundánach"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Ainm an Chló:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Carachtair Speisialta"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Réamhamharc:"
diff --git a/loleaflet/po/styles/gd.po b/loleaflet/po/styles/gd.po
index b6c2c1b..cf8448d 100644
--- a/loleaflet/po/styles/gd.po
+++ b/loleaflet/po/styles/gd.po
@@ -2812,3 +2812,21 @@ msgstr "Foirlionadh Shamhlaidhean is Dealbhan"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Comharran Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Ainm a' chruth-chlò:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caractaran sònraichte"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Sia-dheicheach:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Ro-shealladh:"
diff --git a/loleaflet/po/styles/gl.po b/loleaflet/po/styles/gl.po
index 92b8781..8ce76dd 100644
--- a/loleaflet/po/styles/gl.po
+++ b/loleaflet/po/styles/gl.po
@@ -2836,3 +2836,17 @@ msgstr "Símbolos e pictogramas suplementarios"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Escrita de sinais de Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nome de tipo de letra:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caracteres especiais"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Visualización:"
diff --git a/loleaflet/po/styles/gu.po b/loleaflet/po/styles/gu.po
index ad16c35..b85e838 100644
--- a/loleaflet/po/styles/gu.po
+++ b/loleaflet/po/styles/gu.po
@@ -2888,3 +2888,13 @@ msgstr "સુદાનિઝ પૂર્તિ"
 #: ucsubset.src
 msgid "Takri"
 msgstr "તકરી"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ફોન્ટનું નામ:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "વિશિષ્ટ અક્ષરો"
diff --git a/loleaflet/po/styles/gug.po b/loleaflet/po/styles/gug.po
index 0b52984..6b008c4 100644
--- a/loleaflet/po/styles/gug.po
+++ b/loleaflet/po/styles/gug.po
@@ -2042,3 +2042,17 @@ msgstr "Javanés"
 #: ucsubset.src
 msgid "Transport And Map Symbols"
 msgstr "Transporte ha Símbolos de Mapa"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Téra Letra Háicha:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Teko Poravopyre kuéra"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Techauka Mboyve:"
diff --git a/loleaflet/po/styles/he.po b/loleaflet/po/styles/he.po
index 48dc486..343dfbc 100644
--- a/loleaflet/po/styles/he.po
+++ b/loleaflet/po/styles/he.po
@@ -2500,3 +2500,17 @@ msgstr "סמלי הבעה"
 #: ucsubset.src
 msgid "Sundanese Supplement"
 msgstr "השלמה לסונדית"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "שם גופן:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "תווים מיוחדים"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "תצוגה מקדימה:"
diff --git a/loleaflet/po/styles/hi.po b/loleaflet/po/styles/hi.po
index 2d4c61c..fc43d62 100644
--- a/loleaflet/po/styles/hi.po
+++ b/loleaflet/po/styles/hi.po
@@ -2843,3 +2843,13 @@ msgstr "सुडानी संपूरक"
 #: ucsubset.src
 msgid "Takri"
 msgstr "तकरी"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "फ़ॉन्ट नाम:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "विशिष्ट अक्षर"
diff --git a/loleaflet/po/styles/hr.po b/loleaflet/po/styles/hr.po
index ed73b4d..a8823c7 100644
--- a/loleaflet/po/styles/hr.po
+++ b/loleaflet/po/styles/hr.po
@@ -2752,3 +2752,21 @@ msgstr "Nadomjesni simboli i piktografi"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton znakovno pismo"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Naziv fonta:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Posebni znakovi"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Heksadecimalno:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Pregled:"
diff --git a/loleaflet/po/styles/hu.po b/loleaflet/po/styles/hu.po
index 41431b4..bf85e78 100644
--- a/loleaflet/po/styles/hu.po
+++ b/loleaflet/po/styles/hu.po
@@ -2776,3 +2776,21 @@ msgstr "Kiegészítő szimbólumok és piktogramok"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton-féle jelnyelv"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Betűkészlet neve:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Különleges karakterek"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Hexadecimális:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Előnézet:"
diff --git a/loleaflet/po/styles/id.po b/loleaflet/po/styles/id.po
index 636b482..1708018 100644
--- a/loleaflet/po/styles/id.po
+++ b/loleaflet/po/styles/id.po
@@ -2655,3 +2655,21 @@ msgstr "Permik Kuno"
 #: ucsubset.src
 msgid "Supplemental Arrows-C"
 msgstr "Suplemen Panah-C"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nama Fonta:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Karakter Khusus"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Heksadesimal:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Pratilik:"
diff --git a/loleaflet/po/styles/is.po b/loleaflet/po/styles/is.po
index e519266..97beef1 100644
--- a/loleaflet/po/styles/is.po
+++ b/loleaflet/po/styles/is.po
@@ -2820,3 +2820,21 @@ msgstr "Ýmis aukaleg tákn og myndmerki"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton táknskrift"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Heiti leturgerðar:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Sértákn"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Sextándakerfis:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Forskoðun:"
diff --git a/loleaflet/po/styles/it.po b/loleaflet/po/styles/it.po
index f10f284..78c3300 100644
--- a/loleaflet/po/styles/it.po
+++ b/loleaflet/po/styles/it.po
@@ -2763,3 +2763,21 @@ msgstr "Simboli e pittogrammi supplementari"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sign Writing di Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nome del carattere:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caratteri speciali"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Esadecimale:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Anteprima:"
diff --git a/loleaflet/po/styles/ja.po b/loleaflet/po/styles/ja.po
index 3fca189..cfed9db 100644
--- a/loleaflet/po/styles/ja.po
+++ b/loleaflet/po/styles/ja.po
@@ -2923,3 +2923,17 @@ msgstr "補助矢印C"
 #: ucsubset.src
 msgid "CJK Unified Ideographs Extension E"
 msgstr "CJK統合漢字拡張E"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "フォント名:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "特殊文字"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "プレビュー:"
diff --git a/loleaflet/po/styles/ka.po b/loleaflet/po/styles/ka.po
index d181020..ab3f6bc 100644
--- a/loleaflet/po/styles/ka.po
+++ b/loleaflet/po/styles/ka.po
@@ -2270,3 +2270,13 @@ msgstr "კატაკანას 
ფონეტიკა"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "სიცილაკი"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "შრიფტის სახელი:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "სპეციალური სიმბოლოები"
diff --git a/loleaflet/po/styles/kk.po b/loleaflet/po/styles/kk.po
index 7f93ad3..a960ee5 100644
--- a/loleaflet/po/styles/kk.po
+++ b/loleaflet/po/styles/kk.po
@@ -3055,3 +3055,21 @@ msgstr "Қосымша таңбалар және 
пиктограммалар"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Саттон ым жазуы"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Қаріп аты:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Арнайы таңбалар"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Оналтылық:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Алдын-ала қарау:"
diff --git a/loleaflet/po/styles/kl.po b/loleaflet/po/styles/kl.po
index 083ba41..046d643 100644
--- a/loleaflet/po/styles/kl.po
+++ b/loleaflet/po/styles/kl.po
@@ -1904,3 +1904,5 @@ msgid "Last column"
 msgstr ""
 
 # Translations of Unicode subsets from LibreOffice core
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/km.po b/loleaflet/po/styles/km.po
index 92463ba..31c4fd9 100644
--- a/loleaflet/po/styles/km.po
+++ b/loleaflet/po/styles/km.po
@@ -2688,3 +2688,13 @@ msgstr 
"ផ្នែក​បន្ថែម​របស់ Meetei Mayek"
 #: ucsubset.src
 msgid "Sundanese Supplement"
 msgstr "ស៊ូដង់​បង្គ្រប់"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ឈ្មោះ​ពុម្ពអក្សរ:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "តួអក្សរ​ពិសេស"
diff --git a/loleaflet/po/styles/kmr-Latn.po b/loleaflet/po/styles/kmr-Latn.po
index aaf51b4..e9ddfd1 100644
--- a/loleaflet/po/styles/kmr-Latn.po
+++ b/loleaflet/po/styles/kmr-Latn.po
@@ -2155,3 +2155,13 @@ msgstr "Sembolên Matematîkî ên Cûr Bi Cûr-A"
 #: ucsubset.src
 msgid "Bopomofo Extended"
 msgstr "Bopomofoya Berfirehkirî"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Navê Fontê:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Tîpa Taybet"
diff --git a/loleaflet/po/styles/kn.po b/loleaflet/po/styles/kn.po
index 2e6e3e4..71ceaa2 100644
--- a/loleaflet/po/styles/kn.po
+++ b/loleaflet/po/styles/kn.po
@@ -2880,3 +2880,13 @@ msgstr "ಸುಂಡಾನೀಸ್ ಪೂರಕ"
 #: ucsubset.src
 msgid "Takri"
 msgstr "ಟಕ್ರಿ"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ಅಕ್ಷರ ಶೈಲಿ ಹೆಸರು:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "ವಿಶೇಷ ಅಕ್ಷರಗಳು"
diff --git a/loleaflet/po/styles/ko.po b/loleaflet/po/styles/ko.po
index 7bd702f..84b8030 100644
--- a/loleaflet/po/styles/ko.po
+++ b/loleaflet/po/styles/ko.po
@@ -2694,3 +2694,13 @@ msgstr "메이테이 문자 확장"
 #: ucsubset.src
 msgid "Meroitic Cursive"
 msgstr "메로에 문자 흘림체"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "글꼴 이름:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "특수문자"
diff --git a/loleaflet/po/styles/kok.po b/loleaflet/po/styles/kok.po
index ada66eb..41e1666 100644
--- a/loleaflet/po/styles/kok.po
+++ b/loleaflet/po/styles/kok.po
@@ -2263,3 +2263,9 @@ msgstr "बोपोमोफो विस्तृत"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "कटकना फोनेटिक्स"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "अक्षरसंच नांव:"
diff --git a/loleaflet/po/styles/ks.po b/loleaflet/po/styles/ks.po
index 6772c93..d718378 100644
--- a/loleaflet/po/styles/ks.po
+++ b/loleaflet/po/styles/ks.po
@@ -1945,3 +1945,9 @@ msgstr "كھڈا عنوان، كھڈا مواد"
 #: ucsubset.src
 msgid "Thai"
 msgstr "تھائی لینڈ"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "فانٹ نام:"
diff --git a/loleaflet/po/styles/ky.po b/loleaflet/po/styles/ky.po
index 16be6d2..1243e06 100644
--- a/loleaflet/po/styles/ky.po
+++ b/loleaflet/po/styles/ky.po
@@ -1904,3 +1904,5 @@ msgid "Last column"
 msgstr ""
 
 # Translations of Unicode subsets from LibreOffice core
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/lb.po b/loleaflet/po/styles/lb.po
index 9cd12a6..0aef916 100644
--- a/loleaflet/po/styles/lb.po
+++ b/loleaflet/po/styles/lb.po
@@ -1984,3 +1984,5 @@ msgstr "Ethiopesch"
 #: ucsubset.src
 msgid "Mongolian"
 msgstr "Mongolesch"
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/lo.po b/loleaflet/po/styles/lo.po
index d5cd540..7ba7df4 100644
--- a/loleaflet/po/styles/lo.po
+++ b/loleaflet/po/styles/lo.po
@@ -1965,3 +1965,9 @@ msgstr "ໄທ"
 #: ucsubset.src
 msgid "Arrows"
 msgstr "ລູກສອນ"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ຊື່ແບບຕົວອັກສອນ:"
diff --git a/loleaflet/po/styles/lt.po b/loleaflet/po/styles/lt.po
index 4d5e37f..38efedb 100644
--- a/loleaflet/po/styles/lt.po
+++ b/loleaflet/po/styles/lt.po
@@ -2464,3 +2464,21 @@ msgstr "Lotynų plėtinys E"
 #: ucsubset.src
 msgid "Supplemental Arrows-C"
 msgstr "Papildomos rodyklės-C"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Å rifto pavadinimas:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Specialieji rašmenys"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Šešioliktainis:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Peržiūra:"
diff --git a/loleaflet/po/styles/lv.po b/loleaflet/po/styles/lv.po
index 7e53d1c..b71e417 100644
--- a/loleaflet/po/styles/lv.po
+++ b/loleaflet/po/styles/lv.po
@@ -2956,3 +2956,21 @@ msgstr "Papildu simboli un piktogrammas"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutona zīmju rakstība"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Fonta nosaukums:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Īpašās rakstzīmes"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Heksadecimālais:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Priekšskatījums:"
diff --git a/loleaflet/po/styles/mai.po b/loleaflet/po/styles/mai.po
index cf735f0..e0d5e6f 100644
--- a/loleaflet/po/styles/mai.po
+++ b/loleaflet/po/styles/mai.po
@@ -1984,3 +1984,9 @@ msgstr "ख्मेर"
 #: ucsubset.src
 msgid "Mongolian"
 msgstr "मंगोलियाइ"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "फंट नाम:"
diff --git a/loleaflet/po/styles/mk.po b/loleaflet/po/styles/mk.po
index baf4654..de60f2c 100644
--- a/loleaflet/po/styles/mk.po
+++ b/loleaflet/po/styles/mk.po
@@ -1988,3 +1988,9 @@ msgstr "Монголски"
 #: ucsubset.src
 msgid "Tagalog"
 msgstr "Тагалог"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Име на фонт:"
diff --git a/loleaflet/po/styles/ml.po b/loleaflet/po/styles/ml.po
index a18458a..d7e0f0a 100644
--- a/loleaflet/po/styles/ml.po
+++ b/loleaflet/po/styles/ml.po
@@ -2875,3 +2875,13 @@ msgstr "സുഡാനീസ് 
സപ്ലിമെന്റ്"
 #: ucsubset.src
 msgid "Takri"
 msgstr "തക്രി"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ഫോണ്ഡിന്റെ പേര‌്:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "പ്രത്യേക അക്ഷരങ്ങള്‍"
diff --git a/loleaflet/po/styles/mn.po b/loleaflet/po/styles/mn.po
index 7bb73dd..9dd8877 100644
--- a/loleaflet/po/styles/mn.po
+++ b/loleaflet/po/styles/mn.po
@@ -2006,3 +2006,9 @@ msgstr "Монгол хэл"
 #: ucsubset.src
 msgid "Tagalog"
 msgstr "Тагалог хэл"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Фонтын нэр:"
diff --git a/loleaflet/po/styles/mni.po b/loleaflet/po/styles/mni.po
index 6bbcfab..efa8524 100644
--- a/loleaflet/po/styles/mni.po
+++ b/loleaflet/po/styles/mni.po
@@ -1978,3 +1978,9 @@ msgstr "ময়ুং ওইবা মিংথোল,  
ময়ুং ওইবা
 #: ucsubset.src
 msgid "Thai"
 msgstr "থাই"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ফোন্ত মমিং:"
diff --git a/loleaflet/po/styles/mr.po b/loleaflet/po/styles/mr.po
index 9cfbeff..1fe5b3a 100644
--- a/loleaflet/po/styles/mr.po
+++ b/loleaflet/po/styles/mr.po
@@ -2880,3 +2880,13 @@ msgstr "सुदानिज् 
सप्लिमेंट"
 #: ucsubset.src
 msgid "Takri"
 msgstr "तक्रि"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "फाँट् नाव:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "विशेष अक्षरे"
diff --git a/loleaflet/po/styles/my.po b/loleaflet/po/styles/my.po
index 68d089c..2bc9157 100644
--- a/loleaflet/po/styles/my.po
+++ b/loleaflet/po/styles/my.po
@@ -2362,3 +2362,13 @@ msgstr "ကော့တစ်"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "အသုံးပြုသူ၏ စိတ်ခံစ
ားမှုပြ 
ပရိုဂရမ်သင်္ကေတ(အိုင်ကွန်)များ"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ဖောင့်အမည်:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "အထူး အက္ခရာ၊သင်္ကေတများ"
diff --git a/loleaflet/po/styles/nb.po b/loleaflet/po/styles/nb.po
index 772c47d..f292065 100644
--- a/loleaflet/po/styles/nb.po
+++ b/loleaflet/po/styles/nb.po
@@ -2784,3 +2784,21 @@ msgstr "Tilleggssymbol og -piktogram"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton signwriting"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Skriftnavn:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Spesialtegn"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Heksadesimal:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Forhåndsvisning:"
diff --git a/loleaflet/po/styles/ne.po b/loleaflet/po/styles/ne.po
index 21e7980..95a5cbb 100644
--- a/loleaflet/po/styles/ne.po
+++ b/loleaflet/po/styles/ne.po
@@ -2034,3 +2034,13 @@ msgstr "कोप्टिक"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "इमोटाइकोनहरू"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "फन्ट नाम:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "विशेष क्यारेक्टरहरू"
diff --git a/loleaflet/po/styles/nl.po b/loleaflet/po/styles/nl.po
index 2e24f72..f7d4cd1 100644
--- a/loleaflet/po/styles/nl.po
+++ b/loleaflet/po/styles/nl.po
@@ -2780,3 +2780,21 @@ msgstr "Oud Hongaars"
 #: ucsubset.src
 msgid "Supplemental Symbols And Pictographs"
 msgstr "Aanvullende symbolen en pictogrammen"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Lettertype:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Speciale tekens"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Hexadecimaal:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Voorbeeld:"
diff --git a/loleaflet/po/styles/nn.po b/loleaflet/po/styles/nn.po
index 8ade3dd..c53577e 100644
--- a/loleaflet/po/styles/nn.po
+++ b/loleaflet/po/styles/nn.po
@@ -2765,3 +2765,21 @@ msgstr "Tilleggs-symbol og -piktogram"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Sutton signwriting"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Skriftnamn:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Spesialteikn"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Heksadesimal:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Førehandsvising:"
diff --git a/loleaflet/po/styles/nr.po b/loleaflet/po/styles/nr.po
index b845fd7..27f4af2 100644
--- a/loleaflet/po/styles/nr.po
+++ b/loleaflet/po/styles/nr.po
@@ -2293,3 +2293,13 @@ msgstr "I-Bopomofo elulweko"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "I-fonetiki ye-Katakana"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Gama Lefonti:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Amakharektha Akhethekileko"
diff --git a/loleaflet/po/styles/nso.po b/loleaflet/po/styles/nso.po
index baea1b8..ce17be3 100644
--- a/loleaflet/po/styles/nso.po
+++ b/loleaflet/po/styles/nso.po
@@ -2304,3 +2304,9 @@ msgstr "Bopomogo e okeditšwego"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "Sefonetiki sa Katakana"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Leina la fonte:"
diff --git a/loleaflet/po/styles/oc.po b/loleaflet/po/styles/oc.po
index e50f2f8..3265304 100644
--- a/loleaflet/po/styles/oc.po
+++ b/loleaflet/po/styles/oc.po
@@ -2758,3 +2758,21 @@ msgstr "Simbòls e pictogramas suplementaris"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Transcripcion Sutton de lengas de signes"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nom de poliça:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caractèrs especials"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Exadecimal :"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Apercebut :"
diff --git a/loleaflet/po/styles/om.po b/loleaflet/po/styles/om.po
index 3b8fb28..1da6e27 100644
--- a/loleaflet/po/styles/om.po
+++ b/loleaflet/po/styles/om.po
@@ -2310,3 +2310,13 @@ msgstr "Bopoomoofoo Dheerate"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "Xinsagalee Katakaanaa"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Maqaa bocquu:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Arfiilee Addaa"
diff --git a/loleaflet/po/styles/or.po b/loleaflet/po/styles/or.po
index 443612d..77c0ad0 100644
--- a/loleaflet/po/styles/or.po
+++ b/loleaflet/po/styles/or.po
@@ -2866,3 +2866,13 @@ msgstr "ସଣ୍ଡାନିଜ ଅନୁପୁରକ"
 #: ucsubset.src
 msgid "Takri"
 msgstr "ତାକ୍ରି"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ଅକ୍ଷରରୂପ ନାମ:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "ବିଶେଷ ଅକ୍ଷରଗୁଡିକ"
diff --git a/loleaflet/po/styles/pa-IN.po b/loleaflet/po/styles/pa-IN.po
index d519ff3..ca56b07 100644
--- a/loleaflet/po/styles/pa-IN.po
+++ b/loleaflet/po/styles/pa-IN.po
@@ -2384,3 +2384,13 @@ msgstr "ਕੋਪਟੀਕ"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "ਭਾਵ-ਆਈਕਾਨ"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "ਫੋਂਟ ਨਾਂ:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "ਖਾਸ ਅੱਖਰ"
diff --git a/loleaflet/po/styles/pl.po b/loleaflet/po/styles/pl.po
index 307dada..2572dd4 100644
--- a/loleaflet/po/styles/pl.po
+++ b/loleaflet/po/styles/pl.po
@@ -2880,3 +2880,21 @@ msgstr "Uzupełnienie symboli i piktogramów"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Język migowy Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nazwa czcionki:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Znaki specjalne"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Heksadecymalny:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Podgląd:"
diff --git a/loleaflet/po/styles/pt-BR.po b/loleaflet/po/styles/pt-BR.po
index 00c5251..99b3766 100644
--- a/loleaflet/po/styles/pt-BR.po
+++ b/loleaflet/po/styles/pt-BR.po
@@ -2828,3 +2828,17 @@ msgstr "Símbolos e pictogramas suplementares"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Escrita de sinais de Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nome da fonte:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caracteres especiais"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Visualizar:"
diff --git a/loleaflet/po/styles/pt.po b/loleaflet/po/styles/pt.po
index 6d61f1a..6b700a2 100644
--- a/loleaflet/po/styles/pt.po
+++ b/loleaflet/po/styles/pt.po
@@ -2800,3 +2800,17 @@ msgstr "Símbolos e pictogramas suplementares"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Escrita de Sutton"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Nome do tipo de letra:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caracteres especiais"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Pré-visualizar:"
diff --git a/loleaflet/po/styles/ro.po b/loleaflet/po/styles/ro.po
index 8f254eb..961205a 100644
--- a/loleaflet/po/styles/ro.po
+++ b/loleaflet/po/styles/ro.po
@@ -2692,3 +2692,21 @@ msgstr "Simboluri și pictograme suplimentare"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Limbaj mimico-gestual (transcriere Sutton)"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Numele fontului:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Caractere speciale"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Hexazecimal:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Previzualizare:"
diff --git a/loleaflet/po/styles/ru.po b/loleaflet/po/styles/ru.po
index a372684..4f09719 100644
--- a/loleaflet/po/styles/ru.po
+++ b/loleaflet/po/styles/ru.po
@@ -3044,3 +3044,21 @@ msgstr "Дополнительные символы и 
пиктограммы"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Жестовое письмо Саттон"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Гарнитура:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Выбор символа"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Шестнадцатеричное:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Просмотр:"
diff --git a/loleaflet/po/styles/rw.po b/loleaflet/po/styles/rw.po
index b6253d1..fa3c17b 100644
--- a/loleaflet/po/styles/rw.po
+++ b/loleaflet/po/styles/rw.po
@@ -2004,3 +2004,9 @@ msgstr "Kumeri"
 #: ucsubset.src
 msgid "Mongolian"
 msgstr "Nyamongoliya"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Izina ry'Umukono:"
diff --git a/loleaflet/po/styles/sa-IN.po b/loleaflet/po/styles/sa-IN.po
index 5daf166..13424a3 100644
--- a/loleaflet/po/styles/sa-IN.po
+++ b/loleaflet/po/styles/sa-IN.po
@@ -2360,3 +2360,9 @@ msgstr "कोप्टोपिक्"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "भावचिह्नानि"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "अक्षरगणनाम:"
diff --git a/loleaflet/po/styles/sat.po b/loleaflet/po/styles/sat.po
index 582844f..4c0de5d 100644
--- a/loleaflet/po/styles/sat.po
+++ b/loleaflet/po/styles/sat.po
@@ -2293,3 +2293,5 @@ msgstr "बोपोमोफो  ओसार"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "काटाकाना साडे  आड़ाङ"
+
+# Translation of Special Characters dialog from LibreOffice core
diff --git a/loleaflet/po/styles/sd.po b/loleaflet/po/styles/sd.po
index 36f7780..c23fc43 100644
--- a/loleaflet/po/styles/sd.po
+++ b/loleaflet/po/styles/sd.po
@@ -2367,3 +2367,9 @@ msgstr "ڪوپٽڪ"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "ترنگون"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "فانٽ جو نالو:"
diff --git a/loleaflet/po/styles/si.po b/loleaflet/po/styles/si.po
index b29c9b6..65fcaf5 100644
--- a/loleaflet/po/styles/si.po
+++ b/loleaflet/po/styles/si.po
@@ -2304,3 +2304,13 @@ msgstr "කොප්ටික්"
 #: ucsubset.src
 msgid "Emoticons"
 msgstr "ඉමොටිකොන"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "අකුරු නාමය:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "විශේෂ අකුරු"
diff --git a/loleaflet/po/styles/sid.po b/loleaflet/po/styles/sid.po
index 590ebc1..d3e013c 100644
--- a/loleaflet/po/styles/sid.po
+++ b/loleaflet/po/styles/sid.po
@@ -2857,3 +2857,13 @@ msgstr "Sundaanesete Ledo"
 #: ucsubset.src
 msgid "Takri"
 msgstr "Takiri"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Borrangichu Su'ma:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Baxxino fikiima"
diff --git a/loleaflet/po/styles/sk.po b/loleaflet/po/styles/sk.po
index d787eeb..a3673bc 100644
--- a/loleaflet/po/styles/sk.po
+++ b/loleaflet/po/styles/sk.po
@@ -2856,3 +2856,21 @@ msgstr "Doplnkové symboly a piktogramy"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Suttonovej posunková abeceda"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Názov písma:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Špeciálne znaky"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Šestnástkovo:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Náhľad:"
diff --git a/loleaflet/po/styles/sl.po b/loleaflet/po/styles/sl.po
index 6a08994..9f99660 100644
--- a/loleaflet/po/styles/sl.po
+++ b/loleaflet/po/styles/sl.po
@@ -3044,3 +3044,21 @@ msgstr "Dodatni simboli in piktogrami"
 #: ucsubset.src
 msgid "Sutton Signwriting"
 msgstr "Zapis znakovnega jezika"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Ime pisave:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Posebni znaki"
+
+#: specialcharacters.ui
+msgid "Hexadecimal:"
+msgstr "Šestnajstiško:"
+
+#: asianphoneticguidedialog.ui
+msgid "Preview:"
+msgstr "Predogled:"
diff --git a/loleaflet/po/styles/sq.po b/loleaflet/po/styles/sq.po
index 2860611..2c5b294 100644
--- a/loleaflet/po/styles/sq.po
+++ b/loleaflet/po/styles/sq.po
@@ -2201,3 +2201,13 @@ msgstr "Pllaka Domino"
 #: ucsubset.src
 msgid "Old Turkic"
 msgstr "Turke e vjetër"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Emri i shkronjave:"
+
+#: specialcharacters.ui
+msgid "Special Characters"
+msgstr "Shkronja të veçanta"
diff --git a/loleaflet/po/styles/sr-Latn.po b/loleaflet/po/styles/sr-Latn.po
index 72af7b1..7c3bc7e 100644
--- a/loleaflet/po/styles/sr-Latn.po
+++ b/loleaflet/po/styles/sr-Latn.po
@@ -2382,3 +2382,13 @@ msgstr "Produženi Bopomofo"
 #: ucsubset.src
 msgid "Katakana Phonetics"
 msgstr "katakana"
+
+# Translation of Special Characters dialog from LibreOffice core
+
+#: GenericCommands.xcu
+msgid "Font Name:"
+msgstr "Ime fonta:"
+
+#: specialcharacters.ui
+msgid "Special Characters"

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to