mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-03 19:47:46 +08:00
228 lines
5.6 KiB
Markdown
228 lines
5.6 KiB
Markdown
# 双语文档语言切换指南
|
||
|
||
## GitHub Pages 部署结构
|
||
|
||
当推送到 GitHub 后,文档将自动构建并部署到以下结构:
|
||
|
||
```
|
||
https://orbbec.github.io/OrbbecSDK_ROS2/
|
||
├── index.html # 英文版首页(默认)
|
||
├── _static/ # 英文版静态资源
|
||
├── 1_overview/ # 英文版内容
|
||
├── 2_installation/
|
||
├── ...
|
||
└── zh/ # 中文版
|
||
├── index.html # 中文版首页
|
||
├── _static/ # 中文版静态资源
|
||
├── 1_overview/ # 中文版内容
|
||
└── ...
|
||
```
|
||
|
||
## 访问地址
|
||
|
||
- **英文版(默认)**: `https://orbbec.github.io/OrbbecSDK_ROS2/`
|
||
- **中文版**: `https://orbbec.github.io/OrbbecSDK_ROS2/zh/`
|
||
|
||
## 如何添加语言切换链接
|
||
|
||
### 方法 1:在自定义 CSS 中添加语言切换按钮(推荐)
|
||
|
||
编辑 `docs/en/source/_static/custom.css` 和 `docs/zh/source/_static/custom.css`:
|
||
|
||
```css
|
||
/* 在页面右上角添加语言切换链接 */
|
||
.wy-nav-top::after {
|
||
content: "中文";
|
||
position: absolute;
|
||
right: 60px;
|
||
top: 0;
|
||
height: 45px;
|
||
line-height: 45px;
|
||
padding: 0 15px;
|
||
font-size: 14px;
|
||
color: #fff;
|
||
cursor: pointer;
|
||
}
|
||
|
||
/* 为链接添加点击事件 */
|
||
.wy-nav-top {
|
||
position: relative;
|
||
}
|
||
```
|
||
|
||
### 方法 2:在自定义 JavaScript 中添加(更灵活)
|
||
|
||
创建或编辑 `docs/en/source/_static/language-switch.js`:
|
||
|
||
```javascript
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
// 创建语言切换链接
|
||
var langSwitch = document.createElement('a');
|
||
langSwitch.href = '/OrbbecSDK_ROS2/zh/';
|
||
langSwitch.textContent = '中文';
|
||
langSwitch.style.cssText = 'position: fixed; top: 10px; right: 60px; z-index: 1000; color: #fff; background: #2980b9; padding: 5px 15px; border-radius: 3px; text-decoration: none;';
|
||
|
||
document.body.appendChild(langSwitch);
|
||
});
|
||
```
|
||
|
||
然后在 `docs/en/conf.py` 中添加:
|
||
|
||
```python
|
||
html_js_files = [
|
||
'language-switch.js',
|
||
]
|
||
```
|
||
|
||
对应的中文版 `docs/zh/source/_static/language-switch.js`:
|
||
|
||
```javascript
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
var langSwitch = document.createElement('a');
|
||
langSwitch.href = '/OrbbecSDK_ROS2/';
|
||
langSwitch.textContent = 'English';
|
||
langSwitch.style.cssText = 'position: fixed; top: 10px; right: 60px; z-index: 1000; color: #fff; background: #2980b9; padding: 5px 15px; border-radius: 3px; text-decoration: none;';
|
||
|
||
document.body.appendChild(langSwitch);
|
||
});
|
||
```
|
||
|
||
### 方法 3:修改 Sphinx 主题模板(最专业)
|
||
|
||
1. 创建自定义模板覆盖 `docs/en/source/_templates/layout.html`:
|
||
|
||
```html
|
||
{% extends "!layout.html" %}
|
||
|
||
{% block extrahead %}
|
||
{{ super() }}
|
||
<style>
|
||
.language-switch {
|
||
position: fixed;
|
||
top: 10px;
|
||
right: 60px;
|
||
z-index: 1000;
|
||
}
|
||
.language-switch a {
|
||
color: #fff;
|
||
background: #2980b9;
|
||
padding: 5px 15px;
|
||
border-radius: 3px;
|
||
text-decoration: none;
|
||
font-size: 14px;
|
||
}
|
||
.language-switch a:hover {
|
||
background: #3498db;
|
||
}
|
||
</style>
|
||
{% endblock %}
|
||
|
||
{% block menu %}
|
||
{{ super() }}
|
||
<div class="language-switch">
|
||
<a href="/OrbbecSDK_ROS2/zh/">中文</a>
|
||
</div>
|
||
{% endblock %}
|
||
```
|
||
|
||
2. 对应的中文版 `docs/zh/source/_templates/layout.html`:
|
||
|
||
```html
|
||
{% extends "!layout.html" %}
|
||
|
||
{% block extrahead %}
|
||
{{ super() }}
|
||
<style>
|
||
.language-switch {
|
||
position: fixed;
|
||
top: 10px;
|
||
right: 60px;
|
||
z-index: 1000;
|
||
}
|
||
.language-switch a {
|
||
color: #fff;
|
||
background: #2980b9;
|
||
padding: 5px 15px;
|
||
border-radius: 3px;
|
||
text-decoration: none;
|
||
font-size: 14px;
|
||
}
|
||
.language-switch a:hover {
|
||
background: #3498db;
|
||
}
|
||
</style>
|
||
{% endblock %}
|
||
|
||
{% block menu %}
|
||
{{ super() }}
|
||
<div class="language-switch">
|
||
<a href="/OrbbecSDK_ROS2/">English</a>
|
||
</div>
|
||
{% endblock %}
|
||
```
|
||
|
||
## 在 conf.py 中配置主题选项(可选)
|
||
|
||
你也可以在 `conf.py` 中配置 RTD 主题的自定义选项:
|
||
|
||
```python
|
||
html_theme_options = {
|
||
# ...existing options...
|
||
'display_version': True,
|
||
'prev_next_buttons_location': 'bottom',
|
||
'style_external_links': False,
|
||
# 可以添加自定义 HTML
|
||
# 'canonical_url': '',
|
||
}
|
||
```
|
||
|
||
## 本地测试
|
||
|
||
在推送到 GitHub 之前,建议先本地测试:
|
||
|
||
```bash
|
||
# 构建英文版
|
||
cd docs/en
|
||
make html
|
||
# 在浏览器中打开:docs/en/_build/html/index.html
|
||
|
||
# 构建中文版
|
||
cd docs/zh
|
||
make html
|
||
# 在浏览器中打开:docs/zh/_build/html/index.html
|
||
```
|
||
|
||
## GitHub Actions 工作流程
|
||
|
||
当你推送代码到 `Document` 分支时,GitHub Actions 会自动:
|
||
|
||
1. ✅ 安装 Python 和依赖
|
||
2. ✅ 构建英文版文档到 `docs/en/_build/html/`
|
||
3. ✅ 构建中文版文档到 `docs/zh/_build/html/`
|
||
4. ✅ 将英文版作为根目录
|
||
5. ✅ 将中文版复制到 `/zh/` 子目录
|
||
6. ✅ 部署到 `gh-pages` 分支
|
||
|
||
## 推荐的实现方式
|
||
|
||
我推荐使用 **方法 2(JavaScript)** 或 **方法 3(模板)**,因为:
|
||
|
||
- ✅ 更灵活,易于维护
|
||
- ✅ 可以动态调整样式
|
||
- ✅ 不依赖于特定主题的 CSS 类名
|
||
- ✅ 可以添加更多交互功能(如自动检测浏览器语言)
|
||
|
||
## 注意事项
|
||
|
||
1. **链接路径**:注意区分相对路径和绝对路径
|
||
- 英文版链接到中文版:`/OrbbecSDK_ROS2/zh/`
|
||
- 中文版链接到英文版:`/OrbbecSDK_ROS2/`
|
||
|
||
2. **测试链接**:在部署后测试所有语言切换链接是否正常工作
|
||
|
||
3. **SEO 优化**:可以在 HTML head 中添加 `hreflang` 标签:
|
||
```html
|
||
<link rel="alternate" hreflang="en" href="/OrbbecSDK_ROS2/" />
|
||
<link rel="alternate" hreflang="zh-CN" href="/OrbbecSDK_ROS2/zh/" />
|
||
```
|