/* slug-url — canonical locale-aware URL slug generation for site routes (RFC-0915, DNA-88). Do not handle heading anchor deduplication — use HeadingSlugger for that. RFC-0915: extracted from werkstatt-site/src/domain/geo/slug.ts as canonical URL slug function. RFC-1097: sweep — tail packages clean Sweep batch 3: rewrote ~95 purposes across werkstatt-knowledge, werkstatt-shared, godot-game, phaser-game, lifecycle-core, projektarchiv-*, portal-*, billing-*, typescript (CONTRACT-02/PURPOSE-02). Real KEY_DECISIONS on 5 godot utils, non-goals on 5 CONTRACT-03 files, headers on 4 headerless files, CS-07 history literal fix on 2 files. Policy: vitest.config.ts + test-fixtures testPatterns, worker-configuration.d.ts excludedPath. All non-site/engine packages now 0 diagnostics. */ import { resolveSlugStrategy } from "./strategies.ts"; /** * Generates a locale-aware Latin URL slug from text. * Uses German umlaut replacements for lang="de", * Cyrillic transliteration for lang="uk", * and default @sindresorhus/slugify for other/undefined langs. * Returns "entity" if the input produces an empty slug. */ export function slugUrl(text: string, lang?: string): string { return resolveSlugStrategy(lang).slug(text) || "entity"; }