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

Skip to content

[Translation] Add support for named arguments in PhpExtractor #45972

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

Closed
1 task
welcoMattic opened this issue Apr 7, 2022 · 3 comments
Closed
1 task

[Translation] Add support for named arguments in PhpExtractor #45972

welcoMattic opened this issue Apr 7, 2022 · 3 comments

Comments

@welcoMattic
Copy link
Member

Description

In PhpExtractor (used to extract translation keys (message) from PHP code), there is no support for PHP8 syntax with named arguments

ex:

$translator->trans(domain: 'validators', message: 'foo.bar')

We discussed with @stof & @nicolas-grekas about adding this support. It seems to require to add a new optional dependency on https://github.com/nikic/PHP-Parser to leverage AST features.

Todo:

  • test with a PoC with PHP-parser

Example

No response

@welcoMattic welcoMattic self-assigned this Apr 7, 2022
@stof
Copy link
Member

stof commented Apr 7, 2022

Named arguments might be doable in the existing token-based extractor even thought it is probably easier with the AST (the other issue about inline assignments really needs the AST approach).

@fancyweb
Copy link
Contributor

fancyweb commented Apr 8, 2022

Duplicate of #44899 isn't it?

@welcoMattic
Copy link
Member Author

Closed in favor of #44899

fabpot added a commit that referenced this issue Oct 20, 2022
This PR was merged into the 6.2 branch.

Discussion
----------

[Translation] Add `PhpAstExtractor`

| Q             | A
| ------------- | ---
| Branch?       | 6.2
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #44899, #42285, #45972, #45039
| License       | MIT
| Doc PR        | symfony/symfony-docs#17369

After discussions with `@stof` and `@nicolas`-grekas at SymfonyLive Paris 2022, it appears clear that we need a brand new PhpExtractor in Translation to support various syntax, especially PHP8 new syntax (named arguments for example).

In order to make this new extractor sustainable, performant and maintainable, it must be based on AST. That's why this PR adds a new optional dependency on [nikic/php-parser](https://github.com/nikic/PHP-Parser).

The tests suite is the same as PhpExtractorTest, in addition to new cases for newly supported syntax.

NB: I was inspired by https://github.com/php-translation/extractor design, with adaptations for Symfony.

To-do:

- [x] As suggested by `@Nyholm`, take a look at https://github.com/php-translation/extractor
- [x] Fix #45039 (could be achieved easily with AST tree)

Commits
-------

5d4a81f Add PhpAstExtractor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants