Content
View differences
Updated by Jan Sandbrink 9 days ago
**As** a user
**I want to** change the localization of the "is (OR)" filter,
**so that** I can read the filter in natural language, without understanding for logical operators
**Acceptance criteria**
* Rename occurences of the `EqualsOr` filter operator to "is any of"
* or "is any" for consistency with "is any with descendants"
* Rename occurences of the `EqualsAll` filter operator to "includes all of"
* Rename occurences of `NotEquals` filter operator to "is none of" (single select) / "not all values included in" (multi-select; TBD)
* Discussion: This filter is weird for multi-selects, if my WP has A and B set, only filtering for A or filtering for B does not exclude it, filtering for A and B or A, B and C excludes it. How would you phrase that?
* The filter is easier to understand for single-selects... do we need different names?
* TBD: Similar rules could be applied to other filters, such as `Contains` / `NotContains`
<br>
**Technical notes**
* `Equals` and `EqualsOr` are implemented through the `=` API filter, but the UI sometimes allows selecting many values and sometimes allows to only select one value
**Translation considerations**
Operator names:
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Operator name</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Logical meaning</p></td><td class="op-uc-table--cell"><p class="op-uc-p">EN (legacy)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>EN</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DE</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>ES</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>FR</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Equals (TBD: where is this needed?)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">A OR B</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ist</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">EqualsOr</p></td><td class="op-uc-table--cell"><p class="op-uc-p">A OR B</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is (OR)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is any of</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ist eines von</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">EqualsAll</p></td><td class="op-uc-table--cell"><p class="op-uc-p">A AND B</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is (AND)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is class="op-uc-p">includes all of</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ist jedes von</p></td><td class="op-uc-p">enthält alle</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">NotEquals (singular)</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">!A AND !B</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">is not</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is none of</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ist keines von</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">NotEquals (plural)</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">!A AND !B</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">is not</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is not a subset of</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ist keine Untermenge von</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">NotEquals (generic)</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">!A AND !B</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">is not</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">-</p></td><td class="op-uc-table--cell"><p class="op-uc-p">-</p></td><td class="op-uc-table--cell"><p class="op-uc-p">-</p></td><td class="op-uc-table--cell"><p class="op-uc-p">-</p></td></tr><tr class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">- (plural)</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">!A OR !B</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">-</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">is not all of</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">is nicht jedes von</p></td><td class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr></tbody></table></figure>
**Screenshots**
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/894321/content">
**Out of scope**
* Considerations for other filters (such as descendants, contains, etc)
* Implementing new filters that don't exist yet (e.g. "is not all of") descendants)
**I want to** change the localization of the "is (OR)" filter,
**so that** I can read the filter in natural language, without understanding for logical operators
**Acceptance criteria**
* Rename occurences of the `EqualsOr` filter operator to "is any of"
* or "is any" for consistency with "is any with descendants"
* Rename occurences of the `EqualsAll` filter operator to "includes all of"
* Rename occurences of `NotEquals` filter operator to "is none of" (single select) / "not all values included in" (multi-select; TBD)
* Discussion: This filter is weird for multi-selects, if my WP has A and B set, only filtering for A or filtering for B does not exclude it, filtering for A and B or A, B and C excludes it. How would you phrase that?
* The filter is easier to understand for single-selects... do we need different names?
* TBD: Similar rules could be applied to other filters, such as `Contains` / `NotContains`
**Technical notes**
* `Equals` and `EqualsOr` are implemented through the `=` API filter, but the UI sometimes allows selecting many values and sometimes allows to only select one value
**Translation considerations**
Operator names:
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Operator name</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Logical meaning</p></td><td class="op-uc-table--cell"><p class="op-uc-p">EN (legacy)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>EN</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DE</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>ES</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>FR</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Equals (TBD: where is this needed?)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">A OR B</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ist</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">EqualsOr</p></td><td class="op-uc-table--cell"><p class="op-uc-p">A OR B</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is (OR)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is any of</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ist eines von</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">EqualsAll</p></td><td class="op-uc-table--cell"><p class="op-uc-p">A AND B</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is (AND)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">is
**Screenshots**
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/894321/content">
**Out of scope**
* Considerations for other filters (such as descendants, contains, etc)
* Implementing new filters that don't exist yet (e.g. "is not all of")