Какие есть варианты сделать простой статический многоязычный сайт? - PullRequest
0 голосов
/ 29 марта 2019

Я настраиваю статический веб-сайт, который я хочу отображать на двух языках.

Я не могу найти исчерпывающий обзор различных опций (например, загрузка на стороне сервера или загрузка внешнего интерфейса по сравнению с использованием разных папок. Каковы преимущества каждого варианта (например, для SEO, удобства обслуживания, масштабируемости и т. Д.).)?

В идеале переводы должны храниться в отдельных файлах json. Главное, что меня волнует, - это перевод - меньше, чем другие аспекты i18n и l10n.

Например, как я могуtranslate:

<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>Welcome</h1>
    <p>Here's a website</p>
    <p>Here's a <a href="https://www.google.com/">Link</a> to language specific Google</p>
    <button>Click here</button>
  </body>
</html>

Некоторые из множества опций, с которыми я сталкивался до сих пор:

  • i18next - самая стандартная опция. поддержка загрузки каркасов,но не ясно, какой из них подходит для большинства основных целей. i18nextify ? jquery-i18next ?
  • i18js - просто, но для рельсов?
  • i18n - самый популярный на npm, но имеет статус сборки
  • i18n-2 - обновленная версия выше

Я чувствую, что i18next - это самый стандартный способ, но подходит ли онперешли на простой сайт?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Для всех, кто осматривается, я нашел обзор этой темы Reddit .Я также объясню вариант, который я выбрал ниже.

Чтобы подвести итог темы:

1) Front-End JS (например, jquery.i18n )

  • Как правило, довольно просто реализовать
  • Они могут негативно повлиять на SEO
  • Может увеличить вес страницы
  • Сайт не работает для людей, которые не работаютJS
  • Не рекомендуется, но подходит для очень небольших проектов

2) Несколько страниц

  • Это проще всего настроить, но обслуживание становится кошмаром.Не рекомендуется

3) Сторона сервера (например, node-i18n )

  • Поскольку это позволяет избежать недостатков внешнего интерфейса, упомянутых выше, этообычно рекомендуется для больших проектов

4) Использование инструмента сборки, такого как скрипты npm или gulp (например, static-i18n )

  • Создает отдельные каталоги длякаждый язык использует скрипты сборки
  • Бит начальной настройки, но прост в обслуживании и расширении
  • Поскольку генерируются только статические html-страницы, html-код можно безопасно встраивать в json-файлы перевода.

Решение

В итоге я выбрал вариант 4, используя static-i18n .Несмотря на то, что это заняло немного времени, оно хорошо работает для SEO, работает для статических сайтов, легко обслуживается, масштабируется и позволяет избежать путаницы при загрузке динамического языка интерфейса.

0 голосов
/ 29 марта 2019

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

...