mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Merge pull request #37705 from nextcloud/backport/37704/stable26
[stable26] fix(translation): Fix several issues with the translations api
This commit is contained in:
commit
836c63c5d9
1 changed files with 16 additions and 6 deletions
|
|
@ -29,6 +29,7 @@ namespace OC\Core\Controller;
|
|||
use InvalidArgumentException;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
use OCP\PreConditionNotMetException;
|
||||
use OCP\Translation\ITranslationManager;
|
||||
|
|
@ -36,15 +37,22 @@ use RuntimeException;
|
|||
|
||||
class TranslationApiController extends \OCP\AppFramework\OCSController {
|
||||
private ITranslationManager $translationManager;
|
||||
private IL10N $l;
|
||||
|
||||
public function __construct($appName, IRequest $request, ITranslationManager $translationManager) {
|
||||
public function __construct(
|
||||
string $appName,
|
||||
IRequest $request,
|
||||
ITranslationManager $translationManager,
|
||||
IL10N $l,
|
||||
) {
|
||||
parent::__construct($appName, $request);
|
||||
|
||||
$this->translationManager = $translationManager;
|
||||
$this->l = $l;
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @PublicPage
|
||||
*/
|
||||
public function languages(): DataResponse {
|
||||
return new DataResponse([
|
||||
|
|
@ -54,7 +62,9 @@ class TranslationApiController extends \OCP\AppFramework\OCSController {
|
|||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @PublicPage
|
||||
* @UserRateThrottle(limit=25, period=120)
|
||||
* @AnonRateThrottle(limit=10, period=120)
|
||||
*/
|
||||
public function translate(string $text, ?string $fromLanguage, string $toLanguage): DataResponse {
|
||||
try {
|
||||
|
|
@ -62,11 +72,11 @@ class TranslationApiController extends \OCP\AppFramework\OCSController {
|
|||
'text' => $this->translationManager->translate($text, $fromLanguage, $toLanguage)
|
||||
]);
|
||||
} catch (PreConditionNotMetException) {
|
||||
return new DataResponse(['message' => 'No translation provider available'], Http::STATUS_PRECONDITION_FAILED);
|
||||
return new DataResponse(['message' => $this->l->t('No translation provider available')], Http::STATUS_PRECONDITION_FAILED);
|
||||
} catch (InvalidArgumentException) {
|
||||
return new DataResponse(['message' => 'Could not detect language', Http::STATUS_NOT_FOUND]);
|
||||
return new DataResponse(['message' => $this->l->t('Could not detect language')], Http::STATUS_BAD_REQUEST);
|
||||
} catch (RuntimeException) {
|
||||
return new DataResponse(['message' => 'Unable to translate', Http::STATUS_INTERNAL_SERVER_ERROR]);
|
||||
return new DataResponse(['message' => $this->l->t('Unable to translate')], Http::STATUS_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue