我遇到的问题是:我正在为我的网站使用国际化,并且我有两种语言:ro-RO(默认语言)和 en-US。对于包含 '/admin' 的路由,我需要删除由于配置:策略:'前缀'而放置在那里的自动 ro。文档中有一些内容,但我查看了配置文件,该选项已被删除(更准确地说是 parsePages)。
这是我的 nuxt.config.ts :
import { en, ro } from "vuetify/locale";
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
modules: [
'@pinia/nuxt',
'pinia-plugin-persistedstate/nuxt',
],
$development: {
devServer: {
host: '0.0.0.0', // Listen on all network interfaces
port: 3000, // Optional: Specify a port, default is 3000
},
modules: [
'@pinia/nuxt',
'pinia-plugin-persistedstate/nuxt',
'@nuxtjs/i18n',
],
i18n: {
lazy: true,
langDir : "locales/",
strategy : "prefix",
baseUrl : 'http://localhost:3000/',
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'i18n_redirected',
redirectOn: 'root',
alwaysRedirect: true,
},
pages: {
'/admin/login':{
en : '/admin/login',
ro : '/admin/login',
}
},
locales : [
{
code: 'en',
name: "English(US)",
language : 'en-US',
file : "en-US.json"
},
{
code : 'ro',
language : 'ro-RO',
name : "Romania(ROU)",
file: "ro-RO.json",
}
],
defaultLocale: "ro",
},
routeRules: {
'/admin/**' : {ssr: false },
'user/profile' : {ssr: false},
'/user/profile/**' : {ssr: false}
},
build: {
transpile: ['vuetify'],
},
ssr: true,
compatibilityDate: '2024-04-03',
devtools: { enabled: true },
plugins: [
'~/plugins/SweetAlert.js',
'~/plugins/vuetify.js',
'~/plugins/emitter.js',
],
css: [
'bootstrap/dist/css/bootstrap.min.css',
'@mdi/font/css/materialdesignicons.css',
]
},
routeRules: {
'/admin/**' : {ssr: false},
'user/profile' : {ssr: false},
'/user/profile/**' : {ssr: false}
},
build: {
transpile: ['vuetify'],
},
ssr: true,
compatibilityDate: '2024-04-03',
devtools: { enabled: true },
plugins: [
'~/plugins/SweetAlert.js',
'~/plugins/vuetify.js',
'~/plugins/emitter.js',
],
css: [
'bootstrap/dist/css/bootstrap.min.css',
'@mdi/font/css/materialdesignicons.css',
]
})
如何做到这一点?
您可以使用页面选项来指定例外,就像您对 /admin/login 所做的那样。但是,由于 parsePages 选项被删除,因此您需要通过 nuxt.config.ts 配置文件中的extendRoutes 手动管理路由配置。
extendRoutes(routes, resolve) {
routes.push({
path: '/admin/:pathMatch(.*)*',
component: resolve(__dirname, 'pages/admin.vue'),
name: 'admin',
meta: { skipPrefix: true },
});
},