package com.ruoyi.common.utils;

import java.util.Locale;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import com.ruoyi.common.utils.spring.SpringUtils;

/**
 * 获取i18n资源文件
 * 
 * @author ruoyi
 */
public class MessageUtils
{
    /**
     * 根据消息键和参数 获取消息 委托给spring messageSource
     *
     * @param code 消息键
     * @param args 参数
     * @return 获取国际化翻译值
     */
    public static String message(String code, Object... args)
    {
        MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
        return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
    }


    /**
     * 按指定语言解析消息，供无请求上下文的线程（异步任务/定时任务）使用，
     * 避免 LocaleContextHolder 回落到 JVM 默认语言
     *
     * @param code 消息键
     * @param locale 指定语言（如按收件人用户语言）
     * @param args 参数
     * @return 获取国际化翻译值
     */
    public static String message(String code, Locale locale, Object... args)
    {
        MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
        return messageSource.getMessage(code, args, locale);
    }
}
