翻译系统使《前端开发者面试问题》代码库可用于30多种不同的语言,方便全球开发者访问。该系统通过使用Eleventy静态站点生成器的文件化方法,处理翻译内容的组织、存储和展示。
翻译系统遵循一种简单的架构,即原始英文问题被翻译并存储在特定语言的文件中,然后在网站生成过程中进行处理以创建多语言网站。
来源: src/_data/translations.json config/eleventy.config.js src/translations/hindi/README.md src/translations/russian/README.md src/translations/bengali/README.md
每个翻译都以一个包含前置元数据和翻译内容的Markdown文件形式存在。文件按照一致的模式组织在特定语言的目录中。
来源: src/translations/hindi/README.md src/translations/bengali/README.md src/translations/russian/README.md src/translations/chinese-traditional/README.md
每个翻译文件都包含YAML前置元数据,后跟翻译内容
来源: src/translations/hindi/README.md1-40 src/translations/bengali/README.md1-50 src/translations/russian/README.md1-60
每个翻译文件都包含带有关键元数据的前置元数据
前置元数据字段的用途如下:
title: 显示在页面顶部(以翻译后的语言)layout: 指定用于渲染的模板permalink: 定义翻译页面的URL路径lang: 用于HTML lang 属性的ISO语言代码来源: src/translations/hindi/README.md1-7 src/translations/bengali/README.md1-6 src/translations/russian/README.md1-6
所有可用翻译都注册在 src/_data/translations.json 文件中
此注册表:
来源: src/_data/translations.json1-141
翻译系统利用Eleventy处理Markdown文件并生成多语言站点
来源: config/eleventy.config.js1-92
构建过程的关键组件
Eleventy配置:EleventyI18nPlugin 在 eleventy.config.js 中配置,默认语言为英语。
模板处理:每个翻译文件都使用指定的布局模板(通常是 layouts/page.njk)进行处理。
语言属性:前置元数据中的 lang 属性被应用于HTML,确保浏览器和屏幕阅读器能够正确识别语言。
来源: config/eleventy.config.js20-23
该系统目前支持30多种语言,包括:
| 语系 | 支持的语言 |
|---|---|
| 欧洲 | 英语、法语、德语、西班牙语、意大利语、荷兰语、葡萄牙语、罗马尼亚语、捷克语、丹麦语、瑞典语 |
| 东亚语言 | 中文、日语、韩语、越南语 |
| 南亚 | 印地语、孟加拉语 |
| 中东 | 阿拉伯语、波斯语、希伯来语 |
| 斯拉夫语言 | 俄语、乌克兰语、波兰语、保加利亚语、克罗地亚语、塞尔维亚语 |
| 其他 | 土耳其语、匈牙利语、希腊语、拉脱维亚语、印度尼西亚语 |
来源: src/_data/translations.json3-139
该系统支持从右到左 (RTL) 语言,如阿拉伯语和希伯来语。当页面使用与RTL语言相关的语言代码时,布局模板会应用适当的文本和布局方向设置。
来源: src/translations/romanian/README.md1-325 src/translations/ukrainian/README.md1-244 src/translations/chinese-traditional/README.md1-274
添加新语言翻译的过程包括:
src/translations/ 下创建新目录,并以语言名称命名README.md 文件translations.json来源: src/translations/hindi/README.md src/_data/translations.json
此图展示了翻译文件如何被处理并最终显示给用户
来源: src/translations/hindi/README.md src/_data/translations.json config/eleventy.config.js
翻译系统通过以下关键特性实现多语言支持:
这种方法为维护大量翻译提供了一个简单而有效的解决方案,无需复杂的 инфраструк结构或数据库。
来源: src/translations/hindi/README.md src/translations/bengali/README.md src/translations/russian/README.md src/_data/translations.json config/eleventy.config.js