Редизайн под новую Matrix-стилистику + RU/EN переключатель языка
Новая шапка (sticky, blur, мигающий курсор), нумерованные секции резюме с полным опытом работы и новым разделом «Образование», карточки проектов в стиле drwxr-xr-x, более яркий дождь на фоне. Добавлен i18n-модуль (frontend/js/i18n.js) с переключателем EN/RU: резюме и проекты полностью переведены, в игре переведены статичные подписи интерфейса лобби и боя (данные от сервера остаются на русском).
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
const KEY = 'cacto-lang';
|
||||
|
||||
export function getLang() {
|
||||
return localStorage.getItem(KEY) === 'en' ? 'en' : 'ru';
|
||||
}
|
||||
|
||||
export function setLang(lang) {
|
||||
localStorage.setItem(KEY, lang);
|
||||
document.documentElement.lang = lang;
|
||||
}
|
||||
|
||||
// Вешает обработчик на кнопку #lang-toggle в шапке и синхронизирует её
|
||||
// подпись (показываем язык, НА который переключит клик, а не текущий).
|
||||
export function initLangToggle(onChange) {
|
||||
document.documentElement.lang = getLang();
|
||||
const btn = document.getElementById('lang-toggle');
|
||||
if (!btn) return;
|
||||
|
||||
const sync = () => {
|
||||
btn.textContent = getLang() === 'ru' ? 'EN' : 'RU';
|
||||
};
|
||||
sync();
|
||||
|
||||
btn.addEventListener('click', () => {
|
||||
setLang(getLang() === 'ru' ? 'en' : 'ru');
|
||||
sync();
|
||||
window.dispatchEvent(new CustomEvent('cacto:langchange', { detail: getLang() }));
|
||||
onChange?.(getLang());
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user