Делаем мультиязычный сайт c JavaScript

Поділитися
Вставка
  • Опубліковано 26 лис 2024

КОМЕНТАРІ • 123

  • @MrVIPKent
    @MrVIPKent 2 роки тому +4

    Олександр, дякую Вам за Ваші відео! Переглядаю поступово весь Ваш канал, лайкаю кожне відео, бо кожне з них це просто чиста інформація по JS, мій рівень та скіл значно виріс. Багато хто чекає, щоб ви створили курс по Ангуляр!

  • @Boudybuilder
    @Boudybuilder Рік тому +4

    Еще не досмотрел, но уже ставлю комментарий - Очень приятно рассказывает! Хочется слушать.

  • @BmxCarSoundStreetTrial
    @BmxCarSoundStreetTrial Рік тому +4

    подача материала на супер высоком уровне! спасибо

  • @AndreyX-i6b
    @AndreyX-i6b 3 роки тому +20

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

  • @ТимурТокумов-и1к
    @ТимурТокумов-и1к 3 роки тому +4

    Алекс, огромное Вам спасибо за Ваш труд!!! Очень помогаете понять js

  • @alien2364
    @alien2364 3 роки тому +6

    Супер! Неделю назад думал над этим вопросом)

  • @galinaslesareva7114
    @galinaslesareva7114 2 роки тому

    Делала по видео с небольшими изменениями (без перезагрузки, document.title = langArr.unit[hash] и проч.). Работает. Спасибо !

  • @theteochanel
    @theteochanel 2 роки тому +1

    для первого раза сойдёт
    СУПЕР!
    спасибо

  • @Anatoli-bq1pe
    @Anatoli-bq1pe Рік тому

    Огромная благодарность вам за ваши труды!

  • @Vladimir-yh2dl
    @Vladimir-yh2dl 2 роки тому +1

    Александр, как и всегда прекрасно и полезно ! Спасибо

  • @seoonlyRU
    @seoonlyRU 3 роки тому +2

    хорошее чоткое видео!!! лайк за него от вебмастера-легенды СЕООНЛИ

  • @arseniac681
    @arseniac681 3 роки тому +1

    Очень полезное видео. Спасибо, Алекс!

  • @Lemoonbird
    @Lemoonbird 11 місяців тому +2

    Спасибо за видео! Вопрос: будут ли страницы с hash en и ua индексироваться поисковиками по соответствующим языкам?

  • @СлаваПачевський
    @СлаваПачевський 2 роки тому

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

  • @MrColins710
    @MrColins710 3 роки тому +9

    класний урок, дякую

  • @caralight8178
    @caralight8178 2 місяці тому

    спасибо большое, было очень полезно

  • @michaelkamko
    @michaelkamko 3 роки тому +1

    Очень крутой видос и подача материала. Было бы круто, если бы было без перезагрузки страницы и без смены адреса (ищу именно это, но видос все равно посмотрел). Спасибо!

    • @VIJana79
      @VIJana79 2 роки тому +2

      так у него и так язык меняется без перезагрузки страницы, разве нет?

    • @redwalkie3552
      @redwalkie3552 2 роки тому

      @@VIJana79 все правильно.

  • @kiosikee
    @kiosikee Рік тому +1

    spasibo vam bolshoe

  • @artemsmirnoff9821
    @artemsmirnoff9821 3 роки тому +3

    Супер!

  • @ОлексійГордієнко-г4ч

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

    • @rpnXN
      @rpnXN 3 роки тому

      это в реакт тогда ) а там это в 3 функции

  • @maksimpkyjv
    @maksimpkyjv 2 роки тому

    Просто і зрозуміло. Дяка!

  • @nodirayakubova6395
    @nodirayakubova6395 3 роки тому +1

    Супер большое спасибо 👍👍👍

  • @ИльяИваник-ф8ф
    @ИльяИваник-ф8ф 3 роки тому +1

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

  • @Noname-i4f3z
    @Noname-i4f3z 3 роки тому

    Пушка, бомба, петарда!

  • @nikitasalnikov5507
    @nikitasalnikov5507 2 роки тому +5

    Здравствуйте. Видео зачетное, но не подскажете как сделать такое для многостраничного сайта? классы также копирую, но у меня перестает меняться с языка на язык

    • @dadadnetnet4335
      @dadadnetnet4335 24 дні тому

      привет, такая же проблема, как решили ?

  • @Pavel_Kirillov
    @Pavel_Kirillov 3 роки тому

    Спасибо! Ваше видео было полезно.

  • @mrakov
    @mrakov 3 роки тому +8

    Я привык уже что пишется код не бэст, главное идея для реализации и все ок и, но querySelector в цикле это "некст лвл плей"... Вроде можно 1 querySelectorAll и циклом по нему уменьшить количество запросов в дом.

    • @itgid
      @itgid  3 роки тому +6

      конечно можно. Это затравка. Главные преимущества я рассмотрю в коде реакт курса.

    • @wake378
      @wake378 2 роки тому

      а можешь подробнее рассказать, как в этом случае использовать querySelectorAll?

    • @mrakov
      @mrakov 2 роки тому +1

      @@wake378 можно было все элементы получить заранее по селектору, и хранить их по ключу этому которому в цикле ищем, или как хеш таблицу или сет какой-нибудь. У нас ведь контент страницы(структура) не меняется. Зато доступ будет по сложности n(1)

  • @sergei-sabitov
    @sergei-sabitov 3 роки тому +12

    А не лучше класс на какой-нибудь data-атрибут заменить?

    • @itgid
      @itgid  3 роки тому +6

      В этом видео показа идея кода. С кучей ограничений по возможности применения. А реализовать можно как угодно.

    • @jamesmay5088
      @jamesmay5088 2 роки тому

      Здраствуйте, можете помочь с реализацией через дата-атрибут? Я в html прописал дата-атрибути для каждого нужного для перевода елемента, и сделал отдельний файл с переводом для двух язиков и группировал сначало по язику, а не так как сделал автор видео. Одно не могу сделать подходящий js-код для етого, попробовал реализовать как автор видео, но все-равно не работает( И для своего сайта я не делал селект, как автор видео, а просто сделал две ссилки (en, ru). Может у вас есть готовий js-код для перевода через дата-атрибути?

  • @coolbooy9990
    @coolbooy9990 Рік тому +2

    Дякую, що поставили переклад й на українську мову)

  • @StarkElessar
    @StarkElessar 2 роки тому +3

    Александр, спасибо за идею, как это сделать вообще возможно, я решил делать почти, как вы но только через data-атрибуты, data-lang="name" и так далее..

  • @LuciferAngelos
    @LuciferAngelos 3 роки тому +8

    Чтобы VSCode переносил строки новую строку, когда она вылезает за границы редактора - нужно нажать Alt+Z.

    • @indigosay
      @indigosay 3 роки тому +2

      Там в настройках wrap поставить галочу и всё автоматически будет

    • @bvivg19
      @bvivg19 Рік тому

      Если есть плагин на px to em rem то это не будет работать

    • @ЕленаКаптаева
      @ЕленаКаптаева Рік тому

      Нкгкгугвнсшкга

  • @danunah12
    @danunah12 9 місяців тому +1

    Будут ли поисковики трех разных языков выводить на эту страницу или только один, или никто? В HTML файле нет текста для поисковиков, будут ли поисковики находить запрашиваемый текст?

    • @itgid
      @itgid  9 місяців тому

      Если правильно реализовать пути - то поисковик будет видеть разные страницы и для разных языков будет корректно искать.

    • @danunah12
      @danunah12 9 місяців тому +1

      @@itgidНа Вашем примере правильно реализованы пути или нужен другой подход для реализации правильного пути для поисковиков на разных языках?

  • @AlexDanilenko
    @AlexDanilenko 3 роки тому +3

    Отличная идея с переключением языков. Один вопрос - в чём смысл замены URL и перезагрузки страницы? Разве нельзя подменять элементы исходя из select.value? И во всём коде вместо переменной hash использовать переменную lang? Для чего дополнительные реверансы?

  • @hamidullonematullayev7634
    @hamidullonematullayev7634 2 роки тому

    Thank you for video very good👍👍

  • @МаксимСкляр-ц3г
    @МаксимСкляр-ц3г 3 роки тому +2

    Добрый день. Спасибо за видео-урок. Подскажите пожалуйста, сделал все точно так же но но после выбора языка в адресной строке есть изменения а сам язык не переключается (при выборе любого языка страница перезагружается но остается"ua")?

  • @ИринаЖукова-ю4е

    Супер

  • @ksawl
    @ksawl 3 роки тому +4

    самое интересное начнется когда надо будет этот сайт проиндексировать)))

    • @WebDev_51
      @WebDev_51 3 роки тому

      что начнётся?

    • @richardwong4613
      @richardwong4613 3 роки тому

      Поисковики уже давно могут читать контент из js файлов.

    • @ksawl
      @ksawl 3 роки тому +1

      @@richardwong4613 вероятно для этого и придумали SSR, потому что поисковики отлично индексируют js))

    • @richardwong4613
      @richardwong4613 3 роки тому +1

      @@ksawl SSR для создания ссылок на отдельные страницы. А текстовое содержимое уже загруженного JS скрипт поисковики видят.

  • @exploringtheworld8780
    @exploringtheworld8780 3 роки тому +1

    Спасибо

  • @alexandrlupa
    @alexandrlupa 3 роки тому +1

    В чем разница в браузере между location и window.location? Вы уверенны что она(разница) есть? Или это зацепка для комментариев?

  • @mendelandriy2791
    @mendelandriy2791 Рік тому

    спасибо очень помогли

  • @helgi_trxnv
    @helgi_trxnv 3 роки тому +2

    Почему автор всё время называет JS объект из lang.js массивом?

  • @amoriblain3655
    @amoriblain3655 2 роки тому +1

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

  • @АлександрПлуталов-ъ4ш

    спасибо за видео, вы не хотели бы тоже самое но с фреймворк i18next ?

  • @АннаГант-л9б
    @АннаГант-л9б Місяць тому

    подскажите, пожалуйста, как решить момент, если нужно перевести на странице несколько идентичных слов? переводит только первое. как прописать, что для всех? в js новичок (пока из тех, кто в танке)

  • @romanrudyy9335
    @romanrudyy9335 Рік тому

    Дякую!

  • @Victor90056
    @Victor90056 3 роки тому +8

    Не согласен, что нужно делать один файл с разными языками. Удобнее сделать 1 файл - 1 язык.

  • @ConstantineKa
    @ConstantineKa 3 роки тому +2

    Объясните кто-нибудь почему массив из объектов в фигурных скобках, а не объекты внутри объекта?

    • @КонстантинБожко-з1б
      @КонстантинБожко-з1б 3 роки тому

      Так как этот файл - имитация JSON формата. А в JSON всё пишется через кавычки, иначе будут ошибки

  • @profidev_js
    @profidev_js 2 роки тому +2

    А как сделать локализацию? если человек зашел из Англии, что-бы сразу английская версия вылезла

  • @dzysyak
    @dzysyak 3 роки тому

    Лучше мультиязычность делать на CSS ;) Это веселее :)

    • @dzysyak
      @dzysyak 3 роки тому

      @@Makaler Более того, еще удобно картинки с языком менять :)

  • @toughguy867
    @toughguy867 2 роки тому

    А такую реализацию можно использовать в вордпресс? Есть причины, по которым не использ плагины ВП.

  • @en_li_85
    @en_li_85 Рік тому

    а можно через css стили подключить разные языки? типа div { content: "english";}.и переподключать link через java script?

  • @kommersant5822
    @kommersant5822 Рік тому

    Здравствуйте, можете помочь? перевод работает, а на попапе нет, подскажите что может быть не так?

  • @eugenetkvv
    @eugenetkvv Рік тому +1

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

    • @АннаГант-л9б
      @АннаГант-л9б Місяць тому

      столкнулась с той же проблемой. вам удалось решить?

    • @eugenetkvv
      @eugenetkvv Місяць тому

      @@АннаГант-л9б давно это было, уже не помню, если честно

  • @dolllarox8681
    @dolllarox8681 3 роки тому +1

    Например у тебя есть соц сеть, и ты хочешь, чтобы люди со всего мира, могли общаться друг с другом без знания языка. Можно ли в чат добавить функцию перевода на язык который ты хочешь ?
    То есть при включении данной функции, все сообщения которые будут тебе писать иностранцы, они будут переводиться

    • @pschPvl
      @pschPvl 2 роки тому +2

      китайцы уже давно этим пользуются в своей соцсети, WeChat называется

  • @VinneyDub
    @VinneyDub 2 роки тому

    Допустим есть на сайте селектор как в нем переводить значения?

  • @Levchenski
    @Levchenski 3 роки тому +1

    Вы сказали что это массив но скобки объекта 3:35

  • @Firzj
    @Firzj 2 роки тому

    Отличный гайд, но я столкнулся с проблемой. Добавил абсолютно идентичный код (строка 25+ queryselector innerhtml) но при выборе языка язык не меняется. Все классы из html и js для перевода указал правильно. В консоли выдает ReferenceError: langArr is not defined

    • @Firzj
      @Firzj 2 роки тому

      @@Blueris_In_Galaxy спасибо за наводку 👍,действительно помогло. Долго ломал голову, а все оказалось так просто 😅

    • @Blueris_In_Galaxy
      @Blueris_In_Galaxy 2 роки тому

      @@Firzj очень рад что помогло. Сам тоже на этом гайде построил сайт

    • @maksimbadu7696
      @maksimbadu7696 2 роки тому +1

      В мене та сама помилка, можите підсказати, яким чином її усунули, дякую!

    • @Blueris_In_Galaxy
      @Blueris_In_Galaxy 2 роки тому

      @@maksimbadu7696 извините, никакого расизма, но я не понимаю по украински

    • @Blueris_In_Galaxy
      @Blueris_In_Galaxy 2 роки тому

      або навпаки

  • @anetkaf2558
    @anetkaf2558 Рік тому +1

    Скажите, как назначить placeholder класс, на сайте много полей ввода и не понятно как их переводить, мы же не можем ему назначить класс? И если есть слайдер на сайте, то видимый экрану текст переводится, а тот текст на который нужно нажать на слайдер нет (в слайдере 10 отзывов, первые 3 всегда видимы, остальный чтоб увидеть нужно нажать на стрелку в стороны, тобиш продлистать слайд, и вот этот текст который мы видем при пролистывании он не переводится), как решить эту проблему?

    • @FA1F.W
      @FA1F.W Рік тому

      со слайдерами я пока не разбирался. А что касается placeholder, то я делал так: if (langSwitcher.checked) {
      lang = "ru"
      username.setAttribute("placeholder", "Ваше имя");
      email.setAttribute("placeholder", "Ваша почта");
      } else {
      lang = "en"
      username.setAttribute("placeholder", "Your name");
      email.setAttribute("placeholder", "Email");
      }
      Незнаю насколько это колхоз. Если у Вас 4-5 полей для ввода, то получается 10 строк кода, если будет какая-то гигантская форма для заполнения - то конечно holyCrap. Если кто знает как менять placeholder, title, validityMessage and customValidity у форм - то буду рад ссылочке где про это почитать

    • @anetkaf2558
      @anetkaf2558 Рік тому

      @@FA1F.W у меня не работает этот код ( ставлю этот код в файл lang, и после этого на всей странице сбрасывается перевод, ставлю этот код в отдельный файл js -ничкго не происходит. Может я делаю что-то не то?

    • @FA1F.W
      @FA1F.W Рік тому

      @@anetkaf2558 у меня реализовано только 2 языка: англ и рус. Поэтому переключатель я сделал из checkbox. Блин, я только что компьютер выключил😅. Мне бы проще или ваш код увидеть или просто скинуть свой

    • @anetkaf2558
      @anetkaf2558 Рік тому

      @@FA1F.W У меня тоже на 2х языках.






      Отправить

      Вот HTML, а перевод сделала по видео. Просто JS я только начинаю учить и не понимаю что там

  • @andreykravchenko2657
    @andreykravchenko2657 3 роки тому

    Добрый день, подскажите пожалуйста в каком уроке по верстке есть о dl, dt тегах ?

  • @_fulgrim_9865
    @_fulgrim_9865 11 місяців тому

    Uncaught ReferenceError: Cannot access 'langArr' before initialization Ошибка, подскажите как устранить?

    • @dadadnetnet4335
      @dadadnetnet4335 27 днів тому

      у меня такая же, как решили ?

  • @BmxCarSoundStreetTrial
    @BmxCarSoundStreetTrial Рік тому

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

    • @jaymelanister548
      @jaymelanister548 6 місяців тому

      Разобрались как? Сам вот только столкнулся с этим.

  • @teamitsystem2114
    @teamitsystem2114 3 роки тому

    Добрый день, Александр. Смена языка в хроме в самом select не происходит, так же как и в телефоне. Подскажите пожалуйста почему.

    • @itgid
      @itgid  3 роки тому

      Увы без кода

  • @ТимурАбдуллаев-и8г
    @ТимурАбдуллаев-и8г 3 роки тому +6

    i18n ?

    • @indigosay
      @indigosay 3 роки тому +1

      Да есть i18njs специально для ванильного js

  • @toxatime3330
    @toxatime3330 3 роки тому

    Не понял, зачем нужна 25 строка кода? Объясните , пожалуйста, какую функцию она выполняет

    • @LuciferAngelos
      @LuciferAngelos 3 роки тому +3

      Достаёт из DOM'а title документа и присваивает ему значение ключа unit из массива langArr, в котором есть другой ассоциативный массив, в котором есть совпадение со значением hash.
      Т.е., ранее по коду ты получаешь значение hash из адресной строки, как en
      u\ua. К примеру, получил значение ru.
      Джаваскрипт лезет в ассоциативный массив langArr, находит там ключ unit, видит, что там 3 ключа - 'en', 'ru' и 'ua'. Т.к. ранее из hash ты получил значение 'ru', то он берёт значение ключа буквально arrLang['unit']['ru'], что равно "создаем многоязычный сайт". Если бы в хэше было бы другое значение ('en', к примеру), то данные брались бы из arrLang['unit']['ua']

    • @richardwong4613
      @richardwong4613 3 роки тому +2

      @@LuciferAngelos подскажите, пожалуйста, как правильно реализовать данный подход на многостраничном сайте?

  • @drewbieber1399
    @drewbieber1399 4 місяці тому

    Если на странице много селектов, как прописать выбор нужного в JS?

    • @itgid
      @itgid  4 місяці тому

      @@drewbieber1399 добавить идентификатор id. Или уникальный класс. Или дата атрибут.

    • @drewbieber1399
      @drewbieber1399 4 місяці тому

      @@itgid в html Я добавил, а как это прописать в JS, Я в нем новичок, можно пример изменённой строчки кьериселектор('select');

    • @itgid
      @itgid  4 місяці тому

      @@drewbieber1399 напишите в телеграм - помогу

    • @drewbieber1399
      @drewbieber1399 4 місяці тому

      ​@@itgid написал в группу

  • @Wyraxx
    @Wyraxx 3 роки тому +5

    Класне відео, від себе хочу додати, що UA це код країни, а код мов визначаеться стандартом ISO-639 наступним чином:
    639-1 639-2 639-3 Назва мови Оригінальна назва
    uk ukr ukr Українська Українська
    en eng eng Англійська English

  • @aleksandrmykalo439
    @aleksandrmykalo439 2 роки тому

    у меня: key is not definde :(

  • @ViktorWhite-xp4mg
    @ViktorWhite-xp4mg 7 місяців тому

    Чому немає дде глянути код?

  • @neon-music5530
    @neon-music5530 3 роки тому

    Пж создай группу в телеге где мы сможем общаться и задавать вопросы

    • @itgid
      @itgid  3 роки тому +9

      Я держал и вел такую группу 3 года, где с утра до вечера помогал и отвечал людям в любое время. И ночью и в час ночи и в два и в три. Еще и недовольство выслушивал, когда просил уточнить вопрос или код закинуть на codepen.io - чтобы помочь. С прошлого года решил - хватит.

    • @neon-music5530
      @neon-music5530 3 роки тому

      @@itgid понятно, как хотите

  • @DrakeUA
    @DrakeUA 3 роки тому

    реально флаги стран вставить както ?

    • @Wyraxx
      @Wyraxx 3 роки тому +1

      Прапори країн не зовсім логічно перегукуються з мовами, адже можна поставити, наприклад, прапор Німеччини для німецької мови, але тоді Австрійці, Швейцарці, та громадяни інших країн (наприклад в Італії є германоязичні люди) не будуть бачити в цьому логіки, інший приклад - іспанська мова: поставити прапор Іспанії, а як же уся Латинська Америка? Вони теж говорять іспанською. Але не є громадянами Іспанії і її прапор їм, по суті, не важливий. А ще більш відверто говорячи - такий підхід буде харити багато користувачів. 😎
      Тому на переважній більшості сайтів великих міжнародних компаній ви не побачите прапорці біля вибору мов.

  • @alanproduction910
    @alanproduction910 Рік тому

    a few speaking , more practice please , and make video by english version i dont know what should i do

  • @nefed-L
    @nefed-L 11 місяців тому

    Как всегда урок -- супер!

  • @denysivashchenko2080
    @denysivashchenko2080 3 роки тому +1

    Супер 👍🏻