en.site.com (site.com/en)
site.com/en
как автоматически на основе языка браузера посылать посетителя на его языковую версию?
В вопросе указаны WordPress и "js при переключении языка из-под сервера" (NodeJS). На каком ЯП переключать - не понятно...
если все же прибегнуть к переключателю css dispay:none для инг контента, то как тот же гугл примет одну статью для разных регионов
Жесть.
И есть ли смысл морочиться с этим с помощью js при переключении языка из-под сервера
Именно так и надо делать. Определение языка на сервере (не на клиенте) по языку браузера > редирект на директорию по названию языка (site.com/en) > отдача статики (страницы) уже с определенным языком.
И если я гуглю сайт с vpn с google.com получаю чистую инг версию, если напрямую в России - чистую ру версию
Вообще лучше чекать именно по языку браузера. По ip - нужно иметь свежую ip базу, чтобы с ними сверяться.
И как будут хранится артиклы в вордпрессе: одна статья в себе содержит 2 языка (2 контента в бд) или для версии site.com/en на хостинге лежит чистая инг версия сайта?
Я бы хранил отдельными статьями. Все таки так проще прописывать title и остальные мета-теги.
Отдельная версия типа en.site.ru даст спокойно добавлять артиклы в ру блог, не парясь об их добавлении и перевода для инг версии
Вы правильно указали - это будет отдельный сайт, и крутить его нужно будет отдельно.
На крайняк можно добавить виджет гугл транслейта для хот перевода ру артикла, если нет инг версии
Поисковик не будет юзать Ваш "гугл транслейта", соответственно индексация будет не очень.
Пример решения на php, с определением языка по заголовку браузера и ридектом на соответствующую директорию:
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
case "en":
// en version
header("Location: /en");
exit();
case "es":
// es version
header("Location: /es");
exit();
default:
// ru version (default)
break;
}
}