docs: refine bilingual phrase pairing
This commit is contained in:
@@ -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 @@
|
||||
|
||||
- 翻译接口返回空文本:按普通帖子展示。
|
||||
- 原文或译文只有一段:仍形成一个配对组。
|
||||
- 句数不一致:尾部未配对句子继续显示。
|
||||
- 短语数量不一致:相邻短片段合并到数量一致后再配对,不产生空侧内容。
|
||||
- 付费内容锁定:沿用后端返回的可见内容范围,不在前端拼接隐藏内容。
|
||||
- 付费内容解锁:先展示完整原文,再异步获取译文并切换为逐句配对,不阻塞解锁成功提示。
|
||||
- 付费内容解锁:先展示完整原文,再异步获取译文并切换为短语配对,不阻塞解锁成功提示。
|
||||
|
||||
## 改动范围
|
||||
|
||||
|
||||
Reference in New Issue
Block a user