Как заменить конкретные страницы? [Многоязычный веб-сайт HTML] - PullRequest
0 голосов
/ 07 июня 2019

Мой вопрос довольно прост.

У меня есть статический HTML-сайт на английском языке.

www.website.com

www.website.com / services

www.website.com / contacts

У меня также есть перевод на немецкий язык:

www.website.com / de /

www.website.ru / de / services

www.website.com / de / contacts

Моя кнопка (флаг) для смены языка расположена рядом с моей навигацией:

<ul class="language">
   <li class="de"><a href="#"></a></li>
</ul>

Вариант 1: я могу просто заменить "#" на немецкую версию страницы.Например, на www.website.com это <a href="www.website.com/de/">, а на www.website.com/services - <a href="www.website.com/de/services">

Но это так много работы.Есть ли более простой способ для вызова страниц с помощью JavaScript или .htaccess .. или что вы предлагаете.Мои страницы в формате .html, поэтому опция .php неэффективна.А добавление «id» к каждому элементу для его перевода ... еще сложнее, чем первый вариант.

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 07 июня 2019

Да, я подозреваю, что этот javascript должен работать:

$(document).ready(() => {
  let path = window.location.pathname;
  if (path.startsWith('/de'))
    $('a.lang-switch').attr('href', path.substr(3));
  else
    $('a.lang-switch').attr('href', '/de' + path);

  console.log($('a').attr('href'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="lang-switch">Change Language</a>
0 голосов
/ 07 июня 2019

У вас есть две разные копии HTML? Если это так, то это, вероятно, довольно легко.

  1. Выберите первый вариант, но только для смены языков.
  2. Включите тег <meta>, указывающий текущий язык
  3. Используйте прослушиватель событий JavaScript, чтобы перехватывать каждую нажатую ссылку и вставлять язык на основе вышеуказанного метатега. Как то так;

let lang = document.getElementsByName('lang')[0].getAttribute('lang');

// Get the parent DIV, add click listener...
document.body.addEventListener("click", function(e) {
	// e.target was the clicked element
	if(e.target && e.target.nodeName == "A") {
		e.target.href.replace('yourwebsite.com', `yourwebsite.com/${lang}/`);
	}
});
<meta name='lang' lang='de'>

Ссылка: Часть кода взята из ответа здесь

0 голосов
/ 07 июня 2019

В идеале, вы, вероятно, должны делать это на серверном языке вашего сайта (PHP / ASP / Java /…). Если вы все еще хотите сделать это в Javascript, вы можете сделать что-то подобное, добавив /de перед вашим текущим местоположением:

<a href="www.website.com/de/" id="language">
<script>document.getElementById('language').setAttribute('href', '/de'+document.location.pathname);</script>
...