Поддерживаю Ваши попытки выпрямить многоязычность в битриксе, мне она в текущем виде тоже не нравится, но сделать с этим ничего нельзя.
Подсовывать компонентам перевод универсально вряд ли получится, поскольку все компоненты формируют $arResult по-своему. Но могу предложить совершенно безумную идею:
1. Создаете таблицу из двух полей: первое - идентификатор (первые N символов строки + md5 от всей строки) от оригинального текста (primary), и второе - переведенный текст.
2. В result_modifier.php рекурсивно сканируете $arResult, вычисляете ключ для всех строковых переменных, формируете массив ключей. Потом запрашиваете одним запросом переводы для них, ну и при повторном проходе заменяете оригиналы. :)
Возможные недостатки:
1. Коллизии ключа. Вероятность очень мала.
2. Зацикливание рекурсии если в $arResult есть ссылка, например 'KEY'=>&$arResult. В принципе, исправимо.
3. Небольшое уменьшение быстродействия.