[Libreoffice-commits] online.git: Branch 'distro/collabora/co-4-2-0' - 35 commits - android/app android/lib android/README loleaflet/css loleaflet/js loleaflet/Makefile.am loleaflet/src loleaflet/util loolwsd.xml.in test/data test/integration-http-server.cpp wsd/DocumentBroker.cpp wsd/DocumentBroker.hpp wsd/LOOLWSD.cpp
Jan Holesovsky (via logerrit)
logerrit at kemper.freedesktop.org
Thu Dec 12 09:38:13 UTC 2019
android/README | 5
android/app/build.gradle | 15
android/app/src/main/java/org/libreoffice/androidapp/LibreOfficeApplication.java | 5
android/app/src/main/java/org/libreoffice/androidapp/LocaleHelper.java | 67 -
android/app/src/main/java/org/libreoffice/androidapp/SettingsActivity.java | 3
android/app/src/main/java/org/libreoffice/androidapp/storage/DocumentProviderFactory.java | 3
android/app/src/main/java/org/libreoffice/androidapp/storage/IDocumentProvider.java | 2
android/app/src/main/java/org/libreoffice/androidapp/storage/IFile.java | 4
android/app/src/main/java/org/libreoffice/androidapp/storage/external/ExternalFile.java | 28
android/app/src/main/java/org/libreoffice/androidapp/storage/external/ExtsdDocumentsProvider.java | 5
android/app/src/main/java/org/libreoffice/androidapp/storage/external/OTGDocumentsProvider.java | 5
android/app/src/main/java/org/libreoffice/androidapp/storage/local/LocalFile.java | 2
android/app/src/main/java/org/libreoffice/androidapp/storage/owncloud/OwnCloudFile.java | 54 -
android/app/src/main/java/org/libreoffice/androidapp/storage/owncloud/OwnCloudProvider.java | 8
android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java | 102 +-
android/app/src/main/locale/template.pot | 444 ++++++++++
android/app/src/main/res/menu/navigation_menu.xml | 6
android/app/src/main/res/values-es/strings.xml | 143 +++
android/app/src/main/res/values-pt-rBR/strings.xml | 143 +++
android/app/src/main/res/values-tr/strings.xml | 120 ++
android/app/src/main/res/values/arrays.xml | 8
android/app/src/main/res/values/strings.xml | 26
android/app/src/main/res/xml/libreoffice_preferences.xml | 9
android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java | 111 +-
android/lib/src/main/res/values-es/strings.xml | 10
android/lib/src/main/res/values-pt-rBR/strings.xml | 10
loleaflet/Makefile.am | 8
loleaflet/css/leaflet.css | 32
loleaflet/js/global.js | 9
loleaflet/src/control/Control.MobileWizard.js | 21
loleaflet/src/control/Control.Scroll.js | 16
loleaflet/src/control/Control.Toolbar.js | 21
loleaflet/src/control/Ruler.js | 180 +++-
loleaflet/src/layer/tile/TileLayer.js | 6
loleaflet/src/map/Map.js | 6
loleaflet/util/create-l10n-all-js.pl | 2
loolwsd.xml.in | 1
test/data/convert-to.xlsx |binary
test/integration-http-server.cpp | 40
wsd/DocumentBroker.cpp | 98 ++
wsd/DocumentBroker.hpp | 21
wsd/LOOLWSD.cpp | 64 -
42 files changed, 1513 insertions(+), 350 deletions(-)
New commits:
commit d29504df9b48ff2485559f9ae7d23aa2a4b42412
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Dec 12 10:14:34 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Make all the .uno: commands work again.
Was a problem introduced by c6f36965cfc1bd68fdb88b01d493163b5d176bcc.
Change-Id: I8fbc722ed73af19a6462c87242d431eea118f1a2
Reviewed-on: https://gerrit.libreoffice.org/85020
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
index bae078ab9..e1efc01f9 100644
--- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
+++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
@@ -605,6 +605,7 @@ public class LOActivity extends AppCompatActivity {
break;
}
}
+ break;
case "DIM_SCREEN": {
mainHandler.post(new Runnable() {
@Override
commit 5afeb1341451d8c81a4ca747c59b59f86390b790
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Dec 12 09:56:43 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
mobile: Fix build.
Change-Id: Ie0f08a984b9333ca65d0fd52c71e358b7fd5f771
Reviewed-on: https://gerrit.libreoffice.org/85018
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 700a56fbf..77204dd69 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -2207,6 +2207,7 @@ ConvertToBroker::ConvertToBroker(const std::string& uri,
_limitLifeSeconds = limit_convert_secs;
}
+#if !MOBILEAPP
bool ConvertToBroker::startConversion(SocketDisposition &disposition, const std::string &id)
{
std::shared_ptr<ConvertToBroker> docBroker = std::static_pointer_cast<ConvertToBroker>(shared_from_this());
@@ -2252,6 +2253,7 @@ bool ConvertToBroker::startConversion(SocketDisposition &disposition, const std:
});
return true;
}
+#endif
void ConvertToBroker::dispose()
{
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index 5632c56b6..07f967579 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -532,8 +532,10 @@ public:
const std::string& sOptions);
virtual ~ConvertToBroker();
+#if !MOBILEAPP
/// Move socket to this broker for response & do conversion
bool startConversion(SocketDisposition &disposition, const std::string &id);
+#endif
/// Called when removed from the DocBrokers list
void dispose() override;
commit 18a966a486c9fdd62cda97996349fa018379b210
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
AuthorDate: Thu Dec 12 01:32:48 2019 -0500
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
leaflet: improved sidebar wizard handling
Now the Hamburger works and the sidebar updates
are more accurate.
Change-Id: I2f8df05801297d8ec29bf1d966624f06df685d31
Reviewed-on: https://gerrit.libreoffice.org/85010
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/loleaflet/src/control/Control.MobileWizard.js b/loleaflet/src/control/Control.MobileWizard.js
index 4715f0694..912c4602d 100644
--- a/loleaflet/src/control/Control.MobileWizard.js
+++ b/loleaflet/src/control/Control.MobileWizard.js
@@ -26,7 +26,7 @@ L.Control.MobileWizard = L.Control.extend({
this.map = map;
map.on('mobilewizard', this._onMobileWizard, this);
map.on('closemobilewizard', this._hideWizard, this);
- map.on('showmobilewizard', this._showWizard, this);
+ map.on('showwizardsidebar', this._showWizardSidebar, this);
this._setupBackButton();
},
@@ -60,6 +60,12 @@ L.Control.MobileWizard = L.Control.extend({
$('#toolbar-down').hide();
},
+ _showWizardSidebar: function() {
+ this.map.showSidebar = true;
+ this._refreshSidebar();
+ this._showWizard();
+ },
+
_hideWizard: function() {
$('#mobile-wizard').hide();
$('#mobile-wizard-content').empty();
@@ -67,6 +73,7 @@ L.Control.MobileWizard = L.Control.extend({
$('#toolbar-down').show();
}
+ this.map.showSidebar = false;
this._isActive = false;
this._currentPath = [];
if (window.mobileWizard === true) {
@@ -228,8 +235,10 @@ L.Control.MobileWizard = L.Control.extend({
if (data) {
var isSidebar = data.id !== 'menubar' && data.id !== 'insertshape' && data.id !== 'funclist';
- if (!this._isActive && isSidebar)
- this._refreshSidebar();
+ if (!this._isActive && isSidebar) {
+ if (this.map.showSidebar == false)
+ return;
+ }
this._isActive = true;
var currentPath = null;
@@ -242,10 +251,8 @@ L.Control.MobileWizard = L.Control.extend({
this._reset();
- if (window.mobileWizard) {
- this._showWizard();
- this._hideKeyboard();
- }
+ this._showWizard();
+ this._hideKeyboard();
// We can change the sidebar as we want here
if (data.id === '') { // sidebar indicator
diff --git a/loleaflet/src/control/Control.Toolbar.js b/loleaflet/src/control/Control.Toolbar.js
index 4e8c1943e..a068c3af9 100644
--- a/loleaflet/src/control/Control.Toolbar.js
+++ b/loleaflet/src/control/Control.Toolbar.js
@@ -346,7 +346,19 @@ function onClick(e, id, item, subItem) {
if (window.insertionMobileWizard)
this.onClick(null, 'insertion_mobile_wizard');
window.mobileWizard = true;
- map.fire('showmobilewizard');
+ if (!map._sidebarVisible) {
+ map._sidebarVisible = true;
+ map.sendUnoCommand('.uno:Sidebar');
+ } else {
+ // As the sidebar LOKWindowId can and does change,
+ // esp. between chart and other elements, we apparently
+ // lose track, and there is currently no reliable way to
+ // recover it (which is needed to request updates).
+ // The following disable and enable the sidebar to get it.
+ map.sendUnoCommand('.uno:Sidebar');
+ map.sendUnoCommand('.uno:Sidebar');
+ }
+ map.fire('showwizardsidebar');
toolbar.check(id);
}
}
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index d6e406884..491d14731 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -875,8 +875,8 @@ L.TileLayer = L.GridLayer.extend({
this._map.fire('mobilewizard', data);
},
- _closeMobileWizard: function(data) {
- this._map.fire('closemobilewizard', data);
+ _closeMobileWizard: function() {
+ this._map.fire('closemobilewizard');
},
_onJSDialogMsg: function (textMsg) {
@@ -885,7 +885,7 @@ L.TileLayer = L.GridLayer.extend({
if (msgData.enabled) {
this._openMobileWizard(msgData);
} else {
- this._closeMobileWizard(msgData);
+ this._closeMobileWizard();
}
}
},
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index af149f236..8e9f98d45 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -110,6 +110,8 @@ L.Map = L.Evented.extend({
this._disableDefaultAction = {}; // The events for which the default handler is disabled and only issues postMessage.
this._winId = 0;
this._activeDialog = null;
+ this._sidebarVisible = false; // The state of the sidebar in Core.
+ this._showSidebar = false; // Whether we have the sidebar visible in the UI or not (i.e. does the user want to see it or not).
vex.dialogID = -1;
@@ -294,7 +296,9 @@ L.Map = L.Evented.extend({
// thinks it is shown, so the command has to be triggered
// once again for it to be visible on the desktop
// (because the first .uno:Sidebar has actually hid it)
- map._socket.sendMessage('uno .uno:Sidebar');
+ if (!window.mode.isMobile() && !window.mode.isTablet() && !window.ThisIsAMobileApp) {
+ map._socket.sendMessage('uno .uno:Sidebar');
+ }
}, 200);
}
commit 86a1d5e08c7776ec05cca8ecb0c560705542c947
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Thu Dec 12 05:33:09 2019 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
A new convert-to unit test, hopefully taking longer to load.
Change-Id: I8d8291e272a175ab3c846b692bb34b185b2b8278
Reviewed-on: https://gerrit.libreoffice.org/85008
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/test/data/convert-to.xlsx b/test/data/convert-to.xlsx
new file mode 100644
index 000000000..7af9e7063
Binary files /dev/null and b/test/data/convert-to.xlsx differ
diff --git a/test/integration-http-server.cpp b/test/integration-http-server.cpp
index c19c57904..a2ceaca92 100644
--- a/test/integration-http-server.cpp
+++ b/test/integration-http-server.cpp
@@ -51,6 +51,7 @@ class HTTPServerTest : public CPPUNIT_NS::TestFixture
CPPUNIT_TEST(testScriptsAndLinksGet);
CPPUNIT_TEST(testScriptsAndLinksPost);
CPPUNIT_TEST(testConvertTo);
+ CPPUNIT_TEST(testConvertTo2);
CPPUNIT_TEST(testConvertToWithForwardedClientIP);
CPPUNIT_TEST_SUITE_END();
@@ -62,6 +63,7 @@ class HTTPServerTest : public CPPUNIT_NS::TestFixture
void testScriptsAndLinksGet();
void testScriptsAndLinksPost();
void testConvertTo();
+ void testConvertTo2();
void testConvertToWithForwardedClientIP();
public:
@@ -375,6 +377,44 @@ void HTTPServerTest::testConvertTo()
CPPUNIT_ASSERT_EQUAL(expectedStream.str(), actualString);
}
+void HTTPServerTest::testConvertTo2()
+{
+ const std::string srcPath = FileUtil::getTempFilePath(TDOC, "convert-to.xlsx", "convertTo_");
+ std::unique_ptr<Poco::Net::HTTPClientSession> session(helpers::createSession(_uri));
+ session->setTimeout(Poco::Timespan(5, 0)); // 5 seconds.
+
+ Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST, "/lool/convert-to");
+ Poco::Net::HTMLForm form;
+ form.setEncoding(Poco::Net::HTMLForm::ENCODING_MULTIPART);
+ form.set("format", "png");
+ form.addPart("data", new Poco::Net::FilePartSource(srcPath));
+ form.prepareSubmit(request);
+ try
+ {
+ form.write(session->sendRequest(request));
+ }
+ catch (const std::exception& ex)
+ {
+ // In case the server is still starting up.
+ sleep(2);
+ form.write(session->sendRequest(request));
+ }
+
+ Poco::Net::HTTPResponse response;
+ std::stringstream actualStream;
+ std::istream& responseStream = session->receiveResponse(response);
+ Poco::StreamCopier::copyStream(responseStream, actualStream);
+
+ // Remove the temp files.
+ FileUtil::removeFile(srcPath);
+
+ std::string actualString = actualStream.str();
+ CPPUNIT_ASSERT(actualString.size() >= 100);
+// CPPUNIT_ASSERT_EQUAL(actualString[0], 0x89);
+ CPPUNIT_ASSERT_EQUAL(actualString[1], 'P');
+ CPPUNIT_ASSERT_EQUAL(actualString[2], 'N');
+ CPPUNIT_ASSERT_EQUAL(actualString[3], 'G');
+}
void HTTPServerTest::testConvertToWithForwardedClientIP()
{
commit eeba94228cb7c3b7405cdc90af0d44d861df76aa
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Thu Dec 12 05:09:35 2019 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
convert-to: wait for load to complete before attempting the save.
Change-Id: Iee3a8a6720bbc29fc4e113bf705f405b840e1e45
Reviewed-on: https://gerrit.libreoffice.org/85009
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Tested-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index af756c676..700a56fbf 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -2195,14 +2195,64 @@ size_t ConvertToBroker::getInstanceCount()
ConvertToBroker::ConvertToBroker(const std::string& uri,
const Poco::URI& uriPublic,
- const std::string& docKey)
- : DocumentBroker(uri, uriPublic, docKey)
+ const std::string& docKey,
+ const std::string& format,
+ const std::string& sOptions) :
+ DocumentBroker(uri, uriPublic, docKey),
+ _format(format),
+ _sOptions(sOptions)
{
static const int limit_convert_secs = LOOLWSD::getConfigValue<int>("per_document.limit_convert_secs", 100);
NumConverters++;
_limitLifeSeconds = limit_convert_secs;
}
+bool ConvertToBroker::startConversion(SocketDisposition &disposition, const std::string &id)
+{
+ std::shared_ptr<ConvertToBroker> docBroker = std::static_pointer_cast<ConvertToBroker>(shared_from_this());
+
+ // Create a session to load the document.
+ const bool isReadOnly = true;
+ _clientSession = std::make_shared<ClientSession>(id, docBroker, getPublicUri(), isReadOnly, "nocliphost");
+ _clientSession->construct();
+
+ if (!_clientSession)
+ return false;
+
+ disposition.setMove([docBroker] (const std::shared_ptr<Socket> &moveSocket)
+ {
+ // Perform all of this after removing the socket
+
+ // Make sure the thread is running before adding callback.
+ docBroker->startThread();
+
+ // We no longer own this socket.
+ moveSocket->setThreadOwner(std::thread::id(0));
+
+ docBroker->addCallback([docBroker, moveSocket]()
+ {
+ auto streamSocket = std::static_pointer_cast<StreamSocket>(moveSocket);
+ docBroker->_clientSession->setSaveAsSocket(streamSocket);
+
+ // Move the socket into DocBroker.
+ docBroker->addSocketToPoll(moveSocket);
+
+ // First add and load the session.
+ docBroker->addSession(docBroker->_clientSession);
+
+ // Load the document manually and request saving in the target format.
+ std::string encodedFrom;
+ Poco::URI::encode(docBroker->getPublicUri().getPath(), "", encodedFrom);
+ const std::string load = "load url=" + encodedFrom;
+ std::vector<char> loadRequest(load.begin(), load.end());
+ docBroker->_clientSession->handleMessage(true, WSOpCode::Text, loadRequest);
+
+ // Save is done in the setLoaded
+ });
+ });
+ return true;
+}
+
void ConvertToBroker::dispose()
{
if (!_uriOrig.empty())
@@ -2233,6 +2283,26 @@ void ConvertToBroker::removeFile(const std::string &uriOrig)
}
}
+void ConvertToBroker::setLoaded()
+{
+ DocumentBroker::setLoaded();
+
+ // FIXME: Check for security violations.
+ Poco::Path toPath(getPublicUri().getPath());
+ toPath.setExtension(_format);
+ const std::string toJailURL = "file://" + std::string(JAILED_DOCUMENT_ROOT) + toPath.getFileName();
+ std::string encodedTo;
+ Poco::URI::encode(toJailURL, "", encodedTo);
+
+ // Convert it to the requested format.
+ const std::string saveAsCmd = "saveas url=" + encodedTo + " format=" + _format + " options=" + _sOptions;
+
+ // Send the save request ...
+ std::vector<char> saveasRequest(saveAsCmd.begin(), saveAsCmd.end());
+
+ _clientSession->handleMessage(true, WSOpCode::Text, saveasRequest);
+}
+
std::vector<std::shared_ptr<ClientSession>> DocumentBroker::getSessionsTestOnlyUnsafe()
{
std::vector<std::shared_ptr<ClientSession>> result;
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index 3b8f6e844..5632c56b6 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -245,7 +245,8 @@ public:
/// Thread safe termination of this broker if it has a lingering thread
void joinThread();
- void setLoaded();
+ /// Notify that the load has completed
+ virtual void setLoaded();
bool isDocumentChangedInStorage() { return _documentChangedInStorage; }
@@ -518,16 +519,28 @@ private:
class ConvertToBroker : public DocumentBroker
{
+ const std::string _format;
+ const std::string _sOptions;
+ std::shared_ptr<ClientSession> _clientSession;
+
public:
/// Construct DocumentBroker with URI and docKey
ConvertToBroker(const std::string& uri,
const Poco::URI& uriPublic,
- const std::string& docKey);
+ const std::string& docKey,
+ const std::string& format,
+ const std::string& sOptions);
virtual ~ConvertToBroker();
+ /// Move socket to this broker for response & do conversion
+ bool startConversion(SocketDisposition &disposition, const std::string &id);
+
/// Called when removed from the DocBrokers list
void dispose() override;
+ /// When the load completes - lets start saving
+ void setLoaded() override;
+
/// How many live conversions are running.
static size_t getInstanceCount();
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 524415b6f..3a597c4a1 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2605,7 +2605,6 @@ private:
if (tokens.count() > 3)
format = tokens[3];
- bool sent = false;
std::string fromPath = handler.getFilename();
LOG_INF("Conversion request for URI [" << fromPath << "] format [" << format << "].");
if (!fromPath.empty() && !format.empty())
@@ -2627,7 +2626,7 @@ private:
std::unique_lock<std::mutex> docBrokersLock(DocBrokersMutex);
LOG_DBG("New DocumentBroker for docKey [" << docKey << "].");
- auto docBroker = std::make_shared<ConvertToBroker>(fromPath, uriPublic, docKey);
+ auto docBroker = std::make_shared<ConvertToBroker>(fromPath, uriPublic, docKey, format, sOptions);
handler.takeFile();
cleanupDocBrokers();
@@ -2636,70 +2635,12 @@ private:
DocBrokers.emplace(docKey, docBroker);
LOG_TRC("Have " << DocBrokers.size() << " DocBrokers after inserting [" << docKey << "].");
- // Load the document.
- // TODO: Move to DocumentBroker.
- const bool isReadOnly = true;
- std::shared_ptr<ClientSession> clientSession = createNewClientSession(
- nullptr, _id, uriPublic, docBroker, isReadOnly, "nocliphost");
- if (clientSession)
- {
- disposition.setMove([docBroker, clientSession, format, sOptions]
- (const std::shared_ptr<Socket> &moveSocket)
- {
- // Perform all of this after removing the socket
-
- // Make sure the thread is running before adding callback.
- docBroker->startThread();
-
- // We no longer own this socket.
- moveSocket->setThreadOwner(std::thread::id(0));
-
- docBroker->addCallback([docBroker, moveSocket, clientSession, format, sOptions]()
- {
- auto streamSocket = std::static_pointer_cast<StreamSocket>(moveSocket);
- clientSession->setSaveAsSocket(streamSocket);
-
- // Move the socket into DocBroker.
- docBroker->addSocketToPoll(moveSocket);
-
- // First add and load the session.
- docBroker->addSession(clientSession);
-
- // Load the document manually and request saving in the target format.
- std::string encodedFrom;
- URI::encode(docBroker->getPublicUri().getPath(), "", encodedFrom);
- const std::string load = "load url=" + encodedFrom;
- std::vector<char> loadRequest(load.begin(), load.end());
- clientSession->handleMessage(true, WSOpCode::Text, loadRequest);
-
- // FIXME: Check for security violations.
- Path toPath(docBroker->getPublicUri().getPath());
- toPath.setExtension(format);
- const std::string toJailURL = "file://" + std::string(JAILED_DOCUMENT_ROOT) + toPath.getFileName();
- std::string encodedTo;
- URI::encode(toJailURL, "", encodedTo);
-
- // Convert it to the requested format.
- const auto saveas = "saveas url=" + encodedTo + " format=" + format + " options=" + sOptions;
- std::vector<char> saveasRequest(saveas.begin(), saveas.end());
- clientSession->handleMessage(true, WSOpCode::Text, saveasRequest);
- });
- });
-
- sent = true;
- }
- else
+ if (!docBroker->startConversion(disposition, _id))
{
LOG_WRN("Failed to create Client Session with id [" << _id << "] on docKey [" << docKey << "].");
cleanupDocBrokers();
}
}
-
- if (!sent)
- {
- // TODO: We should differentiate between bad request and failed conversion.
- throw BadRequestException("Failed to convert and send file.");
- }
return;
}
else if (tokens.count() >= 4 && tokens[3] == "insertfile")
commit 0dfde7e1dcf65c56e840087be24173e45213bf38
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Thu Dec 12 03:38:50 2019 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
Add a time limit for badly behaved / huge document conversions.
Handles problems with load, save, and lingering DocumentBrokers.
Change-Id: I6079cba3a4fa2a84c303b3a8669d94863a04f474
diff --git a/loolwsd.xml.in b/loolwsd.xml.in
index 6b81a4385..71f6b8f6f 100644
--- a/loolwsd.xml.in
+++ b/loolwsd.xml.in
@@ -29,6 +29,7 @@
<limit_file_size_mb desc="The maximum file size allowed to each document process to write. 0 for unlimited." type="uint">0</limit_file_size_mb>
<limit_num_open_files desc="The maximum number of files allowed to each document process to open. 0 for unlimited." type="uint">0</limit_num_open_files>
<limit_load_secs desc="Maximum number of seconds to wait for a document load to succeed. 0 for unlimited." type="uint" default="100">100</limit_load_secs>
+ <limit_convert_secs desc="Maximum number of seconds to wait for a document conversion to succeed. 0 for unlimited." type="uint" default="100">100</limit_convert_secs>
</per_document>
<per_view desc="View-specific settings.">
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 1fb51b513..af756c676 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -175,6 +175,7 @@ std::atomic<unsigned> DocumentBroker::DocBrokerId(1);
DocumentBroker::DocumentBroker(const std::string& uri,
const Poco::URI& uriPublic,
const std::string& docKey) :
+ _limitLifeSeconds(0),
_uriOrig(uri),
_uriPublic(uriPublic),
_docKey(docKey),
@@ -314,6 +315,22 @@ void DocumentBroker::pollThread()
continue;
}
+ if (_limitLifeSeconds > 0 &&
+ std::chrono::duration_cast<std::chrono::seconds>(now - _threadStart).count() > _limitLifeSeconds)
+ {
+ LOG_WRN("Doc [" << _docKey << "] is taking too long to convert. Will kill process ["
+ << _childProcess->getPid() << "]. per_document.limit_convert_secs set to "
+ << _limitLifeSeconds << " secs.");
+ broadcastMessage("error: cmd=load kind=docexpired");
+
+ // Brutal but effective.
+ if (_childProcess)
+ _childProcess->terminate();
+
+ stop("Load timed out");
+ continue;
+ }
+
if (std::chrono::duration_cast<std::chrono::milliseconds>
(now - lastBWUpdateTime).count() >= COMMAND_TIMEOUT_MS)
{
@@ -2181,7 +2198,9 @@ ConvertToBroker::ConvertToBroker(const std::string& uri,
const std::string& docKey)
: DocumentBroker(uri, uriPublic, docKey)
{
+ static const int limit_convert_secs = LOOLWSD::getConfigValue<int>("per_document.limit_convert_secs", 100);
NumConverters++;
+ _limitLifeSeconds = limit_convert_secs;
}
void ConvertToBroker::dispose()
@@ -2252,11 +2271,14 @@ void DocumentBroker::dumpState(std::ostream& os)
os << "\n doc key: " << _docKey;
os << "\n doc id: " << _docId;
os << "\n num sessions: " << _sessions.size();
+ os << "\n thread start: " << Util::getSteadyClockAsString(_threadStart);
os << "\n last saved: " << Util::getSteadyClockAsString(_lastSaveTime);
os << "\n last save request: " << Util::getSteadyClockAsString(_lastSaveRequestTime);
os << "\n last save response: " << Util::getSteadyClockAsString(_lastSaveResponseTime);
os << "\n last modifed: " << Util::getHttpTime(_documentLastModifiedTime);
os << "\n file last modifed: " << Util::getHttpTime(_lastFileModifiedTime);
+ if (_limitLifeSeconds)
+ os << "\n life limit in seconds: " << _limitLifeSeconds;
os << "\n idle time: " << getIdleTimeSecs();
os << "\n cursor " << _cursorPosX << ", " << _cursorPosY
<< "( " << _cursorWidth << "," << _cursorHeight << ")\n";
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index 19c88e4c4..3b8f6e844 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -443,6 +443,8 @@ private:
void getIOStats(uint64_t &sent, uint64_t &recv);
protected:
+ /// Seconds to live for, or 0 forever
+ int64_t _limitLifeSeconds;
std::string _uriOrig;
private:
const Poco::URI _uriPublic;
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index faa399756..524415b6f 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -835,6 +835,7 @@ void LOOLWSD::initialize(Application& self)
{ "per_document.limit_file_size_mb", "0" },
{ "per_document.limit_num_open_files", "0" },
{ "per_document.limit_load_secs", "100" },
+ { "per_document.limit_convert_secs", "100" },
{ "per_document.limit_stack_mem_kb", "8000" },
{ "per_document.limit_virt_mem_mb", "0" },
{ "per_document.max_concurrency", "4" },
commit 3ea2122b092648d7e547e8911a4e276ed1247da8
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Wed Dec 11 22:52:55 2019 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: improve debugging readme.
Change-Id: I4d1933e38c7cb0fd4d28b4384e11f35f2c9e8626
diff --git a/android/README b/android/README
index eb34c511b..4606ef3a3 100644
--- a/android/README
+++ b/android/README
@@ -113,7 +113,8 @@ to setup lldb to actually read & use them.
This path contains the non-stripped version of the liblo-native-code.so, and
the debugger will read the symbols from that one (even if the APK contains
- the stripped version).
+ the stripped version). *NB* ensure that this is before any internal source
+ directories - since the internal source contains stripped native code.
[Alternatively you can add the following to your ~/.lldbinit instead:
@@ -129,6 +130,8 @@ to setup lldb to actually read & use them.
From now on, you will be able to debug directly in the Android Studio
debugger. Happy debugging!
+Note: to re-buld your app with a newly compiled libnative-lo code - it is
+
== Tip: How to speed up your core.git build ==
If you use icecream for parallel building, you can use it for
commit 28e9548fc880a53358f063d537b8ac72d459feed
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Dec 11 20:32:56 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Removed unused resources.
Change-Id: If6175b4703db3d476acc781b9d02c84ca79f7c12
Reviewed-on: https://gerrit.libreoffice.org/84984
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/app/src/main/res/values-tr/strings.xml b/android/app/src/main/res/values-tr/strings.xml
index 583fa5313..b50ce64d5 100644
--- a/android/app/src/main/res/values-tr/strings.xml
+++ b/android/app/src/main/res/values-tr/strings.xml
@@ -1,20 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="app_name">LibreOffice Görüntüleyici</string>
- <string name="app_name_settings">LibreOffice Görüntüleyici Ayarları</string>
+ <string name="app_name_settings">Ayarları</string>
- <string name="app_about_name"><b>LibreOffice Görüntüleyici \'Beta\'</b></string>
<string name="app_version">Versiyon: %1$s\nBuild ID: %2$s</string>
- <string name="app_description">LibreOffice Görüntüleyici LibreOffice tabanlı bir belge görüntüleyicisidir.</string>
- <string name="app_credits">https://www.libreoffice.org</string>
+ <string name="app_description">$APP_NAME LibreOffice tabanlı bir belge görüntüleyicisidir.</string>
<string name="app_vendor">Bu sürüm $VENDOR tarafından derlenmiştir.</string>
<string name="temp_file_saving_disabled">Bu dosya salt okunabilir haldedir. Kaydetme devredışı.</string>
<string name="about_license">Lisansı Görüntüle</string>
<string name="about_notice">Bildiriyi Görüntüle</string>
<string name="about_moreinfo">Daha Fazla Bilgi</string>
- <string name="back_again_to_quit">Çıkış için geri tuşuna tekrar basınız.</string>
<string name="new_textdocument">Yeni Kelime İşlemci</string>
<string name="new_presentation">Yeni Sunum</string>
@@ -22,12 +18,9 @@
<string name="new_drawing">Yeni Çizim</string>
<string name="default_document_name">adsız</string>
- <string name="browser_app_name">LibreOffice Tarayıcı</string>
- <string name="menu_search">Ara</string>
<string name="list_view">Liste</string>
<string name="grid_view">Grid</string>
<string name="filter">Şununla filtrele:</string>
- <string name="search_not_found">Söz dizimi bulunamadı.</string>
<string name="sort">Şununla sırala:</string>
<string name="sort_smallest">Küçükten büyüğe</string>
<string name="sort_largest">Büyükten küçüğe</string>
@@ -35,27 +28,15 @@
<string name="sort_za">Z-A</string>
<string name="sort_oldest">Eskiden yeniye</string>
<string name="sort_newest">Yeniden eskiye</string>
- <string name="menu_sort_size">Boyuta Göre Sırala</string>
- <string name="menu_sort_az">Alfabetik Sırala</string>
- <string name="menu_sort_modified">Tarihe Göre Sırala</string>
- <string name="menu_preferences">Seçenekler</string>
<string name="file_icon_desc">dosya_simgesi</string>
<string name="title_recents">Son açılan dosyalar</string>
<string name="title_browser">Tüm dosyalar</string>
<!-- Pref keys as resources ; Not currently used -->
- <string name="EXPLORER_VIEW_TYPE_KEY">EXPLORER_VIEW_TYPE</string>
- <string name="CURRENT_DIRECTORY_KEY">CURRENT_DIRECTORY</string>
<string name="pref_category_explorer">Dosya Gezgini Ayarları</string>
- <string name="pref_category_general">Genel</string>
- <string name="pref_experimental_editing">Deneysel Mod</string>
- <string name="pref_experimental_editing_summary">Deneysel düzenleme modunu etkinleştirin. Kullanım riski size aittir.</string>
<string name="pref_show_hidden_files">Gizli Dosyalar ve Dizinler</string>
<string name="pref_show_hidden_files_summary">Gizli dosyalar ve dizinleri göstermeyi etkinleştir.</string>
- <string name="pref_developer_mode">Geliştirici Modu</string>
- <string name="pref_developer_mode_summary">Geliştirici modunu etkinleştirerek UNO komutları gönderin. Kullanım riski size aittir.</string>
<string name="action_about">Hakkında</string>
- <string name="action_parts">Bölümler</string>
<string name="action_settings">Ayarlar</string>
<string name="open">Aç</string>
<string name="share">Paylaş</string>
@@ -75,48 +56,30 @@
<string name="local_file_system">Yerel dosya sistemi</string>
<string name="external_sd_file_system">Harici SD</string>
<string name="otg_file_system">OTG cihazı (deneysel)</string>
- <string name="owncloud">Uzak sunucu</string>
<string name="usb_connected_configure">USB bağlantısı yapıldı, cihazınızın ayarlarını yapınız.</string>
- <string name="owncloud_wrong_connection">ownCloud sunucusuna bağlanılamadı. Ayarlarınızı kontrol ediniz.</string>
- <string name="owncloud_unauthorized">ownCloud sunucusuna giriş yapılamadı. Ayarlarınızı kontrol ediniz.</string>
- <string name="owncloud_unspecified_error">ownCloud sunucusuna bağlanırken belirtilmemiş bir hata oluştu. Lütfen daha sonra tekrar deneyiniz veya ayarlarınızı kontrol ediniz.</string>
+ <string name="owncloud_wrong_connection">Cloud sunucusuna bağlanılamadı. Ayarlarınızı kontrol ediniz.</string>
+ <string name="owncloud_unauthorized">Cloud sunucusuna giriş yapılamadı. Ayarlarınızı kontrol ediniz.</string>
+ <string name="owncloud_unspecified_error">Cloud sunucusuna bağlanırken belirtilmemiş bir hata oluştu. Lütfen daha sonra tekrar deneyiniz veya ayarlarınızı kontrol ediniz.</string>
<string name="ext_document_provider_error">Geçersiz dizin. SD kart ayarlarınızı kontrol ediniz.</string>
- <string name="legacy_extsd_missing_error">Geçersiz dizin. SD kartınızı veya SD kart ayarlarınızı kontrol ediniz.</string>
<string name="otg_missing_error">Geçersiz dizin. OTG cihazınızı veya OTG cihazı ayarlarınızı kontrol ediniz.</string>
<!-- Edit action names -->
- <string name="action_bold">Kalın</string>
- <string name="action_underline">Altı çizgili</string>
- <string name="action_italic">Yana yatık</string>
- <string name="action_strikeout">Üzeri çizgili</string>
- <string name="action_keyboard">Klaveyi göster</string>
- <string name="action_save">Kaydet</string>
- <string name="action_fromat">Biçimlendirmeyi etkinleştir.</string>
- <string name="action_search">Ara</string>
- <string name="action_UNO_commands">UNO komutu yolla</string>
<!-- Feedback messages -->
- <string name="message_saved">Kaydetme tamamlandı.</string>
- <string name="message_saving">Belge kaydediliyor…</string>
- <string name="message_save_incomplete">Kayıt tamamlanmadı. Değişiklik yapıldı mı?</string>
- <string name="create_new_file_success">"Yeni dosya oluşturuldu - "</string>
- <string name="create_new_file_error">Yeni dosya oluşturma başarısız. Lütfen dosya ismini kontrol ediniz.</string>
<!-- Document provider settings -->
<string name="storage_provider_settings">Depolama sağlayıcısı ayarları</string>
- <string name="owncloud_settings">ownCloud ayarları</string>
+ <string name="owncloud_settings">Cloud ayarları</string>
<string name="physical_storage_settings">Fiziksel depolama ayarları</string>
<string name="external_sd_path">Harici SD yolu</string>
<string name="otg_device_path">OTG cihazı yolu</string>
<string name="otg_warning">Deneysel özellik: OTG cihazı yazılabilir ise kullanın</string>
<string name="server_url">Sunucu URL</string>
- <string name="server_url_and_port">ownCloud sunucusu URL ve port</string>
+ <string name="server_url_and_port">Cloud sunucusu URL ve port</string>
<string name="user_name">Kullanıcı Adı</string>
<string name="password">Parola</string>
- <string name="action_undo">Geri Al</string>
- <string name="action_redo">Yinele</string>
<!-- Directory browser strings -->
<string name="up_description">Üst dizin</string>
@@ -128,117 +91,30 @@
<string name="current_dir">Şuan ki dizin: %1$s</string>
<!-- Save Alert dialog strings -->
- <string name="save_alert_dialog_title">Değişiklikleri kaydetmek istiyor musunuz?</string>
- <string name="save_document">Kaydet</string>
<string name="action_cancel">İptal</string>
- <string name="no_save_document">Hayır</string>
<!-- Create New Document Dialog Strings -->
<string name="create_new_document_title">Dosya ismi girin</string>
<string name="action_create">OLUŞTUR</string>
<!-- Presentation Mode Strings -->
- <string name="action_presentation">Slayt Gösterisi</string>
- <string name="action_add_slide">Slayt Ekle</string>
- <string name="alert_copy_svg_slide_show_to_clipboard">Cihazınız uygulama içi slayt gösterisini desteklemiyor. Sunumu panoya kopyaladık. Lütfen ev tuşuna basıp modern bir tarayıcı açıp arama çubuğuna yapıştırın ve sunumu görüntüleyin.</string>
- <string name="alert_copy_svg_slide_show_to_clipboard_dismiss">Tamam</string>
- <string name="slideshow_action_back">Geri</string>
<!-- Calc Header Menu Strings -->
- <string name="calc_insert_before">Ekle</string>
- <string name="calc_delete">Sil</string>
- <string name="calc_hide">Gizle</string>
- <string name="calc_show">Göster</string>
- <string name="calc_optimal_length">En iyi uzunluk</string>
- <string name="calc_adjust_length">Uzunluğu ayarla</string>
- <string name="calc_adjust_height">Yüksekliği ayarla</string>
- <string name="calc_adjust_width">Genişliği ayarla</string>
- <string name="calc_optimal_height">En iyi yükseklikt</string>
- <string name="calc_optimal_width">En iyi genişlik</string>
- <string name="calc_optimal_length_confirm">Tamam</string>
- <string name="calc_optimal_length_default_text">Extra uzunluk giriniz: 100th/mm</string>
- <string name="calc_alert_double_click_optimal_length">İpucu: Başlığa çift dokunuş en iyi uzunluk ve genişliği ayarlar.</string>
- <string name="action_add_worksheet">Hesap Tablosu Ekle</string>
<!-- Password dialog strings -->
- <string name="action_pwd_dialog_OK">Tamam</string>
- <string name="action_pwd_dialog_cancel">İptal</string>
- <string name="action_pwd_dialog_title">Lütfen parola giriniz.</string>
<!-- Insert Image Strings -->
- <string name="take_photo">Fotoğraf Çek</string>
- <string name="select_photo">Fotoğraf Seç</string>
- <string name="select_photo_title">Resim Seç</string>
- <string name="no_camera_found">Kamera bulunamadı.</string>
- <string name="compress_photo_smallest_size">Düşük Kalite</string>
- <string name="compress_photo_medium_size">Orta Kalite</string>
- <string name="compress_photo_max_quality">Maksimum Kalite</string>
- <string name="compress_photo_no_compress">Sıkıştırma yapma</string>
- <string name="compress_photo_title">Fotoğrafı sıkıştırmak ister misiniz?</string>
<!-- Clipboard Actions -->
- <string name="action_copy">Kopyala</string>
- <string name="action_paste">Yapıştır</string>
- <string name="action_cut">Kes</string>
- <string name="action_back">Geri</string>
- <string name="action_text_copied">Yazı panoya kopyalandı.</string>
- <string name="insert_table">Tablo Ekle</string>
- <string name="select_insert_options">Ekleme seçenekleri:</string>
- <string name="select_delete_options">Silme seçenekleri:</string>
- <string name="action_rename_worksheet">Hesap tablosunu yeniden adlandır</string>
- <string name="action_delete_worksheet">Hesap tablosunu sil</string>
- <string name="action_delete_slide">Slayt sil</string>
- <string name="name_already_used">Girilen isim zaten kullanılıyor.</string>
- <string name="part_name_changed">Bölüm ismi değiştirildi.</string>
- <string name="part_deleted">Bölüm silindi.</string>
- <string-array name="insertrowscolumns">
- <item>Satırları öncekine ekle</item>
- <item>Satırları sonrakine ekle</item>
- <item>Sütunları öncekine ekle</item>
- <item>Sütunları sonrakine ekle</item>
- <item>Tablo Ekle</item>
- </string-array>
- <string-array name="deleterowcolumns">
- <item>Satır Sil</item>
- <item>Sütun Sil</item>
- <item>Tablo Sil</item>
- </string-array>
<!-- UNO cmd controller Strings -->
- <string name="UNO_commands_string_hint">UNO Komutu</string>
- <string name="UNO_commands_string_type_hint">Tip</string>
- <string name="UNO_commands_string_value_hint">Değer</string>
- <string name="UNO_commands_string_parent_value_hint">Ebeveyn Değeri</string>
- <string name="action_exportToPDF">PDF olarak aktar</string>
- <string name="action_print">Yazdır</string>
- <string name="tabhost_character">Karakter</string>
- <string name="tabhost_paragraph">Paragraf</string>
- <string name="tabhost_insert">Ekle</string>
- <string name="tabhost_style">Biçim</string>
- <string name="alert_ok">Tamam</string>
- <string name="alert_cancel">İptal</string>
<string name="unable_to_go_further">Daha fazla ilerlenemiyor.</string>
- <string name="current_uno_command">Şuan ki UNO komutu</string>
<string name="pref_sort_summary">Dosyaların nasıl sıralanacağını seçiniz. A-Z, Z-A ya da boyuta göre.</string>
<string name="pref_viewmode_summary">Dosyaları grid veya liste şeklinde görüntüle.</string>
<string name="pref_file_explorer_title">Dosya Gezgini</string>
<string name="pref_sort_title">Dosya Sıralaması</string>
<string name="pref_filter_title">Varsayılan Dosya Filtrelemesi</string>
<string name="pref_filter_summary">Varsayılan dosya filtrelemesini seç</string>
- <string name="display_language">Uygulama Dili</string>
- <string name="display_language_summary">Varsayılan dili değiştir</string>
- <string name="unable_to_export_pdf">Pdf dışa aktarılamıyor.</string>
- <string name="pdf_exported_at">Şu konumda pdf'e aktarıldı: </string>
- <string name="printing_not_supported">Cihazınız yazdırmayı desteklemiyor.</string>
- <string name="error">Hata</string>
- <string name="enter_part_name">Bölüm ismi girin.</string>
<string name="bmp_null">Bmp boş!</string>
<string name="directory_not_saved">Dizin kaydedilmedi.</string>
- <string name="page">Sayfa</string>
- <string name="sheet">Tablo</string>
- <string name="slide">Slayt</string>
- <string name="part">Bölüm</string>
- <string name="highlight_color">Vurgulama Rengi</string>
- <string name="font_color">Metin Rengi</string>
- <string name="action_rename_slide">Slaytı yeniden adlandır</string>
</resources>
commit 7a2cc68a0bf939d3771932dbaedbed4d67dc3855
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Dec 11 20:25:22 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Turkish shell translations copied over from core.git.
Change-Id: If74644bdf2460f2fd2a8346b84333340d4acc7c9
Reviewed-on: https://gerrit.libreoffice.org/84983
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/app/src/main/res/values-tr/strings.xml b/android/app/src/main/res/values-tr/strings.xml
new file mode 100644
index 000000000..583fa5313
--- /dev/null
+++ b/android/app/src/main/res/values-tr/strings.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="app_name">LibreOffice Görüntüleyici</string>
+ <string name="app_name_settings">LibreOffice Görüntüleyici Ayarları</string>
+
+ <string name="app_about_name"><b>LibreOffice Görüntüleyici \'Beta\'</b></string>
+ <string name="app_version">Versiyon: %1$s\nBuild ID: %2$s</string>
+ <string name="app_description">LibreOffice Görüntüleyici LibreOffice tabanlı bir belge görüntüleyicisidir.</string>
+ <string name="app_credits">https://www.libreoffice.org</string>
+ <string name="app_vendor">Bu sürüm $VENDOR tarafından derlenmiştir.</string>
+ <string name="temp_file_saving_disabled">Bu dosya salt okunabilir haldedir. Kaydetme devredışı.</string>
+
+ <string name="about_license">Lisansı Görüntüle</string>
+ <string name="about_notice">Bildiriyi Görüntüle</string>
+ <string name="about_moreinfo">Daha Fazla Bilgi</string>
+ <string name="back_again_to_quit">Çıkış için geri tuşuna tekrar basınız.</string>
+
+ <string name="new_textdocument">Yeni Kelime İşlemci</string>
+ <string name="new_presentation">Yeni Sunum</string>
+ <string name="new_spreadsheet">Yeni Hesap Tablosu</string>
+ <string name="new_drawing">Yeni Çizim</string>
+ <string name="default_document_name">adsız</string>
+
+ <string name="browser_app_name">LibreOffice Tarayıcı</string>
+ <string name="menu_search">Ara</string>
+ <string name="list_view">Liste</string>
+ <string name="grid_view">Grid</string>
+ <string name="filter">Şununla filtrele:</string>
+ <string name="search_not_found">Söz dizimi bulunamadı.</string>
+ <string name="sort">Şununla sırala:</string>
+ <string name="sort_smallest">Küçükten büyüğe</string>
+ <string name="sort_largest">Büyükten küçüğe</string>
+ <string name="sort_az">A-Z</string>
+ <string name="sort_za">Z-A</string>
+ <string name="sort_oldest">Eskiden yeniye</string>
+ <string name="sort_newest">Yeniden eskiye</string>
+ <string name="menu_sort_size">Boyuta Göre Sırala</string>
+ <string name="menu_sort_az">Alfabetik Sırala</string>
+ <string name="menu_sort_modified">Tarihe Göre Sırala</string>
+ <string name="menu_preferences">Seçenekler</string>
+ <string name="file_icon_desc">dosya_simgesi</string>
+ <string name="title_recents">Son açılan dosyalar</string>
+ <string name="title_browser">Tüm dosyalar</string>
+ <!-- Pref keys as resources ; Not currently used -->
+ <string name="EXPLORER_VIEW_TYPE_KEY">EXPLORER_VIEW_TYPE</string>
+ <string name="CURRENT_DIRECTORY_KEY">CURRENT_DIRECTORY</string>
+ <string name="pref_category_explorer">Dosya Gezgini Ayarları</string>
+ <string name="pref_category_general">Genel</string>
+ <string name="pref_experimental_editing">Deneysel Mod</string>
+ <string name="pref_experimental_editing_summary">Deneysel düzenleme modunu etkinleştirin. Kullanım riski size aittir.</string>
+ <string name="pref_show_hidden_files">Gizli Dosyalar ve Dizinler</string>
+ <string name="pref_show_hidden_files_summary">Gizli dosyalar ve dizinleri göstermeyi etkinleştir.</string>
+ <string name="pref_developer_mode">Geliştirici Modu</string>
+ <string name="pref_developer_mode_summary">Geliştirici modunu etkinleştirerek UNO komutları gönderin. Kullanım riski size aittir.</string>
+
+ <string name="action_about">Hakkında</string>
+ <string name="action_parts">Bölümler</string>
+ <string name="action_settings">Ayarlar</string>
+ <string name="open">Aç</string>
+ <string name="share">Paylaş</string>
+ <string name="share_via">Şununla paylaş</string>
+
+ <!-- Document browser filters -->
+ <string name="filter_everything">Hepsi</string>
+ <string name="filter_documents">Kelime İşlemci</string>
+ <string name="filter_spreadsheets">Hesap Tablosu</string>
+ <string name="filter_presentations">Sunum</string>
+ <string name="filter_drawings">Çizimler</string>
+
+ <!-- Document provider names -->
+ <string name="document_locations">Belge dizinleri</string>
+ <string name="close_document_locations">Belge dizinlerini kapat</string>
+ <string name="local_documents">Belgeler</string>
+ <string name="local_file_system">Yerel dosya sistemi</string>
+ <string name="external_sd_file_system">Harici SD</string>
+ <string name="otg_file_system">OTG cihazı (deneysel)</string>
+ <string name="owncloud">Uzak sunucu</string>
+ <string name="usb_connected_configure">USB bağlantısı yapıldı, cihazınızın ayarlarını yapınız.</string>
+
+ <string name="owncloud_wrong_connection">ownCloud sunucusuna bağlanılamadı. Ayarlarınızı kontrol ediniz.</string>
+ <string name="owncloud_unauthorized">ownCloud sunucusuna giriş yapılamadı. Ayarlarınızı kontrol ediniz.</string>
+ <string name="owncloud_unspecified_error">ownCloud sunucusuna bağlanırken belirtilmemiş bir hata oluştu. Lütfen daha sonra tekrar deneyiniz veya ayarlarınızı kontrol ediniz.</string>
+
+ <string name="ext_document_provider_error">Geçersiz dizin. SD kart ayarlarınızı kontrol ediniz.</string>
+ <string name="legacy_extsd_missing_error">Geçersiz dizin. SD kartınızı veya SD kart ayarlarınızı kontrol ediniz.</string>
+ <string name="otg_missing_error">Geçersiz dizin. OTG cihazınızı veya OTG cihazı ayarlarınızı kontrol ediniz.</string>
+
+ <!-- Edit action names -->
+ <string name="action_bold">Kalın</string>
+ <string name="action_underline">Altı çizgili</string>
+ <string name="action_italic">Yana yatık</string>
+ <string name="action_strikeout">Üzeri çizgili</string>
+ <string name="action_keyboard">Klaveyi göster</string>
+ <string name="action_save">Kaydet</string>
+ <string name="action_fromat">Biçimlendirmeyi etkinleştir.</string>
+ <string name="action_search">Ara</string>
+ <string name="action_UNO_commands">UNO komutu yolla</string>
+
+ <!-- Feedback messages -->
+ <string name="message_saved">Kaydetme tamamlandı.</string>
+ <string name="message_saving">Belge kaydediliyor…</string>
+ <string name="message_save_incomplete">Kayıt tamamlanmadı. Değişiklik yapıldı mı?</string>
+ <string name="create_new_file_success">"Yeni dosya oluşturuldu - "</string>
+ <string name="create_new_file_error">Yeni dosya oluşturma başarısız. Lütfen dosya ismini kontrol ediniz.</string>
+
+ <!-- Document provider settings -->
+ <string name="storage_provider_settings">Depolama sağlayıcısı ayarları</string>
+ <string name="owncloud_settings">ownCloud ayarları</string>
+ <string name="physical_storage_settings">Fiziksel depolama ayarları</string>
+ <string name="external_sd_path">Harici SD yolu</string>
+ <string name="otg_device_path">OTG cihazı yolu</string>
+ <string name="otg_warning">Deneysel özellik: OTG cihazı yazılabilir ise kullanın</string>
+ <string name="server_url">Sunucu URL</string>
+ <string name="server_url_and_port">ownCloud sunucusu URL ve port</string>
+ <string name="user_name">Kullanıcı Adı</string>
+ <string name="password">Parola</string>
+ <string name="action_undo">Geri Al</string>
+ <string name="action_redo">Yinele</string>
+
+ <!-- Directory browser strings -->
+ <string name="up_description">Üst dizin</string>
+ <string name="confirm_label">Onayla</string>
+ <string name="cancel_label">İptal</string>
+ <string name="search_label">Git</string>
+ <string name="directory_browser_label">Dizin Seç</string>
+ <string name="bad_directory">Geçersiz dizin</string>
+ <string name="current_dir">Şuan ki dizin: %1$s</string>
+
+ <!-- Save Alert dialog strings -->
+ <string name="save_alert_dialog_title">Değişiklikleri kaydetmek istiyor musunuz?</string>
+ <string name="save_document">Kaydet</string>
+ <string name="action_cancel">İptal</string>
+ <string name="no_save_document">Hayır</string>
+
+ <!-- Create New Document Dialog Strings -->
+ <string name="create_new_document_title">Dosya ismi girin</string>
+ <string name="action_create">OLUŞTUR</string>
+
+ <!-- Presentation Mode Strings -->
+ <string name="action_presentation">Slayt Gösterisi</string>
+ <string name="action_add_slide">Slayt Ekle</string>
+ <string name="alert_copy_svg_slide_show_to_clipboard">Cihazınız uygulama içi slayt gösterisini desteklemiyor. Sunumu panoya kopyaladık. Lütfen ev tuşuna basıp modern bir tarayıcı açıp arama çubuğuna yapıştırın ve sunumu görüntüleyin.</string>
+ <string name="alert_copy_svg_slide_show_to_clipboard_dismiss">Tamam</string>
+ <string name="slideshow_action_back">Geri</string>
+
+ <!-- Calc Header Menu Strings -->
+ <string name="calc_insert_before">Ekle</string>
+ <string name="calc_delete">Sil</string>
+ <string name="calc_hide">Gizle</string>
+ <string name="calc_show">Göster</string>
+ <string name="calc_optimal_length">En iyi uzunluk</string>
+ <string name="calc_adjust_length">Uzunluğu ayarla</string>
+ <string name="calc_adjust_height">Yüksekliği ayarla</string>
+ <string name="calc_adjust_width">Genişliği ayarla</string>
+ <string name="calc_optimal_height">En iyi yükseklikt</string>
+ <string name="calc_optimal_width">En iyi genişlik</string>
+ <string name="calc_optimal_length_confirm">Tamam</string>
+ <string name="calc_optimal_length_default_text">Extra uzunluk giriniz: 100th/mm</string>
+ <string name="calc_alert_double_click_optimal_length">İpucu: Başlığa çift dokunuş en iyi uzunluk ve genişliği ayarlar.</string>
+ <string name="action_add_worksheet">Hesap Tablosu Ekle</string>
+
+ <!-- Password dialog strings -->
+ <string name="action_pwd_dialog_OK">Tamam</string>
+ <string name="action_pwd_dialog_cancel">İptal</string>
+ <string name="action_pwd_dialog_title">Lütfen parola giriniz.</string>
+
+ <!-- Insert Image Strings -->
+ <string name="take_photo">Fotoğraf Çek</string>
+ <string name="select_photo">Fotoğraf Seç</string>
+ <string name="select_photo_title">Resim Seç</string>
+ <string name="no_camera_found">Kamera bulunamadı.</string>
+ <string name="compress_photo_smallest_size">Düşük Kalite</string>
+ <string name="compress_photo_medium_size">Orta Kalite</string>
+ <string name="compress_photo_max_quality">Maksimum Kalite</string>
+ <string name="compress_photo_no_compress">Sıkıştırma yapma</string>
+ <string name="compress_photo_title">Fotoğrafı sıkıştırmak ister misiniz?</string>
+
+ <!-- Clipboard Actions -->
+ <string name="action_copy">Kopyala</string>
+ <string name="action_paste">Yapıştır</string>
+ <string name="action_cut">Kes</string>
+ <string name="action_back">Geri</string>
+ <string name="action_text_copied">Yazı panoya kopyalandı.</string>
+ <string name="insert_table">Tablo Ekle</string>
+ <string name="select_insert_options">Ekleme seçenekleri:</string>
+ <string name="select_delete_options">Silme seçenekleri:</string>
+ <string name="action_rename_worksheet">Hesap tablosunu yeniden adlandır</string>
+ <string name="action_delete_worksheet">Hesap tablosunu sil</string>
+ <string name="action_delete_slide">Slayt sil</string>
+ <string name="name_already_used">Girilen isim zaten kullanılıyor.</string>
+ <string name="part_name_changed">Bölüm ismi değiştirildi.</string>
+ <string name="part_deleted">Bölüm silindi.</string>
+ <string-array name="insertrowscolumns">
+ <item>Satırları öncekine ekle</item>
+ <item>Satırları sonrakine ekle</item>
+ <item>Sütunları öncekine ekle</item>
+ <item>Sütunları sonrakine ekle</item>
+ <item>Tablo Ekle</item>
+ </string-array>
+ <string-array name="deleterowcolumns">
+ <item>Satır Sil</item>
+ <item>Sütun Sil</item>
+ <item>Tablo Sil</item>
+ </string-array>
+
+ <!-- UNO cmd controller Strings -->
+ <string name="UNO_commands_string_hint">UNO Komutu</string>
+ <string name="UNO_commands_string_type_hint">Tip</string>
+ <string name="UNO_commands_string_value_hint">Değer</string>
+ <string name="UNO_commands_string_parent_value_hint">Ebeveyn Değeri</string>
+ <string name="action_exportToPDF">PDF olarak aktar</string>
+ <string name="action_print">Yazdır</string>
+ <string name="tabhost_character">Karakter</string>
+ <string name="tabhost_paragraph">Paragraf</string>
+ <string name="tabhost_insert">Ekle</string>
+ <string name="tabhost_style">Biçim</string>
+ <string name="alert_ok">Tamam</string>
+ <string name="alert_cancel">İptal</string>
+ <string name="unable_to_go_further">Daha fazla ilerlenemiyor.</string>
+ <string name="current_uno_command">Şuan ki UNO komutu</string>
+ <string name="pref_sort_summary">Dosyaların nasıl sıralanacağını seçiniz. A-Z, Z-A ya da boyuta göre.</string>
+ <string name="pref_viewmode_summary">Dosyaları grid veya liste şeklinde görüntüle.</string>
+ <string name="pref_file_explorer_title">Dosya Gezgini</string>
+ <string name="pref_sort_title">Dosya Sıralaması</string>
+ <string name="pref_filter_title">Varsayılan Dosya Filtrelemesi</string>
+ <string name="pref_filter_summary">Varsayılan dosya filtrelemesini seç</string>
+ <string name="display_language">Uygulama Dili</string>
+ <string name="display_language_summary">Varsayılan dili değiştir</string>
+ <string name="unable_to_export_pdf">Pdf dışa aktarılamıyor.</string>
+ <string name="pdf_exported_at">Şu konumda pdf'e aktarıldı: </string>
+ <string name="printing_not_supported">Cihazınız yazdırmayı desteklemiyor.</string>
+ <string name="error">Hata</string>
+ <string name="enter_part_name">Bölüm ismi girin.</string>
+ <string name="bmp_null">Bmp boş!</string>
+ <string name="directory_not_saved">Dizin kaydedilmedi.</string>
+ <string name="page">Sayfa</string>
+ <string name="sheet">Tablo</string>
+ <string name="slide">Slayt</string>
+ <string name="part">Bölüm</string>
+ <string name="highlight_color">Vurgulama Rengi</string>
+ <string name="font_color">Metin Rengi</string>
+ <string name="action_rename_slide">Slaytı yeniden adlandır</string>
+</resources>
commit 0bc255dddb339cca4e9f5735cc1c5cebaf3980a3
Author: Pedro Pinto Silva <pedro.silva at collabora.com>
AuthorDate: Wed Dec 11 20:23:01 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Brazil Portuguese translations of the lib.
Change-Id: I587a69518d23c7f2a7580918610619bd78821754
Reviewed-on: https://gerrit.libreoffice.org/84982
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/lib/src/main/res/values-pt-rBR/strings.xml b/android/lib/src/main/res/values-pt-rBR/strings.xml
new file mode 100644
index 000000000..4e668e628
--- /dev/null
+++ b/android/lib/src/main/res/values-pt-rBR/strings.xml
@@ -0,0 +1,10 @@
+<resources>
+ <string name="temp_file_saving_disabled">Este documento é apenas de leitura, salvaguardar está desabilitado.</string>
+ <string name="storage_permission_required">Permissão de armazenamento é requirida</string>
+ <string name="failed_to_load_file">Falha no carregamento do documento</string>
+ <string name="failed_to_insert_image">Falha ao inserir imagem</string>
+ <string name="cannot_open_file_chooser">Não foi possível abrir o gestor de arquivos</string>
+
+ <!-- Loading SlideShow Dialog Strings -->
+ <string name="loading">Carregando...</string>
+</resources>
commit a9ba89ab9a2821dd9beac8faa380fade9fe3c821
Author: Eloy Crespo <eloy.crespo at collabora.com>
AuthorDate: Wed Dec 11 20:22:08 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Spanish translations of the lib.
Change-Id: I8fc84c9d406a2cd7be840ec2f6e09a9869e8e157
Reviewed-on: https://gerrit.libreoffice.org/84981
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/lib/src/main/res/values-es/strings.xml b/android/lib/src/main/res/values-es/strings.xml
new file mode 100644
index 000000000..c488031e1
--- /dev/null
+++ b/android/lib/src/main/res/values-es/strings.xml
@@ -0,0 +1,10 @@
+<resources>
+ <string name="temp_file_saving_disabled">Este archivo es de solo lectura, el guardado está deshabilitado.</string>
+ <string name="storage_permission_required">Se requiere permiso de almacenamiento</string>
+ <string name="failed_to_load_file">Error al determinar el archivo a cargar</string>
+ <string name="failed_to_insert_image">Error al insertar imagen</string>
+ <string name="cannot_open_file_chooser">No se puede abrir el selector de archivos</string>
+
+ <!-- Loading SlideShow Dialog Strings -->
+ <string name="loading">Cargando...</string>
+</resources>
commit 668a48976679e64fff4ee0455e8fcbb9f6627faf
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Dec 11 20:13:49 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Honor the languge setting from the system.
Makes no sense to have an own language switching mechanism in the app...
Change-Id: Ic19bf36e35d1d011a1cd96c17b713e41577c512e
Reviewed-on: https://gerrit.libreoffice.org/84980
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/app/src/main/java/org/libreoffice/androidapp/LibreOfficeApplication.java b/android/app/src/main/java/org/libreoffice/androidapp/LibreOfficeApplication.java
index 22594f665..382943ea4 100644
--- a/android/app/src/main/java/org/libreoffice/androidapp/LibreOfficeApplication.java
+++ b/android/app/src/main/java/org/libreoffice/androidapp/LibreOfficeApplication.java
@@ -26,11 +26,6 @@ public class LibreOfficeApplication extends Application {
return mainHandler;
}
-
- @Override
- protected void attachBaseContext(Context base) {
- super.attachBaseContext(LocaleHelper.onAttach(base, "en"));
- }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/android/app/src/main/java/org/libreoffice/androidapp/LocaleHelper.java b/android/app/src/main/java/org/libreoffice/androidapp/LocaleHelper.java
deleted file mode 100644
index 308f3b8fc..000000000
--- a/android/app/src/main/java/org/libreoffice/androidapp/LocaleHelper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-package org.libreoffice.androidapp;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.os.Build;
-import android.preference.PreferenceManager;
-
-import java.util.Locale;
-
-public class LocaleHelper {
-
- private static final String SELECTED_LANG = "org.libreoffice.selected.lang";
-
- public static Context onAttach(Context context){
- String lang = getPersistedData(context, Locale.getDefault().getLanguage());
- return setLocale(context, lang);
- }
-
- public static Context onAttach(Context context, String defLang){
- String lang = getPersistedData(context, defLang);
- return setLocale(context, lang);
- }
-
- public static Context setLocale(Context context, String lang) {
- persist(context, lang);
- return updateResources(context, lang);
- }
-
- @SuppressWarnings("deprecation")
- private static Context updateResources(Context context, String lang) {
- Locale locale = new Locale(lang);
- Locale.setDefault(locale);
-
- Resources res = context.getResources();
- Configuration cfg = res.getConfiguration();
- cfg.locale = locale;
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
- cfg.setLayoutDirection(locale);
-
- res.updateConfiguration(cfg, res.getDisplayMetrics());
- return context;
- }
-
- private static void persist(Context context, String lang) {
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
- preferences.edit().putString(SELECTED_LANG, lang);
- preferences.edit().apply();
- }
-
- private static String getPersistedData(Context context, String lang) {
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
- return preferences.getString(SELECTED_LANG, lang);
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/android/app/src/main/java/org/libreoffice/androidapp/SettingsActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/SettingsActivity.java
index 75cd9468c..c51d098af 100644
--- a/android/app/src/main/java/org/libreoffice/androidapp/SettingsActivity.java
+++ b/android/app/src/main/java/org/libreoffice/androidapp/SettingsActivity.java
@@ -53,9 +53,6 @@ public class SettingsActivity extends AppCompatActivity {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SettingsListenerModel.getInstance().changePreferenceState(sharedPreferences, key);
- if (key.equals("DISPLAY_LANGUAGE")) {
- getActivity().recreate();
- }
}
}
}
diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java
index e0c056862..167ae17c1 100644
--- a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java
+++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java
@@ -59,7 +59,6 @@ import com.google.android.material.navigation.NavigationView;
import org.libreoffice.androidapp.AboutDialogFragment;
import org.libreoffice.androidapp.LibreOfficeApplication;
-import org.libreoffice.androidapp.LocaleHelper;
import org.libreoffice.androidapp.R;
import org.libreoffice.androidapp.SettingsActivity;
import org.libreoffice.androidapp.SettingsListenerModel;
@@ -107,7 +106,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
private int viewMode;
private int sortMode;
private boolean showHiddenFiles;
- private String displayLanguage;
// dynamic permissions IDs
private static final int PERMISSION_WRITE_EXTERNAL_STORAGE = 0;
@@ -132,7 +130,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
public static final String SORT_MODE_KEY = "SORT_MODE";
private static final String RECENT_DOCUMENTS_KEY = "RECENT_DOCUMENTS";
private static final String ENABLE_SHOW_HIDDEN_FILES_KEY = "ENABLE_SHOW_HIDDEN_FILES";
- private static final String DISPLAY_LANGUAGE = "DISPLAY_LANGUAGE";
public static final String NEW_FILE_PATH_KEY = "NEW_FILE_PATH_KEY";
public static final String NEW_DOC_TYPE_KEY = "NEW_DOC_TYPE_KEY";
@@ -200,11 +197,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
fabCloseAnimation = AnimationUtils.loadAnimation(this, R.anim.fab_close);
}
- @Override
- protected void attachBaseContext(Context newBase) {
- super.attachBaseContext(LocaleHelper.onAttach(newBase, "en"));
- }
-
public void createUI() {
setContentView(R.layout.activity_document_browser);
@@ -940,7 +932,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
viewMode = Integer.valueOf(defaultPrefs.getString(EXPLORER_VIEW_TYPE_KEY, "" + GRID_VIEW));
filterMode = Integer.valueOf(defaultPrefs.getString(FILTER_MODE_KEY, "-1"));
showHiddenFiles = defaultPrefs.getBoolean(ENABLE_SHOW_HIDDEN_FILES_KEY, false);
- displayLanguage = defaultPrefs.getString(DISPLAY_LANGUAGE, "en");
Intent i = this.getIntent();
if (i.hasExtra(CURRENT_DIRECTORY_KEY)) {
@@ -962,8 +953,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
viewMode = i.getIntExtra(EXPLORER_VIEW_TYPE_KEY, GRID_VIEW);
Log.d(LOGTAG, EXPLORER_VIEW_TYPE_KEY);
}
-
- LocaleHelper.setLocale(this, displayLanguage);
}
diff --git a/android/app/src/main/res/values-es/strings.xml b/android/app/src/main/res/values-es/strings.xml
index 65d991201..97ec41002 100644
--- a/android/app/src/main/res/values-es/strings.xml
+++ b/android/app/src/main/res/values-es/strings.xml
@@ -25,8 +25,6 @@
<string name="pref_sort_title">Orden de Archivos</string>
<string name="pref_filter_title">Filtro de Archivos Predeterminado</string>
<string name="pref_filter_summary">Establezca quçe filstro de archivo debe usarse de manera predeterminada.</string>
- <string name="display_language">Idioma de visualización</string>
- <string name="display_language_summary">Establecer el idioma de visualización predeterminado</string>
<string name="pref_show_debug_info">Mostrar información de depuración</string>
<string name="pref_show_debug_info_summary">Habilite para mostrar información de depuración en el visor de documentos</string>
diff --git a/android/app/src/main/res/values-pt-rBR/strings.xml b/android/app/src/main/res/values-pt-rBR/strings.xml
index d0add44cc..2f2635506 100644
--- a/android/app/src/main/res/values-pt-rBR/strings.xml
+++ b/android/app/src/main/res/values-pt-rBR/strings.xml
@@ -25,8 +25,6 @@
<string name="pref_sort_title">Ordem padrão</string>
<string name="pref_filter_title">Filtro padrão</string>
<string name="pref_filter_summary">Defina qual o filtro de arquivo que deve ser usado por padrão.</string>
- <string name="display_language">Mostrar idioma</string>
- <string name="display_language_summary">Defina qual o idioma que deve ser usado por padrão</string>
<string name="pref_show_debug_info">Mostrar info de depuração </string>
<string name="pref_show_debug_info_summary">Habilitar info de depuração no document viewer</string>
@@ -141,5 +139,5 @@
<string name="unable_to_go_further">Não foi possível ir mais longe.</string>
<string name="bmp_null">Bmp é nulo!</string>
<string name="directory_not_saved">Diretório não salvo.</string>
- <string name="title_activity_show_html">sobre</string>
+ <string name="title_activity_show_html">Sobre</string>
</resources>
diff --git a/android/app/src/main/res/values/arrays.xml b/android/app/src/main/res/values/arrays.xml
index 7adfbd56d..6c7e94b08 100644
--- a/android/app/src/main/res/values/arrays.xml
+++ b/android/app/src/main/res/values/arrays.xml
@@ -8,10 +8,6 @@
<item >2</item>
<item >3</item>
</string-array>
- <string-array name="SupportedLanguagesValues">
- <item >en</item>
- <!-- FIXME we need more languages item >tr</item-->
- </string-array>
<string-array name="SortModeStringValues">
<item >0</item>
<item >1</item>
@@ -36,10 +32,6 @@
<item>@string/filter_presentations</item>
<item>@string/filter_drawings</item>
</string-array>
- <string-array name="SupportedLanguages">
- <item>English</item>
- <!-- FIXME we need more languages item>Turkçe</item-->
- </string-array>
<string-array name="SortModeNames">
<item >@string/sort_az</item>
<item >@string/sort_za</item>
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index bf434e74d..082374b38 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -25,8 +25,6 @@
<string name="pref_sort_title">File Order</string>
<string name="pref_filter_title">Default File Filter</string>
<string name="pref_filter_summary">Set which file filter should be used by default.</string>
- <string name="display_language">Display Language</string>
- <string name="display_language_summary">Set the default display language</string>
<string name="pref_show_debug_info">Show Debug Info</string>
<string name="pref_show_debug_info_summary">Enable to show debug information in document viewer</string>
diff --git a/android/app/src/main/res/xml/libreoffice_preferences.xml b/android/app/src/main/res/xml/libreoffice_preferences.xml
index 8090a98eb..5f8389d45 100644
--- a/android/app/src/main/res/xml/libreoffice_preferences.xml
+++ b/android/app/src/main/res/xml/libreoffice_preferences.xml
@@ -30,15 +30,6 @@
android:summary="@string/pref_viewmode_summary"
app:iconSpaceReserved="false" />
- <ListPreference
- android:title="@string/display_language"
- android:summary="@string/display_language_summary"
- android:entries="@array/SupportedLanguages"
- android:entryValues="@array/SupportedLanguagesValues"
- android:defaultValue="en"
- android:key="DISPLAY_LANGUAGE"
- app:iconSpaceReserved="false" />
-
<CheckBoxPreference
android:title="@string/pref_show_hidden_files"
android:key="ENABLE_SHOW_HIDDEN_FILES"
commit e9cf61ad99b2415a253304fc54efe83d2f321ce1
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Dec 11 20:12:45 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Fix build after the recent Nextcloud's android-library update.
Thanks Tobi for the hint!
Change-Id: I00b7ef4aaef7ced1d26d3d5636189e239897ecea
Reviewed-on: https://gerrit.libreoffice.org/84979
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 84f5ef91c..158ea2ddf 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -5,11 +5,13 @@ apply from: 'appSettings.gradle'
android {
compileSdkVersion 28
+
defaultConfig {
// applicationId, versionCode and versionName are defined in appSettings.gradle
minSdkVersion 21
targetSdkVersion 28
}
+
buildTypes {
debug {
resValue "string", "app_name", "${liboAppName} Debug"
@@ -40,6 +42,11 @@ android {
'proguard-rules.pro'
}
}
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
}
repositories {
@@ -54,7 +61,9 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'
+
implementation 'com.github.nextcloud:android-library:-SNAPSHOT'
+ implementation "commons-httpclient:commons-httpclient:3.1 at jar" // remove after entire switch to lib v2
//before changing the version please see https://issuetracker.google.com/issues/111662669
implementation 'androidx.preference:preference:1.1.0-alpha01'
commit fb72c1353af80ec8cd961504e22890aabafe86cf
Author: Pedro Pinto Silva <pedro.silva at collabora.com>
AuthorDate: Wed Dec 11 14:53:09 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Brazilian Portuguese translations of the shell.
Change-Id: Ib71ccb7281e3e27c3184d3487b56253c61f2bc2a
Reviewed-on: https://gerrit.libreoffice.org/84978
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/app/src/main/res/values-pt-rBR/strings.xml b/android/app/src/main/res/values-pt-rBR/strings.xml
new file mode 100644
index 000000000..d0add44cc
--- /dev/null
+++ b/android/app/src/main/res/values-pt-rBR/strings.xml
@@ -0,0 +1,145 @@
+<resources>
+ <!--string name="app_name" definition is deliberately missing here, it is filled in in build.gradle.-->
+
+ <string name="app_name_settings">Configurações</string>
+ <string name="app_version">Version: %1$s, Build ID: %2$s</string>
+ <string name="app_description">$APP_NAME é uma moderna suíte de produtividade para processamento de texto, folhas de cálculo e apresentações, de fácil utilização, e open source.</string>
+ <string name="app_vendor">Esta versão foi fornecida por $VENDOR.</string>
+
+ <string name="no_recent_items">Nenhum item recente</string>
+ <string name="no_items">Nenhum item</string>
+ <string name="temp_file_saving_disabled">Este documento é apenas de leitura, salvaguardar está desabilitado.</string>
+ <string name="file_exists_warning">Um ficheiro com o mesmo nome já existe, e será substituído.</string>
+ <string name="file_creation_failed">Falha na criação do documento</string>
+ <string name="storage_permission_required">Permissão de armazenamento é requirida</string>
+ <string name="failed_to_load_file">Falha no carregamento do documento</string>
+
+ <string name="list_view">Lista</string>
+ <string name="grid_view">Grelha</string>
+ <string name="pref_category_explorer">Configurações do gestor de arquivos</string>
+ <string name="pref_show_hidden_files">Arquivos/pastas ocultas</string>
+ <string name="pref_show_hidden_files_summary">Mostrar arquivos/pastas ocultas</string>
+ <string name="pref_sort_summary">Ordenar arquivos por: A-Z, Tamanho ou por data.</string>
+ <string name="pref_viewmode_summary">Ver arquivos em grelha ou em list.</string>
+ <string name="pref_file_explorer_title">Layout do gestor de arquivos</string>
+ <string name="pref_sort_title">Ordem padrão</string>
+ <string name="pref_filter_title">Filtro padrão</string>
+ <string name="pref_filter_summary">Defina qual o filtro de arquivo que deve ser usado por padrão.</string>
+ <string name="display_language">Mostrar idioma</string>
+ <string name="display_language_summary">Defina qual o idioma que deve ser usado por padrão</string>
+ <string name="pref_show_debug_info">Mostrar info de depuração </string>
+ <string name="pref_show_debug_info_summary">Habilitar info de depuração no document viewer</string>
+
+ <string name="about_license">Mostrar Licença</string>
+ <string name="about_notice">Mostar aviso</string>
+ <string name="about_moreinfo">Mais informação</string>
+
+ <string name="new_textdocument">Novo documento de texto</string>
+ <string name="new_presentation">Nova apresentação </string>
+ <string name="new_spreadsheet">Nova folha de cálculo</string>
+ <string name="new_drawing">Novo desenho</string>
+ <string name="default_document_name">Sem nome</string>
+
+ <string name="filter">Filtrado por</string>
+ <string name="sort">Ordenado por</string>
+ <string name="sort_smallest">Mais pequeno primeiro</string>
+ <string name="sort_largest">Maior em primeiro lugar</string>
+ <string name="sort_az">A-Z</string>
+ <string name="sort_za">Z-A</string>
+ <string name="sort_oldest">Mais antigo em primeiro</string>
+ <string name="sort_newest">Recentes em primeiro</string>
+ <string name="file_icon_desc">Ícone de arquivo</string>
+ <string name="title_recents">Arquivos recentes</string>
+ <string name="title_browser">Todos os arquivos</string>
+ <!-- Pref keys as resources ; Not currently used -->
+
+ <string name="action_about">Sobre</string>
+ <string name="action_settings">Configurações</string>
+ <string name="open">Abir</string>
+ <string name="share">Partilhar</string>
+ <string name="share_via">Partilhar via</string>
+
+ <!-- Document browser filters -->
+ <string name="filter_everything">Tudo</string>
+ <string name="filter_documents">Documentos</string>
+ <string name="filter_spreadsheets">Folhas de cálculo</string>
+ <string name="filter_presentations">Apresentações</string>
+ <string name="filter_drawings">Desehnhos</string>
+
+ <!-- Document provider names -->
+ <string name="document_locations">Locais de arquivos</string>
+ <string name="close_document_locations">Fechar Locais de arquivos</string>
+ <string name="local_documents">Diretorias de documentos</string>
+ <string name="local_file_system">Sistema local de arquivos</string>
+ <string name="external_sd_file_system">SD externo</string>
+ <string name="otg_file_system">Dispositivo OTG (experimental)</string>
+ <string name="remote_server">Servidor remoto</string>
+ <string name="usb_connected_configure">USB conetado, configure o seu dispositivo.</string>
+
+ <string name="owncloud_wrong_connection">Falha na conexão com o seu servidor na nuvem. Verifique as suas configurações.</string>
+ <string name="owncloud_unauthorized">Falha na autenticação com o seu servidor na nuvem. Verifique as suas configurações.</string>
+ <string name="owncloud_unspecified_error">Erro ao conetar com o seu servidor na nuvem. Verifique as suas configurações.</string>
+
+ <string name="ext_document_provider_error">Arquivo raiz inválido. Verifique a configuração do seu cartão SD.</string>
+ <string name="otg_missing_error">Arquivo raiz inválido. Verifique seu dispositivo OTG e/ou configuração.</string>
+
+ <!-- Edit action names -->
+
+ <!-- Feedback messages -->
+
+ <!-- Document provider settings -->
+ <string name="storage_provider_settings">Configurações do provedor de armazenamento</string>
+ <string name="owncloud_settings">Configurações do servidor na nuvem</string>
+ <string name="physical_storage_settings">Configurações de armazenamento físico</string>
+ <string name="external_sd_path">Caminho SD externo</string>
+ <string name="otg_device_path">Caminho do dispositivo OTG</string>
+ <string name="otg_warning">Recurso experimental: use somente se o dispositivo OTG for gravável.</string>
+ <string name="server_url">URL de servidor</string>
+ <string name="server_url_and_port">URL e porta do servidor na nuvem.</string>
+ <string name="user_name">Usuário</string>
+ <string name="password">Senha</string>
+
+ <!-- Directory browser strings -->
+ <string name="up_description">Ir para um diretório acima</string>
+ <string name="confirm_label">Confirmar</string>
+ <string name="cancel_label">Cancelar</string>
+ <string name="search_label">Ir</string>
+ <string name="directory_browser_label">Escolha Diretório</string>
+ <string name="bad_directory">Caminho de diretório inválido</string>
+ <string name="current_dir">Diretório atual: %1$s</string>
+
+ <!-- Permission rationale alert dialog strings -->
+ <string name="title_permission_required">Permissão necessária</string>
+ <string name="reason_required_to_read_documents">É necessária permissão de armazenamento para ler seus documentos.</string>
+ <string name="positive_ok">OK</string>
+ <string name="negative_im_sure">Tenho a certeza</string>
+ <string name="negative_cancel">Cancelar</string>
+
+ <!-- Save Alert dialog strings -->
+ <string name="action_cancel">Cancelar</string>
+
+ <!-- Create New Document Dialog Strings -->
+ <string name="create_new_document_title">Criar novo documento</string>
+ <string name="enter_filename">Introduza o nome do arquivo:</string>
+ <string name="action_create">Criar</string>
+ <string name="action_overwrite">Substituir</string>
+
+ <!-- Loading SlideShow Dialog Strings -->
+ <string name="loading">Carregando...</string>
+
+ <!-- Presentation Mode Strings -->
+
+ <!-- Calc Header Menu Strings -->
+
+ <!-- Password dialog strings -->
+
+ <!-- Insert Image Strings -->
+
+ <!-- Clipboard Actions -->
+
+ <!-- UNO cmd controller Strings -->
+ <string name="unable_to_go_further">Não foi possível ir mais longe.</string>
+ <string name="bmp_null">Bmp é nulo!</string>
+ <string name="directory_not_saved">Diretório não salvo.</string>
+ <string name="title_activity_show_html">sobre</string>
+</resources>
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 8a2aa4d7b..bf434e74d 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -16,12 +16,12 @@
<string name="list_view">List</string>
<string name="grid_view">Grid</string>
- <string name="pref_category_explorer">File Explorer Settings</string>
+ <string name="pref_category_explorer">File Manager Settings</string>
<string name="pref_show_hidden_files">Hidden Files/Folders</string>
<string name="pref_show_hidden_files_summary">Enable to show hidden files/folders</string>
<string name="pref_sort_summary">Select how to order files: A-Z, by size or by date.</string>
<string name="pref_viewmode_summary">View files as a grid or in a list.</string>
- <string name="pref_file_explorer_title">File explorer layout</string>
+ <string name="pref_file_explorer_title">File manager layout</string>
<string name="pref_sort_title">File Order</string>
<string name="pref_filter_title">Default File Filter</string>
<string name="pref_filter_summary">Set which file filter should be used by default.</string>
@@ -48,7 +48,7 @@
<string name="sort_za">Z-A</string>
<string name="sort_oldest">Oldest first</string>
<string name="sort_newest">Newest first</string>
- <string name="file_icon_desc">fileicon</string>
+ <string name="file_icon_desc">File icon</string>
<string name="title_recents">Recent files</string>
<string name="title_browser">All files</string>
<!-- Pref keys as resources ; Not currently used -->
@@ -111,9 +111,9 @@
<!-- Permission rationale alert dialog strings -->
<string name="title_permission_required">Permission Required</string>
<string name="reason_required_to_read_documents">Storage permission is required for reading your documents.</string>
- <string name="positive_ok">OKAY</string>
- <string name="negative_im_sure">I\'M SURE</string>
- <string name="negative_cancel">CANCEL</string>
+ <string name="positive_ok">OK</string>
+ <string name="negative_im_sure">I\'m sure</string>
+ <string name="negative_cancel">Cancel</string>
<!-- Save Alert dialog strings -->
<string name="action_cancel">Cancel</string>
commit c3a8d21cd382014ce714adef82007d5acad214a2
Author: Eloy Crespo <eloy.crespo at collabora.com>
AuthorDate: Wed Dec 11 14:43:10 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: Spanish translations of the shell.
Change-Id: I5c0d0034085f6b03f7541f259048ab0774f92081
Reviewed-on: https://gerrit.libreoffice.org/84977
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/android/app/src/main/res/values-es/strings.xml b/android/app/src/main/res/values-es/strings.xml
new file mode 100644
index 000000000..65d991201
--- /dev/null
+++ b/android/app/src/main/res/values-es/strings.xml
@@ -0,0 +1,145 @@
+<resources>
+ <!--string name="app_name" aquí falta la definición deliberadamente, se completa en build.gradle.-->
+
+ <string name="app_name_settings">Ajustes</string>
+ <string name="app_version">Version: %1$s, Build ID: %2$s</string>
+ <string name="app_description">$APP_NAME es un conjunto de productividad de código abierto moderno y fácil de usar, para procesamiento de textos, hojas de cálculo, presentaciones y más.</string>
+ <string name="app_vendor">Esta versión fue suministrada por $VENDOR.</string>
+
+ <string name="no_recent_items">No hay elementos recientes</string>
+ <string name="no_items">No hay elementos</string>
+ <string name="temp_file_saving_disabled">Este archivo es de solo lectura, el guardado está deshabilitado.</string>
+ <string name="file_exists_warning">Ya existe un archivo con este nombre y se sobreescribirá</string>
+ <string name="file_creation_failed">La creación del archivo falló</string>
+ <string name="storage_permission_required">Se require permiso de almacenamiento</string>
+ <string name="failed_to_load_file">Error al determinar el archivo a cargar</string>
+
+ <string name="list_view">Lista</string>
+ <string name="grid_view">Cuadrícula</string>
+ <string name="pref_category_explorer">Configuración del explorador de archivos</string>
+ <string name="pref_show_hidden_files">Archivos/Carpetas Ocultas</string>
+ <string name="pref_show_hidden_files_summary">Habilitar para mostrar archivos/carpetas ocultas</string>
+ <string name="pref_sort_summary">Seleccione cómo ordenar los archivos: A-Z, por tamaño o por fecha.</string>
+ <string name="pref_viewmode_summary">Ver archivos como una cuadrícula o en una lista.</string>
+ <string name="pref_file_explorer_title">Diseño del explorador de archivos</string>
+ <string name="pref_sort_title">Orden de Archivos</string>
+ <string name="pref_filter_title">Filtro de Archivos Predeterminado</string>
+ <string name="pref_filter_summary">Establezca quçe filstro de archivo debe usarse de manera predeterminada.</string>
+ <string name="display_language">Idioma de visualización</string>
+ <string name="display_language_summary">Establecer el idioma de visualización predeterminado</string>
+ <string name="pref_show_debug_info">Mostrar información de depuración</string>
+ <string name="pref_show_debug_info_summary">Habilite para mostrar información de depuración en el visor de documentos</string>
+
+ <string name="about_license">Mostrar Licencia</string>
+ <string name="about_notice">Mostrar Aviso</string>
+ <string name="about_moreinfo">Más Información</string>
+
+ <string name="new_textdocument">Nuevo Documento de Texto</string>
+ <string name="new_presentation">Nueva Presentación</string>
+ <string name="new_spreadsheet">Nueva Hoja de Cálculo</string>
+ <string name="new_drawing">Nuevo Dibujo</string>
+ <string name="default_document_name">sin título</string>
+
+ <string name="filter">Filtrar por</string>
+ <string name="sort">Ordenar por</string>
+ <string name="sort_smallest">Más pequeño primero</string>
+ <string name="sort_largest">Más grande primero</string>
+ <string name="sort_az">A-Z</string>
+ <string name="sort_za">Z-A</string>
+ <string name="sort_oldest">Más antiguo primero</string>
+ <string name="sort_newest">Más reciente primero</string>
+ <string name="file_icon_desc">icono de archivo</string>
+ <string name="title_recents">Archivos recientes</string>
+ <string name="title_browser">Todos los archivos</string>
+ <!-- Pref keys as resources ; Not currently used -->
+
+ <string name="action_about">Acerca de</string>
+ <string name="action_settings">Ajustes</string>
+ <string name="open">Abrir</string>
+ <string name="share">Compartir</string>
+ <string name="share_via">Compartir vía</string>
+
+ <!-- Document browser filters -->
+ <string name="filter_everything">Todo</string>
+ <string name="filter_documents">Documentos</string>
+ <string name="filter_spreadsheets">Hojas de cálculo</string>
+ <string name="filter_presentations">Presentaciones</string>
+ <string name="filter_drawings">Dibujos</string>
+
+ <!-- Document provider names -->
+ <string name="document_locations">Ubicaciones de documentos</string>
+ <string name="close_document_locations">Cerrar ubicaciones de documentos</string>
+ <string name="local_documents">Directorio de documentos</string>
+ <string name="local_file_system">Systema de Arhivo local</string>
+ <string name="external_sd_file_system">SD Externa</string>
+ <string name="otg_file_system">Dispositivo OTB (experimental)</string>
+ <string name="remote_server">Servidor remoto</string>
+ <string name="usb_connected_configure">USB conectado, configure su dispositivo</string>
+
+ <string name="owncloud_wrong_connection">Imposible conectar con el servidor en la nube. Revise su configuración.</string>
+ <string name="owncloud_unauthorized">Imposible iniciar sesión en el servidor en la nube. Revise su configuración.</string>
+ <string name="owncloud_unspecified_error">Error no especificado al conectarse al servidor en la nube. Revise su configuración y/o intente más tarde.</string>
+
+ <string name="ext_document_provider_error">Archivo raíz no válido. Verifique la configuración de su tarjeta sd.</string>
+ <string name="otg_missing_error">Archivo raíz no válido. Verifique su dispositivo OTG y/o la configuración.</string>
+
+ <!-- Edit action names -->
+
+ <!-- Feedback messages -->
+
+ <!-- Document provider settings -->
+ <string name="storage_provider_settings">Configuración del proveedor de almacenamiento</string>
+ <string name="owncloud_settings">Configuración del servidor en la nube</string>
+ <string name="physical_storage_settings">Configuraciones de almacenamiento físico</string>
+ <string name="external_sd_path">Ruta SD externa</string>
+ <string name="otg_device_path">Ruta del dispositivo OTG</string>
+ <string name="otg_warning">Característica experimental: Úselo solo si el dispositivo OTG es grabable</string>
+ <string name="server_url">URL del servidor</string>
+ <string name="server_url_and_port">URL y puerto del servidor en la nube</string>
+ <string name="user_name">Nombre de usuario</string>
+ <string name="password">Contraseña</string>
+
+ <!-- Directory browser strings -->
+ <string name="up_description">Al directorio principal</string>
+ <string name="confirm_label">Confirmar</string>
+ <string name="cancel_label">Cancelar</string>
+ <string name="search_label">Ir</string>
+ <string name="directory_browser_label">Elegir Directorio</string>
+ <string name="bad_directory">Ruta de directorio inválida</string>
+ <string name="current_dir">Directorio Actual: %1$s</string>
+
+ <!-- Permission rationale alert dialog strings -->
+ <string name="title_permission_required">Permiso Requerido</string>
+ <string name="reason_required_to_read_documents">Se requiere permiso de almacenamiento para leer sus documentos.</string>
+ <string name="positive_ok">OK</string>
+ <string name="negative_im_sure">Estoy seguro</string>
+ <string name="negative_cancel">Cancelar</string>
+
+ <!-- Save Alert dialog strings -->
+ <string name="action_cancel">Cancelar</string>
+
+ <!-- Create New Document Dialog Strings -->
+ <string name="create_new_document_title">Crear Nuevo Documento</string>
+ <string name="enter_filename">Por favor ingrese el nombre del archivo:</string>
+ <string name="action_create">Crear</string>
+ <string name="action_overwrite">Sobreescribir</string>
+
+ <!-- Loading SlideShow Dialog Strings -->
+ <string name="loading">Cargando...</string>
+
+ <!-- Presentation Mode Strings -->
+
+ <!-- Calc Header Menu Strings -->
+
+ <!-- Password dialog strings -->
+
+ <!-- Insert Image Strings -->
+
+ <!-- Clipboard Actions -->
+
+ <!-- UNO cmd controller Strings -->
+ <string name="unable_to_go_further">Imposible ir más allá.</string>
+ <string name="bmp_null">Bmp es nulo!</string>
+ <string name="directory_not_saved">Directorio no guardado.</string>
+ <string name="title_activity_show_html">Sobre</string>
+</resources>
commit e590fe688513247a55b8c47619624a7b84853f5c
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Wed Dec 11 11:19:28 2019 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: encode SCHEME_FILE paths as URIs not paths.
Fixes encoding problems particularly with eg.
SCHEME_FILE: getPath(): /storage/emulated/0/Android/media/com.nextcloud.client/nextcloud/user at demoserver.com%2Fnextcloud/test.docx
Change-Id: I0f2a84ff29fffd87ef059727bfb530bb54ab2ab9
Reviewed-on: https://gerrit.libreoffice.org/84936
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Tested-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
index a8a9b80ad..bae078ab9 100644
--- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
+++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
@@ -248,7 +248,7 @@ public class LOActivity extends AppCompatActivity {
}
} else if (getIntent().getData().getScheme().equals(ContentResolver.SCHEME_FILE)) {
isDocEditable = true;
- urlToLoad = getIntent().getData().getPath();
+ urlToLoad = getIntent().getData().toString();
Log.d(TAG, "SCHEME_FILE: getPath(): " + getIntent().getData().getPath());
// Gather data to rebuild IFile object later
providerId = getIntent().getIntExtra(
commit bb05da508c57968e65f735b34dfca96c90fbde61
Author: Andras Timar <andras.timar at collabora.com>
AuthorDate: Wed Dec 11 11:24:03 2019 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Dec 12 10:18:24 2019 +0100
android: add pot file for localization
diff --git a/android/app/src/main/locale/template.pot b/android/app/src/main/locale/template.pot
new file mode 100644
index 000000000..336305881
--- /dev/null
+++ b/android/app/src/main/locale/template.pot
@@ -0,0 +1,444 @@
+# Translations template for PROJECT.
+# Copyright (C) 2019 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2019.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL at ADDRESS\n"
+"POT-Creation-Date: 2019-12-11 11:07+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.7.0\n"
+
+#. string name="app_name" definition is deliberately missing here, it is filled
+#. in in build.gradle.
+msgctxt "app_name_settings"
+msgid "Settings"
+msgstr ""
+
+#, c-format
+msgctxt "app_version"
+msgid "Version: %1$s, Build ID: %2$s"
+msgstr ""
+
+msgctxt "app_description"
+msgid ""
+"$APP_NAME is a modern, easy-to-use, open source productivity suite for "
+"word processing, spreadsheets, presentations and more."
+msgstr ""
+
+msgctxt "app_vendor"
+msgid "This release was supplied by $VENDOR."
+msgstr ""
+
+msgctxt "no_recent_items"
+msgid "No recent items"
+msgstr ""
+
+msgctxt "no_items"
+msgid "No items"
+msgstr ""
+
+msgctxt "temp_file_saving_disabled"
+msgid "This file is read-only, saving is disabled."
+msgstr ""
+
+msgctxt "file_exists_warning"
+msgid "A file with this name already exists, and will be overwritten."
+msgstr ""
+
+msgctxt "file_creation_failed"
+msgid "File creation failed"
+msgstr ""
+
+msgctxt "storage_permission_required"
+msgid "Storage permission is required"
+msgstr ""
+
+msgctxt "failed_to_load_file"
+msgid "Failed to determine the file to load"
+msgstr ""
+
+msgctxt "list_view"
+msgid "List"
+msgstr ""
+
+msgctxt "grid_view"
+msgid "Grid"
+msgstr ""
+
+msgctxt "pref_category_explorer"
+msgid "File Explorer Settings"
+msgstr ""
+
+msgctxt "pref_show_hidden_files"
+msgid "Hidden Files/Folders"
+msgstr ""
+
+msgctxt "pref_show_hidden_files_summary"
+msgid "Enable to show hidden files/folders"
+msgstr ""
+
+msgctxt "pref_sort_summary"
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list