<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Translation\Loader; use Symfony\Component\Translation\Exception\InvalidResourceException; /** * JsonFileLoader loads translations from an json file. * * @author singles */ class JsonFileLoader extends FileLoader { protected function loadResource(string $resource): array { $messages = []; if ($data = file_get_contents($resource)) { $messages = json_decode($data, true); if (0 < $errorCode = json_last_error()) { throw new InvalidResourceException('Error parsing JSON: '.$this->getJSONErrorMessage($errorCode)); } } return $messages; } /** * Translates JSON_ERROR_* constant into meaningful message. */ private function getJSONErrorMessage(int $errorCode): string { return match ($errorCode) { \JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', \JSON_ERROR_STATE_MISMATCH => 'Underflow or the modes mismatch', \JSON_ERROR_CTRL_CHAR => 'Unexpected control character found', \JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON', \JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded', default => 'Unknown error', }; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
ArrayLoader.php | File | 1.37 KB | 0644 |
|
CsvFileLoader.php | File | 1.69 KB | 0644 |
|
FileLoader.php | File | 1.68 KB | 0644 |
|
IcuDatFileLoader.php | File | 1.79 KB | 0644 |
|
IcuResFileLoader.php | File | 2.72 KB | 0644 |
|
IniFileLoader.php | File | 537 B | 0644 |
|
JsonFileLoader.php | File | 1.49 KB | 0644 |
|
LoaderInterface.php | File | 950 B | 0644 |
|
MoFileLoader.php | File | 4.17 KB | 0644 |
|
PhpFileLoader.php | File | 1.02 KB | 0644 |
|
PoFileLoader.php | File | 4.98 KB | 0644 |
|
QtFileLoader.php | File | 2.77 KB | 0644 |
|
XliffFileLoader.php | File | 8.62 KB | 0644 |
|
YamlFileLoader.php | File | 1.57 KB | 0644 |
|