| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.lang.reflect.Field; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | public ServerResponse<PageInfo> getList(int pageNum, int pageSize, Integer type, String sort, String keyword, HttpServletRequest request) { |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | List<SiteNews> listData = this.siteNewsMapper.pageList(pageNum, pageSize, type, sort, keyword); |
| | | GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil(); |
| | | //取出每一条数据的内容,进行翻译 |
| | | |
| | | if (request.getHeader("lang") != null && !request.getHeader("lang").equals("zh-CN")&& !request.getHeader("lang").equals("tww")&& !request.getHeader("lang").equals("")) { |
| | | for (SiteNews siteNews : listData) { |
| | | //将title description content放一个数组里面 |
| | | |
| | | |
| | | // String zh = siteNews.getContent(); |
| | | |
| | | try { |
| | | // siteNews.setContent(googleTranslateUtil.translate(siteNews.getContent(), request.getHeader("lang"))); |
| | | siteNews.setTitle(googleTranslateUtil.translate(siteNews.getTitle(), request.getHeader("lang"))); |
| | | // siteNews.setDescription(googleTranslateUtil.translate(siteNews.getDescription(), request.getHeader("lang"))); |
| | | siteNews.setSourceName(googleTranslateUtil.translate(siteNews.getSourceName(), request.getHeader("lang"))); |
| | | } catch (Exception e) { |
| | | log.error("翻译失败"); |
| | | |
| | | String lang = request.getHeader("lang"); |
| | | |
| | | // 处理每条数据 |
| | | for (SiteNews siteNews : listData) { |
| | | try { |
| | | if (lang == null || lang.equals("") || lang.equals("zh-CN") || lang.equals("tww")) { |
| | | // 如果是简体中文、繁体中文或空,将繁体转为简体返回 |
| | | // 使用反射直接设置字段值,避免setter的转换逻辑 |
| | | setFieldDirectly(siteNews, "title", convertTraditionalToSimplified(siteNews.getTitle())); |
| | | setFieldDirectly(siteNews, "description", convertTraditionalToSimplified(siteNews.getDescription())); |
| | | setFieldDirectly(siteNews, "content", convertTraditionalToSimplified(siteNews.getContent())); |
| | | setFieldDirectly(siteNews, "sourceName", convertTraditionalToSimplified(siteNews.getSourceName())); |
| | | } else { |
| | | // 如果是其他语言,先将繁体转为简体,然后再翻译 |
| | | GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil(); |
| | | // 先将繁体转为简体(因为Google翻译假设源语言是简体) |
| | | String titleSimplified = convertTraditionalToSimplified(siteNews.getTitle()); |
| | | String descriptionSimplified = convertTraditionalToSimplified(siteNews.getDescription()); |
| | | String contentSimplified = convertTraditionalToSimplified(siteNews.getContent()); |
| | | String sourceNameSimplified = convertTraditionalToSimplified(siteNews.getSourceName()); |
| | | |
| | | // 然后翻译,使用反射设置避免setter转换 |
| | | if (titleSimplified != null) { |
| | | setFieldDirectly(siteNews, "title", googleTranslateUtil.translate(titleSimplified, lang)); |
| | | } |
| | | if (descriptionSimplified != null) { |
| | | setFieldDirectly(siteNews, "description", googleTranslateUtil.translate(descriptionSimplified, lang)); |
| | | } |
| | | if (contentSimplified != null) { |
| | | setFieldDirectly(siteNews, "content", googleTranslateUtil.translate(contentSimplified, lang)); |
| | | } |
| | | if (sourceNameSimplified != null) { |
| | | setFieldDirectly(siteNews, "sourceName", googleTranslateUtil.translate(sourceNameSimplified, lang)); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("处理新闻数据失败", e); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | PageInfo pageInfo = new PageInfo(listData); |
| | | pageInfo.setList(listData); |
| | | return ServerResponse.createBySuccess(pageInfo); |
| | | } |
| | | |
| | | /** |
| | | * 使用反射直接设置字段值,避免触发setter的转换逻辑 |
| | | */ |
| | | private void setFieldDirectly(SiteNews siteNews, String fieldName, String value) { |
| | | if (value == null) { |
| | | return; |
| | | } |
| | | try { |
| | | Field field = SiteNews.class.getDeclaredField(fieldName); |
| | | field.setAccessible(true); |
| | | field.set(siteNews, value); |
| | | } catch (Exception e) { |
| | | log.error("设置字段值失败: " + fieldName, e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 将繁体转换为简体 |
| | | * 使用Google翻译API将繁体(zh-TW)转换为简体(zh-CN) |
| | | */ |
| | | private String convertTraditionalToSimplified(String traditional) { |
| | | if (traditional == null || traditional.isEmpty()) { |
| | | return traditional; |
| | | } |
| | | try { |
| | | // 使用Google翻译将繁体转为简体 |
| | | GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil(); |
| | | return googleTranslateUtil.translate("zh-TW", "zh-CN", traditional); |
| | | } catch (Exception e) { |
| | | log.error("繁体转简体失败,返回原值", e); |
| | | return traditional; |
| | | } |
| | | } |
| | | |
| | | /*新闻资讯-查询详情*/ |
| | |
| | | public ServerResponse getDetail(int id, HttpServletRequest request) { |
| | | SiteNews model = siteNewsMapper.load(id); |
| | | if(model!=null){ |
| | | GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil(); |
| | | //取出每一条数据的内容,进行翻译 |
| | | |
| | | if (request.getHeader("lang") != null && !request.getHeader("lang").equals("zh-CN")&& !request.getHeader("lang").equals("tww")&& !request.getHeader("lang").equals("")) { |
| | | try { |
| | | model.setContent(googleTranslateUtil.translate(model.getContent(), request.getHeader("lang"))); |
| | | model.setTitle(googleTranslateUtil.translate(model.getTitle(), request.getHeader("lang"))); |
| | | model.setDescription(googleTranslateUtil.translate(model.getDescription(), request.getHeader("lang"))); |
| | | } catch (Exception e) { |
| | | log.error("翻译失败"); |
| | | String lang = request.getHeader("lang"); |
| | | |
| | | try { |
| | | if (lang == null || lang.equals("") || lang.equals("zh-CN") || lang.equals("tww")) { |
| | | // 如果是简体中文、繁体中文或空,将繁体转为简体返回 |
| | | // 使用反射直接设置字段值,避免setter的转换逻辑 |
| | | setFieldDirectly(model, "title", convertTraditionalToSimplified(model.getTitle())); |
| | | setFieldDirectly(model, "description", convertTraditionalToSimplified(model.getDescription())); |
| | | setFieldDirectly(model, "content", convertTraditionalToSimplified(model.getContent())); |
| | | setFieldDirectly(model, "sourceName", convertTraditionalToSimplified(model.getSourceName())); |
| | | } else { |
| | | // 如果是其他语言,先将繁体转为简体,然后再翻译 |
| | | GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil(); |
| | | // 先将繁体转为简体(因为Google翻译假设源语言是简体) |
| | | String titleSimplified = convertTraditionalToSimplified(model.getTitle()); |
| | | String descriptionSimplified = convertTraditionalToSimplified(model.getDescription()); |
| | | String contentSimplified = convertTraditionalToSimplified(model.getContent()); |
| | | String sourceNameSimplified = convertTraditionalToSimplified(model.getSourceName()); |
| | | |
| | | // 然后翻译,使用反射设置避免setter转换 |
| | | if (titleSimplified != null) { |
| | | setFieldDirectly(model, "title", googleTranslateUtil.translate(titleSimplified, lang)); |
| | | } |
| | | if (descriptionSimplified != null) { |
| | | setFieldDirectly(model, "description", googleTranslateUtil.translate(descriptionSimplified, lang)); |
| | | } |
| | | if (contentSimplified != null) { |
| | | setFieldDirectly(model, "content", googleTranslateUtil.translate(contentSimplified, lang)); |
| | | } |
| | | if (sourceNameSimplified != null) { |
| | | setFieldDirectly(model, "sourceName", googleTranslateUtil.translate(sourceNameSimplified, lang)); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("处理新闻详情数据失败", e); |
| | | } |
| | | return ServerResponse.createBySuccess(model); |
| | | } |