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