Merge branch '3.4' into 4.2

* 3.4:
  [Console] Fix auto-complete for ChoiceQuestion (multi-select answers)
  Translated form, security, validators resources into Belarusian (be)
  [WebProfilerBundle] Don't filter submitted IP values
  bumped Symfony version to 3.4.28
  updated VERSION for 3.4.27
  update CONTRIBUTORS for 3.4.27
  updated CHANGELOG for 3.4.27
This commit is contained in:
Fabien Potencier 2019-05-06 13:28:52 +02:00
commit b9637c9209
7 changed files with 546 additions and 21 deletions

View File

@ -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)

View File

@ -282,7 +282,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');

View File

@ -200,6 +200,7 @@ class QuestionHelper extends Helper
*/
private function autocomplete(OutputInterface $output, Question $question, $inputStream, array $autocomplete): string
{
$fullChoice = '';
$ret = '';
$i = 0;
@ -226,6 +227,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");
}
@ -262,8 +264,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) {
@ -282,14 +286,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;
}
}
@ -301,8 +312,9 @@ class QuestionHelper extends Helper
if ($numMatches > 0 && -1 !== $ofs) {
// Save cursor position
$output->write("\0337");
// Write highlighted text
$output->write('<hl>'.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $i)).'</hl>');
// Write highlighted text, complete the partially entered response
$charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)));
$output->write('<hl>'.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).'</hl>');
// Restore cursor position
$output->write("\0338");
}
@ -311,7 +323,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;
}
/**

View File

@ -667,6 +667,37 @@ class QuestionHelperTest extends AbstractQuestionHelperTest
$this->assertEquals('FooBundle', $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
}
public function testTraversableMultiselectAutocomplete()
{
// <NEWLINE>
// F<TAB><NEWLINE>
// A<3x UP ARROW><TAB>,F<TAB><NEWLINE>
// F00<BACKSPACE><BACKSPACE>o<TAB>,A<DOWN ARROW>,<SPACE>SecurityBundle<NEWLINE>
// Acme<TAB>,<SPACE>As<TAB><29x BACKSPACE>S<TAB><NEWLINE>
// Ac<TAB>,As<TAB><3x BACKSPACE>d<TAB><NEWLINE>
$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);

View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="28">
<source>This form should not contain extra fields.</source>
<target>Гэта форма не павінна мець дадатковых палей.</target>
</trans-unit>
<trans-unit id="29">
<source>The uploaded file was too large. Please try to upload a smaller file.</source>
<target>Запампаваны файл быў занадта вялікім. Калі ласка, паспрабуйце запампаваць файл меншага памеру.</target>
</trans-unit>
<trans-unit id="30">
<source>The CSRF token is invalid. Please try to resubmit the form.</source>
<target>CSRF-токен не сапраўдны. Калі ласка, паспрабуйце яшчэ раз адправіць форму.</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -0,0 +1,67 @@
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>An authentication exception occurred.</source>
<target>Памылка аўтэнтыфікацыі.</target>
</trans-unit>
<trans-unit id="2">
<source>Authentication credentials could not be found.</source>
<target>Дадзеныя аўтэнтыфікацыі не знойдзены.</target>
</trans-unit>
<trans-unit id="3">
<source>Authentication request could not be processed due to a system problem.</source>
<target>Запыт аўтэнтыфікацыі не можа быць апрацаваны ў сувязі з праблемай у сістэме.</target>
</trans-unit>
<trans-unit id="4">
<source>Invalid credentials.</source>
<target>Несапраўдныя дадзеныя аўтэнтыфікацыі.</target>
</trans-unit>
<trans-unit id="5">
<source>Cookie has already been used by someone else.</source>
<target>Нехта іншы ўжо выкарыстаў гэтыя кукі (cookie).</target>
</trans-unit>
<trans-unit id="6">
<source>Not privileged to request the resource.</source>
<target>Адсутнічаюць правы на запыт гэтага рэсурсу.</target>
</trans-unit>
<trans-unit id="7">
<source>Invalid CSRF token.</source>
<target>Несапраўдны CSRF-токен.</target>
</trans-unit>
<trans-unit id="9">
<source>No authentication provider found to support the authentication token.</source>
<target>Не знойдзен правайдар аўтэнтыфікацыі, які можа падтрымліваць гэты токен аўтэнтыфікацыі.</target>
</trans-unit>
<trans-unit id="10">
<source>No session available, it either timed out or cookies are not enabled.</source>
<target>Сесія не даступна, яе час скончыўся, або кукі (cookies) выключаны.</target>
</trans-unit>
<trans-unit id="11">
<source>No token could be found.</source>
<target>Токен не знойдзен.</target>
</trans-unit>
<trans-unit id="12">
<source>Username could not be found.</source>
<target>Імя карыстальніка не знойдзена.</target>
</trans-unit>
<trans-unit id="13">
<source>Account has expired.</source>
<target>Скончыўся тэрмін дзеяння акаўнта.</target>
</trans-unit>
<trans-unit id="14">
<source>Credentials have expired.</source>
<target>Скончыўся тэрмін дзеяння дадзеных аўтэнтыфікацыі.</target>
</trans-unit>
<trans-unit id="15">
<source>Account is disabled.</source>
<target>Акаўнт адключан.</target>
</trans-unit>
<trans-unit id="16">
<source>Account is locked.</source>
<target>Акаўнт заблакіраван.</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -0,0 +1,367 @@
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>This value should be false.</source>
<target>Значэнне павінна быць Не.</target>
</trans-unit>
<trans-unit id="2">
<source>This value should be true.</source>
<target>Значэнне павінна быць Так.</target>
</trans-unit>
<trans-unit id="3">
<source>This value should be of type {{ type }}.</source>
<target>Тып значэння павінен быць {{ type }}.</target>
</trans-unit>
<trans-unit id="4">
<source>This value should be blank.</source>
<target>Значэнне павінна быць пустым.</target>
</trans-unit>
<trans-unit id="5">
<source>The value you selected is not a valid choice.</source>
<target>Абранае вамі значэнне не сапраўднае.</target>
</trans-unit>
<trans-unit id="6">
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
<target>Вы павінны выбраць хаця б {{ limit }} варыянт.|Вы павінны выбраць хаця б {{ limit }} варыянтаў.</target>
</trans-unit>
<trans-unit id="7">
<source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
<target>Вы павінны выбраць не больш за {{ limit }} варыянт.|Вы павінны выбраць не больш за {{ limit }} варыянтаў.</target>
</trans-unit>
<trans-unit id="8">
<source>One or more of the given values is invalid.</source>
<target>Адзін або некалькі пазначаных значэнняў з'яўляецца несапраўдным.</target>
</trans-unit>
<trans-unit id="9">
<source>This field was not expected.</source>
<target>Гэта поле не чакаецца.</target>
</trans-unit>
<trans-unit id="10">
<source>This field is missing.</source>
<target>Гэта поле адсутнічае.</target>
</trans-unit>
<trans-unit id="11">
<source>This value is not a valid date.</source>
<target>Гэта значэнне не з'яўляецца карэктнай датай.</target>
</trans-unit>
<trans-unit id="12">
<source>This value is not a valid datetime.</source>
<target>Гэта значэнне не з'яўляецца карэктнай датай i часом.</target>
</trans-unit>
<trans-unit id="13">
<source>This value is not a valid email address.</source>
<target>Гэта значэнне не з'яўляецца карэктным адрасам электроннай пошты.</target>
</trans-unit>
<trans-unit id="14">
<source>The file could not be found.</source>
<target>Файл не знойдзен.</target>
</trans-unit>
<trans-unit id="15">
<source>The file is not readable.</source>
<target>Файл не чытаецца.</target>
</trans-unit>
<trans-unit id="16">
<source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>Файл занадта вялікі ({{ size }} {{ suffix }}). Максімальна дазволены памер {{ limit }} {{ suffix }}.</target>
</trans-unit>
<trans-unit id="17">
<source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
<target>MIME-тып файлу некарэкты ({{ type }}). Дазволеныя MIME-тыпы файлу {{ types }}.</target>
</trans-unit>
<trans-unit id="18">
<source>This value should be {{ limit }} or less.</source>
<target>Значэнне павінна быць {{ limit }} або менш.</target>
</trans-unit>
<trans-unit id="19">
<source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
<target>Значэнне занадта доўгае. Яно павінна мець {{ limit }} сімвал або менш.|Значэнне занадта доўгае. Яно павінна мець {{ limit }} сімвалаў або менш.</target>
</trans-unit>
<trans-unit id="20">
<source>This value should be {{ limit }} or more.</source>
<target>Значэнне павінна быць {{ limit }} або больш.</target>
</trans-unit>
<trans-unit id="21">
<source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
<target>Значэнне занадта кароткае. Яно павінна мець прынамсі {{ limit }} сімвал.|Значэнне занадта кароткае. Яно павінна мець прынамсі {{ limit }} сімвалаў.</target>
</trans-unit>
<trans-unit id="22">
<source>This value should not be blank.</source>
<target>Значэнне не павінна быць пустым.</target>
</trans-unit>
<trans-unit id="23">
<source>This value should not be null.</source>
<target>Значэнне не павінна быць null.</target>
</trans-unit>
<trans-unit id="24">
<source>This value should be null.</source>
<target>Значэнне павінна быць null.</target>
</trans-unit>
<trans-unit id="25">
<source>This value is not valid.</source>
<target>Значэнне з'яўляецца не сапраўдным.</target>
</trans-unit>
<trans-unit id="26">
<source>This value is not a valid time.</source>
<target>Значэнне не з'яўляецца сапраўдным часам.</target>
</trans-unit>
<trans-unit id="27">
<source>This value is not a valid URL.</source>
<target>Значэнне не з'яўляецца сапраўдным URL-адрасам.</target>
</trans-unit>
<trans-unit id="31">
<source>The two values should be equal.</source>
<target>Абодва значэнні павінны быць аднолькавымі.</target>
</trans-unit>
<trans-unit id="32">
<source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>Файл занадта вялікі. Максімальна дазволены памер {{ limit }} {{ suffix }}.</target>
</trans-unit>
<trans-unit id="33">
<source>The file is too large.</source>
<target>Файл занадта вялікі.</target>
</trans-unit>
<trans-unit id="34">
<source>The file could not be uploaded.</source>
<target>Немагчыма запампаваць файл.</target>
</trans-unit>
<trans-unit id="35">
<source>This value should be a valid number.</source>
<target>Значэнне павінна быць лікам.</target>
</trans-unit>
<trans-unit id="36">
<source>This file is not a valid image.</source>
<target>Гэты файл не з'яўляецца сапраўднай выявай.</target>
</trans-unit>
<trans-unit id="37">
<source>This is not a valid IP address.</source>
<target>Значэнне не з'яўляецца сапраўдным IP-адрасам.</target>
</trans-unit>
<trans-unit id="38">
<source>This value is not a valid language.</source>
<target>Значэнне не з'яўляецца сапраўдным мовай.</target>
</trans-unit>
<trans-unit id="39">
<source>This value is not a valid locale.</source>
<target>Значэнне не з'яўляецца сапраўднай лакаллю.</target>
</trans-unit>
<trans-unit id="40">
<source>This value is not a valid country.</source>
<target>Значэнне не з'яўляецца сапраўднай краінай.</target>
</trans-unit>
<trans-unit id="41">
<source>This value is already used.</source>
<target>Гэта значэнне ўжо выкарыстоўваецца.</target>
</trans-unit>
<trans-unit id="42">
<source>The size of the image could not be detected.</source>
<target>Немагчыма вызначыць памер выявы.</target>
</trans-unit>
<trans-unit id="43">
<source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
<target>Гэта выява занадта вялікая ({{ width }}px). Дазваляецца максімальная шырыня {{ max_width }}px.</target>
</trans-unit>
<trans-unit id="44">
<source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
<target>Гэта выява занадта маленькая ({{ width }}px). Дазваляецца мінімальная шырыня {{ min_width }}px.</target>
</trans-unit>
<trans-unit id="45">
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
<target>Гэты выява занадта вялікая ({{ width }}px). Дазваляецца максімальная вышыня {{ max_width }}px.</target>
</trans-unit>
<trans-unit id="46">
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
<target>Гэта выява занадта маленькая ({{ width }}px). Дазваляецца мінімальная вышыня {{ min_width }}px.</target>
</trans-unit>
<trans-unit id="47">
<source>This value should be the user's current password.</source>
<target>Значэнне павінна быць цяперашнім паролем карыстальніка.</target>
</trans-unit>
<trans-unit id="48">
<source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
<target>Значэнне павінна мець {{ limit }} сімвал.|Значэнне павінна мець {{ limit }} сімвалаў.</target>
</trans-unit>
<trans-unit id="49">
<source>The file was only partially uploaded.</source>
<target>Файл быў запампаваны толькі часткова.</target>
</trans-unit>
<trans-unit id="50">
<source>No file was uploaded.</source>
<target>Файл не быў запампаваны.</target>
</trans-unit>
<trans-unit id="51">
<source>No temporary folder was configured in php.ini.</source>
<target>У php.ini не была налажана часовая папка, або часовая папка не існуе.</target>
</trans-unit>
<trans-unit id="52">
<source>Cannot write temporary file to disk.</source>
<target>Немагчыма запісаць часовы файл на дыск.</target>
</trans-unit>
<trans-unit id="53">
<source>A PHP extension caused the upload to fail.</source>
<target>Пашырэнне PHP выклікала памылку загрузкі.</target>
</trans-unit>
<trans-unit id="54">
<source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
<target>Калекцыя павінна змяшчаць прынамсі {{ limit }} элемент.|Калекцыя павінна змяшчаць прынамсі {{ limit }} элементаў.</target>
</trans-unit>
<trans-unit id="55">
<source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
<target>Калекцыя павінна змяшчаць {{ limit }} або менш элемент.|Калекцыя павінна змяшчаць {{ limit }} або менш элементаў.</target>
</trans-unit>
<trans-unit id="56">
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
<target>Калекцыя павінна змяшчаць роўна {{ limit }} элемент.|Калекцыя павінна змяшчаць роўна {{ limit }} элементаў.</target>
</trans-unit>
<trans-unit id="57">
<source>Invalid card number.</source>
<target>Несапраўдны нумар карты.</target>
</trans-unit>
<trans-unit id="58">
<source>Unsupported card type or invalid card number.</source>
<target>Тып карты не падтрымліваецца або несапраўдны нумар карты.</target>
</trans-unit>
<trans-unit id="59">
<source>This is not a valid International Bank Account Number (IBAN).</source>
<target>Несапраўдны міжнародны нумар банкаўскага рахунку (IBAN).</target>
</trans-unit>
<trans-unit id="60">
<source>This value is not a valid ISBN-10.</source>
<target>Гэта значэнне не з'яўляецца сапраўдным ISBN-10.</target>
</trans-unit>
<trans-unit id="61">
<source>This value is not a valid ISBN-13.</source>
<target>Гэта значэнне не з'яўляецца сапраўдным ISBN-13.</target>
</trans-unit>
<trans-unit id="62">
<source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
<target>Гэта значэнне не з'яўляецца сапраўдным ISBN-10 або ISBN-13.</target>
</trans-unit>
<trans-unit id="63">
<source>This value is not a valid ISSN.</source>
<target>Гэта значэнне не з'яўляецца сапраўдным ISSN.</target>
</trans-unit>
<trans-unit id="64">
<source>This value is not a valid currency.</source>
<target>Гэта значэнне не з'яўляецца сапраўднай валютай.</target>
</trans-unit>
<trans-unit id="65">
<source>This value should be equal to {{ compared_value }}.</source>
<target>Значэнне павінна раўняцца {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="66">
<source>This value should be greater than {{ compared_value }}.</source>
<target>Значэнне павінна быць больш чым {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="67">
<source>This value should be greater than or equal to {{ compared_value }}.</source>
<target>Значэнне павінна быць больш чым або раўняцца {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="68">
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
<target>Значэнне павінна быць ідэнтычным {{ compared_value_type }} {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="69">
<source>This value should be less than {{ compared_value }}.</source>
<target>Значэнне павінна быць менш чым {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="70">
<source>This value should be less than or equal to {{ compared_value }}.</source>
<target>Значэнне павінна быць менш чым або раўняцца {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="71">
<source>This value should not be equal to {{ compared_value }}.</source>
<target>Значэнне не павінна раўняцца {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="72">
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
<target>Значэнне не павінна быць ідэнтычным {{ compared_value_type }} {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="73">
<source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
<target>Суадносіны бакоў выявы з'яўляецца занадта вялікім ({{ ratio }}). Дазваляецца максімальныя суадносіны {{max_ratio}} .</target>
</trans-unit>
<trans-unit id="74">
<source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
<target>Суадносіны бакоў выявы з'яўляецца занадта маленькімі ({{ ratio }}). Дазваляецца мінімальныя суадносіны {{ min_ratio }}.</target>
</trans-unit>
<trans-unit id="75">
<source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
<target>Выява квадратная ({{width}}x{{height}}px). Квадратныя выявы не дазволены.</target>
</trans-unit>
<trans-unit id="76">
<source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
<target>Выява ў альбомнай арыентацыі ({{ width }}x{{ height }}px). Выявы ў альбомнай арыентацыі не дазволены.</target>
</trans-unit>
<trans-unit id="77">
<source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
<target>Выява ў партрэтнай арыентацыі ({{ width }}x{{ height }}px). Выявы ў партрэтнай арыентацыі не дазволены.</target>
</trans-unit>
<trans-unit id="78">
<source>An empty file is not allowed.</source>
<target>Пусты файл не дазволены.</target>
</trans-unit>
<trans-unit id="79">
<source>The host could not be resolved.</source>
<target>Не магчыма знайсці імя хоста.</target>
</trans-unit>
<trans-unit id="80">
<source>This value does not match the expected {{ charset }} charset.</source>
<target>Гэта значэнне не супадае з чаканай {{ charset }} кадыроўкай.</target>
</trans-unit>
<trans-unit id="81">
<source>This is not a valid Business Identifier Code (BIC).</source>
<target>Несапраўдны банкаўскі ідэнтыфікацыйны код (BIC).</target>
</trans-unit>
<trans-unit id="82">
<source>Error</source>
<target>Памылка</target>
</trans-unit>
<trans-unit id="83">
<source>This is not a valid UUID.</source>
<target>Гэта несапраўдны UUID.</target>
</trans-unit>
<trans-unit id="84">
<source>This value should be a multiple of {{ compared_value }}.</source>
<target>Значэнне павінна быць кратным {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="85">
<source>This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.</source>
<target>Банкаўскі ідэнтыфікацыйны код (BIC) не звязан з IBAN {{ iban }}.</target>
</trans-unit>
<trans-unit id="86">
<source>This value should be valid JSON.</source>
<target>Гэта значэнне павінна быць у фармаце JSON.</target>
</trans-unit>
<trans-unit id="87">
<source>This collection should contain only unique elements.</source>
<target>Калекцыя павінна змяшчаць толькі ўнікальныя элементы.</target>
</trans-unit>
<trans-unit id="88">
<source>This value should be positive.</source>
<target>Значэнне павінна быць дадатным.</target>
</trans-unit>
<trans-unit id="89">
<source>This value should be either positive or zero.</source>
<target>Значэнне павінна быць дадатным ці нуль.</target>
</trans-unit>
<trans-unit id="90">
<source>This value should be negative.</source>
<target>Значэнне павінна быць адмоўным.</target>
</trans-unit>
<trans-unit id="91">
<source>This value should be either negative or zero.</source>
<target>Значэнне павінна быць адмоўным ці нуль.</target>
</trans-unit>
<trans-unit id="92">
<source>This value is not a valid timezone.</source>
<target>Значэнне не з'яўляецца сапраўдным гадзінным поясам.</target>
</trans-unit>
<trans-unit id="93">
<source>This password has been leaked in a data breach, it must not be used. Please use another password.</source>
<target>Гэты пароль быў выкрадзены ў выніку ўзлому дадзеных, таму яго нельга выкарыстоўваць. Калі ласка, выкарыстоўвайце іншы пароль.</target>
</trans-unit>
</body>
</file>
</xliff>