@@ 98,7 98,7 @@ class SearchQueryTransformer < Parslet::Transform
when 'language'
@filter = :language
@type = :term
- @term = term
+ @term = language_code_from_term(term)
when 'from'
@filter = :account_id
@type = :term
@@ 137,6 137,22 @@ class SearchQueryTransformer < Parslet::Transform
# an ID that does not exist
account&.id || -1
end
+
+ def language_code_from_term(term)
+ language_code = term
+
+ return language_code if LanguagesHelper::SUPPORTED_LOCALES.key?(language_code.to_sym)
+
+ language_code = term.downcase
+
+ return language_code if LanguagesHelper::SUPPORTED_LOCALES.key?(language_code.to_sym)
+
+ language_code = term.split(/[_-]/).first.downcase
+
+ return language_code if LanguagesHelper::SUPPORTED_LOCALES.key?(language_code.to_sym)
+
+ term
+ end
end
rule(clause: subtree(:clause)) do