MyDynamicMessageProvider.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package jnpf.i18n.provider;
  2. import cn.hutool.http.HttpRequest;
  3. import cn.hutool.http.HttpResponse;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.alibaba.fastjson.TypeReference;
  8. import jnpf.base.ActionResult;
  9. import jnpf.base.UserInfo;
  10. import jnpf.i18n.constant.I18nApiConst;
  11. import jnpf.util.Constants;
  12. import jnpf.util.StringUtil;
  13. import jnpf.util.UserProvider;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.http.HttpHeaders;
  16. import java.util.Locale;
  17. import java.util.Objects;
  18. /**
  19. * 国际化翻译源提供者
  20. */
  21. @Slf4j
  22. public class MyDynamicMessageProvider implements DynamicMessageProvider {
  23. private int timeout = 3000;
  24. @Override
  25. public String getI18nList(Locale locale) {
  26. UserInfo userInfo = UserProvider.getUser();
  27. String token = userInfo.getToken();
  28. if(StringUtil.isNotEmpty(token)) {
  29. try (HttpResponse httpResponse = HttpRequest.get(I18nApiConst.i18nListUrl)
  30. .timeout(timeout)
  31. .setReadTimeout(timeout)
  32. .setConnectionTimeout(timeout)
  33. .header(Constants.AUTHORIZATION, token)
  34. .header(HttpHeaders.ACCEPT_LANGUAGE, locale.toLanguageTag())
  35. .execute()) {
  36. if (httpResponse.isOk()) {
  37. String result = httpResponse.body();
  38. ActionResult<JSONArray> out = JSON.parseObject(result, new TypeReference<ActionResult<JSONArray>>() {});
  39. if (Objects.equals(Constants.SUCCESS, out.getCode())) {
  40. JSONArray messages = out.getData();
  41. StringBuilder stringBuilder = new StringBuilder();
  42. for (int i = 0; i < messages.size(); i++) {
  43. JSONObject obj = messages.getJSONObject(i);
  44. String code = obj.getString("enCode");
  45. String msg = obj.getString("fullName");
  46. stringBuilder.append(String.format("%s=%s%n", code, msg));
  47. }
  48. return stringBuilder.toString();
  49. }
  50. }
  51. } catch (Exception e) {
  52. log.error("语言翻译内容获取失败: {}", e.getMessage());
  53. }
  54. }
  55. return null;
  56. }
  57. }