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):
poi nel controller: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; } }
come faccio in base alla lingua passata dirgli quale file di testo prendere?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); } }
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.

Rispondi quotando