# frozen_string_literal: true module HttpLanguageParser def self.parse(header) # Rails I18n uses underscores between the locale and the region; the request # headers use hyphens. require 'http_accept_language' unless defined? HttpAcceptLanguage available_locales = I18n.available_locales.map { |locale| locale.to_s.tr('_', '-') } parser = HttpAcceptLanguage::Parser.new(header) matched = parser.language_region_compatible_from(available_locales)&.tr('-', '_') matched || SiteSetting.default_locale end end