aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarcel Klehr <mklehr@gmx.net>2024-01-10 15:17:02 +0100
committerMarcel Klehr <mklehr@gmx.net>2024-01-10 16:00:24 +0100
commit1db8888f999e97427959f64ae846a05ccbb3d6c4 (patch)
tree5de8a64d49c77120a2309f4305c547a47a49872a /lib
parent4bfa3d34fcf7a6386d6533680790e23623a5473b (diff)
downloadnextcloud-server-1db8888f999e97427959f64ae846a05ccbb3d6c4.tar.gz
nextcloud-server-1db8888f999e97427959f64ae846a05ccbb3d6c4.zip
enh(OCP\Translation): Introduce ITranslationProviderWithUserId
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Translation/TranslationManager.php9
-rw-r--r--lib/public/Translation/ITranslationProviderWithUserId.php38
2 files changed, 47 insertions, 0 deletions
diff --git a/lib/private/Translation/TranslationManager.php b/lib/private/Translation/TranslationManager.php
index 546ed595aaf..4b5facebac6 100644
--- a/lib/private/Translation/TranslationManager.php
+++ b/lib/private/Translation/TranslationManager.php
@@ -30,12 +30,14 @@ use InvalidArgumentException;
use OC\AppFramework\Bootstrap\Coordinator;
use OCP\IConfig;
use OCP\IServerContainer;
+use OCP\IUserSession;
use OCP\PreConditionNotMetException;
use OCP\Translation\CouldNotTranslateException;
use OCP\Translation\IDetectLanguageProvider;
use OCP\Translation\ITranslationManager;
use OCP\Translation\ITranslationProvider;
use OCP\Translation\ITranslationProviderWithId;
+use OCP\Translation\ITranslationProviderWithUserId;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Psr\Log\LoggerInterface;
@@ -51,6 +53,7 @@ class TranslationManager implements ITranslationManager {
private Coordinator $coordinator,
private LoggerInterface $logger,
private IConfig $config,
+ private IUserSession $userSession,
) {
}
@@ -91,6 +94,9 @@ class TranslationManager implements ITranslationManager {
if ($fromLanguage === null) {
foreach ($providers as $provider) {
if ($provider instanceof IDetectLanguageProvider) {
+ if ($provider instanceof ITranslationProviderWithUserId) {
+ $provider->setUserId($this->userSession->getUser()?->getUID());
+ }
$fromLanguage = $provider->detectLanguage($text);
}
@@ -110,6 +116,9 @@ class TranslationManager implements ITranslationManager {
foreach ($providers as $provider) {
try {
+ if ($provider instanceof ITranslationProviderWithUserId) {
+ $provider->setUserId($this->userSession->getUser()?->getUID());
+ }
return $provider->translate($fromLanguage, $toLanguage, $text);
} catch (RuntimeException $e) {
$this->logger->warning("Failed to translate from {$fromLanguage} to {$toLanguage} using provider {$provider->getName()}", ['exception' => $e]);
diff --git a/lib/public/Translation/ITranslationProviderWithUserId.php b/lib/public/Translation/ITranslationProviderWithUserId.php
new file mode 100644
index 00000000000..9a573a8150e
--- /dev/null
+++ b/lib/public/Translation/ITranslationProviderWithUserId.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2024 Marcel Klehr <mklehr@gmx.net>
+ *
+ * @author Marcel Klehr <mklehr@gmx.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+namespace OCP\Translation;
+
+/**
+ * @since 29.0.0
+ */
+interface ITranslationProviderWithUserId extends ITranslationProvider {
+ /**
+ * @param string|null $userId The userId of the user requesting the current task
+ * @since 29.0.0
+ */
+ public function setUserId(?string $userId);
+}