Подтвердить что ты не робот

Static Html Website - Bootstrap - Поддержка нескольких языков

Для начала я хочу заявить, что я новичок в веб-разработке.

Меня попросили создать статический веб-сайт (для небольшого отеля), и я купил этот отзывчивый шаблон html5 - CSS3. Он состоит из чистого html5 - css3 и некоторого JavaScript для слайд-шоу и т.д. И использует фреймворк bootstrap.

Я уже создал сайт, и теперь меня попросили добавить к нему многоязычную поддержку. Могу ли я выполнить это через бутстрап? Можно ли это сделать с помощью CSS?

Если нет, должен ли я иметь копию всех моих .html файлов в подпапке (например, "website" /en/ "content" ) и перенаправить пользователя по ссылке вверху страницы, или мне следует использовать JavaScript для определения языка?

Вкратце, я хотел бы, чтобы пользователь посетил мой сайт из другой страны, чтобы получить английскую версию сайта, в то время как все остальные получают язык по умолчанию. Я хочу как можно быстрее (почему я купил шаблон), чтобы встать и запустить как можно скорее (летний сезон уже начался). У меня есть разумный опыт программирования, но я совершенно новый в веб-разработке.

4b9b3361

Ответ 1

Вы можете сделать это в одном файле без использования каких-либо языков программирования на стороне сервера. Вы должны проверить i18next правильное решение javascript.

Вы также можете использовать чистый CSS для перевода домашней страницы. Попробуйте что-то вроде

.en, .de, .it { display:none; } /* hide all elements with a language class */
.en:lang(en), .de:lang(de), .it:lang(it) { display:block; } /* show those elements that match their language class */

Когда вы устанавливаете правильный атрибут lang на свой тег html (например, javascript), вы можете легко перевести страницу:

<div class="en">Good morning</div>
<div class="de">Guten Morgen</div>
<div class="it">Ciao</div>

Ответ 2

Bootstrap не имеет к этому никакого отношения. Нет, вы не можете перевести сайт с использованием чистого CSS. Вам нужно будет изменить источник HTML, чтобы содержать другой текст. Да, вы можете сделать это, сделав копию всех ваших HTML файлов и изменив текст в них. Как правило, у вас будет серверный язык с HTML-шаблонами, которые позволят вам динамически менять текст в переводе, не имея полной копии вашего кода. Однако это не похоже на то, что вы могли бы быстро встать и работать.

Обнаружение языка клиента и обслуживание соответствующей версии сайта также является чем-то, что потребует некоторого количества серверных программ. Опять же, это не похоже на то, что вы могли бы получить достаточно быстро.

Ответ 3

Если ваш веб-сайт должен быть статичным и использовать то же решение, что и страница начальной загрузки, на котором работает Jekyll, вы можете использовать страницы Jekyll и github для маркировки в текстовых файлах шаблонов и ссылки снаружи в файле Yaml, который содержит строки на каждом языке (например, en.yml и br.yml).

Итак, когда jekyll создает статическую страницу, он будет генерировать правильные файлы, каталоги и ссылки для навигации по странице на разных языках. Это не должно выполняться Javascript, страницей на каждом языке, который должен быть сгенерирован.

Я сделал это с веб-сайта: https://github.com/worknenjoy/airspace-jekyll которые генерируют страницу https://worknenjoy.github.io/airspace-jekyll/

Выбор языка перенаправляет адрес pt на бразильскую португальскую страницу, а страница по умолчанию - английская. Код является открытым исходным кодом, и он есть.

В Gemfile вы можете увидеть, что используемый жемчуг - это jekyll-multiple-languages-plugin (https://github.com/Anthony-Gaudino/jekyll-multiple-languages-plugin)

который несет ответственность за создание всего, что вам нужно, чтобы облегчить этот перевод.

Ответ 4

Еще один пример того же, что парни уже говорят

let langs = ['en', 'fr', 'it'];
let lang = 'en';
setLangStyles(lang);

function setStyles(styles) {
  var elementId = '__lang_styles';
  var element = document.getElementById(elementId);
  if (element) {
    element.remove();
  }

  let style = document.createElement('style');
  style.id = elementId;
  style.type = 'text/css';

  if (style.styleSheet) {
    style.styleSheet.cssText = styles;
  } else {
    style.appendChild(document.createTextNode(styles));
  }
  document.getElementsByTagName('head')[0].appendChild(style);
}

function setLang(lang) {
  setLangStyles(lang);
}

function setLangStyles(lang) {
  let styles = langs
    .filter(function (l) {
      return l != lang;
    })
    .map(function (l) {
      return ':lang('+ l +') { display: none; }';
    })
    .join(' ');

  setStyles(styles);
}
<a href="#" hreflang="it" onclick="setLang('it'); return false">Italiano</a>
<a href="#" hreflang="en" onclick="setLang('en'); return false">English</a>
<a href="#" hreflang="fr" onclick="setLang('fr'); return false">French</a>
<p lang='it'>Ciao a tutti!</p>
<p lang='en'>Hi everyone!</p>
<p lang='fr'>Bon Baguette!</p>

Ответ 5

Нет, невозможно перевести сайт, используя только CSS, так как CSS используется только для стиля.

Для действительно плавного и простого перевода вы можете использовать Cloud Translation, это бесплатный проект с открытым исходным кодом от Angry Monkey Cloud: https://github.com/angrymonkeycloud/CloudTranslation.

Он может даже изменить стиль Bootstrap и другие стили для поддержки "справа налево" из коробки, вам просто нужно установить направление языка на rtl.

Сначала вы должны добавить ссылку на jQuery, затем в файл JavaScript CloudTranslation:

<script crossorigin="anonymous" src="https://cdn.amcapi.com/translation/cloudtranslation-1.0.0.min.js"></script>

И добавьте конфигурацию в заголовок HTML следующим образом:

<script type="application/json" id="CloudTranslationConfig">
    {
  "Settings": {
    "DefaultLanguage": "en",
    "TranslatorProvider": "Azure", // Could be empty if you want to provide the translations manually
    "TranslatorProviderKey": "{Your Microsoft Azure Translator Key}",
    "UrlLanguageLocation": "Subdirectory"
  },
  "Languages": [
    {
      "Code": "en",
      "DisplayName": "English"
    },
    {
      "Code": "de",
      "DisplayName": "Deutsch"
    }
  ]
}
</script>

и добавьте свой собственный выбор (выпадающий), имеющий класс "CloudTranslationSelect", чтобы отобразить список предопределенных языков.

Более подробная информация найдена на https://www.angrymonkeycloud.com/translation

Ответ 6

Вы можете использовать кнопку multi для мульти-кнопки, как две кнопки для двух языков и связали их друг с другом. например:

english languages link here

index.html

<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">DESIGN</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="index.html">Home</a></li>
<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="services.html">Services<span class="caret"></span></a>

<ul class="dropdown-menu">
      <li><a href="logo.html">logo design</a></li>
      <li><a href="banner.html">Banner Design</a></li>
      <li><a href="psd.html">Psd Desgin</a></li>
    </ul>
  </li>
  <li><a href="contact.html">contact us</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
  <li><a href="index.html"><span><img src="img/fr.png" height="20px" width="20px"></span>English</a></li>
  <li><a href="fr_index.html"><span><img src="img/eng.png"  height="20px" width="20px"></span> French</a></li>
</ul>
</div>
</nav>
<div class="container">
<h1>Hello Listen Dear !!!!</h1>
<p>Why i listen you?</p>
</div>






french language page
link here
fr_index


<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">CONCEPTION</a>
</div>
<ul class="nav navbar-nav">
  <li class="active"><a href="fr_index.html">Accueil</a></li>
  <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="fr_services.html">Prestations de service<span class="caret"></span></a>
    <ul class="dropdown-menu">
      <li><a href="fr_logo.html">création de logo</a></li>
      <li><a href="fr_banner.html">Conception de bannière</a></li>
      <li><a href="fr_psd.html">Psd Design</a></li>
    </ul>
  </li>
  <li><a href="fr_contact.html">Contactez nous</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
  <li><a href="index.html"><span><img src="img/fr.png" height="20px" width="20px"></span>English</a></li>
  <li><a href="fr_index.html"><span><img src="img/eng.png"  height="20px" width="20px"></span> French</a></li>
</ul>
</div>
</nav>
<div class="container">
<h1>Bonjour Cher Ecoute !!!!</h1>
<p>Pourquoi je t'écoute?</p>
</div>

он работает определенно спасибо