Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 54ba63a

Browse filesBrowse files
bug #31786 [Translation] Fixed case sensitivity of lint:xliff command (javiereguiluz)
This PR was squashed before being merged into the 4.2 branch (closes #31786). Discussion ---------- [Translation] Fixed case sensitivity of lint:xliff command | Q | A | ------------- | --- | Branch? | 4.2 | Bug fix? | yes | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | - | License | MIT | Doc PR | (not needed) I was checking some errors of `lint:xliff` (https://travis-ci.org/EasyCorp/EasyAdminBundle/jobs/540053551#L657) and saw this: ``` ERROR in src/Resources/translations/EasyAdminBundle.sr_RS.xlf * There is a mismatch between the language included in the file name ("EasyAdminBundle.sr_RS.xlf") and the "sr-rs" value used in the "target-language" attribute of the file. ERROR in src/Resources/translations/EasyAdminBundle.zh_CN.xlf * There is a mismatch between the language included in the file name ("EasyAdminBundle.zh_CN.xlf") and the "zh-cn" value used in the "target-language" attribute of the file. ``` This was suspicious, so I checked the XLIFF standard and it says (http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#target-language): ``` target-language: Unlike the other XLIFF attributes, the values are not case-sensitive. ``` So, it's valid that `zh-cn` is the target language and `zh-CN` is the file extension. This PR fixes that. Commits ------- ec690b2 [Translation] Fixed case sensitivity of lint:xliff command
2 parents dfae7e9 + ec690b2 commit 54ba63a
Copy full SHA for 54ba63a

File tree

2 files changed

+14
-1
lines changed
Filter options

2 files changed

+14
-1
lines changed

‎src/Symfony/Component/Translation/Command/XliffLintCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Command/XliffLintCommand.php
+3-1Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ private function validate($content, $file = null)
124124
$normalizedLocale = preg_quote(str_replace('-', '_', $targetLanguage), '/');
125125
// strict file names require translation files to be named '____.locale.xlf'
126126
// otherwise, both '____.locale.xlf' and 'locale.____.xlf' are allowed
127-
$expectedFilenamePattern = $this->requireStrictFileNames ? sprintf('/^.*\.%s\.xlf/', $normalizedLocale) : sprintf('/^(.*\.%s\.xlf|%s\..*\.xlf)/', $normalizedLocale, $normalizedLocale);
127+
// also, the regexp matching must be case-insensitive, as defined for 'target-language' values
128+
// http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#target-language
129+
$expectedFilenamePattern = $this->requireStrictFileNames ? sprintf('/^.*\.(?i:%s)\.xlf/', $normalizedLocale) : sprintf('/^(.*\.(?i:%s)\.xlf|(?i:%s)\..*\.xlf)/', $normalizedLocale, $normalizedLocale);
128130

129131
if (0 === preg_match($expectedFilenamePattern, basename($file))) {
130132
$errors[] = [

‎src/Symfony/Component/Translation/Tests/Command/XliffLintCommandTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Tests/Command/XliffLintCommandTest.php
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,17 @@ public function testLintIncorrectTargetLanguage()
9494
$this->assertContains('There is a mismatch between the language included in the file name ("messages.en.xlf") and the "es" value used in the "target-language" attribute of the file.', trim($tester->getDisplay()));
9595
}
9696

97+
public function testLintTargetLanguageIsCaseInsensitive()
98+
{
99+
$tester = $this->createCommandTester();
100+
$filename = $this->createFile('note', 'zh-cn', 'messages.zh_CN.xlf');
101+
102+
$tester->execute(['filename' => $filename], ['decorated' => false]);
103+
104+
$this->assertEquals(0, $tester->getStatusCode());
105+
$this->assertContains('[OK] All 1 XLIFF files contain valid syntax.', trim($tester->getDisplay()));
106+
}
107+
97108
/**
98109
* @expectedException \RuntimeException
99110
*/

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.