I’m bilingual and switch Obsidian languages quite often. We do have different number formats in UK and Germany, so I’d like to use JS .toLocaleString(undefined, {maximumFractionDigits: 1})
with the language Obsidian is set to, not my OS’s language.
Unfortunately, using undefined
decides to use German (de-DE
), and navigator.language
also returns de
when Obsidian runs in English.
It makes a difference seeing 4,096.0
vs 4.096,0
…
Any insights on how to get that language setting, preferably in the en-GB
(or en-UK
or de-DE
or de-AT
…) format?
I’m not sure what the “right way” is, but one possibility is to use moment.locale()
. It’ll return whatever language obsidian is set to.
1 Like
Cheers, that’s perfect, since I use moment.js
anyway for date calculations! Much appreciated.
1 Like
So I just discovered you can retrieve the language as it’s set in obsidian with this:
const lang = window.localStorage.getItem('language');
This will return one of these language codes:
en: "English",
zh: "简体中文",
"zh-TW": "繁體中文",
ru: "Pусский",
ko: "한국어",
it: "Italiano",
id: "Bahasa Indonesia",
ro: "Română",
"pt-BR": "Portugues do Brasil",
cz: "čeština",
de: "Deutsch",
es: "Español",
fr: "Français",
no: "Norsk",
pl: "język polski",
pt: "Português",
ja: "日本語",
da: "Dansk",
uk: "Український",
sq: "Shqip",
tr: "Türkçe (kısmi)",
hi: "हिन्दी (आंशिक)",
nl: "Nederlands (gedeeltelijk)",
ar: "العربية (جزئي)"
if lang
is null
, then the language is English.
2 Likes