本文档描述了前端开发面试问题(Front-end Developer Interview Questions)仓库中的多语言支持系统。它解释了面试问题如何以多种语言提供、翻译文件的结构以及系统如何处理从右到左(RTL)语言。有关这些翻译如何在网站上呈现的信息,请参阅网站架构。
前端开发面试问题仓库支持34种不同的语言,使全球开发者都能访问这些面试问题。每种语言都有自己的问题翻译,存储在具有标准化结构的专用目录中。
翻译系统包括:
translations.json 中所有可用语言的中央注册表来源
来源
该仓库目前支持 translations.json 文件中定义的34种语言:
| 语言 | URL 路径 |
|---|---|
| 阿拉伯语 | arabic/ |
| 孟加拉语 | bengali/ |
| 保加利亚语 | bulgarian/ |
| 缅甸语 | burmese/ |
| 中文 | chinese/ |
| 繁体中文 | chinese-traditional/ |
| 克罗地亚语 | croatian/ |
| 捷克语 | czech/ |
| 丹麦语 | danish/ |
| 荷兰语 | dutch/ |
| 波斯语 | farsi/ |
| 法语 | french/ |
| 德语 | german/ |
| 希伯来语 | hebrew/ |
| 希腊语 | greek/ |
| 印地语 | hindi/ |
| 匈牙利语 | hungarian/ |
| 印度尼西亚语 | indonesian/ |
| 意大利语 | italian/ |
| 日语 | japanese/ |
| 韩语 | korean/ |
| 拉脱维亚语 | latvian/ |
| 波兰语 | polish/ |
| 葡萄牙语 | portuguese/ |
| 罗马尼亚语 | romanian/ |
| 俄语 | russian/ |
| 塞尔维亚语 | serbian/ |
| 斯洛伐克语 | slovakian/ |
| 斯洛文尼亚语 | slovenian/ |
| 西班牙语 | spanish/ |
| 瑞典语 | swedish/ |
| 土耳其语 | turkish/ |
| 乌克兰语 | ukrainian/ |
| 越南语 | vietnamese/ |
来源:src/_data/translations.json3-139
每种语言翻译都遵循标准化的文件结构。所有语言文件的一致性确保了高效的维护和更新。
来源
每个翻译文件都以 frontmatter 元数据开头,该数据定义了几个关键参数:
对于阿拉伯语等从右到左的语言,还包括一个额外的 rtl: true 参数。
来源
在 frontmatter 之后,每个翻译都遵循一致的模式:
来源
该仓库对阿拉伯语、希伯来语和波斯语等从右到左的语言实施了特殊处理。这确保了这些语言的正确文本方向和布局。
来源
RTL支持的关键组件是:
Frontmatter标记:每个RTL语言文件都在frontmatter中包含 rtl: true。
方向属性:内容被包裹在 <div dir="rtl"> 标签中,以确保正确的文本方向。
布局集成:当检测到RTL时,默认布局模板会向 body 添加一个"rtl"类。
CSS调整:特殊的CSS规则应用于RTL语言,包括字体族更改。
来源
下图展示了翻译文件的处理和渲染方式:
来源
所有受支持的语言都在 translations.json 文件中注册,该文件作为中央注册表。
来源:src/_data/translations.json2-141
每种语言翻译都有一个一致的URL结构:
/translations/{language}/index.html
例如
/translations/hindi/index.html/translations/arabic/index.html来源
每个翻译的语言代码都用于设置HTML lang 属性。
这确保了浏览器、屏幕阅读器和搜索引擎的正确语言识别。
来源:src/_includes/layouts/default.njk2
下表展示了相同内容在不同语言中的呈现方式:
| 语言 | 问题示例 |
|---|---|
| 印地语 | क्या आपने कल/इस हफ्ते कुछ सीखा? |
| 孟加拉语 | আপনি গতকাল বা এই সপ্তাহে কি শিখেছেন? |
| 阿拉伯语 | ماذا تعلمت بالأمس/هذا الأسبوع؟ |
来源
要向仓库添加新的语言翻译:
src/translations/ 下创建带有语言名称的新目录。translations.json。rtl: true 参数并将内容包裹在 <div dir="rtl"> 中。这种可扩展的架构使得该仓库能够不断扩展其语言支持,以触达全球开发者。
来源