75 lines
No EOL
3 KiB
JavaScript
75 lines
No EOL
3 KiB
JavaScript
document.addEventListener('DOMContentLoaded', () => {
|
|
const translations = {
|
|
ru: {
|
|
title: "workshop",
|
|
download: "Скачать",
|
|
game_mode_label: "Режим игры:",
|
|
tags_label: "Метки:",
|
|
file_size_label: "Размер файла:",
|
|
added_time_label: "Добавлен:"
|
|
},
|
|
en: {
|
|
title: "Workshop",
|
|
download: "Download",
|
|
game_mode_label: "Game Mode:",
|
|
tags_label: "Tags:",
|
|
file_size_label: "File Size:",
|
|
added_time_label: "Added:"
|
|
}
|
|
};
|
|
|
|
const savedLang = localStorage.getItem('selectedLanguage');
|
|
const browserLang = (navigator.language || navigator.userLanguage).split('-')[0];
|
|
const defaultLang = savedLang && translations[savedLang] ? savedLang : (translations[browserLang] ? browserLang : 'ru');
|
|
|
|
function translatePage(lang) {
|
|
document.querySelectorAll('[data-i18n]').forEach(element => {
|
|
const key = element.getAttribute('data-i18n');
|
|
if (translations[lang][key]) {
|
|
element.innerHTML = translations[lang][key];
|
|
} else {
|
|
console.warn(`Translation missing for key: ${key} in language: ${lang}`);
|
|
}
|
|
});
|
|
document.documentElement.lang = lang;
|
|
localStorage.setItem('selectedLanguage', lang);
|
|
}
|
|
|
|
function convertBBCodeToMarkdown(text) {
|
|
let converted = text
|
|
.replace(/\n\s*\n/g, '\n\n') // Убираем лишние пробелы между строками
|
|
.trim();
|
|
|
|
// Преобразование [h1] и [h3] в Markdown-заголовки
|
|
converted = converted.replace(/\[h1\](.*?)\[\/h1\]/g, '# $1');
|
|
converted = converted.replace(/\[h3\](.*?)\[\/h3\]/g, '### $1');
|
|
|
|
// Преобразование изображений и ссылок
|
|
converted = converted.replace(/\[url=([^\]]+)\]\[img\]([^\[]+)\[\/img\]\[\/url\]/g, '[]($1)');
|
|
converted = converted.replace(/\[img\]([^\[]+)\[\/img\]/g, '');
|
|
converted = converted.replace(/\[url=([^\]]+)\]([^\[]+)\[\/url\]/g, '[$2]($1)');
|
|
|
|
return converted;
|
|
}
|
|
|
|
function renderDescription() {
|
|
const descriptionElement = document.querySelector('.description');
|
|
if (descriptionElement && window.marked) {
|
|
const rawText = descriptionElement.textContent;
|
|
const markdownText = convertBBCodeToMarkdown(rawText);
|
|
descriptionElement.innerHTML = marked.parse(markdownText);
|
|
} else {
|
|
console.warn('Marked.js не загружен или элемент .description не найден');
|
|
}
|
|
}
|
|
|
|
translatePage(defaultLang);
|
|
renderDescription();
|
|
|
|
const cards = document.querySelectorAll('.card');
|
|
cards.forEach(card => {
|
|
card.addEventListener('click', () => {
|
|
window.location.href = '/main';
|
|
});
|
|
});
|
|
}); |