module Resolver
Resolves localized resources from immutable request preferences.
Definitions
def resolve_localized(request)
Resolve a response by trying each preferred locale in order.
Implementation
def resolve_localized(request)
if localization = request.localization
localization.preferred_locales.each do |locale|
selected = localization.with(locale: locale)
if response = yield(selected)
return localized_response(request, response, selected)
end
end
else
return yield(nil)
end
return nil
end
def localized_response(request, response, localization)
Describe the selected localized representation in its response metadata.
Implementation
def localized_response(request, response, localization)
response = Response.wrap(response)
if locale = localization.locale
response.headers[CONTENT_LANGUAGE] = locale
response.headers[CONTENT_LOCATION] = localization.localized_path(request.url.path.encoded)
end
return response
end