docs: refine bilingual phrase pairing

This commit is contained in:
hajimi
2026-08-02 02:47:34 +08:00
parent 1c6ebf3e3c
commit e91e46cf4a
@@ -1,4 +1,4 @@
# 社区帖子双语逐句配对设计
# 社区帖子双语短语配对设计
## 背景
@@ -6,34 +6,37 @@
## 目标
- 有译文的帖子采用“一原文紧跟一译文”的纵向双语阅读方式。
- 参考 `uniapp/src/pages/news_detail/news_detail.vue`句子拆分与按序配对逻辑
- 有译文的帖子采用“一原文短语紧跟一译文短语”的纵向双语阅读方式。
- 参考 `uniapp/src/pages/news_detail/news_detail.vue`顺序配对逻辑,并把分割粒度细化到逗号、分号、句号、感叹号和问号
- 双语帖子不再把正文前 42 个字符自动截成标题,避免产生并不存在的标题。
- 原文或译文句数不一致时不丢失任何内容。
- 原文或译文短语数量不一致时,自动合并相邻短片段并且不丢失任何内容。
- 付费特朗普帖子解锁后若尚无译文,异步触发现有翻译接口,无需刷新页面。
- 无译文帖子、付费锁定、图片、标签、互动和评论逻辑保持不变。
## 方案比较
### 方案 A逐句上下交错(采用)
### 方案 A标点短语上下交错(采用)
每组先显示原文,再显示对应译文。移动端单列阅读自然,和文章详情现有交互一致,长文本对照成本最低
中英文分别按逗号、分号、句号、感叹号和问号切成短语,每组先显示原文,再显示对应译文。移动端单列阅读自然,长句也能快速对照
### 方案 B整段原文后显示整段译文
### 方案 B严格索引配对并允许空侧
实现简单,但就是当前问题,长内容需要频繁上下跳转
直接使用较大短语数量创建配对,数量不一致时会出现只有原文或只有译文的行,无法满足一对一阅读
### 方案 C左右双栏
### 方案 C后端返回结构化配对译文
桌面端对照直观,但手机宽度不足,英文和中文都会产生大量换行,不适合 uni-app 主要使用场景
翻译阶段直接返回原文/译文数组,语义对齐最准确,但需要修改翻译接口、缓存格式并重新生成历史译文,超出本次前端优化范围
## 数据与配对规则
1. 将原文和译文统一换行符并清理空行。
2. 先保留人工换行的顺序,再将每一行按中英文句末标点拆成句子
3. 使用两个拆分结果的最大长度创建配对数组
4. 同一索引的原文和译文组成一组;缺少一侧时只显示存在的内容
5. 译文为空时继续使用原来的标题、摘要展示,不进入双语模式
2. 先保留人工换行的顺序,再` , ; 。 . ! ?` 拆成带原标点的短语
3. 英文缩写、姓名首字母和小数中的句点不分割;数字内部的千分位逗号不分割
4. 两侧短语数量相同时直接按索引配对
5. 数量不一致时,在片段较多的一侧反复选择正文长度最短的片段,与相邻片段合并,直到两侧数量一致
6. 逗号或分号结尾的短片段优先和下一段合并;其它短片段优先并入上一段,首段只能向后合并。
7. 合并英文片段时自动补回单个空格;中文片段直接相连,所有原始标点保留。
8. 译文为空时继续使用原来的标题、摘要展示,不进入双语模式。
## 视觉结构
@@ -47,9 +50,9 @@
- 翻译接口返回空文本:按普通帖子展示。
- 原文或译文只有一段:仍形成一个配对组。
- 句数不一致:尾部未配对句子继续显示
- 短语数量不一致:相邻短片段合并到数量一致后再配对,不产生空侧内容
- 付费内容锁定:沿用后端返回的可见内容范围,不在前端拼接隐藏内容。
- 付费内容解锁:先展示完整原文,再异步获取译文并切换为逐句配对,不阻塞解锁成功提示。
- 付费内容解锁:先展示完整原文,再异步获取译文并切换为短语配对,不阻塞解锁成功提示。
## 改动范围