MessageServiceImpl.java

package com.github.jenkaby.bikerental.shared.application.service;

import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;

import java.util.Locale;


@Service
public class MessageServiceImpl implements MessageService {

    private final MessageSource messageSource;

    public MessageServiceImpl(MessageSource messageSource) {
        this.messageSource = messageSource;
    }

    @Override
    public @NonNull String getMessage(@NonNull String code) {
        Locale locale = getCurrentLocale();
        return messageSource.getMessage(code, null, locale);
    }

    @Override
    public @NonNull String getMessage(@NonNull String code, @Nullable Object... args) {
        Locale locale = getCurrentLocale();
        return messageSource.getMessage(code, args, locale);
    }

    @Override
    public @NonNull String getMessage(@NonNull String code, @NonNull Locale locale) {
        return messageSource.getMessage(code, null, locale);
    }

    @Override
    public @NonNull String getMessage(@NonNull String code, @NonNull Locale locale, @Nullable Object... args) {
        return messageSource.getMessage(code, args, locale);
    }

    private Locale getCurrentLocale() {
        return LocaleContextHolder.getLocale();
    }
}