/** * @see com.isotrol.impe3.api.LocaleURIGenerator#getTransformer(com.isotrol.impe3.api.Portal, java.util.Locale) */ public Function<PathSegments, PathSegments> getTransformer(Portal portal, Locale locale) { if (useDefaultLocale && Objects.equal(portal.getDefaultLocale(), locale)) { return DefaultLocaleURIGenerator.get().getTransformer(portal, locale); } final ImmutableList<String> segments = ImmutableList.of(locale.toString()); return new Function<PathSegments, PathSegments>() { public PathSegments apply(PathSegments input) { return PathSegments.of(false, Iterables.concat(segments, input)); } }; }
/** * @see com.isotrol.impe3.api.LocaleResolver#resolveLocale(com.isotrol.impe3.api.LocaleResolutionParams) */ public ResolvedLocale resolveLocale(LocaleResolutionParams params) { Locale locale = params.getPortal().getDefaultLocale(); return new ResolvedLocale(params.getPath(), firstNonNull(locale, SPANISH), params.getParameters()); }
private ResolvedLocale resolve(Portal portal, PathSegments path, HttpHeaders headers, HttpRequestContext request, LocalParams parameters) { final Locale locale = headers.getLanguage(); final List<Locale> acceptables = headers.getAcceptableLanguages(); if (locale == null && (acceptables == null || acceptables.isEmpty())) { return null; } final Set<Locale> locales = portalSupportedLocales( portal.getDefaultLocale(), portal.getLocales()); if (locales.isEmpty()) { return null; } if (locale != null && locales.contains(locale)) { return new ResolvedLocale(path, locale, parameters); } if (acceptables != null) { for (Locale l : acceptables) { if (locales.contains(l)) { return new ResolvedLocale(path, l, parameters); } } } return null; }
/** * @see com.isotrol.impe3.api.LocaleResolver#resolveLocale(com.isotrol.impe3.api.LocaleResolutionParams) */ public ResolvedLocale resolveLocale(LocaleResolutionParams params) { Locale locale = null; PathSegments p = params.getPath(); if (p.isEmpty()) { // TODO use fallback return new ResolvedLocale(params.getPath(), params.getPortal().getDefaultLocale(), params.getParameters()); } String segment = p.get(0); locale = cache.getUnchecked(params.getPortal()).get(segment); if (locale == null) { // TODO use fallback return new ResolvedLocale(params.getPath(), params.getPortal().getDefaultLocale(), params.getParameters()); } return new ResolvedLocale(p.consume(), locale, params.getParameters()); }