* * 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', }; } } __halt_compiler();----SIGNATURE:----XOEHotCHeBLHpXFtounmSc93zuXg9C4G4/+aFDoJGwDsDUaITnJ1WuMEn5tppqaV7vwji1ZqkhXyjyWALY3Q+U6xQKGespGeuERcpVKi8TY4ntsBugbscnAKsIRKJmpg+M3ZUaA4FAeOdfEFeteEmQ8HnWo6q+GEU0niJ03mxjRZlCY23RO8yjk7IBTVZpyEk9cC/k+qW9LwYQ6vI/yeZsXxSh/HwKJsSsnoCyc1ZCKvEvNNTx55AvUhTMRFwKmnoBjY0Yl2j9U7jsDBXPLPFIBvmsdbO/szUm2kSoZ3+RKrOjkfDxC0u9CBTGQnJQEP/ngwDyFW0D6uKzq1MhS55zHgSuXykm1KJENoW0R+kd6hfd2rgVKGgje3c+SULoLLKZmSBsy0Nr4z2J+FJIpfmLMbAE6aJttI7h0jfxvPOzOFEOaMpinxsjKdayaygYQ69nCHGVKpCnNwDEmoN4EcHsGMftwWihBIBPsigg8yxSegDkeZbix5/82TauXm1XVrnqIrRLH8T6PUA+qsD/cgFPPJw/VfKXL3J4T7JpDbmv3NfNpAhS78a0jA5UevuDNcDEihuwuHMZVvxiyjAbH1kCwR+eG4aoW5m5Jnct6WJAlRYSyCPhwhacDONC39IwJNQPDl57KwwFXIiFlnMH1+LJrHIWRrbgC5AyWmWiCMaa0=----ATTACHMENT:----NzA0NzcyODc3OTg2MTQ3OSAzOTYwNDE0ODI4NjUxMjg4IDU5NTQxMjAyNzE2MjgyOTU=