You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liferay 6.2翻译进度获取方案咨询

嘿,刚好我之前帮人处理过类似的需求,给你几个实用的方案,从代码实现到快速查询再到内置工具都覆盖到了:

方案1:通过Liferay Translation API实现自定义统计

如果你是开发者,想把进度统计集成到现有Portlet或者后台工具里,可以用Liferay的内置API来做细粒度的统计。比如针对Web Content(假设你的内容是用这个管理的),可以这样实现:

// 首先获取目标站点下的所有英文内容条目
List<JournalArticle> enArticles = JournalArticleLocalServiceUtil.getArticles(
    yourGroupId, // 替换成你的站点ID
    0,
    Integer.MAX_VALUE,
    null
);

// 初始化统计Map,源语言英文默认100%完成
Map<String, Integer> translationProgress = new HashMap<>();
translationProgress.put("en_US", 100);
int totalEnArticles = enArticles.size();

// 统计西班牙语的翻译完成数
String targetLang = "es_ES";
int translatedCount = 0;

for (JournalArticle enArticle : enArticles) {
    // 检查该英文条目是否有对应的西班牙语翻译
    JournalArticle translatedArticle = JournalArticleLocalServiceUtil.fetchArticle(
        enArticle.getGroupId(),
        enArticle.getArticleId(),
        enArticle.getVersion(),
        targetLang
    );
    
    // 如果需要字段级统计,可以扩展检查标题、内容等字段是否都已翻译
    // boolean isFullyTranslated = checkAllFieldsTranslated(translatedArticle);
    if (translatedArticle != null) {
        translatedCount++;
    }
}

// 计算百分比
int esPercentage = (translatedCount * 100) / totalEnArticles;
translationProgress.put(targetLang, esPercentage);

// 输出汇总结果
for (Map.Entry<String, Integer> entry : translationProgress.entrySet()) {
    System.out.println("内容:" + entry.getKey() + ":" + entry.getValue() + "%已翻译");
}

这个方法可以灵活扩展到多语言、多内容类型(比如Blogs、Documents),甚至支持字段级的精细统计。

方案2:直接查询数据库生成快速报表

如果不想写代码,或者需要快速导出统计数据,可以直接查询Liferay数据库。以7.x版本为例,Web Content的翻译数据存在JournalArticle表中,用下面的SQL就能得到汇总:

-- 替换[你的站点ID]为实际的groupId
SELECT 
    'en_US' AS language,
    COUNT(*) AS total_items,
    COUNT(*) AS translated_items,
    100 AS completion_rate
FROM JournalArticle
WHERE groupId = [你的站点ID] AND languageId = 'en_US'

UNION

SELECT 
    'es_ES' AS language,
    total.total_items,
    COUNT(j2.id) AS translated_items,
    ROUND((COUNT(j2.id)*100)/total.total_items) AS completion_rate
FROM (
    SELECT COUNT(*) AS total_items 
    FROM JournalArticle 
    WHERE groupId = [你的站点ID] AND languageId = 'en_US'
) AS total
LEFT JOIN JournalArticle j2 
    ON j2.groupId = [你的站点ID] 
    AND j2.languageId = 'es_ES'
GROUP BY total.total_items;

执行后就能直接拿到英文和西班牙语的翻译进度,适合运维人员或者快速生成报表的场景。旧版本Liferay可能需要查询JournalArticleLocalization表,注意调整表名。

方案3:利用Liferay 7.4+内置的翻译仪表盘

如果你的Liferay版本是7.4及以上,那直接用官方内置功能就好:

  1. 进入站点设置 -> 内容 & 数据 -> 翻译
  2. 在「翻译进度」板块就能看到各语言的完成率,包括条目级和字段级的统计
  3. 还能直接在这里发起翻译任务、查看未翻译内容,完全满足基础需求
方案4:自定义可视化进度插件(进阶)

如果需要更定制化的展示(比如前台Portlet显示进度条、定时自动更新),可以开发一个简单插件:

  • 用Liferay的Scheduler API定时执行统计任务(比如每天凌晨跑一次)
  • 把统计结果存到Expando表或者自定义数据库表中
  • 前台用Clay UI组件(Liferay官方前端库)渲染进度条和汇总数据
  • 支持导出CSV/Excel格式的报表

这样就能打造完全符合你需求的翻译进度展示工具啦~

内容的提问来源于stack exchange,提问作者Prometheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:11:41