i18n config
This commit is contained in:
29
app.vue
29
app.vue
@@ -13,6 +13,11 @@ const setTheme = (theme) => {
|
|||||||
const feedback = () => {
|
const feedback = () => {
|
||||||
window.open('https://github.com/WongSaang/chatgpt-ui/issues', '_blank')
|
window.open('https://github.com/WongSaang/chatgpt-ui/issues', '_blank')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const { locale, locales } = useI18n()
|
||||||
|
const setLang = (lang) => {
|
||||||
|
locale.value = lang
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -22,6 +27,7 @@ const feedback = () => {
|
|||||||
<v-navigation-drawer
|
<v-navigation-drawer
|
||||||
v-model="drawer"
|
v-model="drawer"
|
||||||
>
|
>
|
||||||
|
{{ $t('hello') }}
|
||||||
<v-list>
|
<v-list>
|
||||||
<ModelDialog/>
|
<ModelDialog/>
|
||||||
</v-list>
|
</v-list>
|
||||||
@@ -54,6 +60,29 @@ const feedback = () => {
|
|||||||
</v-list>
|
</v-list>
|
||||||
</v-menu>
|
</v-menu>
|
||||||
|
|
||||||
|
<v-menu
|
||||||
|
>
|
||||||
|
<template v-slot:activator="{ props }">
|
||||||
|
<v-list-item
|
||||||
|
v-bind="props"
|
||||||
|
rounded="xl"
|
||||||
|
prepend-icon="language"
|
||||||
|
title="Language"
|
||||||
|
></v-list-item>
|
||||||
|
</template>
|
||||||
|
<v-list
|
||||||
|
bg-color="white"
|
||||||
|
>
|
||||||
|
<v-list-item
|
||||||
|
v-for="locale in locales"
|
||||||
|
:key="locale.code"
|
||||||
|
@click="setLang(locale.code)"
|
||||||
|
>
|
||||||
|
<v-list-item-title>{{ locale.name }}</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
</v-menu>
|
||||||
|
|
||||||
<v-list-item
|
<v-list-item
|
||||||
rounded="xl"
|
rounded="xl"
|
||||||
prepend-icon="help_outline"
|
prepend-icon="help_outline"
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"hello": "Hello"
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"hello": "你好"
|
||||||
|
}
|
||||||
@@ -27,32 +27,29 @@ export default defineNuxtConfig({
|
|||||||
'@nuxtjs/i18n'
|
'@nuxtjs/i18n'
|
||||||
],
|
],
|
||||||
i18n: {
|
i18n: {
|
||||||
// add `vueI18n` option to `@nuxtjs/i18n` module options
|
detectBrowserLanguage: {
|
||||||
vueI18n: {
|
useCookie: true,
|
||||||
legacy: false,
|
cookieKey: 'i18n_redirected',
|
||||||
locale: 'en',
|
redirectOn: 'root', // recommended
|
||||||
fallbackLocale: 'en',
|
alwaysRedirect: true
|
||||||
messages: {
|
|
||||||
en: {
|
|
||||||
welcome: 'Welcome'
|
|
||||||
},
|
|
||||||
fr: {
|
|
||||||
welcome: 'Bienvenue'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
locales: [
|
locales: [
|
||||||
{
|
{
|
||||||
code: 'en',
|
code: 'en',
|
||||||
file: 'en-US.js',
|
name: 'English',
|
||||||
|
file: 'en-US.json',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: 'cn',
|
code: 'cn',
|
||||||
file: 'zn-CN.js',
|
name: '简体中文',
|
||||||
|
file: 'zn-CN.json',
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
lazy: true,
|
lazy: true,
|
||||||
langDir: 'lang',
|
langDir: 'lang',
|
||||||
defaultLocale: 'en'
|
defaultLocale: 'en',
|
||||||
|
vueI18n: {
|
||||||
|
fallbackLocale: 'en',
|
||||||
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user