From 137c2cb26d44bd05bda7e15b03c183030d99f082 Mon Sep 17 00:00:00 2001 From: corsacca Date: Wed, 27 May 2026 11:55:23 +0100 Subject: [PATCH] enable /hi and /de pages --- app/components/public/LanguageSwitcher.vue | 2 +- config/languages.ts | 5 +++-- nuxt.config.ts | 10 +++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/components/public/LanguageSwitcher.vue b/app/components/public/LanguageSwitcher.vue index 16507db1..cdffdf9d 100644 --- a/app/components/public/LanguageSwitcher.vue +++ b/app/components/public/LanguageSwitcher.vue @@ -11,7 +11,7 @@ const switchLocalePath = useSwitchLocalePath() const route = useRoute() const current = computed(() => LANGUAGES.find(l => l.code === locale.value) ?? LANGUAGES[0]) -const others = computed(() => ENABLED_LANGUAGES.filter(l => l.code !== locale.value)) +const others = computed(() => ENABLED_LANGUAGES.filter(l => l.code !== locale.value && !l.hideFromSwitcher)) const isOpen = ref(false) const isPinned = ref(false) diff --git a/config/languages.ts b/config/languages.ts index 5a8829ff..0235d5a0 100644 --- a/config/languages.ts +++ b/config/languages.ts @@ -13,6 +13,7 @@ export interface Language { bibleLabel?: string // Display label for the Bible translation (defaults to bibleId) glossaryId?: string // DeepL glossary ID for this language pair (EN → target) enabled?: boolean // Whether the language is active in the UI (default: true) + hideFromSwitcher?: boolean // If true, the language is routable (/de, /hi, …) but omitted from the public LanguageSwitcher dropdown latinHeadings?: boolean // Headings render in the Latin display font (Bebas Neue); set false for non-Latin scripts (default: true) } @@ -24,12 +25,12 @@ export const LANGUAGES: Language[] = [ { code: 'es', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸', deeplTarget: 'ES', deeplSource: 'ES', bibleId: 'NVI', glossaryId: 'b867e526-2eb8-426f-a178-b8a6b9d4d6ce' }, //RV1960 { code: 'fr', name: 'French', nativeName: 'Français', flag: '🇫🇷', deeplTarget: 'FR', deeplSource: 'FR', bibleId: 'FRLSG', bibleLabel: 'LSG', glossaryId: 'b6dd3213-1ddb-42ab-a2dc-91ff3a772fa3' }, //maybe BDS { code: 'pt', name: 'Portuguese', nativeName: 'Português', flag: '🇵🇹', deeplTarget: 'PT-BR', deeplSource: 'PT', bibleId: 'NAA', glossaryId: 'bbe0697f-429a-45f7-9c30-576c7f21c78d' }, - { code: 'de', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪', deeplTarget: 'DE', deeplSource: 'DE', bibleId: 'S00', bibleLabel: 'SCH2000', glossaryId: '87ad31eb-1a58-4f91-b80e-943b3721065d', enabled: false }, + { code: 'de', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪', deeplTarget: 'DE', deeplSource: 'DE', bibleId: 'S00', bibleLabel: 'SCH2000', glossaryId: '87ad31eb-1a58-4f91-b80e-943b3721065d', hideFromSwitcher: true }, { code: 'it', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹', deeplTarget: 'IT', deeplSource: 'IT', bibleId: 'NR06', glossaryId: '98dca739-468a-4c29-a0ce-ba89f60da00b', enabled: false }, { code: 'zh', name: 'Chinese', nativeName: '中文', flag: '🇨🇳', deeplTarget: 'ZH-HANS', deeplSource: 'ZH', bibleId: 'CUNPS', glossaryId: '532adee9-5117-4a9e-a6cb-a8c4b670232d', enabled: false, latinHeadings: false }, { code: 'ar', name: 'Arabic', nativeName: 'العربية', flag: '🇸🇦', dir: 'rtl', deeplTarget: 'AR', deeplSource: 'AR', bibleId: 'SVD', glossaryId: '294b6001-2831-45d4-bab5-3fd1af92dc7a', latinHeadings: false }, // NAV (New Arabic Version) would be better but not on Bolls { code: 'ru', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺', deeplTarget: 'RU', deeplSource: 'RU', bibleId: 'SYNOD', glossaryId: '7363b815-3cd1-4e1a-ae8b-d6695e6dbc4a', latinHeadings: false }, // NRT (New Russian Translation) is a modern alternative - { code: 'hi', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳', deeplTarget: 'HI', deeplSource: 'HI', bibleId: 'HIOV', bibleLabel: 'OV', enabled: false, latinHeadings: false }, + { code: 'hi', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳', deeplTarget: 'HI', deeplSource: 'HI', bibleId: 'HIOV', bibleLabel: 'OV', hideFromSwitcher: true, latinHeadings: false }, { code: 'ro', name: 'Romanian', nativeName: 'Română', flag: '🇷🇴', deeplTarget: 'RO', deeplSource: 'RO', bibleId: 'NTR', glossaryId: 'e50d3fed-6d0e-4f2c-a3ac-96112829055e', enabled: false }, ] diff --git a/nuxt.config.ts b/nuxt.config.ts index c89663cd..484134ea 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -186,11 +186,11 @@ export default defineNuxtConfig({ // list below are prerendered — they don't hit the DB. crawlLinks: false, routes: [ - '/', '/es', '/fr', '/pt', '/ar', '/ru', - '/adopt', '/es/adopt', '/fr/adopt', '/pt/adopt', '/ar/adopt', '/ru/adopt', - '/pray', '/es/pray', '/fr/pray', '/pt/pray', '/ar/pray', '/ru/pray', - '/research', '/es/research', '/fr/research', '/pt/research', '/ar/research', '/ru/research', - '/contact-us', '/es/contact-us', '/fr/contact-us', '/pt/contact-us', '/ar/contact-us', '/ru/contact-us' + '/', '/es', '/fr', '/pt', '/ar', '/ru', '/de', '/hi', + '/adopt', '/es/adopt', '/fr/adopt', '/pt/adopt', '/ar/adopt', '/ru/adopt', '/de/adopt', '/hi/adopt', + '/pray', '/es/pray', '/fr/pray', '/pt/pray', '/ar/pray', '/ru/pray', '/de/pray', '/hi/pray', + '/research', '/es/research', '/fr/research', '/pt/research', '/ar/research', '/ru/research', '/de/research', '/hi/research', + '/contact-us', '/es/contact-us', '/fr/contact-us', '/pt/contact-us', '/ar/contact-us', '/ru/contact-us', '/de/contact-us', '/hi/contact-us' ] } },