Merge branch '2.2'

* 2.2: (22 commits)
  fixed doc references (closes #7515)
  fixed doc references (closes #7515)
  On OS X, sys_get_tmp_dir() returns /var/private/..., which really is below /private/var.
  Doctrine cannot handle bare random non-utf8 strings
  small changes
  [SecurityBundle] Fixed configuration exemple
  idAsIndex should be true with a smallint or bigint id field.
  [PropertyAccess] Remove trailing periods from doc blocks
  Fix param docs for PropertyAccessor read method
  Fixed long multibyte parameter logging in DbalLogger:startQuery
  Keep the file extension in the temporary copy and test that it exists (closes #7482)
  bumped Symfony version to 2.1.10-DEV
  [Validator][translation][japanese]replaced period to japanese one [Validator][translation][japanese]fixed japanese translation to more practical one [Validator][translation][japanese]fixed message ordering to be consistent with other languages [Validator][translation][japanese]added new validation messages in japanese translation
  updated VERSION for 2.1.9
  update CONTRIBUTORS for 2.1.9
  updated CHANGELOG for 2.1.9
  [Security] fixed wrong interface
  Remove already defined arguments
  Add missing use
  [FrameworkBundle] Reuse definition variable in FormPass
  ...

Conflicts:
	src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php
	src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig
This commit is contained in:
Fabien Potencier 2013-04-01 10:07:30 +02:00
commit e1c741db9c
30 changed files with 392 additions and 158 deletions

View File

@ -7,6 +7,41 @@ in 2.1 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/v2.1.0...v2.1.1
* 2.1.9 (2013-03-26)
* 9875c4b: Added '@@' escaping strategy for YamlFileLoader and YamlDumper
* bbcdfe2: [Yaml] fixed bugs with folded scalar parsing
* 5afea04: [Form] made DefaultCsrfProvider using session_status() when available
* c928ddc: [HttpFoudantion] fixed Request::getPreferredLanguage()
* e6b7515: [DomCrawler] added support for query string with slash
* 17dc2ff: [HttpRequest] fixes Request::getLanguages() bug
* e51432a: sub-requests are now created with the same class as their parent
* ef53456: [DoctrineBridge] Avoids blob values to be logged by doctrine
* 6575df6: [Security] use current request attributes to generate redirect url?
* 7216cb0: [Validator] fix showing wrong max file size for upload errors
* c423f16: [2.1][TwigBridge] Fixes Issue #7342 in TwigBridge
* 7d87ecd: [FrameworkBundle] fixed cahe:clear command's warmup
* fe4cc24: [TwigBridge] fixed fixed scope & trans_default_domain node visitor
* fc47589: [BrowserKit] added ability to ignored malformed set-cookie header
* 5bc30bb: [Translation] added xliff loader/dumper with resname support
* 7241be9: [Finder] fixed a potential issue on Solaris where INF value is wrong (refs #7269)
* 1d3da29: [FrameworkBundle] avoids cache:clear to break if new/old folders already exist
* b9cdb9a: [HttpKernel] Fixed possible profiler token collision (closes #7272, closes #7171)
* d1f5d25: [FrameworkBundle] Fixes invalid serialized objects in cache
* c82c754: RedisProfilerStorage wrong db-number/index-number selected
* e86fefa: Unset loading[$id] in ContainerBuilder on exception
* 73bead7: [ClassLoader] made DebugClassLoader idempotent
* a4ec677: [DomCrawler] Fix relative path handling in links
* 6681df0: [Console] fixed StringInput binding
* 5b19c89: [Console] fixed unparsed StringInput tokens
* bae83c7: [TwigBridge] fixed trans twig extractor
* 8f8ba38: [DomCrawler] fix handling of schemes by Link::getUri()
* 83382bc: [TwigBridge] fixed the translator extractor that were not trimming the text in trans tags (closes #7056)
* b1ea8e5: Fixed handling absent href attribute in base tag
* 8d9cd42: Routing issue with installation in a sub-directory ref: https://github.com/symfony/symfony/issues/7129
* 0690709: added a DebuClassLoader::findFile() method to make the wrapping less invasive
* 635b1fc: StringInput resets the given options.
* 2.1.8 (2013-02-23)
* b2080c4: [HttpFoundation] Remove Cache-Control when using https download via IE<9 (fixes #6750)

View File

@ -20,10 +20,10 @@ Symfony2 is the result of the work of many people who made the code better
- Joseph Bielawski (stloyd)
- Igor Wiedler (igorw)
- Benjamin Eberlei (beberlei)
- Jean-François Simon (jfsimon)
- Hugo Hamon (hhamon)
- Eriksen Costa (eriksencosta)
- Martin Hasoň (hason)
- Jean-François Simon (jfsimon)
- Jonathan Wage (jwage)
- William Durand (couac)
- Alexandre Salomé (alexandresalome)
@ -40,11 +40,11 @@ Symfony2 is the result of the work of many people who made the code better
- Arnaud Le Blanc (arnaud-lb)
- Florin Patan (florinpatan)
- Eric Clemmons (ericclemmons)
- Bilal Amarni (bamarni)
- Henrik Westphal (snc)
- Romain Neutron (romain)
- Deni
- Dariusz Górecki (canni)
- Bilal Amarni (bamarni)
- Marc Weistroff (futurecat)
- Jordan Alliot (jalliot)
- Arnout Boks (aboks)
@ -54,25 +54,25 @@ Symfony2 is the result of the work of many people who made the code better
- Andrej Hudec (pulzarraider)
- Brikou Carré (brikou)
- John Wards (johnwards)
- Antoine Hérault (herzult)
- Fran Moreno (franmomu)
- Antoine Hérault (herzult)
- Daniel Holmes (dholmes)
- Bart van den Burg (burgov)
- Christian Raue
- Tim Nagel (merk)
- Włodzimierz Gajda (gajdaw)
- Bart van den Burg (burgov)
- Christian Raue
- Michal Piotrowski (eventhorizon)
- Toni Uebernickel (havvg)
- Colin Frei
- lenar
- Toni Uebernickel (havvg)
- Fabien Pennequin (fabienpennequin)
- excelwebzone
- woodspire
- Michel Weimerskirch (mweimerskirch)
- Grégoire Pineau (lyrixx)
- Mario A. Alvarez Garcia (nomack84)
- Douglas Greenshields (shieldo)
- Kevin Bond (kbond)
- Michel Weimerskirch (mweimerskirch)
- Richard Miller (mr_r_miller)
- Jacob Dreesen (jdreesen)
- Richard Shank (iampersistent)
@ -81,6 +81,7 @@ Symfony2 is the result of the work of many people who made the code better
- Robert Schönthal (digitalkaoz)
- Felix Labrecque
- Michał Pipa (michal.pipa)
- Gordon Franke (gimler)
- Daniel Gomes (danielcsgomes)
- Gábor Egyed (1ed)
- Tigran Azatyan (tigranazatyan)
@ -89,7 +90,6 @@ Symfony2 is the result of the work of many people who made the code better
- Arnaud Kleinpeter (nanocom)
- David Buchmann (dbu)
- Jonathan Ingram (jonathaningram)
- Gordon Franke (gimler)
- Sebastiaan Stok (sstok)
- Javier Eguiluz (javier.eguiluz)
- Matthieu Ouellette-Vachon (maoueh)
@ -132,6 +132,7 @@ Symfony2 is the result of the work of many people who made the code better
- Alif Rachmawadi
- boombatower
- Florian Klein (docteurklein)
- Adrien Brault (adrienbrault)
- jules boussekeyt (gordonslondon)
- Jan Sorgalla (jsor)
- jdhoek
@ -148,7 +149,6 @@ Symfony2 is the result of the work of many people who made the code better
- Eric GELOEN (gelo)
- Sebastian Bergmann
- arjen
- Adrien Brault (adrienbrault)
- sun (sun)
- Manuel Kiessling (manuelkiessling)
- Sergey Linnik
@ -171,8 +171,10 @@ Symfony2 is the result of the work of many people who made the code better
- Jeanmonod David (jeanmonod)
- Thomas Lallement (raziel057)
- Niklas Fiekas
- Francesco Levorato
- Tom Van Looy (tvlooy)
- Brouznouf
- Peter Kruithof (pkruithof)
- Greg Thornton (xdissent)
- Lars Strojny
- Terje Bråten
@ -194,13 +196,17 @@ Symfony2 is the result of the work of many people who made the code better
- Christophe L. (christophelau)
- Michael Ridgway
- Pavel Campr (pcampr)
- Emanuele Gaspari (inmarelibero)
- Brian King
- Ricard Clau (ricardclau)
- Jan Schumann
- Erin Millard
- Olivier Dolbeau (odolbeau)
- Konstantin Myakshin (koc)
- Elnur Abdurrakhimov (elnur)
- Michele Orselli (orso)
- Asier Illarramendi (doup)
- Javier López (loalf)
- Chris Heng (gigablah)
- Christoph Mewes (xrstf)
- Jonas Flodén (flojon)
@ -226,7 +232,6 @@ Symfony2 is the result of the work of many people who made the code better
- mcben
- Maks Slesarenko
- Vicent Soria Durá (vicentgodella)
- Peter Kruithof (pkruithof)
- Erik Trapman (eriktrapman)
- De Cock Xavier (xdecock)
- Manuel Reinhard (sprain)
@ -253,15 +258,14 @@ Symfony2 is the result of the work of many people who made the code better
- Lenar Lõhmus
- Zach Badgett (zachbadgett)
- Aurélien Fredouelle
- Francesco Levorato
- Karoly Negyesi (chx)
- janschoenherr
- Thomas Tourlourat (armetiz)
- jamogon
- Geoffrey Tran (geoff)
- Florian Rey (nervo)
- Maks
- Christian Schaefer (caefer)
- Emanuele Gaspari (inmarelibero)
- Elliot Anderson (elliot)
- Patrick Kaufmann
- Ben Ramsey (ramsey)
@ -272,7 +276,6 @@ Symfony2 is the result of the work of many people who made the code better
- aubx
- Max Rath (drak3)
- Ruben Gonzalez (rubenrua)
- Elnur Abdurrakhimov (elnur)
- Sinan Eldem
- DerManoMann
- Nahuel Cuesta (ncuesta)
@ -280,7 +283,6 @@ Symfony2 is the result of the work of many people who made the code better
- Roumen Damianoff (roumen)
- Pierre du Plessis (pierredup)
- Åsmund Garfors
- Erin Millard
- Jeremy David (jeremy.david)
- Tobias Sjösten (tobiassjosten)
- Dustin Dobervich (dustin10)
@ -293,12 +295,15 @@ Symfony2 is the result of the work of many people who made the code better
- yktd26
- Jakub Kucharovic
- umpirski
- Dmitrii Chekaliuk
- cedric lombardot (cedriclombardot)
- John Kary (johnkary)
- Hossein Bukhamsin
- Pierre-Yves LEBECQ (pylebecq)
- Fabrice Bernhard (fabriceb)
- Oleg Zinchenko (cystbear)
- Johannes Klauss (cloppy)
- fzerorubigd
- Mark Sonnabaum
- develop
- Atsuhiro KUBO (iteman)
@ -382,7 +387,6 @@ Symfony2 is the result of the work of many people who made the code better
- Miha Vrhovnik
- Moritz Borgmann
- Daniel Cestari
- Javier López (loalf)
- Magnus Nordlander (magnusnordlander)
- Adam Monsen (meonkeys)
- LOUARDI Abdeltif (ouardisoft)
@ -405,6 +409,7 @@ Symfony2 is the result of the work of many people who made the code better
- Irmantas Šiupšinskas (irmantas)
- dantleech
- Tero Alén (tero)
- Artem (digi)
- Vadim Tyukov (vatson)
- Sortex
- arjenjb
@ -415,15 +420,16 @@ Symfony2 is the result of the work of many people who made the code better
- Sébastien Lavoie
- Per Sandström (per)
- Ville Mattila
- Marcos Quesada (marcos_quesada)
- Robert Kiss (kepten)
- Vitaliy Tverdokhlib (vitaliytv)
- Martijn Evers
- Sergii Smertin (nfx)
- Eddie Jaoude
- Nerijus Arlauskas
- Haritz Iturbe (hizai)
- SPolischook
- Diego Sapriza
- fzerorubigd
- Joan Cruz
- Antoine Corcy
- inspiran
@ -433,11 +439,11 @@ Symfony2 is the result of the work of many people who made the code better
- Alex Demchenko (pilot)
- Tomasz Kowalczyk (thunderer)
- Vincent AUBERT (vincent)
- Benoit Garret
- DerManoMann
- Jochen Bayer (jocl)
- Jeremy Bush
- Evan Villemez
- Dmitrii Chekaliuk
- Davide Borsatto (davide.borsatto)
- kaiwa
- Albert Ganiev (helios-ag)
@ -468,6 +474,7 @@ Symfony2 is the result of the work of many people who made the code better
- Janusz Jablonski
- George Giannoulopoulos
- Ilya Biryukov
- Lance McNearney
- Alberto Pirovano (geezmo)
- Xavier Briand (xavierbriand)
- Evan Kaufman
@ -490,10 +497,14 @@ Symfony2 is the result of the work of many people who made the code better
- Simon Neidhold
- Kevin Dew
- James Cowgill
- Thomas Ploch (tploch)
- Benjamin Bender
- Konrad Mohrfeldt
- Benoit Lévêque (benoit_leveque)
- Mephistofeles
- pscheit
- Nicolas Badey (nico-b)
- Gunnar Lium
- povilas
- Lars Strojny
- Bouke Haarsma
@ -504,8 +515,10 @@ Symfony2 is the result of the work of many people who made the code better
- Francisco Facioni (fran6co)
- Paweł Wacławczyk (pwc)
- Eric Caron
- 2manypeople
- Thomas Bibb
- Josef Cech
- Ait Boudad Abdellatif (aitboudad)
- Andrey Esaulov (andremaha)
- hicham ELGUAROUANI (hiiimoo)
- Stefan Koopmanschap (skoop)
@ -514,7 +527,6 @@ Symfony2 is the result of the work of many people who made the code better
- Chris Tickner (tickner)
- Luis Muñoz
- Thomas Chmielowiec
- Oleg Zinchenko
- Christoph Nissle (derstoffel)
- Xavier HAUSHERR
- Benjamin Zikarsky
@ -538,6 +550,7 @@ Symfony2 is the result of the work of many people who made the code better
- Artyom Protaskin
- Nathanael d. Noblet
- helmer
- Julien Moulin (lizjulien)
- devel
- gedrox
- hirocaster
@ -569,6 +582,7 @@ Symfony2 is the result of the work of many people who made the code better
- Haritz
- Grummfy
- Rowan Manning
- Kevin Herrera
- David Windell
- Gabriel Birke
- Alan Chen
@ -595,6 +609,7 @@ Symfony2 is the result of the work of many people who made the code better
- Jorge Martin (jorgemartind)
- giulio de donato (liuggio)
- Matthew Davis (mdavis1982)
- Muriel Lusseau (metalmumu)
- Matthias Pigulla (mpdude)
- Pablo Monterde Perez (plebs)
- Jimmy Leger (redpanda)
@ -650,6 +665,7 @@ Symfony2 is the result of the work of many people who made the code better
- kwiateusz
- David Soria Parra
- Sergiy Sokolenko
- dinitrol
- Penny Leach
- Gábor Fási
- oscartv
@ -663,6 +679,8 @@ Symfony2 is the result of the work of many people who made the code better
- dorkitude
- tirnanog06
- Besnik Br
- sualko
- Nicolas Roudaire
- Alex Olmos (alexolmos)
- Juan Ases García (ases)
- Bernd Matzner (bmatzner)
@ -693,6 +711,7 @@ Symfony2 is the result of the work of many people who made the code better
- Alex Carol (picard89)
- Daniel Perez Pinazo (pitiflautico)
- Ruud Kamphuis (ruudk)
- Sarah Khalil (saro0h)
- Sebastian Busch (sebu)
- Simon Terrien (sterrien)
- Markus Tacker (tacker)

View File

@ -113,7 +113,7 @@ class EntityChoiceList extends ObjectChoiceList
$this->idField = $identifier[0];
$this->idAsValue = true;
if ('integer' === $this->classMetadata->getTypeOfField($this->idField)) {
if (in_array($this->classMetadata->getTypeOfField($this->idField), array('integer', 'smallint', 'bigint'))) {
$this->idAsIndex = true;
}
}

View File

@ -61,10 +61,17 @@ class DbalLogger implements SQLLogger
continue;
}
// too long string must be shorten
if (self::MAX_STRING_LENGTH < strlen($params[$index])) {
$params[$index] = substr($params[$index], 0, self::MAX_STRING_LENGTH - 6).' [...]';
continue;
// detect if the too long string must be shorten
if (function_exists('mb_detect_encoding') && false !== $encoding = mb_detect_encoding($params[$index])) {
if (self::MAX_STRING_LENGTH < mb_strlen($params[$index], $encoding)) {
$params[$index] = mb_substr($params[$index], 0, self::MAX_STRING_LENGTH - 6, $encoding).' [...]';
continue;
}
} else {
if (self::MAX_STRING_LENGTH < strlen($params[$index])) {
$params[$index] = substr($params[$index], 0, self::MAX_STRING_LENGTH - 6).' [...]';
continue;
}
}
}
}

View File

@ -81,8 +81,10 @@ class DbalLoggerTest extends \PHPUnit_Framework_TestCase
->getMock()
;
$shortString = str_repeat('a', DbalLogger::MAX_STRING_LENGTH);
$longString = str_repeat('a', DbalLogger::MAX_STRING_LENGTH + 1);
$testString = 'abc';
$shortString = str_pad('', DbalLogger::MAX_STRING_LENGTH, $testString);
$longString = str_pad('', DbalLogger::MAX_STRING_LENGTH+1, $testString);
$dbalLogger
->expects($this->once())
@ -95,4 +97,43 @@ class DbalLoggerTest extends \PHPUnit_Framework_TestCase
'long' => $longString,
));
}
public function testLogUTF8LongString()
{
if (!function_exists('mb_detect_encoding')) {
$this->markTestSkipped('Testing log shortening of utf8 charsets requires the mb_detect_encoding() function.');
}
$logger = $this->getMock('Symfony\\Component\\HttpKernel\\Log\\LoggerInterface');
$dbalLogger = $this
->getMockBuilder('Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger')
->setConstructorArgs(array($logger, null))
->setMethods(array('log'))
->getMock()
;
$testStringArray = array('é', 'á', 'ű', 'ő', 'ú', 'ö', 'ü', 'ó', 'í');
$testStringCount = count($testStringArray);
$shortString = '';
$longString = '';
for($i=1; $i<=DbalLogger::MAX_STRING_LENGTH; $i++) {
$shortString .= $testStringArray[$i % $testStringCount];
$longString .= $testStringArray[$i % $testStringCount];
}
$longString .= $testStringArray[$i % $testStringCount];
$dbalLogger
->expects($this->once())
->method('log')
->with('SQL', array('short' => $shortString, 'long' => mb_substr($longString, 0, DbalLogger::MAX_STRING_LENGTH - 6, mb_detect_encoding($longString)).' [...]'))
;
$dbalLogger->startQuery('SQL', array(
'short' => $shortString,
'long' => $longString,
));
}
}

View File

@ -28,6 +28,8 @@ class FormPass implements CompilerPassInterface
return;
}
$definition = $container->getDefinition('form.extension');
// Builds an array with service IDs as keys and tag aliases as values
$types = array();
@ -40,7 +42,7 @@ class FormPass implements CompilerPassInterface
$types[$alias] = $serviceId;
}
$container->getDefinition('form.extension')->replaceArgument(1, $types);
$definition->replaceArgument(1, $types);
$typeExtensions = array();
@ -52,11 +54,11 @@ class FormPass implements CompilerPassInterface
$typeExtensions[$alias][] = $serviceId;
}
$container->getDefinition('form.extension')->replaceArgument(2, $typeExtensions);
$definition->replaceArgument(2, $typeExtensions);
// Find all services annotated with "form.type_guesser"
$guessers = array_keys($container->findTaggedServiceIds('form.type_guesser'));
$container->getDefinition('form.extension')->replaceArgument(3, $guessers);
$definition->replaceArgument(3, $guessers);
}
}

View File

@ -301,8 +301,7 @@ class MainConfiguration implements ConfigurationInterface
->children()
->arrayNode('providers')
->example(array(
'memory' => array(
'name' => 'memory',
'my_memory_provider' => array(
'memory' => array(
'users' => array(
'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER'),
@ -310,7 +309,7 @@ class MainConfiguration implements ConfigurationInterface
),
)
),
'entity' => array('entity' => array('class' => 'SecurityBundle:User', 'property' => 'username'))
'my_entity_provider' => array('entity' => array('class' => 'SecurityBundle:User', 'property' => 'username'))
))
->disallowNewKeysInSubsequentConfigs()
->isRequired()

View File

@ -45,11 +45,6 @@
class="%security.authentication.rememberme.services.persistent.class%"
parent="security.authentication.rememberme.services.abstract"
abstract="true">
<argument type="collection" /> <!-- User Providers -->
<argument /> <!-- Shared Token Key -->
<argument /> <!-- Shared Provider Key -->
<argument type="collection" /> <!-- Options -->
<argument type="service" id="logger" on-invalid="null" />
<argument type="service" id="security.secure_random" />
</service>

View File

@ -5,15 +5,26 @@
{% set icon %}
<a href="http://symfony.com/">
<img width="26" height="28" alt="Symfony" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAcCAMAAABIzV/hAAACZFBMVEUwLjL///////////////////////////////////////////////////////////////////+Eg4b///+Ni46Xlpj///////////+op6n///////////////////////////////////////////////////////////9ZWFv///////9qaWz///////+mpaf///////////////9ZWFv///////////////9PTVH///91dHb////////////////////g4OD///9NTE+Ih4r///////+Ni47///////92dHeRkJLk5OTLy8xlY2b///////+cm53///////+5ubr////o6Oj////////U1NT///9DQURsa22rq6ysq61hX2L///+LioxTUVVBP0NEQkZpZ2rGxsf///9ram3////s7O2SkZNfXmFxcHKmpae4uLnKysuXlpiop6l3dXiIh4pYVlmrq6ycm52trK7Nzc48Oj5dW158e36dnJ49Oz/Pz9BiYGPAv8BDQUTQz9BVU1aioaNHRUnBwcJXVVk6ODxJR0t3dnmko6U8Oj6lpKY9Oz+0tLXDwsRQTlF7en1QTlHi4eJhX2LFxcZTUVViYGNwb3J+fX83NTlFQ0dUUlW4t7icm524uLk8Oj5YVlmPjpBLSU2enZ9aWVw/PkFBP0NdW153dnk0MjZQTlE1MzdQT1JdXF9ram15eHqGhYdDQkV5eHo2NThEQkZRUFNFQ0dta244NjpGREhTUVU5NztUUlVhX2JubG9HRUlVU1ZiYGM7OTxIRkk7OT1IR0o8Oj4wLjI9Oz8YdG13AAAAynRSTlMAAAEDBAUGCgsMDQ4QEhMUGRobGx0gISIkJiYnKCktLi8wMjM0NTk6Ozw+P0NFSEpLTE5PUFBTWlteXmBiZGVmaWxtcHBxc3R0dnl5fX+BgoOGi46Pj5CRmZqanZ6eoKeoq6ytsLCwsrO0tbe5urq8vL+/wsTFx8jJycvLy8vM0NHR0tLU1NfX2NnZ2trc3N3d3eHh4uLl5ebm5ubn5+fo6urt7e3u7vDx8/Pz9PT19fX19fX29vf39/j4+fn5+vr6+vv7+/z8/f3+yR5EtwAAAbVJREFUeNpl0mVXVFEYhuF3zhkOFqMjYmCi2MUYYKGIYiJ2YCd2t4IBFqgoKjZ2jg3igI2KyO2f8sTMngGvj/te71r7wyMuk4jofZccAihcMzJKXDYnuYcVotyeYKiktV5LA0faaE7S4s7TyMsBupnMcoH/vO6gmanJaiLV1Py+Xwn5zc0fjCbSi2LI2QdkGdLyFBG+rHwMzz4BD7wyGEfFk8pfsD2TkGmyFNvFHfDj55v02VD6DcteOYylatY8oG7boA2QV4vlklzB8tU3/DIwo+dWv58guY5tRcLMtwSGdi1DkTvAn9Jqsgbu4kafRBqlV4sDFCWuIjdhMsp7yQU49rB28/QPLOu2DuWqLMfmfw6M716GskdGVRMSGDKRsEzpvZ+Qs0lFKDd94s2oArh2F7K3oNQt6ChGr5x6+Dx3J7d2E3Ygqam4PCkngRNnngYIO5cWq4lLb5t+vJ6GiifFR1nbMNqP3fSOCN8PZnQynEW5W/nmHy0PXv79eHpRSjsjtEOtWZcRc9YXlNx7VFKwceGYHjG6s0Ob3iK+X3LqlKnjkvt39rjD6w3W6BhvrCdaVw//ADrWicJIvtkmAAAAAElFTkSuQmCC">
<span>{{ collector.symfonyversion }}</span>
<span>
{% if collector.applicationname %}
{{ collector.applicationname }} {{ collector.applicationversion }}
{% else %}
{{ collector.symfonyversion }}
{% endif %}
</span>
</a>
{% endset %}
{% set text %}
{% if collector.applicationname %}
<div class="sf-toolbar-info-piece">
{{ collector.applicationname }} <b>{{ collector.applicationversion }}</b>
</div>
{% endif %}
<div class="sf-toolbar-info-piece">
Symfony <b>{{ collector.symfonyversion }}</b>
</div>
<div class="sf-toolbar-info-piece">
<a href="http://symfony.com/doc/{{ collector.symfonyversion }}/index.html" rel="help">Documentation</a>
<a href="http://symfony.com/doc/{{ collector.symfonyversion }}/index.html" rel="help">Symfony Documentation</a>
</div>
{% endset %}
{% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %}
@ -106,8 +117,13 @@
<th>Value</th>
</tr>
<tr>
<th>Symfony version</th>
<td>{{ collector.symfonyversion }}</td>
{% if collector.applicationname %}
<th>Application</th>
<td>{{ collector.applicationname }} {{ collector.applicationversion }} (on Symfony {{ collector.symfonyversion }})</td>
{% else %}
<th>Symfony version</th>
<td>{{ collector.symfonyversion }}</td>
{% endif %}
</tr>
{% if 'n/a' != collector.appname %}
<tr>

View File

@ -59,11 +59,17 @@ class FileFormField extends FormField
if (null !== $value && is_readable($value)) {
$error = UPLOAD_ERR_OK;
$size = filesize($value);
$name = basename($value);
$info = pathinfo($value);
$name = $info['basename'];
// copy to a tmp location
$tmp = tempnam(sys_get_temp_dir(), 'upload');
unlink($tmp);
$tmp = sys_get_temp_dir().'/'.sha1(uniqid(mt_rand(), true));
if (array_key_exists('extension', $info)) {
$tmp .= '.'.$info['extension'];
}
if (is_file($tmp)) {
unlink($tmp);
}
copy($value, $tmp);
$value = $tmp;
} else {

View File

@ -56,8 +56,26 @@ class FileFormFieldTest extends FormFieldTestCase
$this->assertEquals(basename(__FILE__), $value['name'], "->$method() sets the name of the file field");
$this->assertEquals('', $value['type'], "->$method() sets the type of the file field");
$this->assertInternalType('string', $value['tmp_name'], "->$method() sets the tmp_name of the file field");
$this->assertFileExists($value['tmp_name'], "->$method() creates a copy of the file at the tmp_name path");
$this->assertEquals(0, $value['error'], "->$method() sets the error of the file field");
$this->assertEquals(filesize(__FILE__), $value['size'], "->$method() sets the size of the file field");
$origInfo = pathinfo(__FILE__);
$tmpInfo = pathinfo($value['tmp_name']);
$this->assertEquals(
$origInfo['extension'],
$tmpInfo['extension'],
"->$method() keeps the same file extension in the tmp_name copy"
);
$field->$method(__DIR__.'/../Fixtures/no-extension');
$value = $field->getValue();
$this->assertArrayNotHasKey(
'extension',
pathinfo($value['tmp_name']),
"->$method() does not add a file extension in the tmp_name copy"
);
}
public function getSetValueMethods()

View File

@ -0,0 +1 @@
Test

View File

@ -19,7 +19,7 @@ abstract class RealIteratorTestCase extends IteratorTestCase
public static function setUpBeforeClass()
{
self::$tmpDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'symfony2_finder';
self::$tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'symfony2_finder';
self::$files = array(
'.git/',
@ -75,7 +75,7 @@ abstract class RealIteratorTestCase extends IteratorTestCase
* Without the call to setUpBeforeClass() property can be null.
*/
if (!self::$tmpDir) {
self::$tmpDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'symfony2_finder';
self::$tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'symfony2_finder';
}
if (is_array($files)) {

View File

@ -14,7 +14,7 @@ https://github.com/fabpot/Silex/blob/master/src/Silex/Provider/FormServiceProvid
Documentation:
http://symfony.com/doc/2.0/book/forms.html
http://symfony.com/doc/2.2/book/forms.html
Resources
---------

View File

@ -117,6 +117,6 @@ class DateTimeToRfc3339TransformerTest extends DateTimeTestCase
{
$transformer = new DateTimeToRfc3339Transformer('UTC', 'UTC');
var_dump($transformer->reverseTransform('2010-04-31T04:05Z'));
$transformer->reverseTransform('2010-04-31T04:05Z');
}
}

View File

@ -149,7 +149,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
*
* @param string $key The key
* @param string|array $values The value or an array of values
* @param Boolean $replace Whether to replace the actual value of not (true by default)
* @param Boolean $replace Whether to replace the actual value or not (true by default)
*
* @api
*/

View File

@ -25,10 +25,24 @@ use Symfony\Component\HttpFoundation\Response;
class ConfigDataCollector extends DataCollector
{
private $kernel;
private $name;
private $version;
/**
* Constructor.
*
* @param string $name The name of the application using the web profiler
* @param string $version The version of the application using the web profiler
*/
public function __construct($name = null, $version = null)
{
$this->name = $name;
$this->version = $version;
}
/**
* Sets the Kernel associated with this Request.
*
* @param KernelInterface $kernel A KernelInterface instance
*/
public function setKernel(KernelInterface $kernel = null)
@ -42,6 +56,8 @@ class ConfigDataCollector extends DataCollector
public function collect(Request $request, Response $response, \Exception $exception = null)
{
$this->data = array(
'app_name' => $this->name,
'app_version' => $this->version,
'token' => $response->headers->get('X-Debug-Token'),
'symfony_version' => Kernel::VERSION,
'name' => isset($this->kernel) ? $this->kernel->getName() : 'n/a',
@ -64,6 +80,16 @@ class ConfigDataCollector extends DataCollector
}
}
public function getApplicationName()
{
return $this->data['app_name'];
}
public function getApplicationVersion()
{
return $this->data['app_version'];
}
/**
* Gets the token.
*

View File

@ -21,7 +21,7 @@ final class PropertyAccess
/**
* Creates a property accessor with the default configuration.
*
* @return PropertyAccessor The new property accessor.
* @return PropertyAccessor The new property accessor
*/
public static function getPropertyAccessor()
{

View File

@ -96,9 +96,9 @@ class PropertyAccessor implements PropertyAccessorInterface
/**
* Reads the path from an object up to a given path index.
*
* @param object|array $objectOrArray The object or array to read from.
* @param PropertyPathInterface $propertyPath The property path to read.
* @param integer $lastIndex The integer up to which should be read.
* @param object|array $objectOrArray The object or array to read from
* @param PropertyPathInterface $propertyPath The property path to read
* @param integer $lastIndex The index up to which should be read
*
* @return array The values read in the path.
*
@ -139,12 +139,12 @@ class PropertyAccessor implements PropertyAccessorInterface
/**
* Reads a key from an array-like structure.
*
* @param \ArrayAccess|array $array The array or \ArrayAccess object to read from.
* @param string|integer $index The key to read.
* @param \ArrayAccess|array $array The array or \ArrayAccess object to read from
* @param string|integer $index The key to read
*
* @return mixed The value of the key
*
* @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array.
* @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array
*/
private function &readIndex(&$array, $index)
{
@ -180,9 +180,9 @@ class PropertyAccessor implements PropertyAccessorInterface
*
* @return mixed The value of the read property
*
* @throws NoSuchPropertyException If the property does not exist.
* @throws NoSuchPropertyException If the property does not exist
* @throws PropertyAccessDeniedException If the property cannot be accessed due to
* access restrictions (private or protected).
* access restrictions (private or protected)
*/
private function &readProperty(&$object, $property)
{
@ -250,11 +250,11 @@ class PropertyAccessor implements PropertyAccessorInterface
/**
* Sets the value of the property at the given index in the path
*
* @param \ArrayAccess|array $array An array or \ArrayAccess object to write to.
* @param string|integer $index The index to write at.
* @param mixed $value The value to write.
* @param \ArrayAccess|array $array An array or \ArrayAccess object to write to
* @param string|integer $index The index to write at
* @param mixed $value The value to write
*
* @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array.
* @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array
*/
private function writeIndex(&$array, $index, $value)
{
@ -268,14 +268,14 @@ class PropertyAccessor implements PropertyAccessorInterface
/**
* Sets the value of the property at the given index in the path
*
* @param object|array $object The object or array to write to.
* @param string $property The property to write.
* @param string|null $singular The singular form of the property name or null.
* @param mixed $value The value to write.
* @param object|array $object The object or array to write to
* @param string $property The property to write
* @param string|null $singular The singular form of the property name or null
* @param mixed $value The value to write
*
* @throws NoSuchPropertyException If the property does not exist.
* @throws NoSuchPropertyException If the property does not exist
* @throws PropertyAccessDeniedException If the property cannot be accessed due to
* access restrictions (private or protected).
* access restrictions (private or protected)
*/
private function writeProperty(&$object, $property, $singular, $value)
{
@ -368,9 +368,9 @@ class PropertyAccessor implements PropertyAccessorInterface
/**
* Camelizes a given string.
*
* @param string $string Some string.
* @param string $string Some string
*
* @return string The camelized version of the string.
* @return string The camelized version of the string
*/
private function camelize($string)
{
@ -381,11 +381,11 @@ class PropertyAccessor implements PropertyAccessorInterface
* Searches for add and remove methods.
*
* @param \ReflectionClass $reflClass The reflection class for the given object
* @param array $singulars The singular form of the property name or null.
* @param array $singulars The singular form of the property name or null
*
* @return array|null An array containing the adder and remover when found, null otherwise.
* @return array|null An array containing the adder and remover when found, null otherwise
*
* @throws NoSuchPropertyException If the property does not exist.
* @throws NoSuchPropertyException If the property does not exist
*/
private function findAdderAndRemover(\ReflectionClass $reflClass, array $singulars)
{
@ -416,12 +416,12 @@ class PropertyAccessor implements PropertyAccessorInterface
/**
* Returns whether a method is public and has a specific number of required parameters.
*
* @param \ReflectionClass $class The class of the method.
* @param string $methodName The method name.
* @param integer $parameters The number of parameters.
* @param \ReflectionClass $class The class of the method
* @param string $methodName The method name
* @param integer $parameters The number of parameters
*
* @return Boolean Whether the method is public and has $parameters
* required parameters.
* required parameters
*/
private function isAccessible(\ReflectionClass $class, $methodName, $parameters)
{

View File

@ -39,15 +39,15 @@ interface PropertyAccessorInterface
*
* If neither is found, an exception is thrown.
*
* @param object|array $objectOrArray The object or array to modify.
* @param string|PropertyPathInterface $propertyPath The property path to modify.
* @param mixed $value The value to set at the end of the property path.
* @param object|array $objectOrArray The object or array to modify
* @param string|PropertyPathInterface $propertyPath The property path to modify
* @param mixed $value The value to set at the end of the property path
*
* @throws Exception\NoSuchPropertyException If a property does not exist.
* @throws Exception\NoSuchPropertyException If a property does not exist
* @throws Exception\PropertyAccessDeniedException If a property cannot be accessed due to
* access restrictions (private or protected).
* access restrictions (private or protected)
* @throws Exception\UnexpectedTypeException If a value within the path is neither object
* nor array.
* nor array
*/
public function setValue(&$objectOrArray, $propertyPath, $value);
@ -73,7 +73,7 @@ interface PropertyAccessorInterface
* If none of them are found, an exception is thrown.
*
* @param object|array $objectOrArray The object or array to traverse
* @param string|PropertyPathInterface $propertyPath The property path to modify.
* @param string|PropertyPathInterface $propertyPath The property path to read
*
* @return mixed The value at the end of the property path
*

View File

@ -62,10 +62,10 @@ class PropertyPath implements \IteratorAggregate, PropertyPathInterface
/**
* Constructs a property path from a string.
*
* @param PropertyPath|string $propertyPath The property path as string or instance.
* @param PropertyPath|string $propertyPath The property path as string or instance
*
* @throws UnexpectedTypeException If the given path is not a string.
* @throws InvalidPropertyPathException If the syntax of the property path is not valid.
* @throws UnexpectedTypeException If the given path is not a string
* @throws InvalidPropertyPathException If the syntax of the property path is not valid
*/
public function __construct($propertyPath)
{

View File

@ -44,9 +44,9 @@ class PropertyPathBuilder
/**
* Appends a (sub-) path to the current path.
*
* @param PropertyPathInterface $path The path to append.
* @param PropertyPathInterface $path The path to append
* @param integer $offset The offset where the appended piece
* starts in $path.
* starts in $path
* @param integer $length The length of the appended piece.
* If 0, the full path is appended.
*/
@ -67,7 +67,7 @@ class PropertyPathBuilder
/**
* Appends an index element to the current path.
*
* @param string $name The name of the appended index.
* @param string $name The name of the appended index
*/
public function appendIndex($name)
{
@ -78,7 +78,7 @@ class PropertyPathBuilder
/**
* Appends a property element to the current path.
*
* @param string $name The name of the appended property.
* @param string $name The name of the appended property
*/
public function appendProperty($name)
{
@ -89,8 +89,8 @@ class PropertyPathBuilder
/**
* Removes elements from the current path.
*
* @param integer $offset The offset at which to remove.
* @param integer $length The length of the removed piece.
* @param integer $offset The offset at which to remove
* @param integer $length The length of the removed piece
*
* @throws OutOfBoundsException if offset is invalid
*/
@ -106,15 +106,15 @@ class PropertyPathBuilder
/**
* Replaces a sub-path by a different (sub-) path.
*
* @param integer $offset The offset at which to replace.
* @param integer $length The length of the piece to replace.
* @param PropertyPathInterface $path The path to insert.
* @param integer $offset The offset at which to replace
* @param integer $length The length of the piece to replace
* @param PropertyPathInterface $path The path to insert
* @param integer $pathOffset The offset where the inserted piece
* starts in $path.
* starts in $path
* @param integer $pathLength The length of the inserted piece.
* If 0, the full path is inserted.
*
* @throws OutOfBoundsException If the offset is invalid.
* @throws OutOfBoundsException If the offset is invalid
*/
public function replace($offset, $length, PropertyPathInterface $path, $pathOffset = 0, $pathLength = 0)
{
@ -137,10 +137,10 @@ class PropertyPathBuilder
/**
* Replaces a property element by an index element.
*
* @param integer $offset The offset at which to replace.
* @param integer $offset The offset at which to replace
* @param string $name The new name of the element. Optional.
*
* @throws OutOfBoundsException If the offset is invalid.
* @throws OutOfBoundsException If the offset is invalid
*/
public function replaceByIndex($offset, $name = null)
{
@ -158,10 +158,10 @@ class PropertyPathBuilder
/**
* Replaces an index element by a property element.
*
* @param integer $offset The offset at which to replace.
* @param integer $offset The offset at which to replace
* @param string $name The new name of the element. Optional.
*
* @throws OutOfBoundsException If the offset is invalid.
* @throws OutOfBoundsException If the offset is invalid
*/
public function replaceByProperty($offset, $name = null)
{
@ -179,7 +179,7 @@ class PropertyPathBuilder
/**
* Returns the length of the current path.
*
* @return integer The path length.
* @return integer The path length
*/
public function getLength()
{
@ -189,7 +189,7 @@ class PropertyPathBuilder
/**
* Returns the current property path.
*
* @return PropertyPathInterface The constructed property path.
* @return PropertyPathInterface The constructed property path
*/
public function getPropertyPath()
{
@ -201,7 +201,7 @@ class PropertyPathBuilder
/**
* Returns the current property path as string.
*
* @return string The property path as string.
* @return string The property path as string
*/
public function __toString()
{
@ -225,9 +225,9 @@ class PropertyPathBuilder
* removed at $offset and another chunk of length $insertionLength
* can be inserted.
*
* @param integer $offset The offset where the removed chunk starts.
* @param integer $cutLength The length of the removed chunk.
* @param integer $insertionLength The length of the inserted chunk.
* @param integer $offset The offset where the removed chunk starts
* @param integer $cutLength The length of the removed chunk
* @param integer $insertionLength The length of the inserted chunk
*/
private function resize($offset, $cutLength, $insertionLength)
{

View File

@ -21,14 +21,14 @@ interface PropertyPathInterface extends \Traversable
/**
* Returns the string representation of the property path
*
* @return string The path as string.
* @return string The path as string
*/
public function __toString();
/**
* Returns the length of the property path, i.e. the number of elements.
*
* @return integer The path length.
* @return integer The path length
*/
public function getLength();
@ -40,7 +40,7 @@ interface PropertyPathInterface extends \Traversable
*
* If this property path only contains one item, null is returned.
*
* @return PropertyPath The parent path or null.
* @return PropertyPath The parent path or null
*/
public function getParent();
@ -58,7 +58,7 @@ interface PropertyPathInterface extends \Traversable
*
* @return string A property or index name
*
* @throws Exception\OutOfBoundsException If the offset is invalid.
* @throws Exception\OutOfBoundsException If the offset is invalid
*/
public function getElement($index);
@ -69,7 +69,7 @@ interface PropertyPathInterface extends \Traversable
*
* @return Boolean Whether the element at this index is a property
*
* @throws Exception\OutOfBoundsException If the offset is invalid.
* @throws Exception\OutOfBoundsException If the offset is invalid
*/
public function isProperty($index);
@ -80,7 +80,7 @@ interface PropertyPathInterface extends \Traversable
*
* @return Boolean Whether the element at this index is an array index
*
* @throws Exception\OutOfBoundsException If the offset is invalid.
* @throws Exception\OutOfBoundsException If the offset is invalid
*/
public function isIndex($index);
}

View File

@ -261,7 +261,7 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
}
// add a query string if needed
$extra = array_diff_key($parameters, $variables);
$extra = array_diff_key($parameters, $variables, $defaults);
if ($extra && $query = http_build_query($extra, '', '&')) {
$url .= '?'.$query;
}

View File

@ -297,8 +297,8 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
{
$routes = $this->getRoutes('test', new Route('/test', array('default' => 'value')));
$this->assertSame('/app.php/test?default=foo', $this->getGenerator($routes)->generate('test', array('default' => 'foo')));
$this->assertSame('/app.php/test?default=value', $this->getGenerator($routes)->generate('test', array('default' => 'value')));
$this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', array('default' => 'foo')));
$this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', array('default' => 'value')));
$this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test'));
}

View File

@ -20,6 +20,7 @@ use Symfony\Component\Security\Core\Exception\CookieTheftException;
use Symfony\Component\Security\Core\Authentication\RememberMe\PersistentToken;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Util\SecureRandomInterface;
use Psr\Log\LoggerInterface;
/**
* Concrete implementation of the RememberMeServicesInterface which needs
@ -98,7 +99,7 @@ class PersistentTokenBasedRememberMeServices extends AbstractRememberMeServices
}
$series = $persistentToken->getSeries();
$tokenValue = $this->secureRandom->nextBytes(64);
$tokenValue = base64_encode($this->secureRandom->nextBytes(64));
$this->tokenProvider->updateToken($series, $tokenValue, new \DateTime());
$request->attributes->set(self::COOKIE_ATTR_NAME,
new Cookie(
@ -120,8 +121,8 @@ class PersistentTokenBasedRememberMeServices extends AbstractRememberMeServices
*/
protected function onLoginSuccess(Request $request, Response $response, TokenInterface $token)
{
$series = $this->secureRandom->nextBytes(64);
$tokenValue = $this->secureRandom->nextBytes(64);
$series = base64_encode($this->secureRandom->nextBytes(64));
$tokenValue = base64_encode($this->secureRandom->nextBytes(64));
$this->tokenProvider->createNewToken(
new PersistentToken(

View File

@ -11,7 +11,7 @@ Resources
Documentation:
http://symfony.com/doc/2.0/book/security.html
http://symfony.com/doc/2.2/book/security.html
Resources
---------

View File

@ -26,7 +26,7 @@ https://github.com/fabpot/Silex/blob/master/src/Silex/Provider/TranslationServic
Documentation:
http://symfony.com/doc/2.0/book/translation.html
http://symfony.com/doc/2.2/book/translation.html
You can run the unit tests with the following command:

View File

@ -107,7 +107,7 @@ https://github.com/fabpot/Silex/blob/master/src/Silex/Provider/ValidatorServiceP
Documentation:
http://symfony.com/doc/2.0/book/validation.html
http://symfony.com/doc/2.2/book/validation.html
JSR-303 Specification:

View File

@ -4,23 +4,23 @@
<body>
<trans-unit id="1">
<source>This value should be false.</source>
<target>値はfalseでなければなりません.</target>
<target>falseでなければなりません。</target>
</trans-unit>
<trans-unit id="2">
<source>This value should be true.</source>
<target>値はtrueでなければなりません.</target>
<target>trueでなければなりません。</target>
</trans-unit>
<trans-unit id="3">
<source>This value should be of type {{ type }}.</source>
<target>値の型は{{ type }}でなければなりません.</target>
<target>型は{{ type }}でなければなりません。</target>
</trans-unit>
<trans-unit id="4">
<source>This value should be blank.</source>
<target>値は空でなければなりません.</target>
<target>空でなければなりません。</target>
</trans-unit>
<trans-unit id="5">
<source>The value you selected is not a valid choice.</source>
<target>選択された値は選択肢として有効な値ではありません.</target>
<target>有効な選択肢ではありません。</target>
</trans-unit>
<trans-unit id="6">
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
@ -32,47 +32,47 @@
</trans-unit>
<trans-unit id="8">
<source>One or more of the given values is invalid.</source>
<target>1つまたは複数の選択された値が正しくありません.</target>
<target>無効な選択肢が含まれています。</target>
</trans-unit>
<trans-unit id="9">
<source>The fields {{ fields }} were not expected.</source>
<target>フィールド{{ fields }}は無効です.</target>
<target>フィールド{{ fields }}は無効です</target>
</trans-unit>
<trans-unit id="10">
<source>The fields {{ fields }} are missing.</source>
<target>フィールド{{ fields }}は必須です.</target>
<target>フィールド{{ fields }}は必須です</target>
</trans-unit>
<trans-unit id="11">
<source>This value is not a valid date.</source>
<target>値が有効な日付ではありません.</target>
<target>有効な日付ではありません。</target>
</trans-unit>
<trans-unit id="12">
<source>This value is not a valid datetime.</source>
<target>値が有効な日時ではありません.</target>
<target>有効な日時ではありません。</target>
</trans-unit>
<trans-unit id="13">
<source>This value is not a valid email address.</source>
<target>値が有効なメールアドレスではありません.</target>
<target>有効なメールアドレスではありません</target>
</trans-unit>
<trans-unit id="14">
<source>The file could not be found.</source>
<target>ファイルが見つかりません.</target>
<target>ファイルが見つかりません</target>
</trans-unit>
<trans-unit id="15">
<source>The file is not readable.</source>
<target>ファイルを読み込めません.</target>
<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>
<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>
<target>ファイルのMIMEタイプが無効です({{ type }})。有効なMIMEタイプは{{ types }}です</target>
</trans-unit>
<trans-unit id="18">
<source>This value should be {{ limit }} or less.</source>
<target>値は{{ limit }}以下でなければなりません.</target>
<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>
@ -80,7 +80,7 @@
</trans-unit>
<trans-unit id="20">
<source>This value should be {{ limit }} or more.</source>
<target>値は{{ limit }}以上でなければなりません.</target>
<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>
@ -88,63 +88,131 @@
</trans-unit>
<trans-unit id="22">
<source>This value should not be blank.</source>
<target>値が空であってはなりません.</target>
<target>空であってはなりません。</target>
</trans-unit>
<trans-unit id="23">
<source>This value should not be null.</source>
<target>値がnullであってはなりません.</target>
<target>nullであってはなりません。</target>
</trans-unit>
<trans-unit id="24">
<source>This value should be null.</source>
<target>値はnullでなければなりません.</target>
<target>nullでなければなりません。</target>
</trans-unit>
<trans-unit id="25">
<source>This value is not valid.</source>
<target>値が無効です.</target>
<target>有効な値ではありません。</target>
</trans-unit>
<trans-unit id="26">
<source>This value is not a valid time.</source>
<target>値が有効な時刻ではありません.</target>
<target>有効な時刻ではありません。</target>
</trans-unit>
<trans-unit id="27">
<source>This value is not a valid URL.</source>
<target>値が有効なURLではありません.</target>
<target>有効なURLではありません。</target>
</trans-unit>
<trans-unit id="31">
<source>The two values should be equal.</source>
<target>2つの値が同じでなければなりません.</target>
<target>2つの値が同じでなければなりません</target>
</trans-unit>
<trans-unit id="32">
<source>This value is not a valid country.</source>
<target>値は有効な国名ではありません.</target>
<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. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>ファイルのサイズが大きすぎます。有効な最大サイズは{{ limit }} {{ suffix }}です.</target>
<source>The file is too large.</source>
<target>ファイルのサイズが大きすぎます。</target>
</trans-unit>
<trans-unit id="34">
<source>The file is too large.</source>
<target>ファイルのサイズが大きすぎます.</target>
<source>The file could not be uploaded.</source>
<target>ファイルをアップロードできませんでした。</target>
</trans-unit>
<trans-unit id="35">
<source>The file could not be uploaded.</source>
<target>ファイルをアップロードできませんでした.</target>
<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>
<target>ファイルが画像ではありません</target>
</trans-unit>
<trans-unit id="37">
<source>This is not a valid IP address.</source>
<target>値は有効なIPアドレスではありません.</target>
<target>有効なIPアドレスではありません。</target>
</trans-unit>
<trans-unit id="38">
<source>This value is not a valid language.</source>
<target>値は有効な言語名ではありません.</target>
<target>有効な言語名ではありません。</target>
</trans-unit>
<trans-unit id="39">
<source>This value is not a valid locale.</source>
<target>値は有効なロケールではありません.</target>
<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 }}ピクセル)。{{ max_width }}ピクセルまでにしてください。</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 }}ピクセル)。{{ min_width }}ピクセル以上にしてください。</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>画像の高さが大きすぎます({{ height }}ピクセル)。{{ max_height }}ピクセルまでにしてください。</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>画像の高さが小さすぎます({{ height }}ピクセル)。{{ min_height }}ピクセル以上にしてください。</target>
</trans-unit>
<trans-unit id="47">
<source>This value should be the user current password.</source>
<target>ユーザーの現在のパスワードでなければなりません。</target>
</trans-unit>
<trans-unit id="48">
<source>This value should have exactly {{ limit }} characters.</source>
<target>ちょうど{{ 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 }} elements or more.</source>
<target>{{ limit }}個以上の要素を含んでなければいけません。</target>
</trans-unit>
<trans-unit id="55">
<source>This collection should contain {{ limit }} elements or less.</source>
<target>要素は{{ limit }}個までです。</target>
</trans-unit>
<trans-unit id="56">
<source>This collection should contain exactly {{ limit }} elements.</source>
<target>要素はちょうど{{ limit }}個でなければなりません。</target>
</trans-unit>
</body>
</file>