From e6c269e345e611299232b2c64afe6e12bfbba313 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 1 May 2019 15:02:51 +0200 Subject: [PATCH 01/11] updated CHANGELOG for 3.4.27 --- CHANGELOG-3.4.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG-3.4.md b/CHANGELOG-3.4.md index 2d0e6ecdea..5979db7bcd 100644 --- a/CHANGELOG-3.4.md +++ b/CHANGELOG-3.4.md @@ -7,6 +7,16 @@ in 3.4 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v3.4.0...v3.4.1 +* 3.4.27 (2019-05-01) + + * bug #31338 Revert "bug #30620 [FrameworkBundle][HttpFoundation] make session service resettable (dmaicher)" (nicolas-grekas) + * bug #31326 fix ConsoleFormatter - call to a member function format() on string (keksa) + * bug #31331 [Workflow] Fixed dumping when many transition with same name exist (lyrixx) + * bug #31302 [FramworkBundle] mark any env vars found in the ide setting as used (nicolas-grekas) + * bug #31290 [TwigBundle] Use the apply tag instead of the filter tag (greg0ire) + * bug #31275 [Translator] Preserve default domain when extracting strings from php files (Stadly) + * bug #31213 [WebProfilerBundle] Intercept redirections only for HTML format (javiereguiluz) + * 3.4.26 (2019-04-17) * bug #31084 [HttpFoundation] Make MimeTypeExtensionGuesser case insensitive (vermeirentony) From 1611faf76bb12df8bae3775935dde0b8d1259595 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 1 May 2019 15:03:01 +0200 Subject: [PATCH 02/11] update CONTRIBUTORS for 3.4.27 --- CONTRIBUTORS.md | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 146b9822ff..ec97d42d4b 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -20,12 +20,12 @@ Symfony is the result of the work of many people who made the code better - Johannes S (johannes) - Javier Eguiluz (javier.eguiluz) - Kris Wallsmith (kriswallsmith) - - Grégoire Pineau (lyrixx) - Roland Franssen (ro0) + - Grégoire Pineau (lyrixx) - Hugo Hamon (hhamon) - Abdellatif Ait boudad (aitboudad) - - Romain Neutron (romain) - Samuel ROZE (sroze) + - Romain Neutron (romain) - Pascal Borreli (pborreli) - Wouter De Jong (wouterj) - Joseph Bielawski (stloyd) @@ -40,8 +40,8 @@ Symfony is the result of the work of many people who made the code better - Igor Wiedler (igorw) - Eriksen Costa (eriksencosta) - Guilhem Niot (energetick) - - Sarah Khalil (saro0h) - Hamza Amrouche (simperfit) + - Sarah Khalil (saro0h) - Jonathan Wage (jwage) - Tobias Nyholm (tobias) - Lynn van der Berg (kjarli) @@ -68,10 +68,10 @@ Symfony is the result of the work of many people who made the code better - Gábor Egyed (1ed) - Bilal Amarni (bamarni) - Titouan Galopin (tgalopin) + - Grégoire Paris (greg0ire) - Mathieu Piot (mpiot) - David Maicher (dmaicher) - Florin Patan (florinpatan) - - Grégoire Paris (greg0ire) - Gabriel Ostrolucký (gadelat) - Valentin Udaltsov (vudaltsov) - Vladimir Reznichenko (kalessil) @@ -93,6 +93,7 @@ Symfony is the result of the work of many people who made the code better - Brandon Turner - Luis Cordova (cordoval) - Graham Campbell (graham) + - David Buchmann (dbu) - Daniel Holmes (dholmes) - Toni Uebernickel (havvg) - Bart van den Burg (burgov) @@ -101,7 +102,6 @@ Symfony is the result of the work of many people who made the code better - John Wards (johnwards) - Thomas Calvet (fancyweb) - Fran Moreno (franmomu) - - David Buchmann (dbu) - Antoine Hérault (herzult) - Paráda József (paradajozsef) - Arnaud Le Blanc (arnaud-lb) @@ -142,6 +142,7 @@ Symfony is the result of the work of many people who made the code better - Alex Pott - Vincent AUBERT (vincent) - Juti Noppornpitak (shiroyuki) + - Teoh Han Hui (teohhanhui) - Anthony MARTIN (xurudragon) - Tigran Azatyan (tigranazatyan) - Sebastian Hörl (blogsh) @@ -151,7 +152,6 @@ Symfony is the result of the work of many people who made the code better - Arnaud Kleinpeter (nanocom) - Jannik Zschiesche (apfelbox) - Guilherme Blanco (guilhermeblanco) - - Teoh Han Hui (teohhanhui) - SpacePossum - Pablo Godel (pgodel) - Jérémie Augustin (jaugustin) @@ -181,6 +181,7 @@ Symfony is the result of the work of many people who made the code better - Artur Kotyrba - Tyson Andre - GDIBass + - Jan Schädlich (jschaedl) - jeremyFreeAgent (Jérémy Romey) (jeremyfreeagent) - James Halsall (jaitsu) - Matthieu Napoli (mnapoli) @@ -192,6 +193,7 @@ Symfony is the result of the work of many people who made the code better - Daniel Espendiller - Possum - Dorian Villet (gnutix) + - George Mponos (gmponos) - Sergey Linnik (linniksa) - Richard Miller (mr_r_miller) - Albert Casademont (acasademont) @@ -199,6 +201,7 @@ Symfony is the result of the work of many people who made the code better - Dennis Benkert (denderello) - DQNEO - Samuel NELA (snela) + - Alexander Schranz (alexander-schranz) - Gregor Harlan (gharlan) - Gary PEGEOT (gary-p) - Ruben Gonzalez (rubenrua) @@ -213,7 +216,6 @@ Symfony is the result of the work of many people who made the code better - bronze1man - sun (sun) - Larry Garfield (crell) - - George Mponos (gmponos) - Michaël Perrin (michael.perrin) - Nikolay Labinskiy (e-moe) - Martin Schuhfuß (usefulthink) @@ -225,7 +227,6 @@ Symfony is the result of the work of many people who made the code better - Dominique Bongiraud - Jeremy Livingston (jeremylivingston) - Vincent Touzet (vincenttouzet) - - Jan Schädlich (jschaedl) - Michael Lee (zerustech) - Matthieu Auger (matthieuauger) - Leszek Prabucki (l3l0) @@ -237,7 +238,6 @@ Symfony is the result of the work of many people who made the code better - Andreas Schempp (aschempp) - Justin Hileman (bobthecow) - Blanchon Vincent (blanchonvincent) - - Alexander Schranz (alexander-schranz) - Michele Orselli (orso) - Sven Paulus (subsven) - Maxime Veber (nek-) @@ -303,12 +303,14 @@ Symfony is the result of the work of many people who made the code better - Bob den Otter (bopp) - Thomas Schulz (king2500) - Frank de Jonge (frenkynet) + - Andre Rømcke (andrerom) - Nikita Konstantinov - Wodor Wodorski - Thomas Lallement (raziel057) - mcfedr (mcfedr) - Colin O'Dell (colinodell) - Giorgio Premi + - renanbr - Alex Rock (pierstoval) - Ben Davies (bendavies) - Beau Simensen (simensen) @@ -371,7 +373,6 @@ Symfony is the result of the work of many people who made the code better - Ricard Clau (ricardclau) - Mark Challoner (markchalloner) - Gennady Telegin (gtelegin) - - renanbr - Erin Millard - Artur Melo (restless) - Matthew Lewinski (lewinski) @@ -380,7 +381,6 @@ Symfony is the result of the work of many people who made the code better - Nicolas LEFEVRE (nicoweb) - alquerci - Mateusz Sip (mateusz_sip) - - Andre Rømcke (andrerom) - Francesco Levorato - Dmitrii Poddubnyi (karser) - Vitaliy Zakharov (zakharovvi) @@ -391,6 +391,7 @@ Symfony is the result of the work of many people who made the code better - Tomasz Kowalczyk (thunderer) - Artur Eshenbrener - Andreas Braun + - Arjen van der Meijden - Damien Alexandre (damienalexandre) - Thomas Perez (scullwm) - Felix Labrecque @@ -411,6 +412,7 @@ Symfony is the result of the work of many people who made the code better - Grzegorz (Greg) Zdanowski (kiler129) - Iker Ibarguren (ikerib) - Kirill chEbba Chebunin (chebba) + - Stadly - Greg Thornton (xdissent) - Quynh Xuan Nguyen (xuanquynh) - Martin Hujer (martinhujer) @@ -558,10 +560,10 @@ Symfony is the result of the work of many people who made the code better - Jakub Škvára (jskvara) - Andrew Udvare (audvare) - alexpods - - Arjen van der Meijden - Adam Szaraniec (mimol) - Dariusz Ruminski - Erik Trapman (eriktrapman) + - Rokas Mikalkėnas (rokasm) - De Cock Xavier (xdecock) - Almog Baku (almogbaku) - Scott Arciszewski @@ -806,7 +808,6 @@ Symfony is the result of the work of many people who made the code better - John Bohn (jbohn) - Marc Morera (mmoreram) - Saif Eddin Gmati (azjezz) - - Stadly - Andrew Hilobok (hilobok) - Noah Heck (myesain) - Christian Soronellas (theunic) @@ -960,7 +961,6 @@ Symfony is the result of the work of many people who made the code better - Benoît Merlet (trompette) - Koen Kuipers - datibbaw - - Rokas Mikalkėnas (rokasm) - Erik Saunier (snickers) - Rootie - Kyle @@ -968,6 +968,7 @@ Symfony is the result of the work of many people who made the code better - sensio - Chris Tanaskoski - Thomas Jarrand + - Antoine Bluchet (soyuka) - Sebastien Morel (plopix) - Patrick Kaufmann - Anton Dyshkant @@ -1009,6 +1010,7 @@ Symfony is the result of the work of many people who made the code better - Joost van Driel - Icode4Food (icode4food) - Radosław Benkel + - EStyles (insidestyles) - kevin.nadin - jean pasqualini (darkilliant) - Ross Motley (rossmotley) @@ -1035,6 +1037,7 @@ Symfony is the result of the work of many people who made the code better - Ashura - Hryhorii Hrebiniuk - johnstevenson + - Antonio Pauletich (x-coder264) - hamza - dantleech - Bastien DURAND (deamon) @@ -1054,6 +1057,7 @@ Symfony is the result of the work of many people who made the code better - chispita - Wojciech Sznapka - Gavin Staniforth + - Ksaveras Šakys (xawiers) - Ariel J. Birnbaum - Danijel Obradović - Pablo Borowicz @@ -1078,6 +1082,7 @@ Symfony is the result of the work of many people who made the code better - Mert Simsek (mrtsmsk0) - Lin Clark - Jeremy David (jeremy.david) + - Jordi Rejas - Troy McCabe - Ville Mattila - ilyes kooli @@ -1204,6 +1209,7 @@ Symfony is the result of the work of many people who made the code better - antograssiot - Ilya Vertakov - Brooks Boyd + - johnillo - Roger Webb - Dmitriy Simushev - Pawel Smolinski @@ -1272,6 +1278,7 @@ Symfony is the result of the work of many people who made the code better - Lars Ambrosius Wallenborn (larsborn) - Oriol Mangas Abellan (oriolman) - Sebastian Göttschkes (sgoettschkes) + - Toni Peric (tperic) - Tatsuya Tsuruoka - Ross Tuck - Andreas Erhard @@ -1407,6 +1414,7 @@ Symfony is the result of the work of many people who made the code better - Jon Gotlin (jongotlin) - Michael Dowling (mtdowling) - Karlos Presumido (oneko) + - Tony Vermeiren (tony) - Thomas Counsell - BilgeXA - r1pp3rj4ck @@ -1519,6 +1527,7 @@ Symfony is the result of the work of many people who made the code better - Francisco Facioni (fran6co) - Iwan van Staveren (istaveren) - Povilas S. (povilas) + - Laurent Negre (raulnet) - Evrard Boulou - pborreli - Boris Betzholz @@ -1716,6 +1725,7 @@ Symfony is the result of the work of many people who made the code better - Dmitriy Fedorenko - vlakoff - bertillon + - thib92 - Rudolf Ratusiński - Bertalan Attila - AmsTaFF (amstaff) @@ -1882,6 +1892,7 @@ Symfony is the result of the work of many people who made the code better - Yorkie Chadwick (yorkie76) - GuillaumeVerdon - Philipp Keck + - Angel Fernando Quiroz Campos - Ondrej Mirtes - akimsko - Youpie @@ -2129,6 +2140,7 @@ Symfony is the result of the work of many people who made the code better - samuel laulhau (lalop) - Laurent Bachelier (laurentb) - Luís Cobucci (lcobucci) + - Mehdi Achour (machour) - Marcos Gómez Vilches (markitosgv) - Matthieu Mota (matthieumota) - Matthieu Moquet (mattketmo) From 3d7ca2e596e0843d0a197968c05fde33bf297a34 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 1 May 2019 15:03:24 +0200 Subject: [PATCH 03/11] updated VERSION for 3.4.27 --- src/Symfony/Component/HttpKernel/Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 98ca339af1..2d1aa52352 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -67,12 +67,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '3.4.27-DEV'; + const VERSION = '3.4.27'; const VERSION_ID = 30427; const MAJOR_VERSION = 3; const MINOR_VERSION = 4; const RELEASE_VERSION = 27; - const EXTRA_VERSION = 'DEV'; + const EXTRA_VERSION = ''; const END_OF_MAINTENANCE = '11/2020'; const END_OF_LIFE = '11/2021'; From 15e9eec2259c2312a73c23fca9d2e08bfb4672f1 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 1 May 2019 15:30:28 +0200 Subject: [PATCH 04/11] bumped Symfony version to 3.4.28 --- src/Symfony/Component/HttpKernel/Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 2d1aa52352..686d4a9c55 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -67,12 +67,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '3.4.27'; - const VERSION_ID = 30427; + const VERSION = '3.4.28-DEV'; + const VERSION_ID = 30428; const MAJOR_VERSION = 3; const MINOR_VERSION = 4; - const RELEASE_VERSION = 27; - const EXTRA_VERSION = ''; + const RELEASE_VERSION = 28; + const EXTRA_VERSION = 'DEV'; const END_OF_MAINTENANCE = '11/2020'; const END_OF_LIFE = '11/2021'; From 55a3c761e994db7a544cd394a02421d4c338c64e Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 1 May 2019 15:31:03 +0200 Subject: [PATCH 05/11] updated CHANGELOG for 4.2.8 --- CHANGELOG-4.2.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG-4.2.md b/CHANGELOG-4.2.md index 5f18cce537..f45e7e7273 100644 --- a/CHANGELOG-4.2.md +++ b/CHANGELOG-4.2.md @@ -7,6 +7,25 @@ in 4.2 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v4.2.0...v4.2.1 +* 4.2.8 (2019-05-01) + + * bug #31338 Revert "bug #30620 [FrameworkBundle][HttpFoundation] make session service resettable (dmaicher)" (nicolas-grekas) + * bug #31326 fix ConsoleFormatter - call to a member function format() on string (keksa) + * bug #31331 [Workflow] Fixed dumping when many transition with same name exist (lyrixx) + * bug #31302 [FramworkBundle] mark any env vars found in the ide setting as used (nicolas-grekas) + * bug #31290 [TwigBundle] Use the apply tag instead of the filter tag (greg0ire) + * bug #31275 [Translator] Preserve default domain when extracting strings from php files (Stadly) + * bug #31240 Fix url matcher edge cases with trailing slash (arjenm) + * bug #31201 [Form] resolve class name parameters (xabbuh) + * bug #31213 [WebProfilerBundle] Intercept redirections only for HTML format (javiereguiluz) + * bug #31210 [PhpUnitBridge] fix reading phpunit.xml on bootstrap (nicolas-grekas) + * bug #31023 [Routing] Fix route URL generation in CLI context (X-Coder264) + * bug #31117 [FrameworkBundle] fix math depth handler configuration (Raulnet) + * bug #31182 [Routing] fix trailing slash matching with empty-matching trailing vars (nicolas-grekas) + * bug #31167 [Routing] fix matching trailing vars with defaults (nicolas-grekas) + * bug #31164 [Validator] fix LegacyTranslatorProxy (nicolas-grekas) + * bug #31156 [FrameworkBundle] call method with Translator component only (xabbuh) + * 4.2.7 (2019-04-17) * bug #31107 [Routing] fix trailing slash redirection with non-greedy trailing vars (nicolas-grekas) From 33c23dadb2832d4dbf879517cfd8be5a970d1f02 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 1 May 2019 15:31:08 +0200 Subject: [PATCH 06/11] updated VERSION for 4.2.8 --- src/Symfony/Component/HttpKernel/Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 3edfda3c43..cf8c24fb0f 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -73,12 +73,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '4.2.8-DEV'; + const VERSION = '4.2.8'; const VERSION_ID = 40208; const MAJOR_VERSION = 4; const MINOR_VERSION = 2; const RELEASE_VERSION = 8; - const EXTRA_VERSION = 'DEV'; + const EXTRA_VERSION = ''; const END_OF_MAINTENANCE = '07/2019'; const END_OF_LIFE = '01/2020'; From c9231e2d5a53da18ca7aa7eb7c04f70990ec30be Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 1 May 2019 15:33:38 +0200 Subject: [PATCH 07/11] bumped Symfony version to 4.2.9 --- src/Symfony/Component/HttpKernel/Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index cf8c24fb0f..541aced9f5 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -73,12 +73,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '4.2.8'; - const VERSION_ID = 40208; + const VERSION = '4.2.9-DEV'; + const VERSION_ID = 40209; const MAJOR_VERSION = 4; const MINOR_VERSION = 2; - const RELEASE_VERSION = 8; - const EXTRA_VERSION = ''; + const RELEASE_VERSION = 9; + const EXTRA_VERSION = 'DEV'; const END_OF_MAINTENANCE = '07/2019'; const END_OF_LIFE = '01/2020'; From 70a941ec0c22c45c3bf2c47dec6bbd95882be283 Mon Sep 17 00:00:00 2001 From: Roland Franssen Date: Thu, 2 May 2019 21:17:15 +0200 Subject: [PATCH 08/11] [Intl] Cleanup --- src/Symfony/Component/Intl/CONTRIBUTING.md | 91 ------------------- .../Data/Generator/CurrencyDataGenerator.php | 43 +++------ .../Data/Generator/RegionDataGenerator.php | 32 ++----- .../Data/Provider/CurrencyDataProvider.php | 7 +- .../Data/Provider/LanguageDataProvider.php | 5 +- .../Intl/Data/Provider/LocaleDataProvider.php | 5 +- .../Intl/Data/Provider/RegionDataProvider.php | 5 +- .../Intl/Data/Provider/ScriptDataProvider.php | 5 +- .../AbstractCurrencyDataProviderTest.php | 5 +- .../Provider/AbstractDataProviderTest.php | 2 +- .../AbstractLanguageDataProviderTest.php | 5 +- .../AbstractLocaleDataProviderTest.php | 5 +- .../AbstractRegionDataProviderTest.php | 3 +- .../AbstractScriptDataProviderTest.php | 5 +- 14 files changed, 43 insertions(+), 175 deletions(-) delete mode 100644 src/Symfony/Component/Intl/CONTRIBUTING.md diff --git a/src/Symfony/Component/Intl/CONTRIBUTING.md b/src/Symfony/Component/Intl/CONTRIBUTING.md deleted file mode 100644 index 971e0af7f5..0000000000 --- a/src/Symfony/Component/Intl/CONTRIBUTING.md +++ /dev/null @@ -1,91 +0,0 @@ -Contributing to the Intl component -================================== - -A very good way of contributing to the Intl component is by updating the -included data for the ICU version you have installed on your system. - -Preparation ------------ - -To prepare, you need to install the development dependencies of the component. - - $ cd /path/to/Symfony/Component/Intl - $ composer install - -Determining your ICU version ---------------------------- - -The ICU version installed in your PHP environment can be found by running -icu-version.php: - - $ php Resources/bin/icu-version.php - -Updating the ICU data ---------------------- - -To update the data files, run the update-icu-component.php script: - - $ php Resources/bin/update-icu-component.php - -The script needs the binaries "svn" and "make" to be available on your system. -It will download the latest version of the ICU sources for the ICU version -installed in your PHP environment. The script will then compile the "genrb" -binary and use it to compile the ICU data files to binaries. The binaries are -copied to the Resources/ directory of the Icu component found in the -vendor/symfony/icu/ directory. - -Updating the stub data ----------------------- - -In the previous step you updated the Icu component for the ICU version -installed on your system. If you are using the latest ICU version, you should -also create the stub data files which will be used by people who don't have -the intl extension installed. - -To update the stub files, run the update-stubs.php script: - - $ php Resources/bin/update-stubs.php - -The script will fail if you don't have the latest ICU version. If you want to -upgrade the ICU version, adjust the return value of the -`Intl::getIcuStubVersion()` before you run the script. - -The script creates copies of the binary resource bundles in the Icu component -and stores them in the Resources/ directory of the Intl component. The copies -are made for the locale "en" only and are stored in .php files, so that they -can be read even if the intl extension is not available. - -Creating a pull request ------------------------ - -You need to create up to two pull requests: - -* If you updated the Icu component, you need to push that change and create a - pull request in the `symfony/Icu` repository. Make sure to submit the pull - request to the correct master branch. If you updated the ICU data for version - 4.8, your pull request goes to branch `48-master`, for version 49 to - `49-master` and so on. - -* If you updated the stub files of the Intl component, you need to push that - change and create a pull request in the `symfony/symfony` repository. The - pull request should be based on the `master` branch. - -Combining .res files to a .dat-package --------------------------------------- - -The individual *.res files can be combined into a single .dat-file. -Unfortunately, PHP's `ResourceBundle` class is currently not able to handle -.dat-files. - -Once it is, the following steps have to be followed to build the .dat-file: - -1. Package the resource bundles into a single file - - $ find . -name *.res | sed -e "s/\.\///g" > packagelist.txt - $ pkgdata -p region -T build -d . packagelist.txt - -2. Clean up - - $ rm -rf build packagelist.txt - -3. You can now move region.dat to replace the version bundled with Symfony. diff --git a/src/Symfony/Component/Intl/Data/Generator/CurrencyDataGenerator.php b/src/Symfony/Component/Intl/Data/Generator/CurrencyDataGenerator.php index 1be618d787..f64daf275a 100644 --- a/src/Symfony/Component/Intl/Data/Generator/CurrencyDataGenerator.php +++ b/src/Symfony/Component/Intl/Data/Generator/CurrencyDataGenerator.php @@ -25,37 +25,20 @@ use Symfony\Component\Intl\Data\Util\LocaleScanner; */ class CurrencyDataGenerator extends AbstractDataGenerator { - const UNKNOWN_CURRENCY_ID = 'XXX'; - const EUROPEAN_COMPOSITE_UNIT_ID = 'XBA'; - const EUROPEAN_MONETARY_UNIT_ID = 'XBB'; - const EUROPEAN_UNIT_OF_ACCOUNT_XBC_ID = 'XBC'; - const EUROPEAN_UNIT_OF_ACCOUNT_XBD_ID = 'XBD'; - const TESTING_CURRENCY_CODE_ID = 'XTS'; - const ADB_UNIT_OF_ACCOUNT_ID = 'XUA'; - const GOLD_ID = 'XAU'; - const SILVER_ID = 'XAG'; - const PLATINUM_ID = 'XPT'; - const PALLADIUM_ID = 'XPD'; - const SUCRE_ID = 'XSU'; - const SPECIAL_DRAWING_RIGHTS_ID = 'XDR'; - - /** - * Monetary units excluded from generation. - */ private static $blacklist = [ - self::UNKNOWN_CURRENCY_ID => true, - self::EUROPEAN_COMPOSITE_UNIT_ID => true, - self::EUROPEAN_MONETARY_UNIT_ID => true, - self::EUROPEAN_UNIT_OF_ACCOUNT_XBC_ID => true, - self::EUROPEAN_UNIT_OF_ACCOUNT_XBD_ID => true, - self::TESTING_CURRENCY_CODE_ID => true, - self::ADB_UNIT_OF_ACCOUNT_ID => true, - self::GOLD_ID => true, - self::SILVER_ID => true, - self::PLATINUM_ID => true, - self::PALLADIUM_ID => true, - self::SUCRE_ID => true, - self::SPECIAL_DRAWING_RIGHTS_ID => true, + 'XBA' => true, // European Composite Unit + 'XBB' => true, // European Monetary Unit + 'XBC' => true, // European Unit of Account (XBC) + 'XBD' => true, // European Unit of Account (XBD) + 'XUA' => true, // ADB Unit of Account + 'XAU' => true, // Gold + 'XAG' => true, // Silver + 'XPT' => true, // Platinum + 'XPD' => true, // Palladium + 'XSU' => true, // Sucre + 'XDR' => true, // Special Drawing Rights + 'XTS' => true, // Testing Currency Code + 'XXX' => true, // Unknown Currency ]; /** diff --git a/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php b/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php index 0728db8030..9524e18eaf 100644 --- a/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php +++ b/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php @@ -27,32 +27,18 @@ use Symfony\Component\Intl\Data\Util\LocaleScanner; */ class RegionDataGenerator extends AbstractDataGenerator { - const UNKNOWN_REGION_ID = 'ZZ'; - const OUTLYING_OCEANIA_REGION_ID = 'QO'; - const EUROPEAN_UNION_ID = 'EU'; - const NETHERLANDS_ANTILLES_ID = 'AN'; - const BOUVET_ISLAND_ID = 'BV'; - const HEARD_MCDONALD_ISLANDS_ID = 'HM'; - const CLIPPERTON_ISLAND_ID = 'CP'; - const EUROZONE_ID = 'EZ'; - const UNITED_NATIONS_ID = 'UN'; - - /** - * Regions excluded from generation. - */ private static $blacklist = [ - self::UNKNOWN_REGION_ID => true, // Look like countries, but are sub-continents - self::OUTLYING_OCEANIA_REGION_ID => true, - self::EUROPEAN_UNION_ID => true, - self::EUROZONE_ID => true, - self::UNITED_NATIONS_ID => true, - // No longer exists - self::NETHERLANDS_ANTILLES_ID => true, + 'QO' => true, // Outlying Oceania + 'EU' => true, // European Union + 'EZ' => true, // Eurozone + 'UN' => true, // United Nations // Uninhabited islands - self::BOUVET_ISLAND_ID => true, - self::HEARD_MCDONALD_ISLANDS_ID => true, - self::CLIPPERTON_ISLAND_ID => true, + 'BV' => true, // Bouvet Island + 'HM' => true, // Heard & McDonald Islands + 'CP' => true, // Clipperton Island + // Misc + 'ZZ' => true, // Unknown Region ]; /** diff --git a/src/Symfony/Component/Intl/Data/Provider/CurrencyDataProvider.php b/src/Symfony/Component/Intl/Data/Provider/CurrencyDataProvider.php index dacde26f83..f31128535e 100644 --- a/src/Symfony/Component/Intl/Data/Provider/CurrencyDataProvider.php +++ b/src/Symfony/Component/Intl/Data/Provider/CurrencyDataProvider.php @@ -13,7 +13,6 @@ namespace Symfony\Component\Intl\Data\Provider; use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReaderInterface; use Symfony\Component\Intl\Exception\MissingResourceException; -use Symfony\Component\Intl\Locale; /** * Data provider for currency-related data. @@ -53,7 +52,7 @@ class CurrencyDataProvider public function getSymbol($currency, $displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } return $this->reader->readEntry($this->path, $displayLocale, ['Names', $currency, static::INDEX_SYMBOL]); @@ -62,7 +61,7 @@ class CurrencyDataProvider public function getName($currency, $displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } return $this->reader->readEntry($this->path, $displayLocale, ['Names', $currency, static::INDEX_NAME]); @@ -71,7 +70,7 @@ class CurrencyDataProvider public function getNames($displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } // ==================================================================== diff --git a/src/Symfony/Component/Intl/Data/Provider/LanguageDataProvider.php b/src/Symfony/Component/Intl/Data/Provider/LanguageDataProvider.php index 2178158513..ba31087a10 100644 --- a/src/Symfony/Component/Intl/Data/Provider/LanguageDataProvider.php +++ b/src/Symfony/Component/Intl/Data/Provider/LanguageDataProvider.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Intl\Data\Provider; use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReaderInterface; -use Symfony\Component\Intl\Locale; /** * Data provider for language-related ICU data. @@ -51,7 +50,7 @@ class LanguageDataProvider public function getName($language, $displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } return $this->reader->readEntry($this->path, $displayLocale, ['Names', $language]); @@ -60,7 +59,7 @@ class LanguageDataProvider public function getNames($displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } $languages = $this->reader->readEntry($this->path, $displayLocale, ['Names']); diff --git a/src/Symfony/Component/Intl/Data/Provider/LocaleDataProvider.php b/src/Symfony/Component/Intl/Data/Provider/LocaleDataProvider.php index 4328b57d2f..df00f64406 100644 --- a/src/Symfony/Component/Intl/Data/Provider/LocaleDataProvider.php +++ b/src/Symfony/Component/Intl/Data/Provider/LocaleDataProvider.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Intl\Data\Provider; use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReaderInterface; -use Symfony\Component\Intl\Locale; /** * Data provider for locale-related ICU data. @@ -57,7 +56,7 @@ class LocaleDataProvider public function getName($locale, $displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } return $this->reader->readEntry($this->path, $displayLocale, ['Names', $locale]); @@ -66,7 +65,7 @@ class LocaleDataProvider public function getNames($displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } $names = $this->reader->readEntry($this->path, $displayLocale, ['Names']); diff --git a/src/Symfony/Component/Intl/Data/Provider/RegionDataProvider.php b/src/Symfony/Component/Intl/Data/Provider/RegionDataProvider.php index 08bd724394..c1ce805f1c 100644 --- a/src/Symfony/Component/Intl/Data/Provider/RegionDataProvider.php +++ b/src/Symfony/Component/Intl/Data/Provider/RegionDataProvider.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Intl\Data\Provider; use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReaderInterface; -use Symfony\Component\Intl\Locale; /** * Data provider for region-related ICU data. @@ -46,7 +45,7 @@ class RegionDataProvider public function getName($region, $displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } return $this->reader->readEntry($this->path, $displayLocale, ['Names', $region]); @@ -55,7 +54,7 @@ class RegionDataProvider public function getNames($displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } $names = $this->reader->readEntry($this->path, $displayLocale, ['Names']); diff --git a/src/Symfony/Component/Intl/Data/Provider/ScriptDataProvider.php b/src/Symfony/Component/Intl/Data/Provider/ScriptDataProvider.php index c6844494a8..55cd862c5e 100644 --- a/src/Symfony/Component/Intl/Data/Provider/ScriptDataProvider.php +++ b/src/Symfony/Component/Intl/Data/Provider/ScriptDataProvider.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Intl\Data\Provider; use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReaderInterface; -use Symfony\Component\Intl\Locale; /** * Data provider for script-related ICU data. @@ -46,7 +45,7 @@ class ScriptDataProvider public function getName($script, $displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } return $this->reader->readEntry($this->path, $displayLocale, ['Names', $script]); @@ -55,7 +54,7 @@ class ScriptDataProvider public function getNames($displayLocale = null) { if (null === $displayLocale) { - $displayLocale = Locale::getDefault(); + $displayLocale = \Locale::getDefault(); } $names = $this->reader->readEntry($this->path, $displayLocale, ['Names']); diff --git a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractCurrencyDataProviderTest.php b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractCurrencyDataProviderTest.php index 428f6f89b0..4c566aed3c 100644 --- a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractCurrencyDataProviderTest.php +++ b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractCurrencyDataProviderTest.php @@ -13,7 +13,6 @@ namespace Symfony\Component\Intl\Tests\Data\Provider; use Symfony\Component\Intl\Data\Provider\CurrencyDataProvider; use Symfony\Component\Intl\Intl; -use Symfony\Component\Intl\Locale; /** * @author Bernhard Schussek @@ -631,7 +630,7 @@ abstract class AbstractCurrencyDataProviderTest extends AbstractDataProviderTest public function testGetNamesDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $this->assertSame( $this->dataProvider->getNames('de_AT'), @@ -670,7 +669,7 @@ abstract class AbstractCurrencyDataProviderTest extends AbstractDataProviderTest public function testGetNameDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $expected = $this->dataProvider->getNames('de_AT'); $actual = []; diff --git a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractDataProviderTest.php b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractDataProviderTest.php index d0ef4d273b..562f8386d1 100644 --- a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractDataProviderTest.php +++ b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractDataProviderTest.php @@ -703,7 +703,7 @@ abstract class AbstractDataProviderTest extends TestCase protected function setUp() { - Locale::setDefault('en'); + \Locale::setDefault('en'); Locale::setDefaultFallback('en'); } diff --git a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLanguageDataProviderTest.php b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLanguageDataProviderTest.php index 003e688d03..2b55349584 100644 --- a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLanguageDataProviderTest.php +++ b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLanguageDataProviderTest.php @@ -13,7 +13,6 @@ namespace Symfony\Component\Intl\Tests\Data\Provider; use Symfony\Component\Intl\Data\Provider\LanguageDataProvider; use Symfony\Component\Intl\Intl; -use Symfony\Component\Intl\Locale; /** * @author Bernhard Schussek @@ -865,7 +864,7 @@ abstract class AbstractLanguageDataProviderTest extends AbstractDataProviderTest public function testGetNamesDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $this->assertSame( $this->dataProvider->getNames('de_AT'), @@ -901,7 +900,7 @@ abstract class AbstractLanguageDataProviderTest extends AbstractDataProviderTest public function testGetNameDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $names = $this->dataProvider->getNames('de_AT'); diff --git a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLocaleDataProviderTest.php b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLocaleDataProviderTest.php index aeca40cdbd..88242a6f9b 100644 --- a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLocaleDataProviderTest.php +++ b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLocaleDataProviderTest.php @@ -13,7 +13,6 @@ namespace Symfony\Component\Intl\Tests\Data\Provider; use Symfony\Component\Intl\Data\Provider\LocaleDataProvider; use Symfony\Component\Intl\Intl; -use Symfony\Component\Intl\Locale; /** * @author Bernhard Schussek @@ -64,7 +63,7 @@ abstract class AbstractLocaleDataProviderTest extends AbstractDataProviderTest public function testGetNamesDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $this->assertSame( $this->dataProvider->getNames('de_AT'), @@ -100,7 +99,7 @@ abstract class AbstractLocaleDataProviderTest extends AbstractDataProviderTest public function testGetNameDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $names = $this->dataProvider->getNames('de_AT'); diff --git a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractRegionDataProviderTest.php b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractRegionDataProviderTest.php index 1f5febb2b8..aeb922f9e3 100644 --- a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractRegionDataProviderTest.php +++ b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractRegionDataProviderTest.php @@ -13,7 +13,6 @@ namespace Symfony\Component\Intl\Tests\Data\Provider; use Symfony\Component\Intl\Data\Provider\RegionDataProvider; use Symfony\Component\Intl\Intl; -use Symfony\Component\Intl\Locale; /** * @author Bernhard Schussek @@ -316,7 +315,7 @@ abstract class AbstractRegionDataProviderTest extends AbstractDataProviderTest public function testGetNamesDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $this->assertSame( $this->dataProvider->getNames('de_AT'), diff --git a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php index db4b81ebdb..8620fb2060 100644 --- a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php +++ b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php @@ -13,7 +13,6 @@ namespace Symfony\Component\Intl\Tests\Data\Provider; use Symfony\Component\Intl\Data\Provider\ScriptDataProvider; use Symfony\Component\Intl\Intl; -use Symfony\Component\Intl\Locale; /** * @author Bernhard Schussek @@ -255,7 +254,7 @@ abstract class AbstractScriptDataProviderTest extends AbstractDataProviderTest public function testGetNamesDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $this->assertSame( $this->dataProvider->getNames('de_AT'), @@ -291,7 +290,7 @@ abstract class AbstractScriptDataProviderTest extends AbstractDataProviderTest public function testGetNameDefaultLocale() { - Locale::setDefault('de_AT'); + \Locale::setDefault('de_AT'); $names = $this->dataProvider->getNames('de_AT'); From 29bd2ad3f27e53071da8be98b06b850df91c3b1d Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Sat, 4 May 2019 10:57:59 +0200 Subject: [PATCH 09/11] [WebProfilerBundle] Don't filter submitted IP values --- .../Bundle/WebProfilerBundle/Controller/ProfilerController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php b/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php index 4333c74d2f..f179f841f6 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php @@ -299,7 +299,7 @@ class ProfilerController $this->profiler->disable(); - $ip = preg_replace('/[^:\d\.]/', '', $request->query->get('ip')); + $ip = $request->query->get('ip'); $method = $request->query->get('method'); $statusCode = $request->query->get('status_code'); $url = $request->query->get('url'); From 3ae9de1ef304cf79dce70111ed09a3439a222686 Mon Sep 17 00:00:00 2001 From: Uladzimir Tsykun Date: Sun, 5 May 2019 17:33:51 +0300 Subject: [PATCH 10/11] Translated form, security, validators resources into Belarusian (be) --- .../Resources/translations/validators.be.xlf | 19 + .../Resources/translations/security.be.xlf | 67 ++++ .../Resources/translations/validators.be.xlf | 367 ++++++++++++++++++ 3 files changed, 453 insertions(+) create mode 100644 src/Symfony/Component/Form/Resources/translations/validators.be.xlf create mode 100644 src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf create mode 100644 src/Symfony/Component/Validator/Resources/translations/validators.be.xlf diff --git a/src/Symfony/Component/Form/Resources/translations/validators.be.xlf b/src/Symfony/Component/Form/Resources/translations/validators.be.xlf new file mode 100644 index 0000000000..004ba594b3 --- /dev/null +++ b/src/Symfony/Component/Form/Resources/translations/validators.be.xlf @@ -0,0 +1,19 @@ + + + + + + This form should not contain extra fields. + Гэта форма не павінна мець дадатковых палей. + + + The uploaded file was too large. Please try to upload a smaller file. + Запампаваны файл быў занадта вялікім. Калі ласка, паспрабуйце запампаваць файл меншага памеру. + + + The CSRF token is invalid. Please try to resubmit the form. + CSRF-токен не сапраўдны. Калі ласка, паспрабуйце яшчэ раз адправіць форму. + + + + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf new file mode 100644 index 0000000000..c3cd7911e5 --- /dev/null +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf @@ -0,0 +1,67 @@ + + + + + + An authentication exception occurred. + Памылка аўтэнтыфікацыі. + + + Authentication credentials could not be found. + Дадзеныя аўтэнтыфікацыі не знойдзены. + + + Authentication request could not be processed due to a system problem. + Запыт аўтэнтыфікацыі не можа быць апрацаваны ў сувязі з праблемай у сістэме. + + + Invalid credentials. + Несапраўдныя дадзеныя аўтэнтыфікацыі. + + + Cookie has already been used by someone else. + Нехта іншы ўжо выкарыстаў гэтыя кукі (cookie). + + + Not privileged to request the resource. + Адсутнічаюць правы на запыт гэтага рэсурсу. + + + Invalid CSRF token. + Несапраўдны CSRF-токен. + + + No authentication provider found to support the authentication token. + Не знойдзен правайдар аўтэнтыфікацыі, які можа падтрымліваць гэты токен аўтэнтыфікацыі. + + + No session available, it either timed out or cookies are not enabled. + Сесія не даступна, яе час скончыўся, або кукі (cookies) выключаны. + + + No token could be found. + Токен не знойдзен. + + + Username could not be found. + Імя карыстальніка не знойдзена. + + + Account has expired. + Скончыўся тэрмін дзеяння акаўнта. + + + Credentials have expired. + Скончыўся тэрмін дзеяння дадзеных аўтэнтыфікацыі. + + + Account is disabled. + Акаўнт адключан. + + + Account is locked. + Акаўнт заблакіраван. + + + + diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.be.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.be.xlf new file mode 100644 index 0000000000..ab3845ee20 --- /dev/null +++ b/src/Symfony/Component/Validator/Resources/translations/validators.be.xlf @@ -0,0 +1,367 @@ + + + + + + This value should be false. + Значэнне павінна быць Не. + + + This value should be true. + Значэнне павінна быць Так. + + + This value should be of type {{ type }}. + Тып значэння павінен быць {{ type }}. + + + This value should be blank. + Значэнне павінна быць пустым. + + + The value you selected is not a valid choice. + Абранае вамі значэнне не сапраўднае. + + + You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices. + Вы павінны выбраць хаця б {{ limit }} варыянт.|Вы павінны выбраць хаця б {{ limit }} варыянтаў. + + + You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices. + Вы павінны выбраць не больш за {{ limit }} варыянт.|Вы павінны выбраць не больш за {{ limit }} варыянтаў. + + + One or more of the given values is invalid. + Адзін або некалькі пазначаных значэнняў з'яўляецца несапраўдным. + + + This field was not expected. + Гэта поле не чакаецца. + + + This field is missing. + Гэта поле адсутнічае. + + + This value is not a valid date. + Гэта значэнне не з'яўляецца карэктнай датай. + + + This value is not a valid datetime. + Гэта значэнне не з'яўляецца карэктнай датай i часом. + + + This value is not a valid email address. + Гэта значэнне не з'яўляецца карэктным адрасам электроннай пошты. + + + The file could not be found. + Файл не знойдзен. + + + The file is not readable. + Файл не чытаецца. + + + The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}. + Файл занадта вялікі ({{ size }} {{ suffix }}). Максімальна дазволены памер {{ limit }} {{ suffix }}. + + + The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}. + MIME-тып файлу некарэкты ({{ type }}). Дазволеныя MIME-тыпы файлу {{ types }}. + + + This value should be {{ limit }} or less. + Значэнне павінна быць {{ limit }} або менш. + + + This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less. + Значэнне занадта доўгае. Яно павінна мець {{ limit }} сімвал або менш.|Значэнне занадта доўгае. Яно павінна мець {{ limit }} сімвалаў або менш. + + + This value should be {{ limit }} or more. + Значэнне павінна быць {{ limit }} або больш. + + + This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more. + Значэнне занадта кароткае. Яно павінна мець прынамсі {{ limit }} сімвал.|Значэнне занадта кароткае. Яно павінна мець прынамсі {{ limit }} сімвалаў. + + + This value should not be blank. + Значэнне не павінна быць пустым. + + + This value should not be null. + Значэнне не павінна быць null. + + + This value should be null. + Значэнне павінна быць null. + + + This value is not valid. + Значэнне з'яўляецца не сапраўдным. + + + This value is not a valid time. + Значэнне не з'яўляецца сапраўдным часам. + + + This value is not a valid URL. + Значэнне не з'яўляецца сапраўдным URL-адрасам. + + + The two values should be equal. + Абодва значэнні павінны быць аднолькавымі. + + + The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}. + Файл занадта вялікі. Максімальна дазволены памер {{ limit }} {{ suffix }}. + + + The file is too large. + Файл занадта вялікі. + + + The file could not be uploaded. + Немагчыма запампаваць файл. + + + This value should be a valid number. + Значэнне павінна быць лікам. + + + This file is not a valid image. + Гэты файл не з'яўляецца сапраўднай выявай. + + + This is not a valid IP address. + Значэнне не з'яўляецца сапраўдным IP-адрасам. + + + This value is not a valid language. + Значэнне не з'яўляецца сапраўдным мовай. + + + This value is not a valid locale. + Значэнне не з'яўляецца сапраўднай лакаллю. + + + This value is not a valid country. + Значэнне не з'яўляецца сапраўднай краінай. + + + This value is already used. + Гэта значэнне ўжо выкарыстоўваецца. + + + The size of the image could not be detected. + Немагчыма вызначыць памер выявы. + + + The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px. + Гэта выява занадта вялікая ({{ width }}px). Дазваляецца максімальная шырыня {{ max_width }}px. + + + The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px. + Гэта выява занадта маленькая ({{ width }}px). Дазваляецца мінімальная шырыня {{ min_width }}px. + + + The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px. + Гэты выява занадта вялікая ({{ width }}px). Дазваляецца максімальная вышыня {{ max_width }}px. + + + The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px. + Гэта выява занадта маленькая ({{ width }}px). Дазваляецца мінімальная вышыня {{ min_width }}px. + + + This value should be the user's current password. + Значэнне павінна быць цяперашнім паролем карыстальніка. + + + This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters. + Значэнне павінна мець {{ limit }} сімвал.|Значэнне павінна мець {{ limit }} сімвалаў. + + + The file was only partially uploaded. + Файл быў запампаваны толькі часткова. + + + No file was uploaded. + Файл не быў запампаваны. + + + No temporary folder was configured in php.ini. + У php.ini не была налажана часовая папка, або часовая папка не існуе. + + + Cannot write temporary file to disk. + Немагчыма запісаць часовы файл на дыск. + + + A PHP extension caused the upload to fail. + Пашырэнне PHP выклікала памылку загрузкі. + + + This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more. + Калекцыя павінна змяшчаць прынамсі {{ limit }} элемент.|Калекцыя павінна змяшчаць прынамсі {{ limit }} элементаў. + + + This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less. + Калекцыя павінна змяшчаць {{ limit }} або менш элемент.|Калекцыя павінна змяшчаць {{ limit }} або менш элементаў. + + + This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements. + Калекцыя павінна змяшчаць роўна {{ limit }} элемент.|Калекцыя павінна змяшчаць роўна {{ limit }} элементаў. + + + Invalid card number. + Несапраўдны нумар карты. + + + Unsupported card type or invalid card number. + Тып карты не падтрымліваецца або несапраўдны нумар карты. + + + This is not a valid International Bank Account Number (IBAN). + Несапраўдны міжнародны нумар банкаўскага рахунку (IBAN). + + + This value is not a valid ISBN-10. + Гэта значэнне не з'яўляецца сапраўдным ISBN-10. + + + This value is not a valid ISBN-13. + Гэта значэнне не з'яўляецца сапраўдным ISBN-13. + + + This value is neither a valid ISBN-10 nor a valid ISBN-13. + Гэта значэнне не з'яўляецца сапраўдным ISBN-10 або ISBN-13. + + + This value is not a valid ISSN. + Гэта значэнне не з'яўляецца сапраўдным ISSN. + + + This value is not a valid currency. + Гэта значэнне не з'яўляецца сапраўднай валютай. + + + This value should be equal to {{ compared_value }}. + Значэнне павінна раўняцца {{ compared_value }}. + + + This value should be greater than {{ compared_value }}. + Значэнне павінна быць больш чым {{ compared_value }}. + + + This value should be greater than or equal to {{ compared_value }}. + Значэнне павінна быць больш чым або раўняцца {{ compared_value }}. + + + This value should be identical to {{ compared_value_type }} {{ compared_value }}. + Значэнне павінна быць ідэнтычным {{ compared_value_type }} {{ compared_value }}. + + + This value should be less than {{ compared_value }}. + Значэнне павінна быць менш чым {{ compared_value }}. + + + This value should be less than or equal to {{ compared_value }}. + Значэнне павінна быць менш чым або раўняцца {{ compared_value }}. + + + This value should not be equal to {{ compared_value }}. + Значэнне не павінна раўняцца {{ compared_value }}. + + + This value should not be identical to {{ compared_value_type }} {{ compared_value }}. + Значэнне не павінна быць ідэнтычным {{ compared_value_type }} {{ compared_value }}. + + + The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}. + Суадносіны бакоў выявы з'яўляецца занадта вялікім ({{ ratio }}). Дазваляецца максімальныя суадносіны {{max_ratio}} . + + + The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}. + Суадносіны бакоў выявы з'яўляецца занадта маленькімі ({{ ratio }}). Дазваляецца мінімальныя суадносіны {{ min_ratio }}. + + + The image is square ({{ width }}x{{ height }}px). Square images are not allowed. + Выява квадратная ({{width}}x{{height}}px). Квадратныя выявы не дазволены. + + + The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed. + Выява ў альбомнай арыентацыі ({{ width }}x{{ height }}px). Выявы ў альбомнай арыентацыі не дазволены. + + + The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed. + Выява ў партрэтнай арыентацыі ({{ width }}x{{ height }}px). Выявы ў партрэтнай арыентацыі не дазволены. + + + An empty file is not allowed. + Пусты файл не дазволены. + + + The host could not be resolved. + Не магчыма знайсці імя хоста. + + + This value does not match the expected {{ charset }} charset. + Гэта значэнне не супадае з чаканай {{ charset }} кадыроўкай. + + + This is not a valid Business Identifier Code (BIC). + Несапраўдны банкаўскі ідэнтыфікацыйны код (BIC). + + + Error + Памылка + + + This is not a valid UUID. + Гэта несапраўдны UUID. + + + This value should be a multiple of {{ compared_value }}. + Значэнне павінна быць кратным {{ compared_value }}. + + + This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}. + Банкаўскі ідэнтыфікацыйны код (BIC) не звязан з IBAN {{ iban }}. + + + This value should be valid JSON. + Гэта значэнне павінна быць у фармаце JSON. + + + This collection should contain only unique elements. + Калекцыя павінна змяшчаць толькі ўнікальныя элементы. + + + This value should be positive. + Значэнне павінна быць дадатным. + + + This value should be either positive or zero. + Значэнне павінна быць дадатным ці нуль. + + + This value should be negative. + Значэнне павінна быць адмоўным. + + + This value should be either negative or zero. + Значэнне павінна быць адмоўным ці нуль. + + + This value is not a valid timezone. + Значэнне не з'яўляецца сапраўдным гадзінным поясам. + + + This password has been leaked in a data breach, it must not be used. Please use another password. + Гэты пароль быў выкрадзены ў выніку ўзлому дадзеных, таму яго нельга выкарыстоўваць. Калі ласка, выкарыстоўвайце іншы пароль. + + + + From 59321fe0316c67ecff4ba5cbc38de5a30b3cbdb6 Mon Sep 17 00:00:00 2001 From: battye Date: Fri, 3 May 2019 15:53:51 +0000 Subject: [PATCH 11/11] [Console] Fix auto-complete for ChoiceQuestion (multi-select answers) --- .../Console/Helper/QuestionHelper.php | 41 ++++++++++++++++--- .../Tests/Helper/QuestionHelperTest.php | 31 ++++++++++++++ 2 files changed, 66 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/Console/Helper/QuestionHelper.php b/src/Symfony/Component/Console/Helper/QuestionHelper.php index 677aa764d4..757fed4746 100644 --- a/src/Symfony/Component/Console/Helper/QuestionHelper.php +++ b/src/Symfony/Component/Console/Helper/QuestionHelper.php @@ -239,6 +239,7 @@ class QuestionHelper extends Helper */ private function autocomplete(OutputInterface $output, Question $question, $inputStream, array $autocomplete) { + $fullChoice = ''; $ret = ''; $i = 0; @@ -265,6 +266,7 @@ class QuestionHelper extends Helper } elseif ("\177" === $c) { // Backspace Character if (0 === $numMatches && 0 !== $i) { --$i; + $fullChoice = substr($fullChoice, 0, -1); // Move cursor backwards $output->write("\033[1D"); } @@ -301,8 +303,10 @@ class QuestionHelper extends Helper if ($numMatches > 0 && -1 !== $ofs) { $ret = $matches[$ofs]; // Echo out remaining chars for current match - $output->write(substr($ret, $i)); - $i = \strlen($ret); + $remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)))); + $output->write($remainingCharacters); + $fullChoice .= $remainingCharacters; + $i = \strlen($fullChoice); } if ("\n" === $c) { @@ -321,14 +325,21 @@ class QuestionHelper extends Helper $output->write($c); $ret .= $c; + $fullChoice .= $c; ++$i; + $tempRet = $ret; + + if ($question instanceof ChoiceQuestion && $question->isMultiselect()) { + $tempRet = $this->mostRecentlyEnteredValue($fullChoice); + } + $numMatches = 0; $ofs = 0; foreach ($autocomplete as $value) { // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle) - if (0 === strpos($value, $ret)) { + if (0 === strpos($value, $tempRet)) { $matches[$numMatches++] = $value; } } @@ -340,8 +351,9 @@ class QuestionHelper extends Helper if ($numMatches > 0 && -1 !== $ofs) { // Save cursor position $output->write("\0337"); - // Write highlighted text - $output->write(''.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $i)).''); + // Write highlighted text, complete the partially entered response + $charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))); + $output->write(''.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).''); // Restore cursor position $output->write("\0338"); } @@ -350,7 +362,24 @@ class QuestionHelper extends Helper // Reset stty so it behaves normally again shell_exec(sprintf('stty %s', $sttyMode)); - return $ret; + return $fullChoice; + } + + private function mostRecentlyEnteredValue($entered) + { + $tempEntered = $entered; + + // Determine the most recent value that the user entered + if (false !== strpos($entered, ',')) { + $choices = explode(',', $entered); + $lastChoice = trim($choices[\count($choices) - 1]); + + if (\strlen($lastChoice) > 0) { + $tempEntered = $lastChoice; + } + } + + return $tempEntered; } /** diff --git a/src/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php b/src/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php index 56ba1c6891..3c030e0498 100644 --- a/src/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php +++ b/src/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php @@ -1018,6 +1018,37 @@ class QuestionHelperTest extends AbstractQuestionHelperTest $this->assertEquals('FooBundle', $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question)); } + public function testTraversableMultiselectAutocomplete() + { + // + // F + // A<3x UP ARROW>,F + // F00o,A,SecurityBundle + // Acme,As<29x BACKSPACE>S + // Ac,As<3x BACKSPACE>d + $inputStream = $this->getInputStream("\nF\t\nA\033[A\033[A\033[A\t,F\t\nF00\177\177o\t,A\033[B\t, SecurityBundle\nAcme\t, As\t\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177S\t\nAc\t,As\t\177\177\177d\t\n"); + + $dialog = new QuestionHelper(); + $helperSet = new HelperSet([new FormatterHelper()]); + $dialog->setHelperSet($helperSet); + + $question = new ChoiceQuestion( + 'Please select a bundle (defaults to AcmeDemoBundle and AsseticBundle)', + ['AcmeDemoBundle', 'AsseticBundle', 'SecurityBundle', 'FooBundle'], + '0,1' + ); + + // This tests that autocomplete works for all multiselect choices entered by the user + $question->setMultiselect(true); + + $this->assertEquals(['AcmeDemoBundle', 'AsseticBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question)); + $this->assertEquals(['FooBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question)); + $this->assertEquals(['AsseticBundle', 'FooBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question)); + $this->assertEquals(['FooBundle', 'AsseticBundle', 'SecurityBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question)); + $this->assertEquals(['SecurityBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question)); + $this->assertEquals(['AcmeDemoBundle', 'AsseticBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question)); + } + protected function getInputStream($input) { $stream = fopen('php://memory', 'r+', false);