а ты уверен что правильно?
Я делаю два запроса, фомирую два массива, один для вывода основных полей - это name? namespace, id и второй массив - это массив со значенями для ru, en, de. Основной цикл для потроения вёрстки из языковых констант по уникальным значениям, а значения для языковых расширений констант ищем во втором массиве. Эти яйца я придумал потому, что в базе языковые константы хранятся в виде
name=readmore | namespace=core | language=ru | value="Читать дальше"
name=readmore | namespace=core | language=en | value="Readmore"
...
Ничего не накрутил я? Вывожу всю эту сгруппированную таблицу в <table>, значения кладу в <input>, на js обрабатываю обытие onleyup для каждого input и освежаю БД при каждом изменении. Добавление константы также аккуратно одной формой.
А в админке движка сейчас для 5 язхыковых значений константы нужно выполнить 5 операций - для каждого языка отдельно, это через попу, я думаю.