Мультиязычность для сайта какие варианты есть?

ЕСТЬ РЕШЕНИЕ
#1 15 июля 2022 в 18:49

Привет,.

У меня задача, перевести значение переменной $test на английский, если выбран соответствующий язык на сайте. Но, значение данной переменной создается в админке виджета и выводится в шаблоне виджета, как быть?

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

Надеюсь понятно вопрос написал.

Собственно строка из языкового файла 

define('KISMET CAVE HOUSE', 'test');  Было бы удобно вместо константы указывать свою переменную, в которой содержится  строка заполняемая в админке виджета, и после уже переводить.

Готовые решения в каталоге не предлагать, это не то.

Возможно кто то сможет подсказать другие варианты реализации. 

1. Я пытался использовать google_translate_element, на ПК работает но с мобильного он упорно исчезает.

2. Предлагать автоматически переводить страницу с помощью браузера, возможно ли?

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

#2 15 июля 2022 в 19:16

define('KISMET CAVE HOUSE', $widget->options['string']);  

#3 15 июля 2022 в 19:30

define('KISMET CAVE HOUSE', $widget->options['string']);  

Make

Make спасибо! Будем пробовать.

#4 15 июля 2022 в 21:27

Больная тема с мультиязычностью

#5 15 июля 2022 в 21:56

Больная тема с мультиязычностью

Димон

Кстати да, и решения так и нет. Решение выше решило кое какой вопрос но не то.  Скорее всего буду на поддомены размещать. Но тему закрывать не буду, думаю смогу позже найти решение. 

#6 16 июля 2022 в 12:06

Больная тема с мультиязычностью

Димон

Кстати да, и решения так и нет. Решение выше решило кое какой вопрос но не то.  Скорее всего буду на поддомены размещать. Но тему закрывать не буду, думаю смогу позже найти решение. 

KoRn

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

#7 16 июля 2022 в 17:27

Больная тема с мультиязычностью

Димон

Кстати да, и решения так и нет. Решение выше решило кое какой вопрос но не то.  Скорее всего буду на поддомены размещать. Но тему закрывать не буду, думаю смогу позже найти решение. 

KoRn

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

dChirkis

Нашел подобное решение

  1. var en = {
  2. 'home': 'Home',
  3. 'about': 'About Us',
  4. 'contact': 'Contact Us'
  5. };
  6. var ua = {
  7. 'home': 'Головна',
  8. 'about': 'Про нас',
  9. 'contact': 'Контакти'
  10. };
  11.  
  12. function changeLang(lan) {
  13. lengthObj = Object.getOwnPropertyNames(lan).length;
  14. for (var i = 0; i <= lengthObj - 1; i++) {
  15. objKey = Object.getOwnPropertyNames(lan)[i];
  16. document.getElementById(objKey).innerText = func(objKey);
  17. }
  18.  
  19. function func(a) {
  20. for (key in lan) {
  21. if (key == a) {
  22. return (lan[key]);
  23. }
  24. }
  25. }
  26. }
  27.  
  28.  
  29. <header>
  30. <a href="/first">first</a>
  31. <a href="/second">second</a>
  32. <script type="text/javascript" src="javascripts/header.js"></script>
  33.  
  34. <button class="translate" id="en" onclick="
  35. changeLang(en);
  36. ">English</button>
  37. <button class="translate" id="ua" onclick="
  38. changeLang(ua);
  39. ">Українська</button>
  40.  
  41. <p class="lang">
  42. <p id="home">Home</p>
  43. </p>
  44. <p class="lang">
  45. <p id="about">About Us</p>
  46. </p>
  47. <p class="lang">
  48. <p id="contact">Contact s</p>
  49. </p>
  50. </header>

Но думаю это велосипед.

На Хабре тоже нашел кое что интересное. У меня упорно не хочет переводить habr.com/ru/post/438588/

#8 16 июля 2022 в 20:27

i18n Да поможет вам любимый поисковик!

#9 16 июля 2022 в 21:32

i18n Да поможет вам любимый поисковик!

IamB

А я нашел, спасибо. Действительно что то интересное, попробуем.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.