From 52fefbac233f49cba59ccf7df31484724fdcb368 Mon Sep 17 00:00:00 2001 From: Bobbie Goede Date: Mon, 13 Nov 2023 12:07:58 +0100 Subject: [PATCH] test: confirm runtime config can be used in vue i18n config file --- specs/basic_usage.spec.ts | 6 ++ .../basic_usage/config/i18n.config.ts | 65 ++++++++++--------- specs/fixtures/basic_usage/nuxt.config.ts | 5 ++ specs/fixtures/basic_usage/pages/index.vue | 3 + 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/specs/basic_usage.spec.ts b/specs/basic_usage.spec.ts index 70c616dbb..f7b9b1c45 100644 --- a/specs/basic_usage.spec.ts +++ b/specs/basic_usage.spec.ts @@ -74,6 +74,12 @@ test('register module hook', async () => { expect(await getText(page, '#register-module')).toEqual('This is a merged module layer locale key in French') }) +test('vueI18n config file can access runtimeConfig', async () => { + const { page } = await renderPage('/') + + expect(await getText(page, '#runtime-config')).toEqual('Hello from runtime config!') +}) + test('layer provides locale `nl` and translation for key `hello`', async () => { const { page } = await renderPage('/layer-page') diff --git a/specs/fixtures/basic_usage/config/i18n.config.ts b/specs/fixtures/basic_usage/config/i18n.config.ts index d097b412d..57a2895ed 100644 --- a/specs/fixtures/basic_usage/config/i18n.config.ts +++ b/specs/fixtures/basic_usage/config/i18n.config.ts @@ -1,33 +1,38 @@ -export default defineI18nConfig(() => ({ - legacy: false, - locale: 'en', - messages: { - fr: { - welcome: 'Bienvenue', - home: 'Accueil', - profile: 'Profil', - aboutSite: 'À propos de ce site', - snakeCaseText: "@.snakeCase:{'aboutSite'}", - pascalCaseText: "@.pascalCase:{'aboutSite'}", - hello: 'Bonjour le monde!', - modifier: "@.snakeCase:{'hello'}" +export default defineI18nConfig(() => { + const config = useRuntimeConfig() + + return { + legacy: false, + locale: 'en', + messages: { + fr: { + welcome: 'Bienvenue', + home: 'Accueil', + profile: 'Profil', + aboutSite: 'À propos de ce site', + snakeCaseText: "@.snakeCase:{'aboutSite'}", + pascalCaseText: "@.pascalCase:{'aboutSite'}", + hello: 'Bonjour le monde!', + modifier: "@.snakeCase:{'hello'}" + }, + en: { + welcome: 'Welcome', + home: 'Homepage', + profile: 'Profile', + hello: 'Hello world!', + modifier: "@.snakeCase:{'hello'}", + fallbackMessage: 'This is the fallback message!', + runtimeKey: config.public.runtimeValue + }, + nl: { + aboutSite: 'Over deze site', + snakeCaseText: "@.snakeCase:{'aboutSite'}", + pascalCaseText: "@.pascalCase:{'aboutSite'}" + } }, - en: { - welcome: 'Welcome', - home: 'Homepage', - profile: 'Profile', - hello: 'Hello world!', - modifier: "@.snakeCase:{'hello'}", - fallbackMessage: 'This is the fallback message!' - }, - nl: { - aboutSite: 'Over deze site', - snakeCaseText: "@.snakeCase:{'aboutSite'}", - pascalCaseText: "@.pascalCase:{'aboutSite'}" + modifiers: { + // @ts-ignore + snakeCase: (str: string) => str.split(' ').join('-') } - }, - modifiers: { - // @ts-ignore - snakeCase: (str: string) => str.split(' ').join('-') } -})) +}) diff --git a/specs/fixtures/basic_usage/nuxt.config.ts b/specs/fixtures/basic_usage/nuxt.config.ts index 90be20917..ff0ff13e8 100644 --- a/specs/fixtures/basic_usage/nuxt.config.ts +++ b/specs/fixtures/basic_usage/nuxt.config.ts @@ -1,6 +1,11 @@ // https://nuxt.com/docs/guide/directory-structure/nuxt.config export default defineNuxtConfig({ modules: ['./layer-module', '@nuxtjs/i18n'], + runtimeConfig: { + public: { + runtimeValue: 'Hello from runtime config!' + } + }, i18n: { vueI18n: './config/i18n.config.ts' diff --git a/specs/fixtures/basic_usage/pages/index.vue b/specs/fixtures/basic_usage/pages/index.vue index 8677add5b..de1b2c72b 100644 --- a/specs/fixtures/basic_usage/pages/index.vue +++ b/specs/fixtures/basic_usage/pages/index.vue @@ -172,5 +172,8 @@ useHead({
{{ $t('fallbackMessage') }}
+
+
{{ $t('runtimeKey') }}
+