Improved Translation Providers
This commit is contained in:
parent
0b66008af2
commit
84fd13ce95
@ -28,9 +28,7 @@ class CrowdinProviderTest extends ProviderTestCase
|
||||
yield [
|
||||
$this->createProvider($this->getClient()->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com'),
|
||||
'crowdin://api.crowdin.com',
|
||||
];
|
||||
@ -38,9 +36,7 @@ class CrowdinProviderTest extends ProviderTestCase
|
||||
yield [
|
||||
$this->createProvider($this->getClient()->withOptions([
|
||||
'base_uri' => 'https://domain.api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'domain.api.crowdin.com'),
|
||||
'crowdin://domain.api.crowdin.com',
|
||||
];
|
||||
@ -48,9 +44,7 @@ class CrowdinProviderTest extends ProviderTestCase
|
||||
yield [
|
||||
$this->createProvider($this->getClient()->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com:99/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com:99'),
|
||||
'crowdin://api.crowdin.com:99',
|
||||
];
|
||||
@ -146,9 +140,7 @@ XLIFF;
|
||||
|
||||
$provider = $this->createProvider((new MockHttpClient($responses))->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com/api/v2/projects/1/');
|
||||
|
||||
$provider->write($translatorBag);
|
||||
@ -219,9 +211,7 @@ XLIFF;
|
||||
|
||||
$provider = $this->createProvider((new MockHttpClient($responses))->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com/api/v2/projects/1/');
|
||||
|
||||
$provider->write($translatorBag);
|
||||
@ -325,9 +315,7 @@ XLIFF;
|
||||
|
||||
$provider = $this->createProvider((new MockHttpClient($responses))->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com/api/v2/projects/1/');
|
||||
|
||||
$provider->write($translatorBag);
|
||||
@ -374,9 +362,7 @@ XLIFF;
|
||||
|
||||
$crowdinProvider = $this->createProvider((new MockHttpClient($responses))->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com/api/v2');
|
||||
|
||||
$translatorBag = $crowdinProvider->read([$domain], [$locale]);
|
||||
@ -459,9 +445,7 @@ XLIFF
|
||||
|
||||
$crowdinProvider = $this->createProvider((new MockHttpClient($responses))->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com/api/v2');
|
||||
|
||||
$translatorBag = $crowdinProvider->read([$domain], [$locale]);
|
||||
@ -567,9 +551,7 @@ XLIFF
|
||||
|
||||
$provider = $this->createProvider((new MockHttpClient($responses))->withOptions([
|
||||
'base_uri' => 'https://api.crowdin.com/api/v2/projects/1/',
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer API_TOKEN',
|
||||
],
|
||||
'auth_bearer' => 'API_TOKEN',
|
||||
]), $this->getLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.crowdin.com/api/v2/projects/1/');
|
||||
|
||||
$provider->delete($translatorBag);
|
||||
|
@ -21,12 +21,10 @@
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/config": "^5.3",
|
||||
"symfony/http-client": "^5.3",
|
||||
"symfony/translation": "^5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "^4.4|^5.2"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": { "Symfony\\Component\\Translation\\Bridge\\Crowdin\\": "" },
|
||||
"exclude-from-classmap": [
|
||||
|
@ -18,11 +18,9 @@
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/http-client": "^5.3",
|
||||
"symfony/config": "^5.3",
|
||||
"symfony/translation": "^5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "^4.4|^5.2"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": { "Symfony\\Component\\Translation\\Bridge\\Loco\\": "" },
|
||||
"exclude-from-classmap": [
|
||||
|
@ -52,7 +52,7 @@ final class LokaliseProviderFactory extends AbstractProviderFactory
|
||||
|
||||
$endpoint = sprintf('%s%s', 'default' === $dsn->getHost() ? self::HOST : $dsn->getHost(), $dsn->getPort() ? ':'.$dsn->getPort() : '');
|
||||
$client = $this->client->withOptions([
|
||||
'base_uri' => sprintf('https://%sprojects/%s/api2/', $endpoint, $this->getUser($dsn)),
|
||||
'base_uri' => 'https://'.$endpoint.'/projects/'.$this->getUser($dsn).'/api2/',
|
||||
'headers' => [
|
||||
'X-Api-Token' => $this->getPassword($dsn),
|
||||
],
|
||||
|
@ -17,12 +17,10 @@
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/config": "^5.3",
|
||||
"symfony/http-client": "^5.3",
|
||||
"symfony/translation": "^5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "^4.4|^5.2"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": { "Symfony\\Component\\Translation\\Bridge\\Lokalise\\": "" },
|
||||
"exclude-from-classmap": [
|
||||
|
@ -104,25 +104,21 @@ final class PoEditorProvider implements ProviderInterface
|
||||
|
||||
foreach ($locales as $locale) {
|
||||
foreach ($domains as $domain) {
|
||||
$exportResponses[] = [
|
||||
'response' => $this->client->request('POST', 'projects/export', [
|
||||
'body' => [
|
||||
'api_token' => $this->apiKey,
|
||||
'id' => $this->projectId,
|
||||
'language' => $locale,
|
||||
'type' => 'xlf',
|
||||
'filters' => json_encode(['translated']),
|
||||
'tags' => json_encode([$domain]),
|
||||
],
|
||||
]),
|
||||
'locale' => $locale,
|
||||
'domain' => $domain,
|
||||
];
|
||||
$response = $this->client->request('POST', 'projects/export', [
|
||||
'body' => [
|
||||
'api_token' => $this->apiKey,
|
||||
'id' => $this->projectId,
|
||||
'language' => $locale,
|
||||
'type' => 'xlf',
|
||||
'filters' => json_encode(['translated']),
|
||||
'tags' => json_encode([$domain]),
|
||||
],
|
||||
]);
|
||||
$exportResponses[] = [$response, $locale, $domain];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($exportResponses as $exportResponse) {
|
||||
$response = $exportResponse['response'];
|
||||
foreach ($exportResponses as [$response, $locale, $domain]) {
|
||||
$responseContent = $response->toArray(false);
|
||||
|
||||
if (200 !== $response->getStatusCode() || '200' !== (string) $responseContent['response']['code']) {
|
||||
@ -131,19 +127,10 @@ final class PoEditorProvider implements ProviderInterface
|
||||
}
|
||||
|
||||
$fileUrl = $responseContent['result']['url'];
|
||||
$downloadResponses[] = [
|
||||
'response' => $this->client->request('GET', $fileUrl),
|
||||
'locale' => $exportResponse['locale'],
|
||||
'domain' => $exportResponse['domain'],
|
||||
'fileUrl' => $fileUrl,
|
||||
];
|
||||
$downloadResponses[] = [$this->client->request('GET', $fileUrl), $locale, $domain, $fileUrl];
|
||||
}
|
||||
|
||||
foreach ($downloadResponses as $downloadResponse) {
|
||||
$response = $downloadResponse['response'];
|
||||
$locale = $downloadResponse['locale'];
|
||||
$domain = $downloadResponse['domain'];
|
||||
$fileUrl = $downloadResponse['fileUrl'];
|
||||
foreach ($downloadResponses as [$response, $locale, $domain, $fileUrl]) {
|
||||
$responseContent = $response->getContent(false);
|
||||
|
||||
if (200 !== $response->getStatusCode()) {
|
||||
|
@ -17,12 +17,10 @@
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/config": "^5.3",
|
||||
"symfony/http-client": "^5.3",
|
||||
"symfony/translation": "^5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "^4.4|^5.2"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": { "Symfony\\Component\\Translation\\Bridge\\PoEditor\\": "" },
|
||||
"exclude-from-classmap": [
|
||||
|
Reference in New Issue
Block a user