如何在Gatsby中实现西里尔文分类链接的转写?
可行,具体实现方案如下
核心思路
先把西里尔文分类转写为拉丁字母,再用_.kebabCase处理成符合URL规范的slug。借助成熟的转写库完成西里尔文到拉丁字母的转换,无需自行维护复杂的字符映射规则。
具体步骤
- 安装转写库
推荐使用transliteration库,它对多语言转写的支持很完善,处理西里尔文精准度高。执行安装命令:
npm install transliteration # 或使用yarn yarn add transliteration
- 修改gatsby-node.js中的代码
引入库后,先完成西里尔文到拉丁字母的转写,再做kebab-case格式化:
const _ = require('lodash'); const { transliterate } = require('transliteration'); exports.createPages = async ({ graphql, actions }) => { const { createPage } = actions; // 省略GraphQL查询及其他逻辑代码... // 处理分类slug的核心代码 const rawCategory = node.frontmatter.category; // 示例值:"Сайт с нуля" // 先转写为小写拉丁字母,再生成kebab-case格式的slug const latinizedCategory = transliterate(rawCategory, { lowercase: true }); const categorySlug = _.kebabCase(latinizedCategory); // 最终得到"sait-s-nulya" // 后续用categorySlug生成页面路由... };
其他可选方案
如果偏好更轻量的库,也可以使用cyrillic-to-latin,用法类似:
npm install cyrillic-to-latin
const cyrillicToLatin = require('cyrillic-to-latin'); // 转换示例 const latinizedCategory = cyrillicToLatin("Сайт с нуля").toLowerCase(); const categorySlug = _.kebabCase(latinizedCategory);
内容的提问来源于stack exchange,提问作者Лео
相关产品推荐
相关产品推荐

