2323@ Component
2424public class MessagesRouter extends RestxRouter {
2525 public MessagesRouter (@ Named ("Messages" ) Messages messages ,
26- @ Named ("restx.i18n.labelsJsTemplate" ) String labelsJsTemplate ) {
27- super ("MessagesRouter" , new JsonLabelsRoute (messages ), new JsLabelsRoute (messages , labelsJsTemplate ));
26+ @ Named ("restx.i18n.labelsJsTemplate" ) String labelsJsTemplate ,
27+ @ Named ("CurrentLocaleResolver" ) CurrentLocaleResolver currentLocaleResolver ) {
28+ super ("MessagesRouter" , new JsonLabelsRoute (messages , currentLocaleResolver ), new JsLabelsRoute (messages , labelsJsTemplate , currentLocaleResolver ));
2829 }
2930
3031 private static class JsonLabelsRoute extends StdRoute {
3132 private final Messages messages ;
33+ private CurrentLocaleResolver currentLocaleResolver ;
3234
33- public JsonLabelsRoute (Messages messages ) {
35+ public JsonLabelsRoute (Messages messages , CurrentLocaleResolver currentLocaleResolver ) {
3436 super ("labels.json" , new StdRestxRequestMatcher ("GET" , "/i18n/labels.json" ));
3537 this .messages = messages ;
38+ this .currentLocaleResolver = currentLocaleResolver ;
3639 }
3740
3841 @ Override
3942 public void handle (RestxRequestMatch match , RestxRequest req , RestxResponse resp , RestxContext ctx ) throws IOException {
40- Iterable <Entry <String , String >> entries = messages .entries (req . getLocale ( ));
43+ Iterable <Entry <String , String >> entries = messages .entries (currentLocaleResolver . guessLocale ( req ));
4144 handleETagFor (req , resp , entries );
4245 resp .setStatus (HttpStatus .OK );
4346 resp .setContentType ("application/json" );
@@ -50,12 +53,14 @@ public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp
5053
5154 private static class JsLabelsRoute extends StdRoute {
5255 private final Messages messages ;
56+ private final CurrentLocaleResolver currentLocaleResolver ;
5357 private final String labelsJsBefore ;
5458 private final String labelsJsAfter ;
5559
56- public JsLabelsRoute (Messages messages , String labelsJsTemplate ) {
60+ public JsLabelsRoute (Messages messages , String labelsJsTemplate , CurrentLocaleResolver currentLocaleResolver ) {
5761 super ("labels.js" , new StdRestxRequestMatcher ("GET" , "/i18n/labels.js" ));
5862 this .messages = messages ;
63+ this .currentLocaleResolver = currentLocaleResolver ;
5964 int i = labelsJsTemplate .indexOf ("{LABELS}" );
6065 if (i == -1 ) {
6166 throw new IllegalArgumentException ("invalid labels js template. It must have {LABELS} token inside." +
@@ -67,7 +72,7 @@ public JsLabelsRoute(Messages messages, String labelsJsTemplate) {
6772
6873 @ Override
6974 public void handle (RestxRequestMatch match , RestxRequest req , RestxResponse resp , RestxContext ctx ) throws IOException {
70- Iterable <Entry <String , String >> entries = messages .entries (req . getLocale ( ));
75+ Iterable <Entry <String , String >> entries = messages .entries (currentLocaleResolver . guessLocale ( req ));
7176 handleETagFor (req , resp , entries );
7277
7378 resp .setStatus (HttpStatus .OK );
0 commit comments