import re
from unicodedata import normalize
import uuid


def generate_slug(text, max_length=100):
    """Generate URL-safe slug from Arabic or English text."""
    if not text:
        return str(uuid.uuid4())[:8]

    # Transliterate Arabic to Latin
    text = normalize('NFKD', text)

    # Convert to lowercase
    text = text.lower()

    # Remove non-word characters (keep Arabic letters, numbers, hyphens)
    # For Arabic, we'll use a simple transliteration
    arabic_map = {
        'ا': 'a', 'أ': 'a', 'إ': 'i', 'آ': 'aa',
        'ب': 'b', 'ت': 't', 'ث': 'th',
        'ج': 'j', 'ح': 'h', 'خ': 'kh',
        'د': 'd', 'ذ': 'dh', 'ر': 'r', 'ز': 'z',
        'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd',
        'ط': 't', 'ظ': 'z', 'ع': 'a', 'غ': 'gh',
        'ف': 'f', 'ق': 'q', 'ك': 'k', 'ل': 'l',
        'م': 'm', 'ن': 'n', 'ه': 'h', 'و': 'w',
        'ي': 'y', 'ة': 't', ' ': '-', '_': '-'
    }

    result = []
    for char in text:
        if char in arabic_map:
            result.append(arabic_map[char])
        elif char.isalnum() or char in '-_':
            result.append(char)
        elif char.isspace():
            result.append('-')

    slug = ''.join(result)

    # Remove consecutive hyphens
    slug = re.sub(r'-+', '-', slug)

    # Remove leading/trailing hyphens
    slug = slug.strip('-')

    # Limit length
    if len(slug) > max_length:
        slug = slug[:max_length].rstrip('-')

    # Fallback if empty
    if not slug:
        slug = str(uuid.uuid4())[:8]

    return slug
