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及以上,那直接用官方内置功能就好:
- 进入站点设置 -> 内容 & 数据 -> 翻译
- 在「翻译进度」板块就能看到各语言的完成率,包括条目级和字段级的统计
- 还能直接在这里发起翻译任务、查看未翻译内容,完全满足基础需求
方案4:自定义可视化进度插件(进阶)
如果需要更定制化的展示(比如前台Portlet显示进度条、定时自动更新),可以开发一个简单插件:
- 用Liferay的Scheduler API定时执行统计任务(比如每天凌晨跑一次)
- 把统计结果存到Expando表或者自定义数据库表中
- 前台用Clay UI组件(Liferay官方前端库)渲染进度条和汇总数据
- 支持导出CSV/Excel格式的报表
这样就能打造完全符合你需求的翻译进度展示工具啦~
内容的提问来源于stack exchange,提问作者Prometheus
相关产品推荐
相关产品推荐

