Hmmm that feels like a really specific single-user addition
Plus it feels a bit unprofessional to override the Homey settings on just one part of the application, not to mention the headaches it would probably give me.
There is a simple solution though. You can just feed the generated markdown into a Homeyscript that translates it, and send that out instead. Just place the Homeyscript between the calendar markdown generator and the send to dashboard card, and make sure you select the Homeyscript result to send to the dashboard. (and not the markdown)
You need this homeyscript card:
And add the markdown tag in the argument edit box on top.
Then Add this homeyscript:
// HomeyScript: Translate Calendar Markdown to Swedish
// Reads markdown from args[0], translates calendar structure words, and returns the translated markdown.
const rawInput = (typeof args !== 'undefined' && args && args[0])
? String(args[0])
: '## Today\n\n| Time | Event |\n| :--- |\n| **All Day** | Event 1 |\n| | **Morning** |\n\n## Tomorrow\n\n*No events scheduled.*';
/**
* Translates calendar markdown structural terms to Swedish while preserving event titles.
*/
function translateCalendarMarkdownToSwedish(markdown) {
if (!markdown || typeof markdown !== 'string') return '';
let text = markdown;
// 1. Fallback / status notices
text = text.replace(/\*No events scheduled\.\*/gi, '*Inga planerade händelser.*');
text = text.replace(/\*No calendar data\.\*/gi, '*Ingen kalenderdata.*');
// 2. Section headings
text = text.replace(/^##\s+Today\b/gmi, '## Idag');
text = text.replace(/^##\s+Tomorrow\b/gmi, '## I morgon');
text = text.replace(/^##\s+Yesterday\b/gmi, '## Igår');
// 3. Table headers
text = text.replace(/\|\s*Time\s*\|\s*Event\s*\|/gi, '| Tid | Händelse |');
// 4. Dayparts in bold markers
const daypartMap = {
'Morning': 'Morgon',
'Afternoon': 'Eftermiddag',
'Evening': 'Kväll',
'Night': 'Natt',
'morning': 'morgon',
'afternoon': 'eftermiddag',
'evening': 'kväll',
'night': 'natt'
};
text = text.replace(/\*\*(Morning|Afternoon|Evening|Night|morning|afternoon|evening|night)\*\*/g, (match, word) => {
return '**' + (daypartMap[word] || word) + '**';
});
// 5. All day markers
text = text.replace(/\*\*All\s+Day\*\*/g, '**Hela dagen**');
text = text.replace(/\*\*All\s+day\*\*/g, '**Hela dagen**');
text = text.replace(/\*\*all\s+day\*\*/g, '**hela dagen**');
// 6. Weekday headers with date break (e.g., "Mon<br>19-10-2026" or "Monday<br>19-10-2026")
const weekdayMap = {
'Monday': 'Måndag', 'Mon': 'Mån',
'Tuesday': 'Tisdag', 'Tue': 'Tis',
'Wednesday': 'Onsdag', 'Wed': 'Ons',
'Thursday': 'Torsdag', 'Thu': 'Tor',
'Friday': 'Fredag', 'Fri': 'Fre',
'Saturday': 'Lördag', 'Sat': 'Lör',
'Sunday': 'Söndag', 'Sun': 'Sön'
};
text = text.replace(/\b(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?=<br>)/g, (match) => {
return weekdayMap[match] || match;
});
// 7. Month-view table header row (e.g. "| Mon | Tue | Wed | ... |")
text = text.replace(/\|\s*(Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)\s*(?=\|)/g, (match, word) => {
const swedish = weekdayMap[word] || word;
return `| ${swedish} `;
});
return text;
}
const result = translateCalendarMarkdownToSwedish(rawInput);
log(result);
return result;
Also: If you want to convert all icons based on Swedish keywords: Change the Homey language to Swedish, in the Dashboard Studio - calendar settings: Copy all icon bindings to the clipboard, set homey back to English and paste the Swedish bindings back overwriting the English bindings.










