The Runic Era started 250 years before the Gregorian calendar
Runic Era (R.E.) is a dating calendar used by Norse and Germanic Pagans, as well as a few other Heathenism-based beliefs. "Year 0" is placed on when the first rune stones found were dated to, which is about 250 B.C.E. This is theologically seen as the moment that Odin gave the Runes to mankind to use.
So following this, and to illustrate, the year 2000 C.E. would be 2250 R.E.
With a Runic Calendar, the months and days are also different. It still follows a Gregorian outline (breaking from that is rather hard to do, it seems,) but we use more "traditional" Germanic names
- Understanding the Requirements
You want a browser extension that:
Shows the current Gregorian date
Displays equivalent dates in other calendars (Runic, Chinese, etc.)
Allows users to select which calendars to show
Supports multiple languages
Can be installed without going through official app stores
- Runic Calendar Implementation
From the article, we have all the needed information:
Year 0 is 250 BCE (so current year = Gregorian year + 250)
Month names and day names are provided
Example: May 3, 2025 = Laugardagr 3rd of Merrymoon, 2275 RE
- Basic Extension Structure
Here's a simple implementation:
javascript
// Runic Calendar Data
const runicMonths = [
"Snowmoon", "Horning", "Lenting", "Ostara",
"Merrymoon", "Midyear", "Haymoon", "Harvest",
"Shedding", "Hunting", "Fogmoon", "Yule"
];
const runicDays = [
"Manadagr", "Tysdagr", "Odinsdagr/Wotansdagr",
"Thorsdagr", "Frjadagr", "Laugardagr", "Sunnudagr"
];
function getRunicDate(gregorianDate) {
const day = gregorianDate.getDate();
const month = gregorianDate.getMonth();
const year = gregorianDate.getFullYear() + 250;
const dayOfWeek = gregorianDate.getDay(); // 0=Sunday, 6=Saturday
// Get ordinal suffix (1st, 2nd, 3rd, etc.)
const suffixes = ["th", "st", "nd", "rd"];
const relevantDigits = (day < 30) ? day % 20 : day % 30;
const suffix = (relevantDigits <= 3) ? suffixes[relevantDigits] : suffixes[0];
return {
dayName: runicDays[dayOfWeek],
date: ${day}${suffix} of ${runicMonths[month]}
,
year: ${year} of the Runic Era
};
}
// Chinese Calendar would require more complex calculations
// You might want to use a library like chinese-lunar-calendar
// Display function
function updateDisplay() {
const now = new Date();
// Gregorian date
const gregorianDate = now.toLocaleDateString('en-US', {
weekday: 'long',
year: 'numeric',
month: '2-digit',
day: '2-digit'
});
// Runic date
const runic = getRunicDate(now);
const runicDate = ${runic.dayName} ${runic.date}, in the year ${runic.year}
;
// Update the display
document.getElementById('gregorian-date').textContent = gregorianDate;
document.getElementById('runic-date').textContent = runicDate;
}
// Run on page load
window.onload = updateDisplay;
- Browser Extension Basics
A browser extension typically consists of:
manifest.json (configuration)
popup.html (the UI)
popup.js (the logic)
Optional: content scripts, background scripts
Sample manifest.json:
json
{
"manifest_version": 3,
"name": "Alternative Calendars",
"version": "1.0",
"description": "Displays dates in various cultural calendars",
"action": {
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"permissions": []
}
Sample popup.html:
html
Go to chrome://extensions
Enable "Developer mode"
Click "Load unpacked" and select your extension folder
For Firefox:
Go to about:debugging
Click "This Firefox"
Click "Load Temporary Add-on" and select any file in your extension
- Next Steps for Improvement
Add user preferences to select which calendars to show
Add language options
Implement more calendars (Chinese, Hebrew, Islamic, etc.)
Add proper icons and better styling
Consider using a library like luxon or moment.js for better date handling
Many Thanks to the friendly Whale of Deep Seek for helping me with the script !