dataease-dm/backend/src/main/java/io/dataease/controller/I18nController.java

62 lines
2.1 KiB
Java
Raw Normal View History

2021-02-20 10:07:25 +08:00
package io.dataease.controller;
import io.dataease.commons.constants.I18nConstants;
2021-02-22 15:30:15 +08:00
import io.dataease.commons.exception.DEException;
2021-02-20 10:07:25 +08:00
import io.dataease.commons.utils.LogUtil;
import io.dataease.i18n.Lang;
import io.dataease.i18n.Translator;
import io.dataease.service.UserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by liqiang on 2019/4/1.
*/
@RestController
public class I18nController {
private static final int FOR_EVER = 3600 * 24 * 30 * 12 * 10; //10 years in second
@Value("${run.mode:release}")
private String runMode;
@Resource
private UserService userService;
@GetMapping("lang/change/{lang}")
public void changeLang(@PathVariable String lang, HttpServletRequest request, HttpServletResponse response) {
Lang targetLang = Lang.getLangWithoutDefault(lang);
if (targetLang == null) {
response.setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE);
LogUtil.error("Invalid parameter: " + lang);
2021-02-22 15:30:15 +08:00
DEException.throwException(Translator.get("error_lang_invalid"));
2021-02-20 10:07:25 +08:00
}
userService.setLanguage(targetLang.getDesc());
Cookie cookie = new Cookie(I18nConstants.LANG_COOKIE_NAME, targetLang.getDesc());
cookie.setPath("/");
cookie.setMaxAge(FOR_EVER);
response.addCookie(cookie);
//重新登录
if ("release".equals(runMode)) {
Cookie f2cCookie = new Cookie("MS_SESSION_ID", "deleteMe");
f2cCookie.setPath("/");
f2cCookie.setMaxAge(0);
response.addCookie(f2cCookie);
}
//本地测试用
if ("local".equals(runMode)) {
if (request != null) {
request.getSession(true).setAttribute(I18nConstants.LANG_COOKIE_NAME, lang);
}
}
}
}