ciao!
in pratica sto testando l'internazionalizzazione in spring boot.
la lingua la vorrei passare tramite path, ed in base a quello prendere i testi corretti.
ho già creato i file di properties con i testi.
nel main per ora ho fatto così (poi magari separo meglio le varie parti di codice se c'è bisogno):
codice:
package com.example.test_springboot_java;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import java.util.Locale;
@SpringBootApplication
public class TestSpringbootJavaApplication {
public static void main(String[] args) {
SpringApplication.run(TestSpringbootJavaApplication.class, args);
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource source = new ResourceBundleMessageSource();
source.setBasenames("lingue/testi");
source.setDefaultEncoding("UTF-8");
return source;
}
@Bean
public AcceptHeaderLocaleResolver localeResolver() {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.ITALIAN);
return localeResolver;
}
}
poi nel controller:
codice:
package com.example.test_springboot_java.controllers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.Locale;
@RestController
@RequestMapping(path = "/test")
public class TestController {
@Autowired
MessageSource messageSource;
@GetMapping(path = "/{lingua}", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public String index(@PathVariable String lingua) {
System.out.println(lingua);
return messageSource.getMessage("saluti", null, Locale.ITALIAN);
}
}
come faccio in base alla lingua passata dirgli quale file di testo prendere?
ovviamente si potrebbe fare con un banale switch, ma non penso sia la soluzione migliore.
solo che non ho capito come agganciare la lingua passata ad un resolver.