You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关闭Nuxt Content中的文件夹音译功能?

解决Nuxt 3 Content模块文件夹名称被音译的问题

使用Nuxt 3 Content模块获取/content/目录结构时,非拉丁字符的文件夹名会被自动音译为拉丁字符(比如俄语文件夹名"Базовая грамматика"被转为"Bazovaya Grammatika"),而Markdown文件的名称则保持原样。以下是几种可行的解决方法:

方法一:手动为文件夹添加配置文件

这是最直接且官方推荐的方式,给每个需要保留原名称的文件夹创建_dir.yml文件,在文件中指定原始名称作为title:

title: "Базовая грамматика"

之后通过fetchContentNavigation获取导航数据时,该文件夹的title就会使用你配置的原始名称,而非音译结果。

方法二:自定义导航生成逻辑(批量处理场景)

如果有大量文件夹需要处理,不想逐个配置_dir.yml,可以通过读取本地文件系统的方式获取原始文件夹名,自定义生成导航结构。

例如创建server端接口server/api/navigation.ts:

import { readdirSync, statSync } from 'fs'
import { join } from 'path'

export default defineEventHandler(async () => {
  const lessonsRoot = join(process.cwd(), 'content', 'lessons')
  const navigation = []

  const traverse = (currentDir, basePath = '/lessons/') => {
    const entries = readdirSync(currentDir)
    entries.forEach(entry => {
      const fullPath = join(currentDir, entry)
      const stats = statSync(fullPath)
      if (stats.isDirectory()) {
        // 生成和Content模块一致的路径格式,同时保留原始文件夹名作为title
        const slugifiedName = entry.toLowerCase().replace(/\s+/g, '-')
        const navItem = {
          title: entry,
          _path: `${basePath}${slugifiedName}`,
          children: []
        }
        navigation.push(navItem)
        traverse(fullPath, `${basePath}${slugifiedName}/`)
      }
    })
  }

  traverse(lessonsRoot)
  return navigation
})

然后在页面中调用该接口获取导航:

const { data: navigation } = await useAsyncData('home', () => $fetch('/api/navigation'))

方法三:通过自定义Schema修改默认行为

可以在content/schema.yml中定义文件夹的默认title规则,让Content模块直接使用原始文件夹名作为title:

dir:
  fields:
    title:
      type: string
      default: (dir) => dir.name

注意:该方法需要对应Nuxt Content v2及以上版本,部分旧版本可能不支持这种schema写法。

补充说明

之前尝试的transpile: false配置无效,是因为该配置用于控制Nuxt的代码转译逻辑,和Content模块处理文件夹名称的音译行为完全无关,因此无法解决当前问题。

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:45:05