Merge pull request #37704 from nextcloud/bugfix/noid/fix-translations-api

fix(translation): Fix several issues with the translations api
This commit is contained in:
John Molakvoæ 2023-04-13 10:48:09 +02:00 committed by GitHub
commit b3f59aa4c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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);
}
}
}