Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Как выбрать язык #5

Open
sergeym1111 opened this issue Nov 10, 2022 · 7 comments
Open

Как выбрать язык #5

sergeym1111 opened this issue Nov 10, 2022 · 7 comments

Comments

@sergeym1111
Copy link

Как в js выловить значение выбранного языка используя глобальную переменную?

@renat2985
Copy link
Owner

Конкретней опишите задачу.

@sergeym1111
Copy link
Author

sergeym1111 commented Dec 20, 2022

В function.js добавил несколько функций, которые переключают язык в боковом меню, основанном на блоке nav.../nav в index.htm (на этой странице также добавлен скрипт для обновления языка в боковом меню). Если делаю выпадающий список с выбором языка для меню, то язык переключается для меню. Но хочется чтобы при выборе языка на странице одновременно переключался язык для бокового меню. Создал глобальную переменную в которую нужно при выборе языка страницы записывать значение выбранного языка, например lng="ru", но как отловить какой язык сейчас выбран на странице не пойму. В логе вижу lang?lang=ru, но как его оттуда парсить и записать в переменную?

@renat2985
Copy link
Owner

renat2985 commented Dec 23, 2022

Похоже вы там что-то намудрили. Не стоит лезть в function.js.
Для начало вам нужно создать фалик с настройками, куда вы и будите сами помещать все нужные вам переменные, например назовем его live.json

Далее вы сами должы написать фукнцию в своем скетче. Которая будет следить например за GET /set?lang=RU если человек его сделал то в фай live.json записываем "lang":"ru"

Далее вам нужно подгрузить этот файл в веб интерфейс, это делается в блоке "configs":[**] после чего все переменные файла вам будут доступны. Вызывать их можно с помощью {{*}} например {{lang}}
Посмотрите скриншот:
image

Да и в дополненине, если после выбора языка в выподающем списке, вам нужно перезагрузить страницу, или отправить на какую-то другую, после action вам нужно добавить response.
Пример:

"action": "/set?lang=[[setlang]]",
"response":"/newpage"

Или в таком случае вообще можете не использовать action и делать все только через response, например так:

"response":"/set?lang=[[setlang]]"

Но в таком случае ваше скетчь, попадая на страницу /set?lang=* должен сам делать 301 редирект на нужную вам страницу. Например на ту с которой был сделан этот get

И вам обязательно стоит почитать документацию:
https://github.com/renat2985/easy_Iot_file_system/wiki#%D0%B2%D1%8B%D0%BF%D0%B0%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B9-%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA

@sergeym1111
Copy link
Author

Спасибо! Но не совсем то, что нужно. Посмотрите https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proshivki-ot-gunner47.2418/post-125991
2022-07-24-16-24-46-325_org mozilla firefox
А вот с боковым меню:
2022-07-24-16-25-00-432_org mozilla firefox
Хотел сделать, чтобы одновременно переключался язык страницы и меню, а просто обновив страницу, я ничего не добьюсь. Можно конечно попробовать создать обработку блока nav../nav, но это более хлопотно. Меню сделано без использования JS и как-бы живёт отдельной жизнью от страницы, которая принемает json, вот и приходится лезть в function.js

@renat2985
Copy link
Owner

Выкладывайте свой html и js код сюда.

@sergeym1111
Copy link
Author

sergeym1111 commented Dec 26, 2022

data.zip
Вот основные файлы
В index.htm: multilang = new MultiLang('ru', this.refreshLabels);
Параметр 'ru' здесь временно.
Язык должен определяться в function.js

@renat2985
Copy link
Owner

renat2985 commented Jan 4, 2023

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

Вам нужно добавить новый div блок в нужное вам место на страницу что вы собственно и сделали, но заполнять div блок нужно через json а не в html, то есть вам нужно добавить id в блок где будит находиться навигация, например вот так:
image

Далее задайте нужные css стили этого блока и наполняйте этот блок нужными вам кнопками, вот так:
image

В итоге получится следующее:
image

И не лезьте в function.js, когда я выложу новую версию вам сложно будет перейти на нее. т.к. вы наделали там своих фиксов. Если очется добавить какой-то js код добавляйте его в html или в новом js файле.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants