diff --git a/src/Symfony/Component/Translation/Bridge/Lokalise/LokaliseProvider.php b/src/Symfony/Component/Translation/Bridge/Lokalise/LokaliseProvider.php
index 06a95dc2e8759..a1243e483956a 100644
--- a/src/Symfony/Component/Translation/Bridge/Lokalise/LokaliseProvider.php
+++ b/src/Symfony/Component/Translation/Bridge/Lokalise/LokaliseProvider.php
@@ -147,7 +147,6 @@ private function exportFiles(array $locales, array $domains): array
'json' => [
'format' => 'symfony_xliff',
'original_filenames' => true,
- 'directory_prefix' => '%LANG_ISO%',
'filter_langs' => array_values($locales),
'filter_filenames' => array_map([$this, 'getLokaliseFilenameFromDomain'], $domains),
'export_empty_as' => 'skip',
@@ -167,7 +166,12 @@ private function exportFiles(array $locales, array $domains): array
throw new ProviderException(sprintf('Unable to export translations from Lokalise: "%s".', $response->getContent(false)), $response);
}
- return $responseContent['files'];
+ // Lokalise returns languages with "-" separator, we need to reformat them to "_" separator.
+ $reformattedLanguages = array_map(function ($language) {
+ return str_replace('-', '_', $language);
+ }, array_keys($responseContent['files']));
+
+ return array_combine($reformattedLanguages, $responseContent['files']);
}
private function createKeys(array $keys, string $domain): array
diff --git a/src/Symfony/Component/Translation/Bridge/Lokalise/Tests/LokaliseProviderTest.php b/src/Symfony/Component/Translation/Bridge/Lokalise/Tests/LokaliseProviderTest.php
index 127f0b3f816e4..51270cc82d350 100644
--- a/src/Symfony/Component/Translation/Bridge/Lokalise/Tests/LokaliseProviderTest.php
+++ b/src/Symfony/Component/Translation/Bridge/Lokalise/Tests/LokaliseProviderTest.php
@@ -559,7 +559,6 @@ public function testReadForOneLocaleAndOneDomain(string $locale, string $domain,
$expectedBody = json_encode([
'format' => 'symfony_xliff',
'original_filenames' => true,
- 'directory_prefix' => '%LANG_ISO%',
'filter_langs' => [$locale],
'filter_filenames' => [$domain.'.xliff'],
'export_empty_as' => 'skip',
@@ -581,15 +580,10 @@ public function testReadForOneLocaleAndOneDomain(string $locale, string $domain,
]));
};
- $loader = $this->getLoader();
- $loader->expects($this->once())
- ->method('load')
- ->willReturn((new XliffFileLoader())->load($responseContent, $locale, $domain));
-
$provider = self::createProvider((new MockHttpClient($response))->withOptions([
'base_uri' => 'https://api.lokalise.com/api2/projects/PROJECT_ID/',
'headers' => ['X-Api-Token' => 'API_KEY'],
- ]), $loader, $this->getLogger(), $this->getDefaultLocale(), 'api.lokalise.com');
+ ]), new XliffFileLoader(), $this->getLogger(), $this->getDefaultLocale(), 'api.lokalise.com');
$translatorBag = $provider->read([$domain], [$locale]);
// We don't want to assert equality of metadata here, due to the ArrayLoader usage.
@@ -761,6 +755,36 @@ public static function getResponsesForOneLocaleAndOneDomain(): \Generator
$expectedTranslatorBagEn,
];
+ $expectedTranslatorBagEnUS = new TranslatorBag();
+ $expectedTranslatorBagEnUS->addCatalogue($arrayLoader->load([
+ 'index.hello' => 'Hello',
+ 'index.greetings' => 'Welcome, {firstname}!',
+ ], 'en_US'));
+
+ yield ['en_US', 'messages', <<<'XLIFF'
+
+
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: