From 315dd06f3fb9bf504758e4ed3283740faa2c5790 Mon Sep 17 00:00:00 2001 From: Grzegorz Kucmierz Date: Mon, 9 Feb 2026 21:36:01 +0100 Subject: [PATCH] Load flags from SVG files with aliases and fallback; add SVG flags for missing languages (globe, ja, ko, id, fa, he, az, hy, am, ms, vi, th, tl, sw, uz, ta, te); build verified --- src/App.vue | 29 +++++++++++++++++++++++++++-- src/assets/flags/am.svg | 5 +++++ src/assets/flags/az.svg | 5 +++++ src/assets/flags/fa.svg | 5 +++++ src/assets/flags/globe.svg | 5 +++++ src/assets/flags/he.svg | 6 ++++++ src/assets/flags/hy.svg | 5 +++++ src/assets/flags/id.svg | 4 ++++ src/assets/flags/ja.svg | 4 ++++ src/assets/flags/ko.svg | 5 +++++ src/assets/flags/ms.svg | 4 ++++ src/assets/flags/sw.svg | 5 +++++ src/assets/flags/ta.svg | 6 ++++++ src/assets/flags/te.svg | 6 ++++++ src/assets/flags/th.svg | 7 +++++++ src/assets/flags/tl.svg | 5 +++++ src/assets/flags/tl_placeholder.svg | 4 ++++ src/assets/flags/uz.svg | 5 +++++ src/assets/flags/vi.svg | 4 ++++ 19 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/assets/flags/am.svg create mode 100644 src/assets/flags/az.svg create mode 100644 src/assets/flags/fa.svg create mode 100644 src/assets/flags/globe.svg create mode 100644 src/assets/flags/he.svg create mode 100644 src/assets/flags/hy.svg create mode 100644 src/assets/flags/id.svg create mode 100644 src/assets/flags/ja.svg create mode 100644 src/assets/flags/ko.svg create mode 100644 src/assets/flags/ms.svg create mode 100644 src/assets/flags/sw.svg create mode 100644 src/assets/flags/ta.svg create mode 100644 src/assets/flags/te.svg create mode 100644 src/assets/flags/th.svg create mode 100644 src/assets/flags/tl.svg create mode 100644 src/assets/flags/tl_placeholder.svg create mode 100644 src/assets/flags/uz.svg create mode 100644 src/assets/flags/vi.svg diff --git a/src/App.vue b/src/App.vue index 32d30d9..d63a038 100644 --- a/src/App.vue +++ b/src/App.vue @@ -26,6 +26,25 @@ const isLangOpen = ref(false); const langMenuRef = ref(null); let displayModeMedia = null; let prefersColorSchemeMedia = null; +const flagModules = import.meta.glob('./assets/flags/*.svg', { eager: true, as: 'url' }); +const flagMap = Object.fromEntries( + Object.entries(flagModules).map(([path, url]) => [path.split('/').pop().replace('.svg', ''), url]) +); +const flagAliases = { + 'pt-br': 'pt', + 'pt-pt': 'pt', + 'fr-ca': 'fr', + 'nl-be': 'nl', + 'es-es': 'es', + 'es-419': 'es', + 'zh-hans': 'zh', + 'zh-hant': 'zh' +}; +const getFlagUrl = (code) => { + const base = flagAliases[code] || code; + return flagMap[base] || flagMap['globe'] || null; +}; + const languageFlags = { en: '', zh: '', @@ -229,7 +248,10 @@ onUnmounted(() => { :aria-expanded="isLangOpen" @click="isLangOpen = !isLangOpen" > - + + + +
diff --git a/src/assets/flags/am.svg b/src/assets/flags/am.svg new file mode 100644 index 0000000..91517e1 --- /dev/null +++ b/src/assets/flags/am.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/az.svg b/src/assets/flags/az.svg new file mode 100644 index 0000000..572cba3 --- /dev/null +++ b/src/assets/flags/az.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/fa.svg b/src/assets/flags/fa.svg new file mode 100644 index 0000000..c5468b1 --- /dev/null +++ b/src/assets/flags/fa.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/globe.svg b/src/assets/flags/globe.svg new file mode 100644 index 0000000..0f0e1cd --- /dev/null +++ b/src/assets/flags/globe.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/he.svg b/src/assets/flags/he.svg new file mode 100644 index 0000000..2aa36e1 --- /dev/null +++ b/src/assets/flags/he.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/flags/hy.svg b/src/assets/flags/hy.svg new file mode 100644 index 0000000..b940a59 --- /dev/null +++ b/src/assets/flags/hy.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/id.svg b/src/assets/flags/id.svg new file mode 100644 index 0000000..35fba1c --- /dev/null +++ b/src/assets/flags/id.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/flags/ja.svg b/src/assets/flags/ja.svg new file mode 100644 index 0000000..efbbe56 --- /dev/null +++ b/src/assets/flags/ja.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/flags/ko.svg b/src/assets/flags/ko.svg new file mode 100644 index 0000000..e30eb59 --- /dev/null +++ b/src/assets/flags/ko.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/ms.svg b/src/assets/flags/ms.svg new file mode 100644 index 0000000..35fba1c --- /dev/null +++ b/src/assets/flags/ms.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/flags/sw.svg b/src/assets/flags/sw.svg new file mode 100644 index 0000000..6ee1a64 --- /dev/null +++ b/src/assets/flags/sw.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/ta.svg b/src/assets/flags/ta.svg new file mode 100644 index 0000000..710cec1 --- /dev/null +++ b/src/assets/flags/ta.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/flags/te.svg b/src/assets/flags/te.svg new file mode 100644 index 0000000..710cec1 --- /dev/null +++ b/src/assets/flags/te.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/flags/th.svg b/src/assets/flags/th.svg new file mode 100644 index 0000000..00a4dec --- /dev/null +++ b/src/assets/flags/th.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/flags/tl.svg b/src/assets/flags/tl.svg new file mode 100644 index 0000000..31125a1 --- /dev/null +++ b/src/assets/flags/tl.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/tl_placeholder.svg b/src/assets/flags/tl_placeholder.svg new file mode 100644 index 0000000..7c360aa --- /dev/null +++ b/src/assets/flags/tl_placeholder.svg @@ -0,0 +1,4 @@ + + + TL + diff --git a/src/assets/flags/uz.svg b/src/assets/flags/uz.svg new file mode 100644 index 0000000..2e15f20 --- /dev/null +++ b/src/assets/flags/uz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/flags/vi.svg b/src/assets/flags/vi.svg new file mode 100644 index 0000000..c7252f4 --- /dev/null +++ b/src/assets/flags/vi.svg @@ -0,0 +1,4 @@ + + + +