1) конечно второй вариант. каждый раз при добавлении нового языка переделывать таблицу - не комильфо.
2) У вас шаблоны для разных языков различаются визуально? Я обычно делаю один шаблон, а все стандартные тексты (надписи на кнопках и т.п.) выношу в языковые файлы/классы. Т.е. собственно шаблон у меня один, просто он помимо собственно контента статьи ещё проходит этап простановки всех стандартных текстов из текущего языкового файла.
3) То же самое, что и в вопросе номер 2. Я делаю для каждого языка свой файл, который подгружаю до того, как начинаю работать с видом. Из него и беру все текстовые константы, будь то надписи на кнопках или сообщения об ошибках. Из базы при ошибке приходит только код. По этому коду из текстового файла я беру текст и отправляю на клиент.