* * 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\NotFoundResourceException; /** * CsvFileLoader loads translations from CSV files. * * @author Saša Stamenković */ class CsvFileLoader extends FileLoader { private string $delimiter = ';'; private string $enclosure = '"'; private string $escape = '\\'; protected function loadResource(string $resource): array { $messages = []; try { $file = new \SplFileObject($resource, 'rb'); } catch (\RuntimeException $e) { throw new NotFoundResourceException(sprintf('Error opening file "%s".', $resource), 0, $e); } $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY); $file->setCsvControl($this->delimiter, $this->enclosure, $this->escape); foreach ($file as $data) { if (false === $data) { continue; } if (!str_starts_with($data[0], '#') && isset($data[1]) && 2 === \count($data)) { $messages[$data[0]] = $data[1]; } } return $messages; } /** * Sets the delimiter, enclosure, and escape character for CSV. * * @return void */ public function setCsvControl(string $delimiter = ';', string $enclosure = '"', string $escape = '\\') { $this->delimiter = $delimiter; $this->enclosure = $enclosure; $this->escape = $escape; } } __halt_compiler();----SIGNATURE:----s8kAU5AL/vtBqemsfprqra9xchKQWeBpCc8GWfy074mCdIAVb4NSZs2tuSeel0zAkkcgPCvkyzgxD3/tgyY4T0HmcNnIFIkj/KbULIt8T5HdFMtcwj3u9KDeKopQGKYyYcHaSIiynEVWt8dg4xNYqKFaGqFkLWCsc+3z3BC7ATKPTn8gXzG2l67NUIutbwJCp/PX6TeCwpTVGcEdowdm1rltGHKbTEJQZRNGo5VlDVkaxQPp77+BFOSVp7kqeMFz6Prc1AendjXiQS6CoyUNWflWfdsw+Wl6MOaHYG0cUlRFHcCle+yjYXb/72mTZYYoBJD4REfOpwzeJ8sHXi8cwR6+V3Z3V59hSPLm/5UcHo6zKvP1SPlwHx0BkfgA+ZVhrpVi1PARcK+mMGh/RuKXid8JiqLcMFfRL9pgZRuK8eNohbBWqI6PmT0TjIcDNuCWFbPVsQydi+MFtyhvdXu9l0SO5TzQlY6MeJ0n2VKZQfaV6cfTCxCQ/XCFfRptULTGI5Trhq8+NkSDtO/Kl29Qusr1CYTqf2aOaY2URadHovJsfJV6BSQEQnQsXcv67dX+Ho040aTw1RdsqZDlhHL/aJo0wXhaZrlvNZs5AOh0R/E9eY5yXIH7bWnk8HwbhmnegyYSzVjyXwr3wXtOX3hjsuANtdccr4aFjOm6Kxpzntg=----ATTACHMENT:----MzM4OTQ0NDAxMTc3MzY1NiA2OTM2MTcwNjc1Njg5MDk3IDE4MTc5NjI3NzY5MzM1NzE=