NextGEN Gallery
A solution for accented characters in uploaded filenames (1 post)

  1. tenchi39
    Posted 2 years ago #

    Uploading files with hungarian accented filenames resulted in the images not appearing in the gallery. My not so elegant solution was to add this function in the current theme's function.php:

    function correct_filename($filename) {
    $accented = array("ö", "ü", "ó", "ő", "ú", "é", "á", "ű", "í", "Ö", "Ü", "Ó", "Ő", "Ú", "É", "Á", "Ű");
    $non_accented = array("o", "u", "o", "o", "u", "e", "a", "u", "i", "O", "U", "O", "O", "U", "E", "A", "U");
    $filename = str_replace($accented, $non_accented, $filename);
    $characters = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '-', '_', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '&');
    $correct_filename = '';
    for($i=0;$i<strlen($filename);$i++) {
    if(in_array($filename[$i], $characters)) {
    $correct_filename .= $filename[$i];
    } else {
    $correct_filename .= '-';
    return $correct_filename;

    This changes the hungarian accented characters to the non-accented versions and changes every character that is not in the allowed array to a dash.

    In NextGen Gallery's function file (wp-content/plugins/nextgen-gallery/admin/functions-php) I added the following line:
    $filename = correct_filename($filename);

    Before this line:
    $dest_file = WINABSPATH . $gallery->path . '/' . $filename;
    (Line 1085 in my case)

    This solved the problem.

    Could the dev team solve this problem without hacks like this in future releases?



Topic Closed

This topic has been closed to new replies.

About this Plugin

  • NextGEN Gallery
  • Frequently Asked Questions
  • Support Threads
  • Reviews

About this Topic