aboutsummaryrefslogtreecommitdiffstats
path: root/excalidraw-app/app-language/language-detector.ts
diff options
context:
space:
mode:
Diffstat (limited to 'excalidraw-app/app-language/language-detector.ts')
-rw-r--r--excalidraw-app/app-language/language-detector.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/excalidraw-app/app-language/language-detector.ts b/excalidraw-app/app-language/language-detector.ts
new file mode 100644
index 0000000..52da490
--- /dev/null
+++ b/excalidraw-app/app-language/language-detector.ts
@@ -0,0 +1,25 @@
+import LanguageDetector from "i18next-browser-languagedetector";
+import { defaultLang, languages } from "@excalidraw/excalidraw";
+
+export const languageDetector = new LanguageDetector();
+
+languageDetector.init({
+ languageUtils: {},
+});
+
+export const getPreferredLanguage = () => {
+ const detectedLanguages = languageDetector.detect();
+
+ const detectedLanguage = Array.isArray(detectedLanguages)
+ ? detectedLanguages[0]
+ : detectedLanguages;
+
+ const initialLanguage =
+ (detectedLanguage
+ ? // region code may not be defined if user uses generic preferred language
+ // (e.g. chinese vs instead of chinese-simplified)
+ languages.find((lang) => lang.code.startsWith(detectedLanguage))?.code
+ : null) || defaultLang.code;
+
+ return initialLanguage;
+};