UNPKG

nuxt-google-translate

Version:

A simple Nuxt module that integrates the Google Translate widget into your Nuxt.js application, allowing seamless multilingual support without requiring an API key.

56 lines (53 loc) 1.95 kB
import { defineNuxtModule, createResolver, addComponent, addImports, addPlugin } from '@nuxt/kit'; import { defu } from 'defu'; const module = defineNuxtModule({ meta: { name: "nuxt-google-translate", configKey: "googleTranslate", compatibility: { nuxt: ">=3.0.0" } }, // Default configuration options defaults: { defaultLanguage: "en", supportedLanguages: ["en"] }, setup(options, nuxt) { const { resolve } = createResolver(import.meta.url || __filename); options.supportedLanguages = Array.from(new Set(options.supportedLanguages)); if (!Array.isArray(options.supportedLanguages) || !options.supportedLanguages.includes(options.defaultLanguage)) { throw new Error( `[nuxt-google-translate] Unsupported defaultLanguage: '${options.defaultLanguage}'. Supported languages are: ${options.supportedLanguages?.join(", ")}` ); } addComponent({ name: "GoogleTranslate", filePath: resolve("./runtime/components/GoogleTranslate.vue") }); addComponent({ name: "LanguageSelector", filePath: resolve("./runtime/components/LanguageSelector.vue") }); addImports({ name: "useGoogleTranslate", as: "useGoogleTranslate", from: resolve("./runtime/composables/useGoogleTranslate") }); addPlugin({ src: resolve("./runtime/plugins/translate"), mode: "client" // or 'server' if needed }); nuxt.options.runtimeConfig.public.googleTranslate = defu(nuxt.options.runtimeConfig.public.googleTranslate, { defaultLanguage: options.defaultLanguage, supportedLanguages: options.supportedLanguages }); console.info( `\x1B[32m[nuxt-google-translate] Successfully initialized!\x1B[0m \x1B[36m- Default Language: \x1B[33m${options.defaultLanguage}\x1B[0m \x1B[36m- Supported Languages: \x1B[33m${options.supportedLanguages?.length}\x1B[0m` ); } }); export { module as default };