$pll_lang['slug'], 'img' => $pll_lang['flag_url'], 'alt' => $pll_lang['name'], 'flag' => isset($pll_lang['flag']) ? $pll_lang['flag'] : '', ]; } } // Build a map for quick lookup by code $language_map = []; foreach ($languages as $lang) { $language_map[$lang['code']] = $lang; } $grouped_entries = []; foreach ($glossary_data as $entry) { $term = $entry['original_term']; $lang = $entry['original_language_code']; $key = $term . '||' . $lang; // Composite key if (!isset($grouped_entries[$key])) { $grouped_entries[$key] = [ 'term' => $term, 'original_language_code' => $lang, 'desc' => $entry['description'], 'type' => $entry['kind'], 'type_label' => ucfirst($entry['kind']), 'translations' => [], ]; } if (!empty($entry['translations']) && is_array($entry['translations'])) { foreach ($entry['translations'] as $translation) { if ( $translation['target_language_code'] !== $lang && !empty($translation['translated_term']) && trim($translation['translated_term']) !== '' ) { $grouped_entries[$key]['translations'][$translation['target_language_code']] = trim($translation['translated_term']); } } } } // Sort glossary entries alphabetically by term (case-insensitive) uksort($grouped_entries, 'strnatcasecmp'); // Collect unique original_language_codes and their counts $language_codes = []; foreach ($glossary_data as $entry) { if (!empty($entry['original_language_code'])) { $code = $entry['original_language_code']; if (!isset($language_codes[$code])) { $language_codes[$code] = 0; } $language_codes[$code]++; } } $unique_language_codes = array_keys($language_codes); // Compute the unique original language code $unique_original_language_code = ''; if (count($unique_language_codes) === 1) { $unique_original_language_code = reset($unique_language_codes); } // Add this for default selected language (first in the list) $default_selected_lang = $unique_language_codes[0] ?? ''; // --- ADD THIS BLOCK --- $term_original_lang = []; foreach ($glossary_data as $entry) { $term = $entry['original_term']; $lang = $entry['original_language_code']; // Initialize as array if not already if (!isset($term_original_lang[$term])) { $term_original_lang[$term] = []; } // Add only if not already present if (!in_array($lang, $term_original_lang[$term])) { $term_original_lang[$term][] = $lang; } } // --- END ADD --- // Count how many languages have entries $language_codes_with_entries = []; foreach ($grouped_entries as $entry) { $code = $entry['original_language_code']; if (!in_array($code, $language_codes_with_entries, true)) { $language_codes_with_entries[] = $code; } } $single_language_mode = count($language_codes_with_entries) === 1; $single_language_code = $single_language_mode ? $language_codes_with_entries[0] : ''; ?>

Success Icon
Success Icon
1): ?>
$code): ?>
$limit) { return mb_substr($str, 0, $limit, 'UTF-8') . '…'; } return $str; } } $editing_term = isset($_GET['edit']) ? $_GET['edit'] : null; foreach ($grouped_entries as $composite_key => $data): list($term, $original_language_code) = explode('||', $composite_key); $first = mb_substr(trim($term), 0, 1, 'UTF-8'); $row_letter = is_numeric($first) ? '123' : (preg_match('/[A-Za-z]/u', $first) ? strtoupper($first) : '#&à'); ?>
'; ?>
Glossary Entry Type Actions
No glossary entries found.