feat: multi-language blog posts — add blog.es.json, blog.de.json; load by locale with EN fallback
This commit is contained in:
+29
-15
@@ -388,19 +388,34 @@
|
||||
let blogPosts = [];
|
||||
let blogExpanded = false;
|
||||
|
||||
if (blogGrid) {
|
||||
fetch('blog.json')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
blogPosts = Array.isArray(data) ? data : [];
|
||||
renderBlogCards();
|
||||
})
|
||||
.catch(error => {
|
||||
if (blogError) {
|
||||
blogError.classList.remove('hidden');
|
||||
blogError.textContent = getTranslation(document.documentElement.lang, 'blog-error', 'Unable to load articles right now.');
|
||||
}
|
||||
console.error('blog.json load failed', error);
|
||||
function loadBlogPosts(lang) {
|
||||
if (!blogGrid) return;
|
||||
blogPosts = [];
|
||||
blogExpanded = false;
|
||||
if (blogError) blogError.classList.add('hidden');
|
||||
|
||||
function onData(data) {
|
||||
blogPosts = Array.isArray(data) ? data : [];
|
||||
renderBlogCards();
|
||||
}
|
||||
|
||||
function showError() {
|
||||
if (blogError) {
|
||||
blogError.classList.remove('hidden');
|
||||
blogError.textContent = getTranslation(document.documentElement.lang, 'blog-error', 'Unable to load articles right now.');
|
||||
}
|
||||
}
|
||||
|
||||
var file = lang === 'en' ? 'blog.json' : 'blog.' + lang + '.json';
|
||||
fetch(file)
|
||||
.then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); })
|
||||
.then(onData)
|
||||
.catch(function () {
|
||||
if (lang === 'en') { showError(); return; }
|
||||
fetch('blog.json')
|
||||
.then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); })
|
||||
.then(onData)
|
||||
.catch(showError);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -539,8 +554,7 @@
|
||||
const value = translations[locale][key] ?? translations.en[key] ?? '';
|
||||
if (value !== undefined) el.setAttribute('aria-label', value);
|
||||
});
|
||||
renderBlogCards();
|
||||
updateBlogToggleLabel();
|
||||
loadBlogPosts(locale);
|
||||
}
|
||||
|
||||
document.getElementById('lang-selector').addEventListener('change', (event) => {
|
||||
|
||||
Reference in New Issue
Block a user