I did a mod to the ECF_UTF_CLEANUP() function to prevent the issue that Paul had with the French translation garbled characters due to the translation table not remaining in ASCII/ISO-8859-1 format. The new code is <?php
function ECF_UTF_CLEANUP ($str) {
// Clean embedded ISO-8859-1 characters with UTF-8 replacements so iconv can work.
// EC is a bit lazy about mixing character sets in descriptions.
/*
// we need to use an array like this, but sometimes this script will not be
// saved as ASCII/ISO-8859-1, and the array of characters gets garbled.
$trantab = array(
'ISO' =>
array('','','','','','',
'','',
'','','','','','','','',
'','','','',
'','','','',
'','','','','','',
'',''),
// UTF-8 characters represented as ISO-8859-1
'UTF' =>
array('À',' ','Â','â','Æ','æ',
'Ç','ç',
'É','é','È','è','Ê','ê','Ë','ë',
'Î','î','Ï','ï',
'Ô','ô','Œ','œ',
'Ù','ù','Û','û','Ü','ü',
'Ÿ','ÿ'),
);
// so we used the following to encode it:
$serialized = serialize($trantab);
$base64 = base64_encode($serialized);
// and used the output of the base64_encode in the define() statement below.
// then we reconstitute the array with perfect fidelity using
// $trantab = unserialize(base64_decode(ISO_UTF_ARRAY));
// below.
*/
if(!defined('ISO_UTF_ARRAY')) {
define('ISO_UTF_ARRAY',
'YToyOntzOjM6IklTTyI7YTozMjp7aTowO3M6MToiwCI7aToxO3M6MToi4CI7aToyO3M6MToi
wiI7aTozO3M6MToi4iI7aTo0O3M6MToixiI7aTo1O3M6MToi5iI7aTo2O3M6MToixyI7aTo3
O3M6MToi5yI7aTo4O3M6MToiySI7aTo5O3M6MToi6SI7aToxMDtzOjE6IsgiO2k6MTE7czox
OiLoIjtpOjEyO3M6MToiyiI7aToxMztzOjE6IuoiO2k6MTQ7czoxOiLLIjtpOjE1O3M6MToi
6yI7aToxNjtzOjE6Is4iO2k6MTc7czoxOiLuIjtpOjE4O3M6MToizyI7aToxOTtzOjE6Iu8i
O2k6MjA7czoxOiLUIjtpOjIxO3M6MToi9CI7aToyMjtzOjE6IowiO2k6MjM7czoxOiKcIjtp
OjI0O3M6MToi2SI7aToyNTtzOjE6IvkiO2k6MjY7czoxOiLbIjtpOjI3O3M6MToi+yI7aToy
ODtzOjE6ItwiO2k6Mjk7czoxOiL8IjtpOjMwO3M6MToinyI7aTozMTtzOjE6Iv8iO31zOjM6
IlVURiI7YTozMjp7aTowO3M6Mjoiw4AiO2k6MTtzOjI6IsOgIjtpOjI7czoyOiLDgiI7aToz
O3M6Mjoiw6IiO2k6NDtzOjI6IsOGIjtpOjU7czoyOiLDpiI7aTo2O3M6Mjoiw4ciO2k6Nztz
OjI6IsOnIjtpOjg7czoyOiLDiSI7aTo5O3M6Mjoiw6kiO2k6MTA7czoyOiLDiCI7aToxMTtz
OjI6IsOoIjtpOjEyO3M6Mjoiw4oiO2k6MTM7czoyOiLDqiI7aToxNDtzOjI6IsOLIjtpOjE1
O3M6Mjoiw6siO2k6MTY7czoyOiLDjiI7aToxNztzOjI6IsOuIjtpOjE4O3M6Mjoiw48iO2k6
MTk7czoyOiLDryI7aToyMDtzOjI6IsOUIjtpOjIxO3M6Mjoiw7QiO2k6MjI7czoyOiLFkiI7
aToyMztzOjI6IsWTIjtpOjI0O3M6Mjoiw5kiO2k6MjU7czoyOiLDuSI7aToyNjtzOjI6IsOb
IjtpOjI3O3M6Mjoiw7siO2k6Mjg7czoyOiLDnCI7aToyOTtzOjI6IsO8IjtpOjMwO3M6Mjoi
xbgiO2k6MzE7czoyOiLDvyI7fX0=');
}
//reconstitute our trantab from the base64 encoded serialized value
//so we won't have issues if someone inadvertantly saves this script as
// UTF-8 instead of ASCII/ISO-8859-1
//
$trantab = unserialize(base64_decode(ISO_UTF_ARRAY));
$cstr = str_replace(
// ISO-8859-1 characters
$trantab['ISO'],
// UTF-8 characters represented as ISO-8859-1
$trantab['UTF'],
$str);
return($cstr);
}
While I dislike having to rely on a base64_decode to reconstitute the $trantab array, it will ensure that that array/table won't be changed. I changed the update date to 21-Sep-2017, version still 5.00. Also, Ray's comment changes included.
Attached is the new .zip