# 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