Implement RSS localization

This commit is contained in:
jultty 2024-05-20 12:14:11 -03:00
commit 25c6fdd4d4
10 changed files with 136 additions and 44 deletions

View file

@ -1,23 +1,22 @@
function get_data() {
return {
pt: {
posts: [
"pt": {
"posts": [
{
title: "Scripts em OCaml",
slug: "scripts-em-ocaml",
date: "23/03/2024",
},
"title": "Scripts em OCaml",
"slug": "scripts-em-ocaml",
"date": "23/03/2024"
}
]
},
en: {
posts: [
"en": {
"posts": [
{
title: "Hello, Worldling",
slug: "hello-worldling",
date: "May 20, 2024",
},
"title": "Hello, Worldling",
"slug": "hello-worldling",
"date": "May 20, 2024"
}
]
}
}
}

View file

@ -1,11 +1,12 @@
const data = get_data()
const post_list = document.getElementById('posts')
const userLang = navigator.language || navigator.userLanguage
let lang = userLang.includes('pt') ? 'pt' : 'en'
document.addEventListener('DOMContentLoaded', function() {
function populate_posts() {
data[lang].posts.forEach(post => {
const posts = document.getElementById('nav-posts')
posts.innerHTML = ''
const item = document.createElement('li')
const anchor = document.createElement('a')
const date = document.createElement('span')
@ -14,9 +15,9 @@ document.addEventListener('DOMContentLoaded', function() {
date.innerText = `${parse_date(post.date)} - `
item.appendChild(date)
item.appendChild(anchor)
post_list.appendChild(item)
posts.appendChild(item)
})
})
}
function parse_date(date) {
current_year = new Date().getFullYear()
@ -24,3 +25,35 @@ function parse_date(date) {
.replace(`/${current_year}`, '')
}
function localize_menu() {
const home = document.getElementById('nav-menu-home')
const rss = document.getElementById('nav-menu-rss')
if (lang == 'pt') {
home.innerText='Início'
rss.setAttribute('href', 'pt.rss')
} else {
home.innerText='Home'
rss.setAttribute('href', 'en.rss')
}
}
const en_lang_swapper = document.getElementById('lang-swap-en')
const pt_lang_swapper = document.getElementById('lang-swap-pt')
en_lang_swapper.addEventListener("click", () => {
lang = 'en'
populate_posts()
localize_menu()
})
pt_lang_swapper.addEventListener("click", () => {
lang = 'pt'
populate_posts()
localize_menu()
})
document.addEventListener('DOMContentLoaded', () => {
populate_posts()
localize_menu()
})