23
23
@ Component
24
24
public class MessagesRouter extends RestxRouter {
25
25
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 ));
28
29
}
29
30
30
31
private static class JsonLabelsRoute extends StdRoute {
31
32
private final Messages messages ;
33
+ private CurrentLocaleResolver currentLocaleResolver ;
32
34
33
- public JsonLabelsRoute (Messages messages ) {
35
+ public JsonLabelsRoute (Messages messages , CurrentLocaleResolver currentLocaleResolver ) {
34
36
super ("labels.json" , new StdRestxRequestMatcher ("GET" , "/i18n/labels.json" ));
35
37
this .messages = messages ;
38
+ this .currentLocaleResolver = currentLocaleResolver ;
36
39
}
37
40
38
41
@ Override
39
42
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 ));
41
44
handleETagFor (req , resp , entries );
42
45
resp .setStatus (HttpStatus .OK );
43
46
resp .setContentType ("application/json" );
@@ -50,12 +53,14 @@ public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp
50
53
51
54
private static class JsLabelsRoute extends StdRoute {
52
55
private final Messages messages ;
56
+ private final CurrentLocaleResolver currentLocaleResolver ;
53
57
private final String labelsJsBefore ;
54
58
private final String labelsJsAfter ;
55
59
56
- public JsLabelsRoute (Messages messages , String labelsJsTemplate ) {
60
+ public JsLabelsRoute (Messages messages , String labelsJsTemplate , CurrentLocaleResolver currentLocaleResolver ) {
57
61
super ("labels.js" , new StdRestxRequestMatcher ("GET" , "/i18n/labels.js" ));
58
62
this .messages = messages ;
63
+ this .currentLocaleResolver = currentLocaleResolver ;
59
64
int i = labelsJsTemplate .indexOf ("{LABELS}" );
60
65
if (i == -1 ) {
61
66
throw new IllegalArgumentException ("invalid labels js template. It must have {LABELS} token inside." +
@@ -67,7 +72,7 @@ public JsLabelsRoute(Messages messages, String labelsJsTemplate) {
67
72
68
73
@ Override
69
74
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 ));
71
76
handleETagFor (req , resp , entries );
72
77
73
78
resp .setStatus (HttpStatus .OK );
0 commit comments