angular-gettext если использовать с grunt-ом, то очень удобно получается.
Сайт пишется на одном языке, и везде, где нужен перевод подставляется директива translate.
Затем создаются файлы *.po для нужных языков и при сборке проекта, дополнение для grunt-а создает json, который уже используется в директиве gettext.