package com.zy.common.i18n; import com.core.common.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.*; @RestController @RequestMapping("/i18n") public class I18nController { @Autowired private I18nMessageService i18nMessageService; @RequestMapping("/messages") public R messages(@RequestParam(required = false) String lang) { Locale locale = i18nMessageService.resolveLocale(lang); Map result = new LinkedHashMap<>(); result.put("locale", I18nLocaleUtils.toTag(locale)); result.put("defaultLocale", i18nMessageService.getDefaultLocaleTag()); result.put("supportedLocales", localeOptions(locale)); result.put("messages", i18nMessageService.getMessages(locale)); result.put("legacy", i18nMessageService.getLegacyMessages(locale)); return R.ok(result); } private List> localeOptions(Locale locale) { List> options = new ArrayList<>(); for (String supportedLocale : i18nMessageService.getSupportedLocaleTags()) { LinkedHashMap option = new LinkedHashMap<>(); option.put("tag", supportedLocale); option.put("label", i18nMessageService.getMessage("lang." + supportedLocale, locale)); options.add(option); } return options; } }