lithium\g11n\catalog\adapter\Gettext::_prepareForWrite()
Prepares an item before it is being written and escapes fields.
All characters from \000 to \037 (this includes new line and tab characters)
as well as the backslash (\) and the double quote (") are escaped.
Literal Windows CRLFs (\r\n) are converted to LFs (\n) to improve cross platform
compatibility. Escaped single quotes (') are unescaped as they should not need to be.
Double escaped characters are maintained and not escaped once again.
Parameters
-
array
$item
Returns
arrayLinks
Source
protected function _prepareForWrite(array $item) {
$filter = function ($value) use (&$filter) {
if (is_array($value)) {
return array_map($filter, $value);
}
$value = strtr($value, ["\\'" => "'", "\\\\" => "\\", "\r\n" => "\n"]);
$value = addcslashes($value, "\0..\37\\\"");
return $value;
};
$fields = ['id', 'ids', 'translated', 'context'];
foreach ($fields as $field) {
if (isset($item[$field])) {
$item[$field] = $filter($item[$field]);
}
}
if (!isset($item['ids']['singular'])) {
$item['ids']['singular'] = $item['id'];
}
$path = Libraries::get(true, 'path');
if (isset($item['occurrences'])) {
foreach ($item['occurrences'] as &$occurrence) {
$occurrence['file'] = str_replace($path, '', $occurrence['file']);
}
}
return parent::_prepareForWrite($item);
}