Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Translation] Fix extraction when dealing with VariadicPlaceholder parameters #48451

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 13, 2022
Merged

Conversation

Kocal
Copy link
Member

@Kocal Kocal commented Dec 3, 2022

Q A
Branch? 6.2
Bug fix? yes
New feature? no
Deprecations? no
Tickets Fix #48422
License MIT
Doc PR symfony/symfony-docs#...

I don't have the time for now to check if the command has tests or not, but dealing with raw args with + filtering for Node\Arg instance make the extract command working again.

The issue is "caused by" https://github.com/symfony/symfony/blob/6.3/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php#L71, the extract command is not able to deal with VariadicPlaceholder node. Changing to [$this, 'trans'] works, but this is not the wanted solution.

Before:

symfony console translation:extract fr --force -vvv

Translation Messages Extractor and Dumper
=========================================

 // Generating "fr" translation files for "default directory"

 // Parsing templates...


In CallLike.php line 36:

  [AssertionError (1)]
  assert(!$this->isFirstClassCallable())


Exception trace:
  at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php:36
 assert() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php:36
 PhpParser\Node\Expr\CallLike->getArgs() at /Users/kocal/workspace/chronos/vendor/symfony/translation/Extractor/Visitor/AbstractVisitor.php:66
 Symfony\Component\Translation\Extractor\Visitor\AbstractVisitor->hasNodeNamedArguments() at /Users/kocal/workspace/chronos/vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php:40
 Symfony\Component\Translation\Extractor\Visitor\TransMethodVisitor->enterNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:123
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at /Users/kocal/workspace/chronos/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:91
 PhpParser\NodeTraverser->traverse() at /Users/kocal/workspace/chronos/vendor/symfony/translation/Extractor/PhpAstExtractor.php:56
 Symfony\Component\Translation\Extractor\PhpAstExtractor->extract() at /Users/kocal/workspace/chronos/vendor/symfony/translation/Extractor/ChainExtractor.php:48
 Symfony\Component\Translation\Extractor\ChainExtractor->extract() at /Users/kocal/workspace/chronos/vendor/symfony/framework-bundle/Command/TranslationUpdateCommand.php:395
 Symfony\Bundle\FrameworkBundle\Command\TranslationUpdateCommand->extractMessages() at /Users/kocal/workspace/chronos/vendor/symfony/framework-bundle/Command/TranslationUpdateCommand.php:200
 Symfony\Bundle\FrameworkBundle\Command\TranslationUpdateCommand->execute() at /Users/kocal/workspace/chronos/vendor/symfony/console/Command/Command.php:312
 Symfony\Component\Console\Command\Command->run() at /Users/kocal/workspace/chronos/vendor/symfony/console/Application.php:1038
 Symfony\Component\Console\Application->doRunCommand() at /Users/kocal/workspace/chronos/vendor/symfony/framework-bundle/Console/Application.php:88
 Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /Users/kocal/workspace/chronos/vendor/symfony/console/Application.php:312
 Symfony\Component\Console\Application->doRun() at /Users/kocal/workspace/chronos/vendor/symfony/framework-bundle/Console/Application.php:77
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /Users/kocal/workspace/chronos/vendor/symfony/console/Application.php:168
 Symfony\Component\Console\Application->run() at /Users/kocal/workspace/chronos/vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php:54
 Symfony\Component\Runtime\Runner\Symfony\ConsoleApplicationRunner->run() at /Users/kocal/workspace/chronos/vendor/autoload_runtime.php:29

After:

symfony console translation:extract fr --force -vvv

Translation Messages Extractor and Dumper
=========================================

 // Generating "fr" translation files for "default directory"

 // Parsing templates...

 // Loading translation files...

 // Writing files...


 [OK] Translation files were successfully updated.

@carsonbot
Copy link

Hey!

Thanks for your PR. You are targeting branch "6.2" but it seems your PR description refers to branch "6.2 ".
Could you update the PR description or change target branch? This helps core maintainers a lot.

Cheers!

Carsonbot

@gndk
Copy link
Contributor

gndk commented Dec 3, 2022

I don't have the time for now to check if the command has tests or not

Tests for the commands are here in the FramewordBundle:

TranslationDebugCommandTest
TranslationUpdateCommandTest

Curious why they did not catch this 🤔

The issue is "caused by" https://github.com/symfony/symfony/blob/6.3/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php#L71

Maybe because they are not run with actual twig templates as fixtures?

weaverryan added a commit to symfony-tools/carsonbot that referenced this pull request Dec 5, 2022
…irault)

This PR was squashed before being merged into the master branch.

Discussion
----------

Improve Mismatch branch when there is markdown comment

Sometime, contributors don't remove all the line and  keep markdown comment (default in MR template)

```
| Q             | A
| ------------- | ---
| Branch?       | 6.2 <!-- see below -->
| Bug fix?      | yes/no
```

This PR take care of comments and  no publish in this cas

Examples:
symfony/symfony#48451 (comment)
symfony/symfony#48447 (comment)

Commits
-------

75e3578 Improve Mismatch branch when there is markdown comment
@nicolas-grekas
Copy link
Member

Thank you @Kocal.

@nicolas-grekas nicolas-grekas merged commit b000c05 into symfony:6.2 Dec 13, 2022
@Kocal Kocal deleted the fix/GH-48422 branch December 13, 2022 16:14
@fabpot fabpot mentioned this pull request Dec 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants