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
JavaScript
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 };