Spring Boot REST, lokalizacja

0

Witam, mam REST'a z którego korzysta moja strona napisana w Springu.
Strona pozwala na wybór języka angielskiego lub polskiego. Chciałbym aby REST na podstawie tego jaki język jest wybrany na stronie zwracał komunikaty w tym języku. Jak to rozwiązać? Chodzi mi jak wykonać tą lokalizację bo przecież nie mogę użyć np:

AcceptHeaderLocaleResolver -> zawsze zwraca język ustawiany przez przeglądarkę
CookieLocaleResolver -> ustawia język na podstawie ciasteczka, ale przecież moja strona jest na innym adresie i REST na innym więc cookies się chyba nie będą zgadzały?
SessionLocaleResolver -> na podstawie sesji, REST ma być bezstanowy poza tym aby to zadziałało musiało by pójść najpierw zapytanie do RESTa ustawiające język prawda?

Czy jedyne rozwiązać to przesyłać za każdym razem dodatkowy parametr do RESTa z ustawionym językiem?
Może przesyłać kody błędu i pozwolić stronie na wybór komunikatu na podstawie błędu?

Idea jest taka, że ten REST ma być też dostępny z zewnątrz dla innych użytkowników nie korzystających z strony, czy w takim przypadku dalej da się to w sensowy sposób wykonać? Czy tylko zawsze zwracać komunikaty w języku angielskim + jakiś kod blędu?

0

Sam rozwiązałem problem - nie wiem czy najprostsza metoda ale działa. Gdybyś kogoś interesowało to:

Po stronie REST'a ustawiony jest CookieLocaleResolver, moja strona też używa CookieLocaleResolvera no i wszystko działa z automatu gdy zmieniam język na stronie i z pozoimu przeglądarki dla testu wywołuje REST'a ręcznie - Cookie jest wykrywany i język się zmienia lecz gdy REST'a wywołuje mój serwis poprzez RestTemplate to informacja o tym jest tracona więc postanowiłem sam ustawiać Cookie z językiem w Rest Template:

HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.add("Cookie", "org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=" + LocaleContextHolder.getLocale().getLanguage());
        HttpEntity requestEntity = new HttpEntity(null, requestHeaders);
        Map<String, String> queryParameters = new HashMap();
        queryParameters.put("id", id.toString());
        queryParameters.put("apiKey", newSocialMediaQuery.getUser().getApiKey());
        restTemplate.exchange(fetcherServiceURI + "/AddTask?id={id}&apiKey={apiKey}", HttpMethod.GET, requestEntity, String.class, queryParameters);

Gdyby ktoś znał lepsze rozwiązanie to proszę napiszcie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1