Какое-то время назад я набросал вот этот
черновик.
А вообще задача мультиязычности проста как 3 копейки. Любое key-value хранилище с языковым префиксом ключей.
А вот задача интернационализации гораздо интереснее, т.к. в зависимости от языка у вас может все меняться.
Для того же PHP есть
gettext.
Для JS тоже есть
нечто подобное.