2015-08-17 17:00:26 -07:00
< ? 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\NotFoundResourceException ;
/**
* CsvFileLoader loads translations from CSV files .
*
* @ author Saša Stamenković < umpirsky @ gmail . com >
*/
2016-04-20 09:56:34 -07:00
class CsvFileLoader extends FileLoader
2015-08-17 17:00:26 -07:00
{
private $delimiter = ';' ;
private $enclosure = '"' ;
private $escape = '\\' ;
/**
* { @ inheritdoc }
*/
2016-04-20 09:56:34 -07:00
protected function loadResource ( $resource )
2015-08-17 17:00:26 -07:00
{
$messages = array ();
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 ) {
2018-11-23 12:29:20 +00:00
if ( '#' !== substr ( $data [ 0 ], 0 , 1 ) && isset ( $data [ 1 ]) && 2 === \count ( $data )) {
2015-08-17 17:00:26 -07:00
$messages [ $data [ 0 ]] = $data [ 1 ];
}
}
2016-04-20 09:56:34 -07:00
return $messages ;
2015-08-17 17:00:26 -07:00
}
/**
* Sets the delimiter , enclosure , and escape character for CSV .
*
2018-11-23 12:29:20 +00:00
* @ param string $delimiter Delimiter character
* @ param string $enclosure Enclosure character
* @ param string $escape Escape character
2015-08-17 17:00:26 -07:00
*/
public function setCsvControl ( $delimiter = ';' , $enclosure = '"' , $escape = '\\' )
{
$this -> delimiter = $delimiter ;
$this -> enclosure = $enclosure ;
$this -> escape = $escape ;
}
}