У элемента есть конкретный URL, при запросе по этому URL отрабатывает тот же комплексный компонент, это правда, но другой шаблон - detail. В шаблоне detail никакого редиректа нет.
> Дело в том, что в PHP нет русских названий месяцев.
Строго говоря, их можно получить, если указать локаль и она настроена в системе. Но они там сокращенные и просклонять их не получится.
В этом случае нужно всего-лишь исправить регулярное выражение "product_name_([0-9]+)", чтобы оно соответствовало вашим требованиям, и заменить "products.php\?id=$1" на "products.php\?code=$1".
Потом на странице products.php искать товар по коду (алиасу).
Завел базовый класс для справочников и там в методах получения из БД выбирал язык пользователя по умолчанию и базовый и сразу же выбирал нужный перевод. Но это сильная связанность получается, все в куче, хотелось бы более правильной архитектуры
А для старого формата есть спецификация.