在 Drupal 7 中,分类术语(taxonomy term)支持多语言,但如果你遇到术语已经添加了日语翻译,但日语页面依然显示英文的情况,可能有以下几个原因:
✅ 1. 术语翻译模式未正确设置
Drupal 7 支持两种术语翻译方式:
- Localize(本地化):术语是共享的,但名称根据语言翻译。
- Translate(翻译):每个术语是独立的翻译版本,有不同的 term ID。
请检查你的分类词汇(Vocabulary)设置:
- 进入
admin/structure/taxonomy
。 - 点击对应分类法后面的"编辑"。
- 查看"多语言选项"(Multilingual options),确认你选的是
Localize
模式(本地化)。
如果是 Translate
模式,必须在每种语言中创建术语的翻译版本并正确关联。
✅ 2. 没有为当前语言设置正确的翻译
虽然你可能在术语编辑页中添加了日语名称,但要确保:
- 编辑术语,在上方的语言切换中选择"日本語"。
- 填写对应语言的术语名称和描述。
- 保存。
你可以通过路径类似 admin/structure/taxonomy/[vocab]/edit/term/[tid]/translate
进入翻译页面。
✅ 3. 语言检测与内容语言设置问题
Drupal 7 需要你启用并配置好语言检测:
- 前往
admin/config/regional/language/detection
。 - 确保语言检测机制(如 URL、浏览器设置、会话)正确启用。
- 页面实际语言是否是"日语"?可检查页面源代码或调试变量。
✅ 4. 主题或视图未使用正确的语言接口函数
如果你用的是 taxonomy_term_load()
加载术语并手动打印 name
,那么 Drupal 不会自动翻译。你应使用:
php
$t = taxonomy_term_load($tid);
$name = check_plain(t($t->name));
或启用 Entity Translation
模块并用 entity_label()
获取翻译名。
✅ 5. Views 视图未启用语言过滤
如果术语是通过 Views 加载的,还要在 Views 设置中:
- 添加"语言"过滤器条件。
- 确保"翻译"选项启用,或者"显示翻译内容"。
✅ 6. 缓存未清除
修改术语翻译后,Drupal 缓存可能仍然显示旧值。清空缓存:
- 管理后台 > 配置 > 性能 > 清空所有缓存。
- 或用 Drush:
drush cc all