diff --git a/ftl/core/search.ftl b/ftl/core/search.ftl
index 18e8b9293..b539682f5 100644
--- a/ftl/core/search.ftl
+++ b/ftl/core/search.ftl
@@ -1,45 +1,91 @@
## Errors shown when invalid search input is encountered.
+## Strong text is literal search input and should not to be translated.
search-invalid = Invalid search - please check for typing mistakes.
-# The literal string `AND` is part of the search syntax.
search-misplaced-and =
- An `AND` was found but it is not connecting two
- search terms. If you want to search for the word itself, wrap it in
- double quotes: "and".
-# The literal string `OR` is part of the search syntax.
+ Invalid search:
+ An and was found but it is not connecting two search terms.
+ If you want to search for the word itself, wrap it in double quotes: "and".
search-misplaced-or =
- An `OR` was found but it is not connecting two
- search terms. If you want to search for the word itself, wrap it in
- double quotes: "or".
+ Invalid search:
+ An or was found but it is not connecting two search terms.
+ If you want to search for the word itself, wrap it in double quotes: "or".
search-empty-group =
- A group was found but there was nothing between the
- parentheses to search for.
-search-unopened-group = search-unopened-group
-search-unclosed-group = search-unclosed-group
+ Invalid search:
+ A group (...) was found but there was nothing between the brackets to search for.
+ If you want to search for literal brackets, wrap them in double quotes: "( )".
+search-unopened-group =
+ Invalid search:
+ A closing bracket ) was found, but there was no opening bracket ( preceding it.
+ If you want to search for the literal ), wrap it in double quotes or prepend a backslash: ")" or \).
+search-unclosed-group =
+ Invalid search:
+ An opening bracket ( was found, but there was no closing bracket ) following it.
+ If you want to search for the literal (, wrap it in double quotes or prepend a backslash: "(" or \( .
search-empty-quote =
- A quote was found but there was nothing between the
- double quotes to search for.
+ Invalid search:
+ A pair of double quotes "" was found but there was nothing between them to search for.
+ If you want to search for literal double quotes, prepend backslashes: \"\".
search-unclosed-quote =
- An opening double quote `"` was found but there
- is no second one to close it.
-search-missing-key = A colon `:` must be preceded by a key.
-search-unknown-escape = The escape sequence `` is unknown.
-search-invalid-id-list = error
-search-invalid-state = error
-search-invalid-flag = error
-search-invalid-added = error
-search-invalid-edited = error
-search-invalid-rated-days = error
-search-invalid-rated-ease = error
-search-invalid-dupe-mid = error
-search-invalid-dupe-text = error
-search-invalid-prop-property = error
-search-invalid-prop-operator = error
-search-invalid-prop-float = error
-search-invalid-prop-integer = error
-search-invalid-prop-unsigned = error
-search-invalid-did = error
-search-invalid-mid = error
+ Invalid search:
+ An opening double quote " was found but there was no second one to close it.
+ If you want to search for the literal ", prepend a backslash: \".
+search-missing-key =
+ Invalid search:
+ A colon : was found but there was no key word preceding it.
+ If you want to search for the literal :, prepend a backslash: \:.
+search-unknown-escape =
+ Invalid search:
+ The escape sequence { $val } is not defined.
+ If you want to search for the literal backslash \, prepend another one: \\.
+search-invalid-id-list =
+ Invalid search:
+ Note or card id lists must be comma-separated number series.
+search-invalid-state =
+ Invalid search:
+ is: must be followed by one of the predefined card states: new, review, learn, due, buried, buried-manually, buried-sibling or suspended.
+search-invalid-flag =
+ Invalid search:
+ flag: must be followed by a valid flag number: 1 (red), 2 (orange), 3 (green), 4 (blue) or 0 (no flag).
+search-invalid-added =
+ Invalid search:
+ added: must be followed by a positive number of days.
+search-invalid-edited =
+ Invalid search:
+ edited: must be followed by a positive number of days.
+search-invalid-rated-days =
+ Invalid search:
+ rated: must be followed by a positive number of days.
+search-invalid-rated-ease =
+ Invalid search:
+ rated:{ $val }: must be followed by 0 (rescheduled), 1 (again), 2 (hard), 3 (good) or 4 (easy).
+search-invalid-dupe-mid =
+ Invalid search:
+ dupe: must be followed by a note type id, a comma and then arbitrary text.
+search-invalid-dupe-text =
+ Invalid search:
+ dupe: must be followed by a note type id, a comma and then arbitrary text.
+search-invalid-prop-property =
+ Invalid search:
+ prop: must be followed by one of the predefined card properties: ivl (interval), due, reps (repetitions), lapses, ease or pos (position).
+search-invalid-prop-operator =
+ Invalid search:
+ prop:{ $val } must be followed by one of the comparison operators: =, !=, <, >, <= or >=.
+search-invalid-prop-float =
+ Invalid search:
+ prop:{ $val } must be followed by a decimal number.
+search-invalid-prop-integer =
+ Invalid search:
+ prop:{ $val } must be followed by a whole number.
+search-invalid-prop-unsigned =
+ Invalid search:
+ prop:{ $val } must be followed by a non-negative whole number.
+search-invalid-did =
+ Invalid search:
+ did: must be followed by a valid deck id.
+search-invalid-mid =
+ Invalid search:
+ mid: must be followed by a note type deck id.
## Column labels in browse screen