На серверной или на клиентской стороне лучше делать локализацию?
Если это веб-приложение, то особой разницы нет. Можно просто с сервера отдавать файл локализации на выбранный язык в JSON (не тащить все словари, а только на выбранный язык), и в Vue установить какой-нибудь плагин i18n  и потом писать в шаблонах <p>{{ $t("message.hello") }}</p>
где message.hello - ключ в словаре, и вызов $t("message.hello") вернет строку приветствия на текущем выбранном языке.
ЕМНИП контент срендеренный через js не очень хорошо индексируется. Но это было раньше, как поисковики сейчас смотрят на контент точно сказать не могу. Еще нюанс - тащить каждый раз словарь на клиент не очень хорошая идея. Еще вопрос с урл - для разных языков он должен быть разным, то есть хранить текущий язык в куке или локалстораже - плохая идея.
UPD: имхо лучший вариант - отдавать с сервера уже локализованный контент.